From 772462eeca3002a1d52508aeba485aab2b4742ad Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 03 Mar 2026 19:06:19 +0000
Subject: [PATCH] =MAJOR OVERHAUL. Likely should have made a new branch ages ago. Key changes: Registrar.php is the base for custom post types, taxonomies, and user roles. Replaces JVB_CONTENT, JVB_TAXONOMY, and JVB_USER constants, eliminates most of Features.php (except for JVB_SITE, JVB_MEMBERSHIP), and has built in sanitizing and validation via sub-classes. Also started a major overhaul of the Schema output. Created a shit ton of property traits and classes to help sanitize and ensure proper data for different schema types. Still a bunch to do, but better to be starting committing changes here on this other branch.

---
 activate.php |   59 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/activate.php b/activate.php
index 8287709..a87076f 100644
--- a/activate.php
+++ b/activate.php
@@ -2,9 +2,13 @@
 
 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')) {
@@ -13,21 +17,24 @@
 
 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();
+	Queue::defineTables();
+	CustomTable::ensureTables();
+//    (new JVBase\registry\CheckCustomTables())->maybeCreateTables();
 	error_log('Tables created!');
 
     // Store schema version
@@ -36,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');
@@ -50,22 +59,23 @@
 		Umami::createTables();
 	}
 
-	if (Features::forSite()->has('is_directory')) {
-		error_log('Activating DirectoryManager');
-		DirectoryManager::activate();
-	}
+//	if (Features::forSite()->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,
@@ -97,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);
@@ -113,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()
@@ -269,5 +280,5 @@
 	if (Features::forSite()->has('referrals')){
 		ReferralManager::addSubpage();
 	}
-	SEOAdminPage::addSubpage();
+//	SEOAdminPage::addSubpage();
 }

--
Gitblit v1.10.0