getMessage()); } // ─── Summary Stats (whole dataset, no pagination) ──────────────────────────── try { $summary = $panelPdo->query(" SELECT COUNT(DISTINCT mrc.referrer_user_id) AS total_referrers, COUNT(*) AS total_clicks, SUM(CASE WHEN mrc.signup_completed = 1 THEN 1 ELSE 0 END) AS total_signups, SUM(CASE WHEN mrc.email_verified = 1 THEN 1 ELSE 0 END) AS total_verified, SUM(CASE WHEN mrc.signup_reward_paid = 1 THEN 1 ELSE 0 END) AS rewards_paid, SUM(COALESCE(mrc.survey_commission_earned, 0)) AS total_commission FROM member_referral_clicks mrc ")->fetch(); } catch (Exception $e) { $summary = ['total_referrers'=>0,'total_clicks'=>0,'total_signups'=>0,'total_verified'=>0,'rewards_paid'=>0,'total_commission'=>0]; } // ─── Main Query ────────────────────────────────────────────────────────────── // We want one row per referrer, showing aggregated stats + most recent click $where = []; $params = []; if ($search !== '') { $where[] = "(ru.email LIKE ? OR ru.id = ? OR mrc.email LIKE ? OR mrc.ip_address LIKE ?)"; $params[] = "%$search%"; $params[] = (int)ltrim($search, 'RrR'); $params[] = "%$search%"; $params[] = "%$search%"; } if ($status_filter === 'signed_up') { $where[] = "mrc.signup_completed = 1"; } if ($status_filter === 'verified') { $where[] = "mrc.email_verified = 1"; } if ($status_filter === 'rewarded') { $where[] = "mrc.signup_reward_paid = 1"; } if ($status_filter === 'no_signup') { $where[] = "mrc.signup_completed = 0"; } if ($date_from !== '') { $where[] = "DATE(mrc.clicked_at) >= ?"; $params[] = $date_from; } if ($date_to !== '') { $where[] = "DATE(mrc.clicked_at) <= ?"; $params[] = $date_to; } $having = $min_referrals > 0 ? "HAVING total_clicks >= $min_referrals" : ''; $whereSql = $where ? 'WHERE ' . implode(' AND ', $where) : ''; // Aggregate per referrer $sql = " SELECT mrc.referrer_user_id, ru.email AS referrer_email, ru.status AS referrer_status, ru.created_at AS referrer_joined, COUNT(*) AS total_clicks, SUM(CASE WHEN mrc.signup_completed = 1 THEN 1 ELSE 0 END) AS total_signups, SUM(CASE WHEN mrc.email_verified = 1 THEN 1 ELSE 0 END) AS total_verified, SUM(CASE WHEN mrc.signup_reward_paid = 1 THEN 1 ELSE 0 END) AS rewards_paid, SUM(COALESCE(mrc.survey_commission_earned, 0)) AS survey_commission, MAX(mrc.clicked_at) AS last_activity FROM member_referral_clicks mrc LEFT JOIN users ru ON ru.id = mrc.referrer_user_id $whereSql GROUP BY mrc.referrer_user_id, ru.email, ru.status, ru.created_at $having ORDER BY last_activity DESC LIMIT $per_page OFFSET $offset "; // Count total referrers for pagination $countSql = " SELECT COUNT(*) FROM ( SELECT mrc.referrer_user_id FROM member_referral_clicks mrc LEFT JOIN users ru ON ru.id = mrc.referrer_user_id $whereSql GROUP BY mrc.referrer_user_id $having ) sub "; try { $stmt = $panelPdo->prepare($sql); $stmt->execute($params); $referrers = $stmt->fetchAll(); $stmtC = $panelPdo->prepare($countSql); $stmtC->execute($params); $total_rows = (int)$stmtC->fetchColumn(); $total_pages = max(1, ceil($total_rows / $per_page)); } catch (Exception $e) { $referrers = []; $total_rows = 0; $total_pages = 1; error_log("member-referrals error: " . $e->getMessage()); } // ─── Detail Modal: clicks for one referrer ─────────────────────────────────── $detail_rows = []; $detail_referrer = null; if (isset($_GET['detail']) && is_numeric($_GET['detail'])) { $did = (int)$_GET['detail']; try { $ds = $panelPdo->prepare(" SELECT mrc.*, ru.email AS referee_registered_email FROM member_referral_clicks mrc LEFT JOIN users ru ON ru.id = mrc.referee_user_id WHERE mrc.referrer_user_id = ? ORDER BY mrc.clicked_at DESC "); $ds->execute([$did]); $detail_rows = $ds->fetchAll(); $drs = $panelPdo->prepare("SELECT email FROM users WHERE id = ?"); $drs->execute([$did]); $detail_referrer = $drs->fetchColumn(); } catch (Exception $e) { error_log("member-referrals detail error: " . $e->getMessage()); } } function fmtId($id) { return 'RR' . str_pad((int)$id, 7, '0', STR_PAD_LEFT); } include 'includes/header.php'; ?>
All member-to-member referral clicks, signups, verifications, and rewards
Try adjusting your filters or check back later.
| Referrer | Clicks | Signups | Verified | Rewards Paid | Survey Comm. | Status | Last Activity | |
|---|---|---|---|---|---|---|---|---|
| 0 ? '₹' . number_format($r['survey_commission'], 0) : '—'; ?> | View Clicks |
click record
| Clicked At | Referee Email | IP Address | Signed Up | Verified | Reward Paid | Survey Comm. | Signup At | Verified At |
|---|---|---|---|---|---|---|---|---|
| — | 0 ? '₹' . number_format($dr['survey_commission_earned'], 0) . '' : '—'; ?> |