| | |
| | | add_action('admin_notices', [$this, 'showReferralPageNotice']); |
| | | |
| | | |
| | | add_filter('jvbDashboardPage', [$this, 'renderDashPage'], 10, 2); |
| | | add_action(BASE.'dashboard_page_referrals', [$this, 'renderDashPage'], 10); |
| | | // add_filter('jvbDashboardPage', [$this, 'renderDashPage'], 10, 2); |
| | | |
| | | // Handle settings save |
| | | add_action('admin_init', [$this, 'registerSettings']); |
| | |
| | | { |
| | | $defaults = [ |
| | | 'status' => 'all', |
| | | 'limit' => 100, |
| | | 'offset' => 0, |
| | | 'per_page' => 100, |
| | | 'page' => 1, |
| | | 'orderby' => 'created_at', |
| | | 'order' => 'DESC' |
| | | ]; |
| | |
| | | 'where' => [ |
| | | 'from_user' => $user_id, |
| | | ], |
| | | 'limit' => $args['limit'], |
| | | 'offset' => $args['offset'], |
| | | 'per_page' => $args['per_page'], |
| | | 'page' => $args['page'], |
| | | 'orderby' => $args['orderby'], |
| | | 'order' => $args['order'] |
| | | ]; |
| | |
| | | public function getTopReferrers(int $limit = 10, string $period = 'all'): array |
| | | { |
| | | return $this->statsCache->remember( |
| | | $this->statsCache->generateKey(['limit' => $limit, 'period' => $period]), |
| | | $this->statsCache->generateKey(['per_page' => $limit, 'period' => $period]), |
| | | function() use ($limit, $period) { |
| | | $where = ''; |
| | | if ($period !== 'all') { |
| | |
| | | |
| | | $referral_code = get_user_meta($user->ID, BASE . 'referral_code', true); |
| | | $stats = $this->getUserStats($user->ID); |
| | | $referrals = $this->getUserReferrals($user->ID, ['limit' => 10]); |
| | | $referrals = $this->getUserReferrals($user->ID, ['per_page' => 10]); |
| | | |
| | | ?> |
| | | <h2>Referral Information</h2> |
| | |
| | | <p class="hint">Can\'t find it? Check your spam folder.</p> |
| | | </div>', |
| | | jvbFormStatus(), |
| | | esc_attr(get_option(BASE.'referral_role','client')), |
| | | esc_attr(Site::getReferralRole()), |
| | | Form::render('referral_name', '', [ |
| | | 'required' => true, |
| | | 'type' => 'text', |
| | |
| | | '<form id="login-form">%s%s%s |
| | | <button type="submit">%sLogin With Magic Link</button> |
| | | </form> |
| | | |
| | | <div class="success-content" hidden> |
| | | <h3>Check Your Email!</h3> |
| | | <p>We\'ve sent you a magic link to log in - no password required! Click the link in your email to log in.</p> |
| | |
| | | } |
| | | } |
| | | |
| | | public function renderDashPage(string $content, string $page): string |
| | | public function renderDashPage():void |
| | | { |
| | | if ($page !== 'Referrals') { |
| | | return $content; |
| | | } |
| | | |
| | | // Regular users get their referral dashboard |
| | | $user_id = get_current_user_id(); |
| | | |
| | |
| | | $referral_code = $this->generateReferralCode($user); |
| | | } |
| | | |
| | | $referrals = $this->getUserReferrals($user_id, ['limit' => 20]); |
| | | $referrals = $this->getUserReferrals($user_id, ['per_page' => 20]); |
| | | |
| | | ob_start(); |
| | | |
| | | $tabs = new Tabs(); |
| | | $tabs->addTab('share') |
| | |
| | | |
| | | ?> |
| | | <div class="referral-dashboard"> |
| | | <?= $tabs->render(true);?> |
| | | <?= $tabs->render();?> |
| | | </div> |
| | | |
| | | <?php |
| | | return ob_get_clean(); |
| | | } |
| | | |
| | | protected function shareDashboard(int $user_id, string $referral_code):string |
| | |
| | | array_push($values, $like, $like, $like, $like); |
| | | } |
| | | |
| | | array_push($values, absint($args['limit'] ?? 50), absint($args['offset'] ?? 0)); |
| | | array_push($values, absint($args['per_page'] ?? 50), absint($args['offset'] ?? 0)); |
| | | |
| | | return $this->referrals->queryResults( |
| | | "SELECT {table}.*, u.display_name as from_name |