From c32ed859f4abd1591c882f4f2a6ee16b1ec275e2 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 12 May 2026 14:03:27 +0000
Subject: [PATCH] =A little form recovery magic
---
inc/blocks/FeedBlock.php | 91 ++++++++++++++++++++++++---------------------
1 files changed, 49 insertions(+), 42 deletions(-)
diff --git a/inc/blocks/FeedBlock.php b/inc/blocks/FeedBlock.php
index 1a23d95..fba0d1c 100644
--- a/inc/blocks/FeedBlock.php
+++ b/inc/blocks/FeedBlock.php
@@ -2,8 +2,8 @@
namespace JVBase\blocks;
use JVBase\managers\Cache;
-use JVBase\utility\Features;
-use JVBase\utility\Checker;
+use JVBase\registrar\Registrar;
+use JVBase\base\Site;
use JVBase\forms\TaxonomySelector;
use WP_Block;
@@ -21,10 +21,9 @@
{
// Initialize cache with connections
$this->cache = Cache::for('feed_block', WEEK_IN_SECONDS);
-
- if (JVB_TESTING) {
- $this->cache->flush();
- }
+// if (JVB_TESTING) {
+// $this->cache->flush();
+// }
add_action('init', [$this, 'registerBlock']);
}
@@ -54,12 +53,13 @@
if (is_post_type_archive() || is_singular()) {
$content = is_singular() ? jvbNoBase($type->post_type) : jvbNoBase($type->name);
- $mainConfig = JVB_CONTENT[$content]??false;
- if ($mainConfig && array_key_exists('feed', $mainConfig) && array_key_exists('config', $mainConfig['feed'])){
- $config = array_merge($config, $mainConfig['feed']['config']);
+
+ $registrar = Registrar::getInstance($content)??false;
+ if ($registrar) {
+ $config = array_merge($config, $registrar->getConfig('feed'));
} else {
$config['content'] = $content;
- $config['icon'] = JVB_CONTENT[$content]['icon']??[jvbLogoIcon()];
+ $config['icon'] = jvbDefaultIcon();
}
if (is_singular()) {
$config['source'] = $type->ID;
@@ -68,13 +68,13 @@
$config['taxonomies'] = $this->getTaxonomies([$content]);
} elseif (is_tax()) {
$content = jvbNoBase($type->taxonomy);
- $mainConfig = JVB_TAXONOMY[$content]??false;
- if ($mainConfig) {
- $config['content'] = $mainConfig['for_content'];
- $config['context'] = $content; // ← ADD THIS
- $config['taxonomies'] = $this->getTaxonomies($mainConfig['for_content']);
- if (array_key_exists('feed', $mainConfig) && array_key_exists('config', $mainConfig['feed'])){
- $config = array_merge($config, $mainConfig['feed']['config']);
+ $registrar = Registrar::getInstance($content)??false;
+ if ($registrar) {
+ $config['content'] = $registrar->registrar->for;
+ $config['context'] = $content;
+ $config['taxonomies'] = $this->getTaxonomies($registrar->registrar->for);
+ if (!empty($registrar->getConfig('feed'))){
+ $config = array_merge($config, $registrar->getConfig('feed'));
}
}
$config['source'] = $type->term_id;
@@ -89,17 +89,21 @@
/**
* Get taxonomies for given content types
- * Uses Checker instead of globals
+
*/
protected function getTaxonomies(array $content): array
{
- $checker = Checker::getInstance();
+
$taxonomies = [];
foreach ($content as $contentType) {
- $contentTaxonomies = $checker->getTaxonomiesForContent($contentType);
+ $registrar = Registrar::getInstance($contentType);
+ if (!$registrar) {
+ continue;
+ }
+ $contentTaxonomies = $registrar->registrar->taxonomies;
$contentTaxonomies = array_filter($contentTaxonomies, function($taxonomy) {
- return array_key_exists('show_feed', JVB_TAXONOMY[$taxonomy]) && JVB_TAXONOMY[$taxonomy]['show_feed'];
+ return Registrar::getInstance($taxonomy)?->hasFeature('show_feed');
});
$taxonomies = array_merge($taxonomies, $contentTaxonomies);
}
@@ -231,7 +235,7 @@
<?php } ?>
- <?php if (Features::forSite()->has('favourites') && is_user_logged_in()) : ?>
+ <?php if (Site::has('favourites') && is_user_logged_in()) : ?>
<input type="checkbox" id="favourites" class="btn" name="favourites" value="on"
data-filter="favourites">
<label for="favourites" title="Show Favourites" class="row">
@@ -249,19 +253,18 @@
<span class="label">FILTER BY:</span>
<?php
- $checker = Checker::getInstance();
foreach ($this->config['taxonomies'] as $tax) :
- $taxConfig = JVB_TAXONOMY[$tax] ?? null;
- if (!$taxConfig) continue;
+ $registrar = Registrar::getInstance($tax)??false;
+ if (!$registrar) continue;
- $contentForTax = $checker->getContentForTaxonomy($tax);
+ $contentForTax = $registrar->registrar->for;
$hidden = empty($contentForTax) ? ' hidden' : '';
$taxSelector = new TaxonomySelector(
'feed-'.$tax,
$tax,
[
- 'icon' => $taxConfig['icon']??jvbLogoIcon(),
+ 'icon' => $registrar->getIcon()??jvbLogoIcon(),
'update' => '.selected-items-section .selected-items',
'types' => $contentForTax,
'autocomplete' => false,
@@ -312,9 +315,10 @@
<?php
$custom = [];
foreach ($this->getContent() as $content) {
- $config = JVB_CONTENT[$content]??JVB_TAXONOMY[$content]??JVB_USER[$content]??false;
- if ($config && array_key_exists('custom_order', $config)) {
- $custom = array_merge_recursive($custom, $config['custom_order']);
+ $registrar = Registrar::getInstance($content)??false;
+
+ if ($registrar && !empty($registrar->config('feed')->getCustomOrder())) {
+ $custom = array_merge_recursive($custom, $registrar->config('feed')->getCustomOrder());
}
}
foreach ($custom as $slug => $conf) {
@@ -366,8 +370,8 @@
$total = count($this->getContent()) - 1;
for ($i = 1; $i <= 36; $i++) {
$rand = rand(0, $total);
- $config = Features::getConfig($this->getContent()[$rand]);
- $icon = jvbIcon($config['icon']??jvbLogoIcon());
+ $config = Registrar::getInstance($this->getContent()[$rand]);
+ $icon = jvbIcon($config->getIcon??jvbLogoIcon());
?>
<div class="placeholder"><?=apply_filters('jvbFeedPlaceholder', $icon) ?></div>
<?php
@@ -411,7 +415,8 @@
protected function getFavouritesButton(string $content):string
{
- if (!Features::forSite()->has('favourites') && !Features::forContent($content)->has('favouritable')) {
+ $registrar = Registrar::getInstance($content);
+ if (!$registrar || !Site::has('favourites') || !$registrar->hasFeature('favouritable')) {
return '';
}
return '<button class="favourite" type="button" title="Add to favourites" data-action="favourite">
@@ -421,7 +426,8 @@
}
protected function getUpvotesButton(string $content):string
{
- if (!Features::forSite()->has('karma') && !Features::forContent($content)->has('karma')){
+ $registrar = Registrar::getInstance($content);
+ if (!Site::has('karma') || !$registrar || !$registrar->hasFeature('karma')){
return '';
}
return '<div class="karma row">
@@ -438,14 +444,16 @@
}
protected function getDefaultTemplate(string $content): string
{
- $config = JVB_CONTENT[$content]??[];
- $hasConfig = array_key_exists('feed', $config);
- $images = ($hasConfig && array_key_exists('images', $config['feed']) ? $config['feed']['images']:['post_thumbnail']);
- $images = (is_array($images)) ? $images : [$images];
- $fields = ($hasConfig && array_key_exists('fields', $config['feed']) ? $config['feed']['fields']:['post_title', 'post_date']);
+ $config = Registrar::getInstance($content)->getConfig('feed');
+ $allFields = Registrar::getFieldsFor($content);
+ $images = $config['images']??['post_thumbnail'];
+ $fields = $config['fields']??['post_title','post_date','post_excerpt'];
$fields = array_filter($fields, function($field) use($images) {
return !in_array($field, $images);
});
+ $fields = array_filter($allFields, function($field) use($fields) {
+ return in_array($field, $fields);
+ }, ARRAY_FILTER_USE_KEY);
$template = '<div class="feed item col '.$content.'">'.$this->getFavouritesButton($content).$this->getUpvotesButton($content);
//Add all defined images, but allow for filtering
@@ -462,9 +470,8 @@
$fieldsTemplate = '';
- foreach ($fields as $fieldName) {
- $fieldType = JVB_CONTENT[$content][$fieldName]['type']??'text';
- $fieldsTemplate .= apply_filters('jvbFeedItemField', $this->defaultFieldTemplate($fieldType, $fieldName), $content, $fieldName, $fieldType);
+ foreach ($fields as $fieldName => $config) {
+ $fieldsTemplate .= apply_filters('jvbFeedItemField', $this->defaultFieldTemplate($config['type'], $fieldName), $content, $fieldName, $config['type']);
}
$template .= '<div class="item-info">'.apply_filters('jvbFeedItemFields', $fieldsTemplate, $content, $fields).'</div>';
$template .= '</details></div>';
--
Gitblit v1.10.0