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 | 86 ++++++++++++++++++++++++++++--------------
1 files changed, 57 insertions(+), 29 deletions(-)
diff --git a/inc/rest/routes/Invitations.php b/inc/rest/routes/Invitations.php
index 1372cb4..5c7638a 100644
--- a/inc/rest/routes/Invitations.php
+++ b/inc/rest/routes/Invitations.php
@@ -48,20 +48,8 @@
// Add hooks for processing accepted invitations
add_action('user_register', [$this, 'checkInvitation'], 10, 1);
- add_action('jvbLoginManagerInit', function($loginManager) {
- $loginManager->registerTokenHandler('invite', function($token, $email, $user_id) {
- JVB()->routes('invites')->acceptInvitation($token, $email, $user_id);
- });
- $loginManager->registerMessageHandler('invitation',
- function() {
- return '<h2>You\'ve been invited!</h2><p>Create your account to accept.</p>';
- },
- function() {
- return isset($_GET['invite']);
- }
- );
- });
+ add_filter('jvbLoginLabels', [$this, 'modifyLoginLabels'], 10, 2);
@@ -98,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
@@ -770,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>
@@ -814,7 +800,7 @@
);
- $success = jvbMail($email, $subject, $message);
+ $success = JVB()->email()->sendEmail($email, $subject, $message);
if (!$success) {
@@ -862,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',
@@ -1021,7 +1007,6 @@
$key = $this->cache->generateKey($args);
$cache = $this->cache->get($key);
- $cache = false;
if ($cache) {
return new WP_REST_Response($cache);
}
@@ -1361,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