From 1aa7c404dae63c9518468fe9b579fad819f8d871 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 13 Sep 2026 18:32:43 +0000
Subject: [PATCH] =Single Event page setup done through the new Event block. Currently working on the Simple Calendar block setup

---
 inc/registrar/Registrar.php |   54 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/inc/registrar/Registrar.php b/inc/registrar/Registrar.php
index 7c872fd..69a4622 100644
--- a/inc/registrar/Registrar.php
+++ b/inc/registrar/Registrar.php
@@ -3,6 +3,7 @@
 
 
 use JVBase\base\Site;
+use JVBase\inc\registrar\helpers\AddCustomFields;
 use JVBase\inc\registrar\helpers\HideSingle;
 use JVBase\managers\Cache;
 use JVBase\managers\CRUD;
@@ -57,11 +58,13 @@
 	public bool $baseless = false;
 	public bool $modify = false;
 
+	protected ?AddCustomFields $addFields = null;
+
 	protected static array $allFlags = [
 		//Shared Flags
 		'favouritable', 'karma', 'show_feed', 'show_directory', 'approve_new', 'has_responses', 'invitable',
 		//Post Flags
-		'hide_single', 'redirect_to_author', 'is_calendar', 'single_image', 'is_timeline', 'is_gallery', 'is_faq', 'is_glossary', 'rewrite_taxonomy', 'add_image_column', 'is_profile',
+		'hide_single', 'redirect_to_author', 'is_calendar', 'single_image', 'is_timeline', 'is_gallery', 'is_faq', 'is_glossary', 'rewrite_taxonomy', 'add_image_column', 'is_profile', 'is_food_menu',
 		//Taxonomy Flags
 		'is_content', 'is_ownable', 'verify_entry', 'track_changes', 'associate_user_content', 'prefix_post_type',
 		//User Flags
@@ -192,8 +195,9 @@
 	 */
 	public bool $profile_link;
 	public bool $is_profile = false;
+	public bool $is_food_menu = false;
 	/**
-	 * @var array|string
+	 * @var array
 	 */
 	protected array $can_create = [];
 	/**
@@ -234,6 +238,9 @@
 	private static array $instances = [];
 
 	protected string $based;
+
+
+	protected static array $processing = ['terms'=>[],'posts'=>[],'users' =>[]];
 	private function __construct(string $slug, string $singular, string $plural, string $type) {
 		$this->slug = $slug;
 		$this->based = jvbCheckBase($slug);
@@ -267,14 +274,11 @@
 				$exclude = $cache->remember(
 					$feature,
 					function () use ($instance, $feature) {
-						switch ($feature) {
-							case 'hide_single':
-								return $instance->excludeSingle();
-							case 'is_timeline':
-								return $instance->excludeTimeline();
-							default:
-								return [];
-						}
+						return match ($feature) {
+							'hide_single' => $instance->excludeSingle(),
+							'is_timeline' => $instance->excludeTimeline(),
+							default => [],
+						};
 					}
 				);
 
@@ -341,6 +345,8 @@
 	/**
 	 * Instantiates for post types
 	 * @param string $slug
+	 * @param string $singular
+	 * @param string $plural
 	 * @return self
 	 */
 	public static function forPost(string $slug, string $singular, string $plural):self
@@ -354,6 +360,8 @@
 	/**
 	 * Instantiates for term types
 	 * @param string $slug
+	 * @param string $singular
+	 * @param string $plural
 	 * @return self
 	 */
 	public static function forTerm(string $slug, string $singular, string $plural):self
@@ -367,6 +375,8 @@
 	/**
 	 * Instantiates for user types
 	 * @param string $slug
+	 * @param string $singular
+	 * @param string $plural
 	 * @return self
 	 */
 	public static function forUser(string $slug, string $singular, string $plural):self
@@ -433,12 +443,12 @@
 	{
 		$this->fields = new Fields($this->type, $this);
 	}
-	public function getFields():array
+	public function getFields(bool $includeDefaults = true):array
 	{
 		return array_map(function ($field) {
 			return $field->getConfig();
 		},
-			$this->fields->getFields()
+			$this->fields->getFields($includeDefaults)
 		);
 	}
 	public function setIcon(string $icon):self
@@ -483,7 +493,7 @@
 			error_log('Integration not available for '.$this->slug.': '.$integration);
 			return $this;
 		}
-		$this->integrationConfigs[$integration] = new Integration($integration, $this);
+		$this->integrationConfigs[$integration] = new Integration($integration);
 		$this->integrationFields[$integration] = new AddIntegrationFields($integration, $this);
 		return $this;
 	}
@@ -881,6 +891,7 @@
 			if ($this->registrar) {
 				$this->registrar->register();
 			}
+			$this->addFields = new AddCustomFields($this);
 			if ($this->add_image_column) {
 				add_filter("manage_{$this->based}_posts_columns", [$this, 'addImageColumn']);
 				add_action("manage_{$this->based}_posts_custom_column", [$this, 'showImageColumn'], 10, 2);
@@ -1052,14 +1063,12 @@
 		}
 		public function addTermUpdatedMeta(int $termId):void
 		{
-
-            static $processing = [];
-            if (isset($processing[$termId])) return;
-            $processing[$termId] = true;
+            if (self::$processing['terms'][$termId]) return;
+			self::$processing['terms'][$termId] = true;
 
             update_term_meta($termId, BASE . 'date_modified', date('Y-m-d H:i:s'));
 
-            unset($processing[$termId]);
+            unset(self::$processing['terms'][$termId]);
 		}
 
 	public function renderContent(string $content, array $block):string
@@ -1255,6 +1264,15 @@
         }, $hasProfiles));
     }
 
+	public function setAsFoodMenu():void
+	{
+		$this->is_food_menu = true;
+	}
+		public static function getFoodMenuTypes():array
+		{
+			return array_map('jvbCheckBase', self::withFeature('is_food_menu'));
+		}
+
 	public function setUserSubtype(string $type):self
 	{
 		$this->user_subtype = sanitize_text_field($type);

--
Gitblit v1.10.0