Jake Vanderwerf
2026-02-04 2127b1bdd73ecd2423e443992da4b442f5a3c1a3
inc/managers/DashboardManager.php
@@ -1,8 +1,10 @@
<?php
namespace JVBase\managers;
use JVBase\forms\TaxonomySelector;use JVBase\managers\CRUD;
use JVBase\meta\MetaManager;
use JVBase\forms\TaxonomySelector;
use JVBase\managers\CRUD;
use JVBase\meta\Form;
use JVBase\meta\Meta;
use JVBase\utility\Features;
use JVBase\ui\Navigation;
use WP_User;
@@ -17,14 +19,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 +212,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 +356,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 +600,7 @@
        if (!$post) {
            return '';
        }
        return $post->post_title;
        return html_entity_decode($post->post_title);
    }
   protected function getCurrentPageSlug():string
    {
@@ -871,7 +873,7 @@
        echo '<h2>What would you like to do today?</h2>';
        echo '<ul>';
        echo '<ul class="dashboard">';
        foreach ($pages as $slug => $page) {
         if ($page === 'dash') {
            continue;
@@ -1127,7 +1129,6 @@
    $jvb_everything = array_merge(JVB_CONTENT, JVB_TAXONOMY);
    foreach ($jvb_everything as $type => $settings) {
        $meta = new MetaManager(null, 'form');
        $fields = jvbGetFields($type);
        ?>
        <template class="<?= $type ?>Table">
@@ -1197,7 +1198,7 @@
                            <?php
                            $config['type'] = 'text';
                            $config['description'] = '';
                            $meta->render('form', $n, $config);
                            Form::render($n, null, $config);
                            ?>
                        </td>
                        <?php
@@ -1212,10 +1213,9 @@
        echo jvbNewModal(
            'edit-modal '.$type,
            'Edit '.ucfirst($type),
            $meta->renderForm('admin', [], $fields)
            jvbRenderForm('admin', $fields)
        );
        }
      return ob_get_clean();
    }
@@ -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();
      }
   }
}