From 0dfe1d8afafc59c4a5559c498342668d5a58d6ef Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 23 Jul 2026 22:41:41 +0000
Subject: [PATCH] =Still working away at the Integrations overhaul

---
 inc/registrar/Registrar.php |   44 +++++++++++++++++++++++++++-----------------
 1 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/inc/registrar/Registrar.php b/inc/registrar/Registrar.php
index 87f24d8..b30b0cf 100644
--- a/inc/registrar/Registrar.php
+++ b/inc/registrar/Registrar.php
@@ -119,7 +119,7 @@
 	 * @var bool Whether to make this a calendar type (example: events)
 	 */
 	protected bool $is_calendar = false;
-	protected ?MakeCalendarType $isCalendarHandler = null;
+
 	/**
 	 * @var bool Whether this is a before/after post type
 	 */
@@ -222,6 +222,7 @@
 
 	/** Helpers **/
 	protected MakeCalendarType|false $calendar = false;
+	protected bool $hasIntegrations = true;
 	protected array $integrationConfigs = [];
 	protected array $integrationFields = [];
 	protected MakeTrackChanges $trackChanges;
@@ -243,7 +244,10 @@
 		$this->setFields();
 
 		add_action('init', [$this, 'register'], 2);
-		add_filter('jvbDashboardPage', [$this, 'renderDashPage'], 10, 3);
+		if ($this->slug !== 'dash') {
+			add_action(BASE.'dashboard_page_'.$this->slug, [$this, 'renderDashPage'], 10, 2);
+		}
+
 	}
 
 	public static function maybeExcludeSingles(array $IDs):array
@@ -499,10 +503,17 @@
 	}
 	public function hasIntegration(string $integration):bool
 	{
+		if (!$this->hasIntegrations) {
+			return false;
+		}
 		return array_key_exists($integration, $this->integrationConfigs);
 	}
     public function hasAnyIntegrations(array $integrations = []):bool
     {
+		if (!$this->hasIntegrations) {
+			return false;
+		}
+
         if (empty($integrations)) {
             $integrations = array_keys($this->integrationConfigs);
             return !empty($integrations);
@@ -582,6 +593,9 @@
 		foreach ($flags as $flag) {
 			$this->$flag = true;
 			switch ($flag) {
+				case 'is_calendar':
+					$this->calendar = new MakeCalendarType($this->slug, $this);
+					break;
 				case 'is_content':
 					add_action('init', [$this, 'setupContent'], 20);
 					break;
@@ -666,8 +680,8 @@
 	public static function withIntegration(string $integration, ?string $type = null):array
 	{
 		self::ensureInstanced();
-
-		if (!Site::has($integration)) {
+		Site::getInstance();
+		if (!Site::hasIntegration($integration)) {
 			error_log('[Registrar]::withIntegration Integration not available to fetch: '.$integration);
 			return [];
 		}
@@ -676,7 +690,7 @@
 			if (!is_null($type) && $inst->type !== $type) {
 				return false;
 			}
-			return array_key_exists($integration, $this->integrationConfigs);
+			return array_key_exists($integration, $inst->integrationConfigs);
 		}));
 	}
 
@@ -856,9 +870,6 @@
 				$this->isTimelineHandler = new MakeTimelineType($this->slug);
 				$this->registrar->hierarchical = true;
 			}
-			if ($this->is_calendar) {
-				$this->isCalendarHandler = new MakeCalendarType($this->slug, $this);
-			}
 
 			if (!is_null($this->rewrite_taxonomy)) {
 				$this->registrar->addTaxonomyRewrite($this->rewrite_taxonomy);
@@ -962,16 +973,10 @@
 		return $this;
 	}
 
-	public function renderDashPage(string $content, string $page, string $slug):string
+	public function renderDashPage(string $page, string $slug):void
 	{
-		if ($slug === $this->slug) {
-			ob_start();
-			$crud = new CRUD($slug);
-			$crud->render();
-			return ob_get_clean();
-		}
-
-		return $content;
+		$crud = new CRUD($slug);
+		$crud->render();
 	}
 
 	public function setupContent():void
@@ -1312,4 +1317,9 @@
 
 		return [$images,$fields];
 	}
+
+	public function setHasIntegrations(bool $has = true):void
+	{
+		$this->hasIntegrations = $has;
+	}
 }

--
Gitblit v1.10.0