From 275c0d74cd68677622a5431505c5c870c473063d Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 29 Mar 2026 21:40:15 +0000
Subject: [PATCH] =Seems to be working, huzzah! Added some changes for on-this-page nav

---
 activate.php |   98 ++++++++++++++++++++++++++++---------------------
 1 files changed, 56 insertions(+), 42 deletions(-)

diff --git a/activate.php b/activate.php
index 39b04a1..a87076f 100644
--- a/activate.php
+++ b/activate.php
@@ -1,6 +1,15 @@
 <?php
 
 use JVBase\integrations\Umami;
+use JVBase\managers\Cache;
+use JVBase\managers\CustomTable;
+use JVBase\managers\DirectoryManager;
+use JVBase\managers\queue\Queue;
+use JVBase\managers\ReferralManager;
+use JVBase\managers\RoleManager;
+use JVBase\managers\SEO\SEOAdminPage;
+use JVBase\registrar\Registrar;
+use JVBase\utility\Features;
 
 if (!defined('ABSPATH')) {
     exit; // Exit if accessed directly
@@ -8,22 +17,24 @@
 
 function jvbActivatePlugin():void
 {
-	ob_start();
-	$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();
+	Queue::defineTables();
+	CustomTable::ensureTables();
+//    (new JVBase\registry\CheckCustomTables())->maybeCreateTables();
 	error_log('Tables created!');
 
     // Store schema version
@@ -32,7 +43,9 @@
     jvbSchedules();
 	error_log('Schedules done!');
 	error_log('checking Admin capabilities...');
-    jvbAddAdminCaps();
+
+	jvb_register_do_once('admin_caps', 'jvbAddAdminCaps');
+
 	error_log('Admin caps done!');
 	error_log('Removing unneeded roles...');
     remove_role('contributor');
@@ -40,38 +53,29 @@
     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();
 	}
+
+//	if (Features::forSite()->has('is_directory')) {
+//		error_log('Activating DirectoryManager');
+//		jvb_register_do_once('buildDirectory', ['JVBase\managers\DirectoryManager', 'activate']);
+//	}
 	error_log('Activation done! Huzzah!');
-
-	$output = ob_get_clean();
-	if ( $output ) {
-		// Grab a backtrace to see what caused the output
-		$trace = debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS );
-		$formatted = [];
-		foreach ( $trace as $step ) {
-			if ( isset( $step['file'], $step['line'] ) ) {
-				$formatted[] = $step['file'] . ':' . $step['line'];
-			}
-		}
-
-		error_log( "⚠️ Plugin activation produced unexpected output (" . strlen( $output ) . " chars)" );
-		error_log( "Output: " . trim( $output ) );
-		error_log( "Backtrace: " . implode( ' <- ', $formatted ) );
-	}
 }
 
 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,
@@ -103,14 +107,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 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);
@@ -119,7 +124,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()
@@ -199,6 +204,7 @@
     jvbDeleteOptions();
     jvbDeleteDashboard();
     jvbDeleteDirectories();
+	Cache::flushAll();
     do_action('jvbDeactivate');
 }
 
@@ -234,14 +240,13 @@
     $pages = new WP_Query([
         'post_type' => BASE.'directory',
         'posts_per_page'    => -1,
-        'post_status'   => 'any',
+        'post_status'   => ['publish', 'draft','trash'],
         'fields'    => 'ids'
     ]);
-    if ($pages->have_posts()) {
-        foreach ($pages->posts as $ID) {
-            wp_delete_post($ID, true);
-        }
-    }
+	foreach ($pages->posts as $ID) {
+		wp_delete_post($ID, true);
+	}
+
 }
 function jvbClearSchedules()
 {
@@ -268,3 +273,12 @@
 	do_action('jvbDailyReset');
 	error_log('Daily options reset completed at ' . current_time('Y-m-d H:i:s'));
 }
+
+
+function jvbRegisterAdminPages():void
+{
+	if (Features::forSite()->has('referrals')){
+		ReferralManager::addSubpage();
+	}
+//	SEOAdminPage::addSubpage();
+}

--
Gitblit v1.10.0