From 7a9054bb3f033c98067b3196378311dae54c5fbf Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 20 Jan 2026 01:31:53 +0000
Subject: [PATCH] =OperationQueue refactor to the JVBase/managers/queue namespace

---
 inc/rest/routes/Invitations.php |   77 ++++++++++++++++++++++++++++++--------
 1 files changed, 61 insertions(+), 16 deletions(-)

diff --git a/inc/rest/routes/Invitations.php b/inc/rest/routes/Invitations.php
index 401cb07..5c7638a 100644
--- a/inc/rest/routes/Invitations.php
+++ b/inc/rest/routes/Invitations.php
@@ -48,6 +48,11 @@
         // 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
@@ -81,16 +86,14 @@
         $toTerm = (array_key_exists('to_term', $data)) ? (int)$data['to_term'] : false;
         $taxonomy = (array_key_exists('taxonomy', $data) && in_array($data['taxonomy'], $this->inviteTypes[$role]['to_terms']??[])) ? $data['taxonomy'] : false;
 
-        $args = [
-            'user'        => (array_key_exists('user', $data)) ? (int)$data['user'] : false,
-            'role'         => $role,
-            'to_term'     => $toTerm,
-            'taxonomy'     => $taxonomy,
-            'status'    => array_key_exists('status', $data) && in_array($data['status'], ['all', 'pending', 'accepted', 'rejected', 'expired', 'revoked']) ? $data['status'] : 'all',
-            'page'        => array_key_exists('page', $data) ? (int)$data['page'] : 1,
-        ];
-
-        return $args;
+		return [
+			'user'        => (array_key_exists('user', $data)) ? (int)$data['user'] : false,
+			'role'         => $role,
+			'to_term'     => $toTerm,
+			'taxonomy'     => $taxonomy,
+			'status'    => array_key_exists('status', $data) && in_array($data['status'], ['all', 'pending', 'accepted', 'rejected', 'expired', 'revoked']) ? $data['status'] : 'all',
+			'page'        => array_key_exists('page', $data) ? (int)$data['page'] : 1,
+		];
     }
     /**
      * @param object $request the request object
@@ -753,9 +756,9 @@
 		}
 		$toContentTax = implode(' ', $toContentTax);
 
-        $button = jvbMailButton($signup_url, 'Join the Scene!');
-        $link = jvbEmailLink($signup_url);
-        $signature = jvbSignature();
+        $button = JVB()->email()->button($signup_url, 'Join the Scene!');
+        $link = JVB()->email()->link($signup_url);
+        $signature = JVB()->email()->signature();
 
 		$message = sprintf(
 			'<p>Hi %s!</p>
@@ -797,7 +800,7 @@
 		);
 
 
-        $success = jvbMail($email, $subject, $message);
+        $success = JVB()->email()->sendEmail($email, $subject, $message);
 
 
         if (!$success) {
@@ -845,7 +848,7 @@
 			$name
 		);
 
-        $success =  jvbMail($email, $subject, $content, 'INVITATION REVOKED');
+        $success =  JVB()->email()->sendEmail($email, $subject, $content, 'INVITATION REVOKED');
         if (!$success) {
             JVB()->error()->log(
                 'invitation_revoke_email',
@@ -1004,7 +1007,6 @@
 
         $key = $this->cache->generateKey($args);
         $cache = $this->cache->get($key);
-        $cache = false;
         if ($cache) {
             return new WP_REST_Response($cache);
         }
@@ -1344,4 +1346,47 @@
             ];
         }
     }
+
+	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;
+	}
 }

--
Gitblit v1.10.0