From a9654f00c8fbc9934289d761843ddd071025013f Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 28 Aug 2026 17:20:28 +0000
Subject: [PATCH] =PHPStorm Code Inspection: fixed class reference errors (from getting rid of JVB() and replacing with direct class::getInstance; as well as general code sniffing, etc

---
 inc/managers/DashboardManager.php |  148 +++++++++++++++++++++++++------------------------
 1 files changed, 76 insertions(+), 72 deletions(-)

diff --git a/inc/managers/DashboardManager.php b/inc/managers/DashboardManager.php
index 062c1bf..fc91ddf 100644
--- a/inc/managers/DashboardManager.php
+++ b/inc/managers/DashboardManager.php
@@ -1,9 +1,9 @@
 <?php
 namespace JVBase\managers;
 
-use JVBase\forms\TaxonomySelector;
+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,9 +27,11 @@
 
     public function __construct()
     {
-        $this->cache = Cache::for('dashboard', WEEK_IN_SECONDS)->connect('user');
+        $this->cache = Cache::for('dashboard', WEEK_IN_SECONDS)->user();
+
+
         add_action('init', [$this, 'registerDashboard']);
-		$this->cache->flush();
+
         $this->user = wp_get_current_user();
         $this->role = jvbUserRole($this->user->ID);
         $this->userLink = (int)get_user_meta($this->user->ID, BASE.'profile_link', true);
@@ -41,11 +45,11 @@
 
 		jvb_register_do_once('buildDashboard', [$this, 'activate']);
 
-		add_filter('the_seo_framework_sitemap_exclude_ids', [$this, 'excludeDashboard'], 10, 1);
+		add_filter('the_seo_framework_sitemap_exclude_ids', [$this, 'excludeDashboard'], 8, 1);
     }
 
-	public function excludeDashboard(array $ids):array {
-		$cached = $this->cache->remember(
+	public function excludeDashboard(array $IDs):array {
+		$exclude = $this->cache->remember(
 			'dashboardIDs',
 			function() {
 				return get_posts([
@@ -54,7 +58,11 @@
 					'fields' => 'ids',
 				]);
 			});
-		return array_merge($ids, $cached);
+		if (!empty($exclude)) {
+			$IDs = array_merge($IDs, $exclude);
+		}
+
+		return $IDs;
 	}
 
     /**
@@ -102,7 +110,7 @@
     /**
      * Redirect all non-admin users from wp-admin to custom dashboard
      */
-    public function redirectFromAdmin()
+    public function redirectFromAdmin():void
     {
 		// Skip if already processing a redirect
 		if (defined('DOING_AJAX') && DOING_AJAX) {
@@ -124,13 +132,13 @@
 		}
     }
 
-	protected function redirectToLogin():void
+	#[NoReturn]protected function redirectToLogin():void
 	{
 		wp_redirect(wp_login_url(get_home_url(null, '/dash')));
 		exit;
 	}
 
-	protected function redirectToDashboard():void
+	#[NoReturn]protected function redirectToDashboard():void
 	{
 		wp_redirect(get_home_url(null, '/dash'));
 		exit;
@@ -182,7 +190,6 @@
 		if (!is_404() && !is_user_logged_in()) {
 			error_log('Redirecting to login - user not logged in');
 			$this->redirectToLogin();
-			return;
 		}
 
 		// If logged in but doesn't have dashboard access, redirect to home
@@ -197,7 +204,6 @@
 		if (is_404() && (str_starts_with($wp->request, 'dash/') || $wp->request === 'dash')) {
 			error_log('404 on dashboard URL, redirecting to dashboard home');
 			$this->redirectToDashboard();
-			return;
 		}
 
 		// For valid dashboard pages, check access permissions
@@ -211,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();
@@ -290,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);
 		}
@@ -353,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)) {
@@ -379,14 +384,13 @@
 	}
 	protected function renderDashboard(string $page):string
 	{
-		ob_start();
+//		ob_start();
 		jvbInlineStyles('nav');
 		jvbInlineStyles('dash');
 		jvbInlineStyles('forms');
 		$this->renderHeader();
 		// Pass to page handler
 		$constantSlug = $this->getConstantSlug($page);
-
         echo apply_filters(
 			'jvbDashboardPage',
 			$this->renderPage($page),
@@ -395,7 +399,8 @@
 		);
 
 		$this->renderFooter();
-		return ob_get_clean();
+//		return ob_get_clean();
+return '';
 //		$integrationSlugs = array_map(function($name) {
 //			return sanitize_title(str_replace('_', '-', $name));
 //		}, array_keys(JVB()->getAvailableServices(false)));
@@ -631,7 +636,10 @@
 				}
 
 			}
-			return $icon;
+			return match($icon) {
+				'favourites'	=> 'heart',
+				default => $icon
+			};
 		});
 	}
 	protected function getSlug(string $slug, string $page):string
