From 32ce5c542c90be348895328078e392dde2052957 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 04 Sep 2026 19:15:16 +0000
Subject: [PATCH] =Working at adding defined fields to a dedicated panel in the gutenberg editor. Registrar now has AddCustomFields.php, which currently only supports post fields. Added a @wordpress/plugins base _meta/fields in /build and /src that successfully creates a panel. Next steps: determine sections and fields, group fields by section (each section to a panel), and save output
---
inc/managers/InvitationsManager.php | 51 +++++++++++++++++++++++++++++++--------------------
1 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/inc/managers/InvitationsManager.php b/inc/managers/InvitationsManager.php
index c8d17a2..cc3078d 100644
--- a/inc/managers/InvitationsManager.php
+++ b/inc/managers/InvitationsManager.php
@@ -2,10 +2,14 @@
namespace JVBase\managers;
use Exception;
+use JVBase\Instance;
use JVBase\managers\queue\executors\InvitationExecutor;
+use JVBase\managers\queue\Queue;
use JVBase\managers\queue\TypeConfig;
use JVBase\registrar\Registrar;
use JVBase\base\Site;
+use JVBase\rest\Rest;
+use JVBase\rest\routes\Invitations;
use WP_Error;
if (!defined('ABSPATH')) {
@@ -14,16 +18,22 @@
class InvitationsManager
{
+ use Instance;
protected array $inviteConfig;
protected CustomTable $table;
protected int $expiryDays = 14;
protected Cache $cache;
- public function __construct()
+ protected Rest $route;
+
+ private function __construct()
{
$this->defineTable();
if (!isset($this->table)) {
return;
}
+ if (Site::membership() && Site::membership()->has('can_invite')) {
+ $this->route = Invitations::getInstance();
+ }
$this->setInviteConfig();
$this->cache = Cache::for('invitations')->user();
add_action('init', [$this, 'registerInvitationExecutors'], 5);
@@ -36,7 +46,7 @@
public function defineTable():void
{
- $terms = Registrar::getFeatured('invitable', 'term');
+ $terms = Registrar::withFeature('invitable', 'term');
$membership = Site::membership();
$roles = ($membership) ? Site::membership()->has('can_invite') :[];
if (empty($terms) && empty($roles)) {
@@ -118,7 +128,7 @@
*/
public function registerInvitationExecutors(): void
{
- $registry = JVB()->queue()->registry();
+ $registry = Queue::getInstance()->registry();
$executor = new InvitationExecutor();
// Create invitations - chunked at 20
@@ -144,10 +154,12 @@
/**
* Build invite types from JVB constants
* Combines JVB_MEMBERSHIP['can_invite'] and invitable taxonomies
+ * TODO: Should be accessible via Site::getInstance()->membership()\
+ *
*/
protected function buildInviteTypes(): array
{
- $invitable = $this->cache->remember(
+ return $this->cache->remember(
'invitableTypes',
function () {
$types = [];
@@ -163,9 +175,9 @@
}
// Term invitations from invitable content taxonomies
- $invitable = Registrar::getFeatured('invitable', 'term');
- $content = Registrar::getFeatured('is_content', 'term');
- $ownable = Registrar::getFeatured('is_ownable', 'term');
+ $invitable = Registrar::withFeature('invitable', 'term');
+ $content = Registrar::withFeature('is_content', 'term');
+ $ownable = Registrar::withFeature('is_ownable', 'term');
$taxonomies = array_intersect($invitable, $content, $ownable);
if (!empty($taxonomies)) {
$users = Registrar::getRegistered('user');
@@ -197,7 +209,6 @@
return $types;
}
);
- return $invitable;
}
@@ -214,7 +225,7 @@
}
// User must be owner or manager of the term
- return JVB()->roles()->isManager($userID, $termID);
+ return Roles::getInstance()()->isManager($userID, $termID);
}
/**
@@ -381,7 +392,7 @@
} catch (Exception $e) {
$this->table->rollback();
- JVB()->error()->log(
+ Errors::getInstance()->log(
'invitation_create',
'Error processing invitations: ' . $e->getMessage(),
['user_id' => $userID],
@@ -554,9 +565,9 @@
}
$termText = implode('', $termContent);
- $button = JVB()->email()->button($signupUrl, 'Join the Scene!');
- $link = JVB()->email()->link($signupUrl);
- $signature = JVB()->email()->signature();
+ $button = Emails::getInstance()->button($signupUrl, 'Join the Scene!');
+ $link = Emails::getInstance()->link($signupUrl);
+ $signature = Emails::getInstance()->signature();
$message = sprintf(
'<p>Hi %s!</p>
@@ -593,7 +604,7 @@
$signature
);
- JVB()->email()->sendEmail($email, $subject, $message);
+ Emails::getInstance()->sendEmail($email, $subject, $message);
}
/**
@@ -655,7 +666,7 @@
// Grant capabilities
$user = get_userdata($userID);
- $user->add_cap('skip_moderation', true);
+ $user->add_cap('skip_moderation');
return true;
});
@@ -671,7 +682,7 @@
$this->notifyInvitersOfAcceptance($invitation, $userID);
// Invalidate cache
- Cache::for('invitations')->forget('user_' . $userID);
+ $this->cache->forget('user_' . $userID);
return true;
}
@@ -681,7 +692,7 @@
*/
protected function processTermMembership(int $userID, object $invitation): void
{
- 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;
@@ -706,7 +717,7 @@
$userData = get_userdata($userID);
foreach ($inviters as $inviter) {
- JVB()->notification()->addNotification(
+ NotificationManager::getInstance()->addNotification(
$inviter['user_id'],
'invitation_accepted',
[
@@ -732,7 +743,7 @@
);
// Clear cache after cleanup
- Cache::for('invitations')->flush();
+ $this->cache->flush();
}
/*****************************************************************
@@ -760,7 +771,7 @@
$name
);
- JVB()->email()->sendEmail($email, $subject, $content, 'INVITATION REVOKED');
+ Emails::getInstance()->sendEmail($email, $subject, $content, 'INVITATION REVOKED');
}
/**
--
Gitblit v1.10.0