Jake Vanderwerf
2026-08-27 f0645f805ecdd19cf5ed9842f9e6b69a86dbcdeb
inc/rest/routes/Invitations.php
@@ -1,6 +1,10 @@
<?php
namespace JVBase\rest\routes;
use JVBase\Instance;
use JVBase\managers\Cache;
use JVBase\managers\InvitationsManager;
use JVBase\managers\Roles;
use JVBase\rest\Rest;
use JVBase\managers\CustomTable;
use JVBase\rest\Route;
@@ -20,22 +24,21 @@
 */
class Invitations extends Rest
{
   use Instance;
   protected array $inviteConfig;
   protected CustomTable $table;
   protected Cache $termCache;
   public function __construct()
   {
      $this->cacheName = 'invitations';
      parent::__construct();
      $this->cache = Cache::for('invitations_posts','post');
      $this->termCache = Cache::for('invitation_terms', 'term');
      // Get invitation configuration
      $this->inviteConfig = JVB()->invitations()->getInviteConfig();
      $this->inviteConfig = InvitationsManager::getInstance()->getInviteConfig();
      $this->table = CustomTable::for('invitations');
      // Cache connections
      $this->cache
         ->connect('user')
         ->connect('taxonomy');
   }
   public function registerRoutes(): void
@@ -43,7 +46,6 @@
      Route::for('invitations')
         ->get([$this, 'getInvitations'])
         ->args([
            'user' => 'int|required',
            'to_term' => 'int',
            'taxonomy' => 'string',
            'status' => 'string|enum:all,pending,accepted,rejected,expired,revoked|default:all',
@@ -54,7 +56,6 @@
         ->post([$this, 'createInvitationRequest'])
         ->args([
            'user' => 'int|required',
            'action' => 'string|enum:create,revoke,refresh|default:create',
            'invites' => 'array',
            'invitation_id' => 'int'
@@ -69,17 +70,17 @@
    */
   public function getInvitations(WP_REST_Request $request): WP_REST_Response
   {
      $userID = $request->get_param('user');
      $userID = get_current_user_id();
      $termID = $request->get_param('to_term');
      $taxonomy = $request->get_param('taxonomy');
      // Validate user
      if (get_current_user_id() !== $userID) {
      if (!$userID) {
         return $this->unauthorized('Invalid user');
      }
      $args = [
         'user' => $userID,
         'id' => $userID,
         'to_term' => $termID,
         'taxonomy' => $taxonomy ? jvbNoBase($taxonomy) : null,
         'status' => $request->get_param('status'),
@@ -87,8 +88,8 @@
      ];
      // Check cache
      $key = $this->cache->generateKey($args);
      if ($cached = $this->cache->get($key)) {
      if ($cached = $this->cache->get($args)) {
         return $this->success($cached);
      }
@@ -98,7 +99,7 @@
         : $this->getUserInvitations($args);
      // Cache result
      $this->cache->set($key, $result);
      $this->cache->set($args, $result);
      return $this->success($result);
   }
@@ -106,10 +107,10 @@
   /**
    * Get invitations for a specific term
    */
   protected function getTermInvitations(array $args): array
   public function getTermInvitations(array $args): array
   {
      // Check permission
      if (!JVB()->roles()->isManager($args['user'], $args['to_term'])) {
      if (!Roles::getInstance()()->isManager($args['user'], $args['to_term'])) {
         return $this->forbidden('You cannot view invitations for this ' . $args['taxonomy'])->get_data();
      }
@@ -185,11 +186,11 @@
    */
   public function createInvitationRequest(WP_REST_Request $request): WP_REST_Response
   {
      $userID = $request->get_param('user');
      $userID = get_current_user_id();
      $action = $request->get_param('action');
      // Validate user
      if (get_current_user_id() !== $userID) {
      if (!$userID) {
         return $this->unauthorized('Invalid user');
      }
@@ -215,7 +216,7 @@
      }
      // Queue using fluent interface
      $op = JVB()->queue()->add(
      $op = Queue::getInstance()->add(
         'invitation_create',
         $userID,
         ['invitations' => $validated],
@@ -233,7 +234,7 @@
    */
   protected function validateInvitations(int $userID, array $invites): array
   {
      return JVB()->invitations()->validateInvitations($userID, $invites);
      return InvitationsManager::getInstance()->validateInvitations($userID, $invites);
   }
@@ -250,7 +251,7 @@
         return $this->error('Invitation ID required');
      }
      $op = JVB()->queue()->add(
      $op = Queue::getInstance()->add(
         'invitation_revoke',
         $userID,
         ['invitation_id' => $invitationID],
@@ -271,7 +272,7 @@
         return $this->error('Invitation ID required');
      }
      $op = JVB()->queue()->add(
      $op = Queue::getInstance()->add(
         'invitation_resend',
         $userID,
         ['invitation_id' => $invitationID],
@@ -310,7 +311,7 @@
      ];
      // Add term information if present
      foreach (JVB()->roles()->getInvitableTaxonomies() as $taxonomy) {
      foreach (Roles::getInstance()()->getInvitableTaxonomies() as $taxonomy) {
         $column = 'to_' . $taxonomy;
         if (isset($invitation->$column) && $invitation->$column) {
            $termID = (int) $invitation->$column;