@@ -677,7 +685,10 @@
 			if (function_exists($function)) {
 				echo $function([],'');
 			} else {
-				echo JVB()->blocks()->render_core_site_logo([],'');
+				echo render_block( [
+					'blockName' => 'core/site-logo',
+					'attrs'     => [],
+				]);
 			}
 			?>
 
@@ -701,9 +712,9 @@
 
 		<?php
 		$menu = new Navigation('sidebar');
-		$menuClasses = ['col', 'a-start', 'nowrap'];
+		$menuClasses = ['left'];
 		$itemClasses = ['col'];
-		$menu->addClass('col a-start')->hasToggle()->defaultMenuClasses($menuClasses);
+		$menu->addClass('sidebar left')->hasToggle()->defaultMenuClasses($menuClasses);
 		$menu->defaultItemClasses($itemClasses);
 		$pages = $this->getUserAllowedPages()?:[];
 		//Dashboard
@@ -731,10 +742,10 @@
 			//content types
 		$all = array_merge(
 			Registrar::getRegistered('post'),
-			Registrar::getFeatured('is_content', 'term')
+			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'))
@@ -754,8 +765,11 @@
 						$itemMenu = $item->submenu($slug);
 						foreach ($taxonomies as $s) {
 							$taxRegistrar = Registrar::getInstance($s);
-							$itemMenu->addItem($taxRegistrar->getPlural(), $taxRegistrar->getIcon())
+							if ($taxRegistrar) {
+								$itemMenu->addItem($taxRegistrar->getPlural(), $taxRegistrar->getIcon())
 								->url($this->baseURL.'/'.$s);
+							}
+
 						}
 					}
 				}
@@ -849,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;
 			}
@@ -914,42 +929,21 @@
         jvbRenderSections($this->userLink, 'post', $type);
     }
 
-    protected function renderSettings():void
-    {
-		wp_enqueue_script('jvb-form');
-        wp_enqueue_script(
-            'jvb-bio-manager',
-            JVB_URL.'assets/js/min/bioManager.min.js',
-            array('jvb-client-queue', 'sortablejs', 'quill-js', 'jvb-taxonomy-selector'),
-            '1.0.0',
-            true
-        );
-        wp_localize_script('jvb-bio-manager', 'bioSettings', [
-            'type'   => 'user_settings',
-        ]);
-		$content = apply_filters('jvbDashboardSettings', '');
-		if ($content !== '') {
-			echo $content;
-		} else {
-			jvbRenderSections($this->user->ID, 'user', jvbUserRole());
-		}
-
-    }
-
 	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>';
@@ -968,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>
@@ -999,7 +998,7 @@
     {
         ?>
         <div class="approvals container">
-            <nav class="tabs row start" role="tablist">
+            <nav class="tabs row left" role="tablist">
                 <button type="button" class="tab active" data-tab="summary" role="tab" aria-selected="true">
                    <?= jvbDashIcon('infinity')?>All
                 </button>
@@ -1071,11 +1070,11 @@
 		}
 		ob_start();
         ?>
-        <nav class="tabs row start" role="tablist">
+        <nav class="tabs row left" role="tablist">
         <?php
         $i=1;
         $content = Registrar::getRegistered('post');
-        $contentTax = Registrar::getFeatured('is_content', 'term');
+        $contentTax = Registrar::withFeature('is_content', 'term');
         $taxonomies = Registrar::getRegistered('term');
         foreach($contentTax as $index => $tax) {
             unset($taxonomies[$index]);
@@ -1209,6 +1208,7 @@
 
         echo jvbNewModal(
             'edit-modal '.$type,
+			'edit-modal',
             'Edit '.ucfirst($type),
             jvbRenderForm('admin', $fields)
         );
@@ -1268,7 +1268,7 @@
 				$pages[] = 'Favourites';
 			}
 
-			if (!empty(Registrar::getFeatured('karma'))) {
+			if (!empty(Registrar::withFeature('karma'))) {
 				$pages[] = 'Karmic Score';
 			}
 
@@ -1327,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
@@ -1345,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;
@@ -1353,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':
@@ -1363,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,11 +1438,12 @@
 							foreach ($roles as $role) {
 								$contents = Registrar::getInstance($role)?->getCreatable();
 								if (!empty($contents)) {
-									$hasKarma = Registrar::getFeatured('karma');
+									$hasKarma = Registrar::withFeature('karma');
 									$remove = empty(array_intersect($contents, $hasKarma));
 								}
 							}
 							break;
+						case 'Account':
 						case 'dash':
 						case 'Referrals':
 						case 'favourites':
@@ -1496,7 +1500,7 @@
 	 */
 	protected function getRolesWithDashboard():array
 	{
-		return Registrar::getFeatured('has_dashboard', 'user');
+		return Registrar::withFeature('has_dashboard', 'user');
 	}
 
 	/**

--
Gitblit v1.10.0