From c68aefb847b09daa0697de7684d3451e2e68ce1e Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 09 Jul 2026 23:10:23 +0000
Subject: [PATCH] =Refactor of Integrations.php to be a bit more useful with a suite of methods for create, update, delete back and forths for integrations where sharing is enabled. Also considering a single instance with a connect method to connect as the site (no user) vs connecting as an individual user - rather than recreating instances for every user.
---
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