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.
---
inc/blocks/RegisterBlocks.php | 81 ++++++++--------------------------------
1 files changed, 17 insertions(+), 64 deletions(-)
diff --git a/inc/blocks/RegisterBlocks.php b/inc/blocks/RegisterBlocks.php
index 596de1b..f4360f3 100644
--- a/inc/blocks/RegisterBlocks.php
+++ b/inc/blocks/RegisterBlocks.php
@@ -1,21 +1,36 @@
<?php
+use JVBase\registrar\Registrar;
use JVBase\utility\Features;
if (!defined('ABSPATH')) {
exit;
}
//Blocks
-if (jvbSiteUsesFeedBlock()) {
+if (Features::forSite()->has('feed_block')) {
require(JVB_DIR . '/build/feed/render.php');
}
require(JVB_DIR . '/build/list/render.php');
require(JVB_DIR . '/build/summary/render.php');
require(JVB_DIR . '/build/forms/render.php');
require(JVB_DIR . '/build/menu/render.php');
+if (!empty(Registrar::getFeatured('is_glossary'))) {
+ error_log('Has Glossary Type');
+ require(JVB_DIR . '/build/glossary/render.php');
+}
+if (Features::forSite()->has('faq')) {
+ require(JVB_DIR . '/build/faq/render.php');
+}
+if (Features::hasIntegration('gmb')) {
+ require(JVB_DIR . '/build/gmbreviews/render.php');
+}
+
function jvbRegisterBlocks():void
{
+ if (Features::hasIntegration('gmb')) {
+ register_block_type(JVB_DIR . '/build/gmb-reviews');
+ }
// if (jvbSiteUsesFeedBlock()) {
// register_block_type(
// JVB_DIR . '/build/feed',
@@ -24,7 +39,7 @@
// ]
// );
// }
- if (Features::anyContentHas('show_directory') || Features::anyTaxonomyHas('show_directory')) {
+ if (!empty(Registrar::getFeatured('show_directory'))) {
register_block_type(
JVB_DIR . '/build/list',
[
@@ -46,65 +61,3 @@
]);
}
add_filter('block_categories_all', 'jvbRegisterBlockCategory');
-
-//Get our loaded types
-function jvbRegisterFeedTypes():void
-{
- global $jvb_feed;
- global $jvb_taxonomy_for;
-
-
- wp_localize_script('jvb-feed-block-editor', 'jvbBlockSettings', [
- 'contentTypes' => $jvb_feed,
- 'taxonomyFor' => $jvb_taxonomy_for
- ]);
-
-
- // Filter for block.json
- add_filter('block_type_metadata', function ($metadata) use ($jvb_feed) {
- if ($metadata['name'] === 'jvb/feed') {
- $metadata['attributes']['contentTypes']['items']['enum'] = array_keys($jvb_feed);
- }
- return $metadata;
- });
-}
-add_action('wp_loaded', 'jvbRegisterFeedTypes');
-
-if (jvbSiteUsesFeedBlock()) {
- add_action('rest_api_init', 'jvbGetFeedTypes');
- function jvbGetFeedTypes():void
- {
- register_rest_route(
- 'jvb/v1',
- 'types',
- [
- 'permission_callback' => function () {
- return is_user_logged_in();
- },
- 'callback' => function () {
- global $jvb_feed;
- return new WP_REST_Response(json_encode((object) $jvb_feed));
- }
- ]
- );
- }
-}
-
-
-/**
- * Enqueue block editor assets
- */
-function jvbEnqueueBlockEditorAssets():void
-{
- // Only localize for block editor
- if (!is_admin()) {
- return;
- }
- // Localize list types for the block
- wp_localize_script(
- 'jvb-list-editor-script', // This should match your editor script handle
- 'jvbListTypes',
- jvbGlobalDirectoryInfo()
- );
-}
-add_action('enqueue_block_editor_assets', 'jvbEnqueueBlockEditorAssets');
--
Gitblit v1.10.0