Jake Vanderwerf
2026-01-25 b38f03c0e7218762d90fa5092696b127f24f36db
inc/managers/DashboardManager.php
@@ -17,14 +17,14 @@
class DashboardManager
{
    protected WP_User $user;
    protected CacheManager $cache;
    protected Cache $cache;
    protected string $role;
   protected string $baseURL;
    protected int $userLink;
    public function __construct()
    {
        $this->cache = CacheManager::for('dashboard', WEEK_IN_SECONDS);
        $this->cache = Cache::for('dashboard', WEEK_IN_SECONDS)->connect('user');
        add_action('init', [$this, 'registerDashboard']);
        if (!$this->isRegistered()) {
            add_action('init', [$this, 'buildDashboard']);
@@ -210,6 +210,7 @@
         $page = $this->getCurrentPageTitle();
         // Check if page exists in allowed pages
         $allowedPages = $this->getUserAllowedPages();
         if (!in_array($page, $allowedPages)) {
            error_log("User not allowed to access page: {$page}");
            $this->redirectToDashboard();
@@ -353,14 +354,14 @@
         // Pass along to the Integrations template handler which knows to check for subpages
         $page = 'integrations';
      }
      echo $this->renderDashboard($page);
      //TODO: Reenable
//    echo $this->cache->remember(
//       $page,
//       function() use ($page) {
//          return $this->renderDashboard($page);
//       }
//    );
//    echo $this->renderDashboard($page);
      echo $this->cache->remember(
         $page,
         function() use ($page) {
            return $this->renderDashboard($page);
         }
      );
      return '';
    }
@@ -597,8 +598,7 @@
        if (!$post) {
            return '';
        }
        return $post->post_title;
        return html_entity_decode($post->post_title);
    }
   protected function getCurrentPageSlug():string
    {
@@ -1347,15 +1347,14 @@
      }
      $cacheKey = "user_pages_{$userID}";
      $pages = $this->cache->get($cacheKey);
      $pages = false;
      $pages = $this->cache->get($userID);
      if ($pages === false || JVB_TESTING) {
         if (user_can($userID, 'manage_options')) {
            // Admin gets all pages as flat array
            $pages = $this->getAllDashboardPages();
            // Extract just the values (slugs)
            $this->cache->set($cacheKey, $pages, WEEK_IN_SECONDS);
            $this->cache->set($userID, $pages, WEEK_IN_SECONDS);
            return $pages;
         }
         $roles = array_map('jvbNoBase', $user->roles);
@@ -1477,7 +1476,7 @@
         $pages = apply_filters('jvbUserDashboardPages', $pages, $user->roles, $userID);
         $pages = array_unique($pages);
         $this->cache->set($cacheKey, $pages, WEEK_IN_SECONDS);
         $this->cache->set($userID, $pages, WEEK_IN_SECONDS);
      }
      return $pages;
@@ -1551,20 +1550,4 @@
      // Default to edit_{type}s
      return 'edit_'.$type.'s';
   }
   /**
    * Invalidate dashboard page cache for a user or all users
    * Call this when user roles or permissions change
    * @param int|null $userID Specific user to invalidate, null for all
    * @return void
    */
   public function invalidatePagesCache(?int $userID = null):void
   {
      if ($userID !== null) {
         $this->cache->delete("user_pages_{$userID}");
      } else {
         // Invalidate all user caches by invalidating the group
         $this->cache->invalidate();
      }
   }
}