From 3baf3d2545ba6ece6b74a64c0def59bd0774cf54 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 10 Jun 2026 16:34:12 +0000
Subject: [PATCH] =Laid the groundwork for an improved DashboardManager.php setup. Have to put it aside so I can get the dang Northeh done though.

---
 inc/integrations/Integrations.php |   57 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 32 insertions(+), 25 deletions(-)

diff --git a/inc/integrations/Integrations.php b/inc/integrations/Integrations.php
index 54f4cf4..cb08b13 100644
--- a/inc/integrations/Integrations.php
+++ b/inc/integrations/Integrations.php
@@ -29,6 +29,15 @@
 abstract class Integrations
 {
 	/**
+	 * Queue types
+	 * These types match with IntegrationExecutor
+	 */
+	protected static string $syncTo = 'sync_to';
+	protected static string $deleteFrom = 'delete_from';
+	protected static string $syncFrom = 'sync_from';
+	protected static string $syncCustomer = 'sync_customer';
+	protected static string $import = 'import';
+	/**
 	 * API Configuration
 	 * These properties define how the integration connects to external services
 	 */
@@ -57,7 +66,7 @@
 	 * Used for UI rendering in admin interfaces
 	 */
 	public string $title;  // Human-readable service name (e.g., 'Google My Business')
-	public string $icon;   // Phosphoricons icon slug
+	public string $icon = '';   // Phosphoricons icon slug
 
 	/**
 	 * Credentials & State
@@ -319,7 +328,8 @@
 		if (!$taxonomies) {
 			// Combine both content and taxonomy filtering
 			$taxonomies = [];
-			foreach (Registrar::getFeatured('is_content', 'term') as $registrar) {
+			foreach (Registrar::withFeature('is_content', 'term') as $type) {
+				$registrar = Registrar::getInstance($type);
 				if ($registrar->hasIntegration($this->service_name)) {
 					$taxonomies[] = $registrar->getSlug();
 				}
@@ -2704,6 +2714,15 @@
 		return $this->title;
 	}
 
+	public static function title():string
+	{
+		return (new static())->getTitle();
+	}
+	public static function icon():string
+	{
+		return (new static())->getIcon();
+	}
+
 	/*********************************************************************
 		RENDERING
 	 *********************************************************************/
@@ -2944,7 +2963,7 @@
 		?>
 		<form id="<?=$this->service_name?>" class="integration <?php echo $is_connected ? 'connected' : 'disconnected'; ?>"
 			 data-service="<?php echo esc_attr($this->service_name); ?>">
-			<div class="header row btw">
+			<div class="header row x-btw">
 				<h3><?php echo esc_html($this->title); ?></h3>
 				<div class="setup">
 					<?php if ($is_connected): ?>
@@ -3055,7 +3074,7 @@
 				}
 				?>
 			</div>
-			<div class="actions row btw wrap">
+			<div class="actions row x-btw wrap">
 				<?php
 				foreach ($this->buttons as $action => $label) {
 					if (!$is_connected && $action !== 'save_credentials') {
@@ -3339,27 +3358,10 @@
 			return [];
 		}
 
-		$key = BASE.$this->service_name.'_enabled_content_types';
-		$enabled = get_option($key);
-		if (!$enabled) {
-			$enabled = [];
-			foreach (Registrar::getRegistered() as $registrar) {
-				$registrar = Registrar::getInstance($registrar);
-				if (!$registrar->hasIntegration($this->service_name)) {
-					continue;
-				}
-				$type = $registrar->getIntegration($this->service_name)->getContent_type();
-				if (!$type) {
-					continue;
-				}
-
-				if (!in_array($type, $enabled)) {
-					$enabled[] = $type;
-				}
-			}
-			update_option($key, $enabled);
-		}
-		return $enabled;
+		return array_filter(array_map(function($registrar) {
+			$registrar = Registrar::getInstance($registrar);
+			return $registrar->getIntegration($this->service_name)->getContentType();
+		}, Registrar::withIntegration($this->service_name)));
 	}
 
 	protected function getSupportedImage(int $imgID):int
@@ -3542,4 +3544,9 @@
 	{
 		return [];
 	}
+
+	public function getIcon():string
+	{
+		return $this->icon;
+	}
 }

--
Gitblit v1.10.0