Jake Vanderwerf
2026-04-26 86c6cd3cc099d2480932ede03c12cea01e625c94
inc/managers/_setup.php
@@ -1,61 +1,93 @@
<?php
use JVBase\utility\Features;
require(JVB_DIR . '/inc/managers/CacheManager.php');
require(JVB_DIR . '/icons.php');
use JVBase\managers\Cache;
use JVBase\managers\IconsManager;
use JVBase\registrar\Registrar;
use JVBase\base\Site;
require(JVB_DIR . '/inc/managers/ScriptLoader.php');
require(JVB_DIR . '/inc/managers/CustomTable.php');
//require(JVB_DIR . '/inc/managers/CacheManager.php');
require(JVB_DIR . '/inc/managers/Cache.php');
class_alias('JVBase\managers\Cache', 'JVBase\managers\CacheManager');
require(JVB_DIR . '/inc/managers/IconsManager.php');
add_action('init', 'jvbInit', 1); // Priority 1 - very early
function jvbInit(): void
{
   Cache::registerHooks();
   // Initialize base sources (this registers hooks and includes defaults)
   IconsManager::for();
   IconsManager::for('forms');
   // Only initialize dash if feature is enabled
   if (Site::has('dashboard')) {
      IconsManager::for('dash');
   }
   if (Site::has('magicLink')) {
      require(JVB_DIR . '/inc/managers/MagicLinkManager.php');
   }
   if (Site::hasAny(['dashboard', 'feed_block'])) {
      require(JVB_DIR . '/inc/forms/TaxonomySelector.php');
   }
   if (Site::has('dashboard')) {
      require(JVB_DIR . '/inc/managers/CRUDManager.php');
      require(JVB_DIR . '/inc/managers/UploadManager.php');
   }
   if (Site::has('feed_block')) {
      require(JVB_DIR . '/inc/managers/TaxonomyRelationships.php');
   }
   if (Site::hasAll(['dashboard', 'membership'])) {
      require(JVB_DIR . '/inc/managers/UserTermsManager.php');
   }
   if (Site::has('notifications')) {
      require(JVB_DIR . '/inc/managers/Notifications/Content.php');
      require(JVB_DIR . '/inc/managers/Notifications/EmailDigests.php');
      require(JVB_DIR . '/inc/managers/Notifications/Notifications.php');
      require(JVB_DIR . '/inc/managers/Notifications/Preferences.php');
      require(JVB_DIR . '/inc/managers/NotificationManager.php');
   }
   $membership = Site::membership();
   if ($membership) {
      if ($membership->has('forum') && !empty(Registrar::getFeatured('is_content', 'term'))) {
         require(JVB_DIR . '/inc/managers/NewsRelationships.php');
      }
      if ($membership->has('invitable')) {
         require(JVB_DIR . '/inc/managers/InvitationsManager.php');
      }
   }
   if (Site::has('is_directory')) {
      require(JVB_DIR . '/inc/managers/DirectoryManager.php');
   }
   if (Site::has('dashboard')) {
      require(JVB_DIR . '/inc/managers/DashboardManager.php');
   }
   if (Site::has('referrals')) {
      require(JVB_DIR . '/inc/managers/ReferralManager.php');
   }
}
require(JVB_DIR . '/inc/managers/ErrorHandler.php');
require(JVB_DIR . '/inc/managers/OperationQueue.php');
require(JVB_DIR . '/inc/managers/queue/_setup.php');
require(JVB_DIR . '/inc/managers/EmailManager.php');
require(JVB_DIR . '/inc/managers/LoginManager.php');
if (Features::forSite()->has('magicLink')) {
   require(JVB_DIR . '/inc/managers/MagicLinkManager.php');
}
//require(JVB_DIR . '/inc/managers/SchemaManager.php');
//require(JVB_DIR . '/inc/managers/SEOMetaManager.php');
require(JVB_DIR . '/inc/managers/SEO/_setup.php');
//IF SITE HAS DASHBOARD AND FEED BLOCK
if (Features::forSite()->hasAny(['dashboard', 'feed_block'])) {
   require(JVB_DIR . '/inc/forms/TaxonomySelector.php');
}
//IF SITE HAS DASHBOARD
if (Features::forSite()->has('dashboard')) {
   require(JVB_DIR . '/inc/managers/CRUDManager.php');
   require(JVB_DIR . '/inc/managers/UploadManager.php');
}
//IF SITE HAS FEED BLOCK
if (Features::forSite()->has('feed_block')) {
   require(JVB_DIR . '/inc/managers/TaxonomyRelationships.php');
   new JVBase\managers\TaxonomyRelationships();
}
//if (Features::forSite()->hasAll(['dashboard', 'membership', 'feed_block'])) {
   require(JVB_DIR . '/inc/managers/UserTermsManager.php');
   new JVBase\managers\UserTermsManager();
//}
if (Features::forSite()->has('notifications')) {
   require(JVB_DIR . '/inc/managers/NotificationManager.php');
}
if (Features::forMembership()->has('forum') && Features::anyTaxonomyHas('is_content')) {
   require(JVB_DIR . '/inc/managers/NewsRelationships.php');
}
require(JVB_DIR . '/inc/managers/SchemaManager.php');
require(JVB_DIR . '/inc/managers/SEOMetaManager.php');
require(JVB_DIR . '/inc/managers/DirectoryManager.php');
require(JVB_DIR . '/inc/managers/ImageGenerator.php');
require(JVB_DIR . '/inc/managers/AdminPages.php');
require(JVB_DIR . '/inc/managers/RoleManager.php');
if (Features::forSite()->has('dashboard')) {
   require(JVB_DIR . '/inc/managers/DashboardManager.php');
}
if (Features::forSite()->has('referrals')) {
   require(JVB_DIR . '/inc/managers/ReferralManager.php');
}