From ba1e1ccf869b818f7a7a897264dfea05563a7796 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 07 Jun 2026 20:10:20 +0000
Subject: [PATCH] =Major overhaul of Integrations. Playing around with adding fields to post types through Registrar from an integrations' class file.

---
 jvb.php |  174 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 125 insertions(+), 49 deletions(-)

diff --git a/jvb.php b/jvb.php
index 70a9342..16816ed 100644
--- a/jvb.php
+++ b/jvb.php
@@ -4,21 +4,34 @@
 Plugin URI: https://jakevan.ca
 Description: The Base Plugin for JakeVan clients
 Author: Jake Vanderwerf
-Version: 1.0.0
+Version: 1.1.0
 Author URI: https://jakevan.ca/
 Textdomain: jvb
 */
 
 use JVBase\JVB;
 use JVBase\managers\IconsManager;
-use JVBase\utility\Checker;
-use JVBase\utility\Features;
+use JVBase\registrar\Registrar;
+
+use JVBase\base\Site;
 
 //security
 if (!defined('ABSPATH')) {
     exit;
 }
 
+//add_action('admin_enqueue_scripts', function() {
+//	global $wp_scripts;
+//	add_action('admin_print_scripts', function() use ($wp_scripts) {
+//		$queue = $wp_scripts->queue ?? [];
+//		foreach ($queue as $handle) {
+//			$src = $wp_scripts->registered[$handle]->src ?? 'unknown';
+//			error_log("Enqueued: $handle => $src");
+//		}
+//	}, 999);
+//}, 999);
+
+
 /**
  * Track REST API errors by wrapping request execution
  */
@@ -75,15 +88,20 @@
 }, 10, 3);
 
 
-const JVB_LOCAL = 'northeh.test';
 
 function jvbIgnoredPostTypes():array
 {
 	return [BASE.'directory', BASE.'dash', 'attachment', 'revision', 'nav_menu_item'];
 }
-add_filter('show_admin_bar', '__return_false');
+
 
 define('JVB_TESTING', str_contains(get_home_url(),'.test'));
+//const JVB_TESTING = false;
+
+//if (!JVB_TESTING) {
+	add_filter('show_admin_bar', '__return_false');
+//}
+
 //if (JVB_TESTING) {
 //	error_log('In testing mode...');
 //} else {
@@ -102,36 +120,11 @@
 
 
 require(JVB_DIR.'/base/_setup.php');
-//error_log('###############################################');
-//error_log('Registered Base');
-//error_log('###############################################');
-//error_log('BASE: '.print_r(BASE, true));
-//error_log('JVB_SITE: '.print_r(JVB_SITE, true));
-//error_log('JVB_OPTIONS: '.print_r(JVB_OPTIONS, true));
-//error_log('JVB_CONTENT: '.print_r(JVB_CONTENT, true));
-//error_log('JVB_TAXONOMY: '.print_r(JVB_TAXONOMY, true));
-//error_log('JVB_LOGIN: '.print_r(JVB_LOGIN, true));
-//error_log('JVB_MEMBERSHIP: '.print_r(JVB_MEMBERSHIP, true));
-//error_log('JVB_USER: '.print_r(JVB_USER, true));
 
-
-if (empty(JVB_SITE)) {
-    return;
-}
 require(JVB_DIR.'/inc/utility/setup.php');
 require(JVB_DIR.'/checks.php');
-require(JVB_DIR.'/globals.php');
 
-$jvb_feed        = jvbGlobalFeedContent();
-$jvb_taxonomy_for= jvbGlobalTaxonomyFor();
-$jvb_responses     = jvbGlobalResponses();
-
-global $jvb_everything;
-$jvb_everything = array_merge(JVB_CONTENT, JVB_TAXONOMY);
-
-
-require(JVB_DIR . '/inc/registry/_setup.php');
-
+require(JVB_DIR . '/inc/registrar/_setup.php');
 require(JVB_DIR . '/activate.php');
 
 require(JVB_DIR . '/inc/helpers/all.php');
