| | |
| | | <?php |
| | | |
| | | use JVBase\integrations\Umami; |
| | | use JVBase\managers\Cache; |
| | | use JVBase\managers\CustomTable; |
| | | use JVBase\base\Site; |
| | | use JVBase\managers\DashboardManager; |
| | | use JVBase\managers\DirectoryManager; |
| | | use JVBase\managers\queue\Queue; |
| | | use JVBase\managers\ReferralManager; |
| | | use JVBase\managers\SEO\SEOAdminPage; |
| | | use JVBase\utility\Features; |
| | | use JVBase\managers\RoleManager; |
| | | use JVBase\registrar\Registrar; |
| | | |
| | | if (!defined('ABSPATH')) { |
| | | exit; // Exit if accessed directly |
| | |
| | | |
| | | 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(); |
| | | error_log('Dashboard is setup: '.print_r(JVB()->dashboard(), true)); |
| | | |
| | | // (new JVBase\registry\CheckCustomTables())->maybeCreateTables(); |
| | | error_log('Tables created!'); |
| | | |
| | | // Store schema version |
| | |
| | | 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(); |
| | | RoleManager::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 RoleManager(); |
| | | |
| | | |
| | | $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::getFeatured('is_content')) as $slug) { |
| | | error_log('Adding administrative roles to '.$slug); |
| | | $plural = $roleManager->getContentPlural($slug); |
| | | $capabilities = [ |
| | | 'edit_' . $plural, |
| | | 'edit_published_' . $plural, |
| | |
| | | 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 RoleManager(); |
| | | $users = get_users(['role' => 'administrator']); |
| | | |
| | | foreach (JVB_CONTENT as $slug => $config) { |
| | | foreach (array_merge(Registrar::getRegistered('post'), Registrar::getFeatured('is_content', 'term')) as $slug) { |
| | | |
| | | foreach ($users as $user) { |
| | | // These methods should check if post type exists before adding caps |
| | | $roleManager->grantContent($user, $slug); |
| | |
| | | } |
| | | |
| | | // 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() |
| | |
| | | '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', |
| | |
| | | |
| | | function jvbRegisterAdminPages():void |
| | | { |
| | | if (Features::forSite()->has('referrals')){ |
| | | if (Site::has('referrals')){ |
| | | ReferralManager::addSubpage(); |
| | | } |
| | | SEOAdminPage::addSubpage(); |
| | | // SEOAdminPage::addSubpage(); |
| | | } |