| | |
| | | // Add hooks for processing accepted invitations |
| | | add_action('user_register', [$this, 'checkInvitation'], 10, 1); |
| | | |
| | | |
| | | add_filter('jvbLoginLabels', [$this, 'modifyLoginLabels'], 10, 2); |
| | | |
| | | |
| | | |
| | | add_action('jvb_daily_maintenance', [$this, 'cleanupExpiredInvitations']); |
| | | |
| | | // Add filter for bulk operation handling |
| | |
| | | ]; |
| | | } |
| | | } |
| | | |
| | | public function modifyLoginLabels(array $labels, array $get_params): array |
| | | { |
| | | // Only modify if invitation params present |
| | | if (!array_key_exists('invite', $get_params) || !array_key_exists('email', $get_params)) { |
| | | return $labels; |
| | | } |
| | | $email = sanitize_email($get_params['email']); |
| | | $token = sanitize_text_field($get_params['invite']); |
| | | $user = email_exists($email); |
| | | if (!$user) { |
| | | return $labels; |
| | | } |
| | | $role = jvbUserRole($user); |
| | | // Get invitation data |
| | | $data = $this->verifyInvitation( |
| | | $token, |
| | | $email, |
| | | $role, |
| | | ); |
| | | |
| | | if (!$data) { |
| | | return $labels; |
| | | } |
| | | |
| | | // Build custom message |
| | | $inviters = json_decode($data->inviters, true); |
| | | $name = $data->name; |
| | | $names = array_map(function($inviter) { |
| | | $artist = jvbContentFromUser((int)$inviter['user_id']); |
| | | return $artist['name'] ?: $artist['display_name']; |
| | | }, $inviters); |
| | | |
| | | $message = count($names) > 1 |
| | | ? 'are already here, and have invited you to join in!' |
| | | : ' is already here, and invited you to join in!'; |
| | | |
| | | // Modify labels |
| | | $labels['title'] = 'Join the Scene, ' . $data->name; |
| | | $labels['description'] = [jvbCommaList($names) . ' ' . $message]; |
| | | |
| | | return $labels; |
| | | } |
| | | } |