@@ -162,6 +155,13 @@
 	return IconsManager::for($source)->get($name, $options);
 }
 
+function jvbFullIcon(string $name, array $options = []):string
+{
+	$source = $options['source'] ?? 'icons';
+	unset($options['source']);
+	return IconsManager::for($source)->getRawSvg($name, $options['style']??null);
+}
+
 /**
  * Get a CSS data URI for an icon
  *
@@ -237,7 +237,7 @@
     }
 }
 
-require(JVB_DIR . '/inc/users/UserSettings.php');
+//require(JVB_DIR . '/inc/users/UserSettings.php');
 
 
 require(JVB_DIR . '/inc/templates.php');
@@ -249,21 +249,62 @@
 require(JVB_DIR . '/inc/admin/_setup.php');
 
 require(JVB_DIR . '/JVBase.php');
+
+/**
+ * After moving to the Registrar::based registration, we need to carefully time
+ * 	when Site gets defined, as well as Registrar initial definitions, field definitions,
+ * 	and integration config
+ * These custom actions should simplify the timing for us.
+ */
+add_action('plugins_loaded', 'jvb_site_definitions',1);
+add_action('plugins_loaded', 'jvb_registrar_definitions',2);
+add_action('plugins_loaded', 'jvb_field_definitions', 3);
 add_action('init', 'jvbLoadBase', 1);
+add_action('init', 'jvb_integration_definitions',3);
+add_action('init', 'jvb_field_section_definitions', 5);
+/**
+ * Can define the Site settings
+ * @return void
+ */
+function jvb_site_definitions():void
+{
+	do_action('jvb_define_site');
+}
+function jvb_registrar_definitions():void
+{
+	do_action('jvb_define_registrar');
+}
+function jvb_field_definitions():void
+{
+	do_action('jvb_define_fields');
+}
+
+
 function jvbLoadBase():void
 {
 	JVB::getInstance();
 }
+
+function jvb_integration_definitions():void
+{
+	do_action('jvb_define_integrations');
+}
+
+function jvb_field_section_definitions():void
+{
+	do_action('jvb_define_field_sections');
+	Registrar::maybeBuildSections();
+}
+
+
 function JVB(): JVB
 {
 	return JVB::getInstance();
 }
 
 
-function checkIf(): Checker
-{
-	return JVBase\utility\Checker::getInstance();
-}
+
+
 
 require(JVB_DIR . '/inc/blocks/_setup.php');
 
