Jake Vanderwerf
3 days ago ba1e1ccf869b818f7a7a897264dfea05563a7796
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);
      }
@@ -340,7 +378,7 @@
   $queue = [
      'api' => rest_url('jvb/v1/'),
      'redirect' => get_home_url(null, '/login/'),
      'labels' => jvbGetLabels(),
      '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);
}