From eef16f5a0f5af0aea313e411534643678ba4bea1 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 06 Sep 2026 20:58:21 +0000
Subject: [PATCH] =Polishing up the gutenberg sidebar for custom meta. Seems to be working more or less. Added integration with OpenStreetMaps for location fields. Still to add: row ordering for repeaters, Maybe a better view for the selector field (terms, posts, etc), ensure fields save correctly and repopulate.
---
activate.php | 133 ++++++++++++++++++++-----------------------
1 files changed, 62 insertions(+), 71 deletions(-)
diff --git a/activate.php b/activate.php
index 39b04a1..f792f57 100644
--- a/activate.php
+++ b/activate.php
@@ -1,6 +1,11 @@
<?php
-use JVBase\integrations\Umami;
+use JVBase\managers\Cache;
+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
@@ -8,70 +13,57 @@
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();
+ 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!');
- 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();
- }
+
+ 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!');
-
- $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 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,
@@ -86,7 +78,7 @@
];
foreach ($capabilities as $cap) {
- $role->add_cap($cap, true);
+ $role->add_cap($cap);
}
foreach ($users as $user) {
@@ -103,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);
@@ -119,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()
@@ -155,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',
@@ -199,6 +192,7 @@
jvbDeleteOptions();
jvbDeleteDashboard();
jvbDeleteDirectories();
+ Cache::flushAll();
do_action('jvbDeactivate');
}
@@ -234,14 +228,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()
{
@@ -251,20 +244,18 @@
}
}
-// 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
{
do_action('jvbDailyReset');
error_log('Daily options reset completed at ' . current_time('Y-m-d H:i:s'));
}
+
+
+function jvbRegisterAdminPages():void
+{
+ if (Site::has('referrals')){
+ Referrals::addSubpage();
+ }
+// SEOAdminPage::addSubpage();
+}
--
Gitblit v1.10.0