@@ -303,7 +344,7 @@
 {
     add_action('wp_head', 'jvbInlineNavStyles');
 
-	if (Features::forSite()->has('dashboard')) {
+	if (Site::has('dashboard')) {
 		wp_enqueue_script('jvb-queue');
 	}
 
@@ -317,20 +358,17 @@
 
 
 	$interactions = [];
-	if (Features::forSite()->has('favourites')) {
+	if (Site::has('favourites')) {
 		$interactions[] = 'favourites';
 	}
-	if (Features::anyContentHas('karma') ||
-		Features::anyTaxonomyHas('karma') ||
-		Features::anyUserHas('karma')) {
+	if (!empty(Registrar::withFeature('karma'))) {
 		$interactions[] = 'karma';
 	}
-	if (Features::forSite()->has('notifications')) {
+	if (Site::has('notifications')) {
 		$interactions[] = 'notifications';
 	}
 
 	if (!empty($interactions)) {
-		wp_enqueue_script('jvb-interactions');
 		foreach($interactions as $interaction) {
 			wp_enqueue_script('jvb-'.$interaction);
 		}
@@ -339,8 +377,8 @@
 
 	$queue = [
 		'api' => rest_url('jvb/v1/'),
-		'redirect' => wp_login_url(home_url(add_query_arg(null, null))),
-		'labels' => jvbGetLabels(),
+		'redirect' => get_home_url(null, '/login/'),
+		'labels' => Registrar::getLabels(),
 	];
 
     wp_localize_script('jvb-auth', 'jvbSettings', $queue);
@@ -352,7 +390,7 @@
 	window.userFavourites = {};
 	window.userVotes = {};
 	';
-	if (Features::forSite()->has('favourites')) {
+	if (Site::has('favourites')) {
 		wp_enqueue_script('jvb-favourites');
 		$initUserSettings .= '
 		//Fetch user favourites
@@ -378,7 +416,7 @@
 		}';
 	}
 
-	if (Features::anyContentHas('karma') || Features::anyTaxonomyHas('karma') || Features::anyUserHas('karma')) {
+	if (!empty(Registrar::withFeature('karma'))) {
 		wp_enqueue_script('jvb-votes');
 		$initUserSettings .= '// Fetch user votes
         try {
@@ -418,6 +456,10 @@
         wp_enqueue_script('jvb-page-nav');
     }
 
+	if (has_block('jvb/summaryBlock')) {
+		wp_enqueue_script('jvb-page-nav');
+	}
+
         // Only load on single shop pages or other relevant pages
     if (is_tax(BASE.'shop') ||
         is_singular(BASE.'partner')) {
@@ -448,7 +490,7 @@
 //        ');
 //        }
     }
-    if (is_user_logged_in() && Features::forSite()->has('notifications')) {
+    if (is_user_logged_in() && Site::has('notifications')) {
         wp_enqueue_script('jvb-notifications');
 
         wp_localize_script('jvb-notifications', 'notificationSettings', array(
@@ -464,7 +506,7 @@
         ));
     }
 
-    jvbAddScriptDependency('jvb-feed-view-script', 'jvb-queue');
+//    jvbAddScriptDependency('jvb-feed-view-script', 'jvb-queue');
     jvbAddScriptDependency('jvb-feed-view-script', 'jvb-selector');
     jvbAddScriptDependency('jvb-feed-view-script', 'jvb-data-store');
     jvbAddScriptDependency('jvb-feed-view-script', 'jvb-cache');
@@ -476,6 +518,8 @@
 	jvbAddScriptDependency('jvb-forms-view-script', 'jvb-quill');
 	jvbAddScriptDependency('jvb-forms-view-script', 'jvb-form');
 	jvbAddScriptDependency('jvb-forms-view-script', 'jvb-tabs');
+
+	jvbAddScriptDependency('jvb-timeline-view-script', 'jvb-gallery');
 }
 
 function jvbAdminMap():void
@@ -524,10 +568,18 @@
     echo '<div class="screen-reader-text live-region" aria-live="polite" role="status"></div>';
 }
 
+add_action('wp_head', 'jvbFrontendBase',1);
+function jvbFrontendBase():void
+{
+	?>
+	<script type="text/javascript">window.jvbBase = '<?= BASE ?>';</script>
+	<?php
+}
 
 //add_action('wp_head', 'jvbDumpIt');
 function jvbDumpIt()
 {
+
 }
 
 add_action('after_setup_theme', 'jvbImageSize');
@@ -570,3 +622,27 @@
 	}
 	return $result;
 }, 99);
+
+
+add_action('wp_footer', 'jvb_back_to_top');
+function jvb_back_to_top():void
+{
+	echo sprintf(
+		'<a id="back-to-top" class="btn sticky" href="#">%s<span>Back to Top</span></a>',
+		jvbIcon('caret-double-up')
+	);
+}
+
+add_action( 'doing_it_wrong_run', function ( $function_name ) {
+	if ( '_load_textdomain_just_in_time' === $function_name ) {
+		// This will print the full execution path to your screen or log
+		debug_print_backtrace();
+	}
+} );
+
+
+add_filter('the_seo_framework_sitemap_exclude_ids', 'jvb_maybe_exclude_singles', 8, 1);
+function jvb_maybe_exclude_singles(array $IDs):array
+{
+	return Registrar::maybeExcludeSingles($IDs);
+}

--
Gitblit v1.10.0