Jake Vanderwerf
2026-09-09 8318f60480aedd4aa1e64dc35468247dfbba9316
activate.php
@@ -1,10 +1,11 @@
<?php
use JVBase\integrations\Umami;
use JVBase\managers\Cache;
use JVBase\managers\ReferralManager;
use JVBase\managers\SEO\SEOAdminPage;
use JVBase\utility\Features;
use JVBase\managers\CustomTable;
use JVBase\base\Site;
use JVBase\managers\Referrals;
use JVBase\managers\Roles;
use JVBase\registrar\Registrar;
if (!defined('ABSPATH')) {
    exit; // Exit if accessed directly
@@ -12,56 +13,57 @@
function jvbActivatePlugin():void
{
   $validator = new JVBase\utility\Validator();
   $validation = $validator->validateAll();
   error_log('Validation result: '.print_r($validation, true));
   $checker = JVBase\utility\Checker::getInstance();
   error_log('Doing our activation action...');
// $validator = new JVBase\utility\Validator();
// $validation = $validator->validateAll();
// error_log('Validation result: '.print_r($validation, true));
// $checker = JVBase\utility\Checker::getInstance();
// error_log('Doing our activation action...');
   // Get ContentRegistry instance early
   $registry = new JVBase\registry\ContentRegistry();
// $registry = new JVBase\registry\ContentRegistry();
   // Initialize content types
   $registry->onActivation();
   $checker->invalidateContentCache();
   $checker->invalidateTaxonomyCache();
// $registry->onActivation();
// $checker->invalidateContentCache();
// $checker->invalidateTaxonomyCache();
    do_action(BASE.'activation');
   error_log('Action done!');
   error_log('Checking custom tables...');
    (new JVBase\registry\CheckCustomTables())->maybeCreateTables();
   CustomTable::ensureTables();
//    (new JVBase\registry\CheckCustomTables())->maybeCreateTables();
   error_log('Tables created!');
    // Store schema version
    update_option('jvb_db_version', '1.0.0');
    update_option(BASE.'db_version', '1.0.0');
   error_log('Starting schedules...');
    jvbSchedules();
   error_log('Schedules done!');
   error_log('checking Admin capabilities...');
    jvbAddAdminCaps();
   error_log('Admin caps done!');
   error_log('Removing unneeded roles...');
    remove_role('contributor');
    remove_role('author');
    remove_role('editor');
   error_log('Roles removed!');
   error_log('New Roles done!');
   jvbRegisterAdminPages();
   if (array_key_exists('integrations', JVB_SITE) && array_key_exists('umami', JVB_SITE['integrations']) && JVB_SITE['integrations']['umami']=== true) {
      error_log('Adding Umami tables');
      Umami::createTables();
   }
   JVB()->directories()->activate();
   Roles::activate();
   jvbRegisterAdminPages();
// if (array_key_exists('integrations', JVB_SITE) && array_key_exists('umami', JVB_SITE['integrations']) && JVB_SITE['integrations']['umami']=== true) {
//    error_log('Adding Umami tables');
//    Umami::createTables();
// }
// if (Site::has('is_directory')) {
//    error_log('Activating DirectoryManager');
//    jvb_register_do_once('buildDirectory', ['JVBase\managers\DirectoryManager', 'activate']);
// }
   error_log('Activation done! Huzzah!');
}
function jvbAddAdminCaps()
{
   $roleManager = new \JVBase\managers\RoleManager();
   $roleManager = new Roles();
   $role = get_role('administrator');
   $users = get_users(['role' => 'administrator']);
    foreach (JVB_CONTENT as $slug => $config) {
      $plural = strtolower($config['plural']);
    foreach (array_merge(Registrar::getRegistered('post'), Registrar::withFeature('is_content')) as $slug) {
      error_log('Adding administrative roles to '.$slug);
      $plural = $roleManager->getContentPlural($slug);
      $capabilities = [
         'edit_' . $plural,
         'edit_published_' . $plural,
@@ -76,7 +78,7 @@
      ];
      foreach ($capabilities as $cap) {
         $role->add_cap($cap, true);
         $role->add_cap($cap);
      }
      foreach ($users as $user) {
@@ -93,14 +95,15 @@
function jvbGrantAdminUserCaps()
{
   // Only run once after activation
   if (get_option('jvb_admin_caps_granted') === '1') {
   if (get_option(BASE.'admin_caps_granted') === '1') {
      return;
   }
   $roleManager = new \JVBase\managers\RoleManager();
   $roleManager = new Roles();
   $users = get_users(['role' => 'administrator']);
   foreach (JVB_CONTENT as $slug => $config) {
   foreach (array_merge(Registrar::getRegistered('post'), Registrar::withFeature('is_content', 'term')) as $slug) {
      foreach ($users as $user) {
         // These methods should check if post type exists before adding caps
         $roleManager->grantContent($user, $slug);
@@ -109,7 +112,7 @@
   }
   // Mark as complete to prevent running again
   update_option('jvb_admin_caps_granted', '1');
   update_option(BASE.'admin_caps_granted', '1');
   remove_action('init', 'jvbGrantAdminUserCaps', 99);
}
function jvbScheduledHooks()
@@ -145,16 +148,16 @@
            'time'              => '12:03am tomorrow',
        ],
        //NotificationManager.php
        'jvb_notification_digest_daily' =>
        BASE.'notification_digest_daily' =>
            [
                'time'  => '8:08am tomorrow',
            ],
        'jvb_notification_digest_weekly' =>
        BASE.'notification_digest_weekly' =>
            [
                'time'       => 'monday 6:07am',
                'recurrence' => 'weekly',
            ],
        'jvb_notification_digest_monthly' =>
        BASE.'notification_digest_monthly' =>
            [
                'time'       => '2025-05-05 9:00am',
                'recurrence' => 'monthly',
@@ -241,17 +244,6 @@
    }
}
// Optional: Add upgrade routine
function jvbMaybeUpgrade():void
{
    $current_version = get_option('jvb_db_version', '0');
    if (version_compare($current_version, '1.0.0', '<')) {
        jvbActivatePlugin();
    }
}
add_action('plugins_loaded', 'jvbMaybeUpgrade');
add_action('jvb_daily_reset', 'jvbDailyResetAction');
function jvbDailyResetAction(): void
{
@@ -262,8 +254,8 @@
function jvbRegisterAdminPages():void
{
   if (Features::forSite()->has('referrals')){
      ReferralManager::addSubpage();
   if (Site::has('referrals')){
      Referrals::addSubpage();
   }
   SEOAdminPage::addSubpage();
// SEOAdminPage::addSubpage();
}