From 87237f15618e2320967b9380c360b89f7323d2e9 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 30 Aug 2026 16:01:05 +0000
Subject: [PATCH] =Meta overhaul, slight reference fixes in BreadcrumbsManager
---
inc/managers/DashboardManager.php | 65 ++++++++++++++++++--------------
1 files changed, 37 insertions(+), 28 deletions(-)
diff --git a/inc/managers/DashboardManager.php b/inc/managers/DashboardManager.php
index 73be522..fc91ddf 100644
--- a/inc/managers/DashboardManager.php
+++ b/inc/managers/DashboardManager.php
@@ -3,7 +3,7 @@
use JetBrains\PhpStorm\NoReturn;use JVBase\forms\TaxonomySelector;
use JVBase\base\Site;
-use JVBase\meta\Form;
+use JVBase\integrations\ServiceMap;use JVBase\meta\Form;
use JVBase\registrar\Registrar;
use JVBase\ui\Navigation;
use WP_Error;use WP_Query;use WP_User;
@@ -17,6 +17,8 @@
*/
class DashboardManager
{
+ use ServiceMap;
+
protected WP_User $user;
protected Cache $cache;
protected string $role;
@@ -25,10 +27,8 @@
public function __construct()
{
- $this->cache = Cache::for('dashboard', WEEK_IN_SECONDS)->connect('user')->user();
- if (JVB_TESTING) {
- $this->cache->flush();
- }
+ $this->cache = Cache::for('dashboard', WEEK_IN_SECONDS)->user();
+
add_action('init', [$this, 'registerDashboard']);
@@ -49,7 +49,6 @@
}
public function excludeDashboard(array $IDs):array {
- $this->cache->flush();
$exclude = $this->cache->remember(
'dashboardIDs',
function() {
@@ -218,7 +217,7 @@
$page = $this->getCurrentPageTitle();
// Check if page exists in allowed pages
$allowedPages = $this->getUserAllowedPages();
-
+ error_log('Allowed pages: '.print_r($allowedPages, true));
if (!in_array($page, $allowedPages)) {
error_log("User not allowed to access page: {$page}");
$this->redirectToDashboard();
@@ -297,11 +296,10 @@
*/
protected function buildIntegrationPages(int $parentID):void
{
- $integrations = JVB()->getAvailableServices(false);
-
- foreach ($integrations as $name => $integration) {
+ $integrations = $this->getAvailableServices();
+ foreach ($integrations as $service) {
+ $integration = $this->getService($service);
$title = $integration->getTitle();
-
$slug = sanitize_title($title);
$this->createDashboardPage($slug, $title, $parentID);
}
@@ -360,7 +358,7 @@
}
$integrationSlugs = array_map(function($name) {
return sanitize_title(str_replace('_', '-', $name));
- }, array_keys(JVB()->getAvailableServices(false)));
+ }, array_keys($this->getAvailableServices()));
// Check if this is an integration subpage
if (in_array($page, $integrationSlugs)) {
@@ -747,7 +745,7 @@
Registrar::withFeature('is_content', 'term')
);
$availableContent = array_filter($pages, function($page, $key) use($all) {
- return !is_numeric($key) && in_array($key, $all) && JVB()->roles()->checkRole($this->user, $key);
+ return !is_numeric($key) && in_array($key, $all) && Roles::getInstance()()->checkRole($this->user, $key);
}, ARRAY_FILTER_USE_BOTH);
if (!empty ($availableContent)){
$content = $menu->addItem('Your Content', jvbDashIcon('book-bookmark'))
@@ -865,12 +863,13 @@
public function renderIndex(string $content, string $page):string
{
+ jvbDump($page);
if ($page !== '' && $page !== 'dash') {
return $content;
}
if (Site::has('referrals')) {
- $whatever = JVB()->referrals()->getReferralWelcomeMessage($this->user->ID);
+ $whatever = Referrals::getInstance()->getReferralWelcomeMessage($this->user->ID);
if (!empty($whatever)) {
return $whatever;
}
@@ -932,18 +931,19 @@
protected function getIntegrationsMenu():string
{
- $integrations = JVB()->getAvailableServices(false);
+ $integrations = $this->getAvailableServices();
$out = '';
if (!empty($integrations)) {
$out = '<nav class="integrations"><ul>';
$url = get_home_url(null, '/dash/integrations/');
$out .= '<li><a href="'.$url.'">'.jvbDashIcon('plugs-connected').'Integrations</a></li>';
- foreach ($integrations as $name=> $integration) {
- if (!JVB()->userCanConnect($name, $this->user->ID) || !$integration->hasDefaults()) {
+ foreach ($integrations as $service) {
+ $integration = $this->getService($service);
+ if (method_exists($integration, 'userCanConnect') && !$integration->userCanConnect($this->user->ID)) {
continue;
}
- $link = sanitize_title(str_replace('_', '-',$name));
+ $link = sanitize_title(str_replace('_', '-',$service));
$out .= '<li><a href="'.$url.$link.'">'.jvbDashIcon($integration->icon).$integration->getTitle().'</a></li>';
}
$out .= '</ul></nav>';
@@ -962,23 +962,28 @@
if ($connection !== 'integrations') {
$userID = (Site::has('has_membership')) ? $this->user->ID : null;
- $integration = JVB()->connect($connection, $userID);
-
- echo '<h1>Managing '.$integration->title.'</h1>';
- $integration->renderDefaults();
+ $integration = $this->getServiceUser($connection, $userID);
+ if (method_exists($integration, 'renderDefaults')) {
+ echo '<h1>Managing '.$integration->title.'</h1>';
+ $integration->renderDefaults();
+ }
} else {
?>
<section class="item-grid integrations">
<?php
- $all = JVB()->getAvailableServices();
- foreach ($all as $name) {
+
+ foreach ($this->getAvailableServices() as $name) {
if (current_user_can('manage_options')) {
$userID = null;
} else {
$userID = $this->user->ID;
}
-
- JVB()->connect($name, $userID)->renderConnection();
+ $integration = $this->getService($name);
+ if (method_exists($integration, 'determineUser')
+ && method_exists($integration, 'renderConnection')) {
+ $integration->determineUser();
+ $integration->renderConnection();
+ }
}
?>
</section>
@@ -1322,12 +1327,14 @@
}
if (!$user || !$this->userHasDashboardAccess($user)) {
+ error_log('No Dashboard Access');
return [];
}
$pages = $this->cache->get($userID);
+ $pages = false;
if ($pages === false || JVB_TESTING) {
if (user_can($userID, 'manage_options')) {
// Admin gets all pages as flat array
@@ -1340,6 +1347,7 @@
$pages = $this->getAllDashboardPages();
$canSkip = user_can($userID, 'skip_moderation');
+ jvbDump($pages, 'All Pages');
foreach($pages as $key => $slug) {
//Default to Remove pages
$remove = true;
@@ -1348,7 +1356,7 @@
$membership = Site::membership();
$type = $registrar? $registrar->getType() : false;
if ($type) {
- $permission = JVB()->roles()->getPermission('edit', $key);
+ $permission = Roles::getInstance()()->getPermission('edit', $key);
}
switch ($type) {
case 'content':
@@ -1358,7 +1366,7 @@
break;
case 'taxonomy':
$registrar = Registrar::getInstance($key);
- if ($registrar && $registrar->hasFeature('is_content') && (!empty(JVB()->roles()->getOwnedTerms($userID, $key)) || !empty(JVB()->roles()->getManagedTerms($userID, $key)))){
+ if ($registrar && $registrar->hasFeature('is_content') && (!empty(Roles::getInstance()()->getOwnedTerms($userID, $key)) || !empty(Roles::getInstance()()->getManagedTerms($userID, $key)))){
$remove = false;
} else if (count(array_intersect($registrar->registrar->for, array_keys($pages))) > 0) {
$remove = false;
@@ -1435,6 +1443,7 @@
}
}
break;
+ case 'Account':
case 'dash':
case 'Referrals':
case 'favourites':
--
Gitblit v1.10.0