From de317675a8069b747cb253ba3e2b5dc394ca36ef Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 18 Jul 2026 21:44:51 +0000
Subject: [PATCH] =Base Integrations mainly done - doing a test with setting up the Square integration to follow

---
 inc/managers/queue/executors/IntegrationExecutor.php |   25 +++++++++----------------
 1 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/inc/managers/queue/executors/IntegrationExecutor.php b/inc/managers/queue/executors/IntegrationExecutor.php
index ea79960..428dc88 100644
--- a/inc/managers/queue/executors/IntegrationExecutor.php
+++ b/inc/managers/queue/executors/IntegrationExecutor.php
@@ -86,9 +86,6 @@
 	 */
 	private function parseOperationType(string $type): array
 	{
-		// Remove BASE prefix if present (e.g. 'jvb_helcim_sync_to' → 'helcim_sync_to')
-		$type = str_replace(BASE, '', $type);
-
 		$pos = strpos($type, '_');
 		if ($pos === false) {
 			throw new Exception("Invalid integration operation type: {$type}");
@@ -103,21 +100,12 @@
 	/**
 	 * Resolve integration instance, optionally for a specific user
 	 */
-	private function resolveIntegration(string $serviceName, int $userId): ?object
+	private function resolveIntegration(string $serviceName, ?int $userId = null): ?object
 	{
-		if (!isset($this->integrationCache[$serviceName])) {
-			$this->integrationCache[$serviceName] = JVB()->connect($serviceName);
+		if ($userId === 0) {
+			$userId = null;
 		}
-
-		$integration = $this->integrationCache[$serviceName];
-
-		// If operation has a user context, re-instantiate for that user
-		if ($integration && $userId) {
-			$class = get_class($integration);
-			return new $class($userId);
-		}
-
-		return $integration;
+		return JVB()->connect($serviceName, $userId);
 	}
 
 	/*****************************************************************
@@ -137,6 +125,11 @@
 			return new Result(outcome: 'success', result: ['synced' => [], 'message' => 'No items to sync']);
 		}
 
+		if ($integration->hasBatchUpdate()) {
+			$result = $integration->updateBatchToService($data['items']);
+			return new Result(outcome: $result['outcome'], result: $result['result']);
+		}
+
 		foreach ($items as $postID) {
 			try {
 				$result = $integration->syncPostToService((int)$postID);

--
Gitblit v1.10.0