From fff721dd185f5b97f7ae7a6e64189e55887ff590 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sun, 05 Jul 2026 18:36:57 +0000
Subject: [PATCH] =Cleaning up the Square integration (still a bit more to do yet). Also majorly overhauled /rest/ files to ignore a rest request 'user' paramater, and rely on get_current_user_id() instead.
---
inc/integrations/Integrations.php | 118 +++++++++++++++++++++++-----------------------------------
1 files changed, 47 insertions(+), 71 deletions(-)
diff --git a/inc/integrations/Integrations.php b/inc/integrations/Integrations.php
index 54f4cf4..761e6a0 100644
--- a/inc/integrations/Integrations.php
+++ b/inc/integrations/Integrations.php
@@ -28,6 +28,17 @@
*/
abstract class Integrations
{
+ //Flag to allow for custom settings (defaults, etc) for an integration in the dashboard
+ public static bool $hasExtraOptions = false;
+ /**
+ * 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 +68,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
@@ -166,7 +177,7 @@
protected bool $is_healthy = true;
protected bool $handleWebhooks = false;
- public function __construct(?int $userID = null)
+ protected function __construct(?int $userID = null)
{
$this->cacheName = $this->cacheName ?: $this->service_name;
$this->userID = $userID;
@@ -198,6 +209,13 @@
}
add_filter('jvbShouldRenderMeta', [$this, 'checkRenderField'], 10, 4);
+
+
+ }
+
+ protected function addFilters():bool
+ {
+ return is_null($this->userID);
}
protected function setContentTypes():void
@@ -319,7 +337,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();
}
@@ -1412,51 +1431,6 @@
}
- /**
- * Switch user context
- */
- public function switchUser(int $user_id): void
- {
- if ($this->userID === $user_id) {
- return;
- }
-
- // Clean up current context
- $this->cleanup();
-
- // Switch context
- $this->userID = $user_id;
- $this->credentials = [];
- $this->resetTokenRefreshFlag(); // ADD THIS LINE
-
- $this->ensureInitialized();
- }
-
- public function getAsUser(int $user_id) {
- return new $this($user_id);
- }
-
- /**
- * Clean up resources
- */
- protected function cleanup(): void
- {
- // Clear sensitive data
- $this->credentials = [];
-
- // Clear request history
- $this->request_history = [];
- }
-
- /**
- * Destructor - ensure cleanup
- */
- public function __destruct()
- {
- $this->cleanup();
- }
-
-
/***************************************************************
ERROR HANDLING
***************************************************************/
@@ -2704,6 +2678,20 @@
return $this->title;
}
+ public static function title():string
+ {
+ return static::getInstance()->getTitle();
+ }
+ public static function icon():string
+ {
+ return static::getInstance()->getIcon();
+ }
+
+ public static function hasExtraOptions():bool
+ {
+ return static::getInstance()::$hasExtraOptions;
+ }
+
/*********************************************************************
RENDERING
*********************************************************************/
@@ -2944,7 +2932,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 +3043,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 +3327,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 +3513,9 @@
{
return [];
}
+
+ public function getIcon():string
+ {
+ return $this->icon;
+ }
}
--
Gitblit v1.10.0