Jake Vanderwerf
2026-07-09 c68aefb847b09daa0697de7684d3451e2e68ce1e
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);