Jake Vanderwerf
2026-09-18 a6413da67a4579866f0fd0323ddb23a7b6b9654a
inc/integrations/SyncHelpers.php
@@ -3,6 +3,7 @@
use JVBase\managers\queue\executors\IntegrationExecutor;
use JVBase\managers\queue\mergers\DefaultMerger;
use JVBase\managers\queue\Queue;
use JVBase\managers\queue\TypeConfig;
use JVBase\meta\Meta;
use WP_Query;
@@ -12,7 +13,7 @@
}
trait SyncHelpers {
   use _Base;
   use _Base, SyncDefaults;
   /**
    * Queue types
    * These types match with IntegrationExecutor
@@ -23,12 +24,15 @@
   protected static string $syncCustomer;
   protected static string $import;
   protected static array $syncing = ['posts' => [], 'users' => [], 'terms' => []];
   protected function setQueueTypes():void
   {
      self::$syncTo = $this->service_name.'_sync_to';
      self::$deleteFrom = $this->service_name.'_delete_from';
      self::$syncFrom = $this->service_name.'_sync_from';
      self::$syncCustomer = $this->service_name.'_sync_customer';
      //TODO: What is the difference between sync_from and import?
      self::$import = $this->service_name.'import_from';
   }
@@ -42,6 +46,17 @@
         default => ''
      };
   }
   public function setServiceItemID(int $itemID, string $id, string $type = 'post'):bool
   {
      $result = match($type) {
         'post'   => Meta::forPost($itemID)->set("_{$this->service_name}_item_id", $id),
         'term','taxonomy' => Meta::forTerm($itemID)->set("_{$this->service_name}_item_id", $id),
         'user'   => Meta::forUser($itemID)->set("_{$this->service_name}_item_id", $id),
         default => false
      };
      return $result !== false;
   }
   protected function updateItemStatus(int|array $items, string $status = 'pending', string $type = 'post'):void
   {
      if (!is_array($items)) {
@@ -151,7 +166,7 @@
      if (empty($this->syncTaxonomies) && empty($this->syncPostTypes)) {
         return;
      }
      $queue = JVB()->queue();
      $queue = Queue::getInstance();
      $executor = new IntegrationExecutor();
      $queue->registry()->register(self::$syncTo, new TypeConfig(
@@ -179,13 +194,17 @@
      $this->registerAdditionalQueueTypes($executor);
   }
   protected function registerAdditionalQueueTypes(IntegrationExecutor $executor):void
   {
      //Empty. Integration extensions can register additional operation types from here.
   }
   /**
    * @return void Sets the $this->contentTypes
    * Empty. Integration extensions can register additional operation types here
    * @param IntegrationExecutor $executor
    * @return void
    */
   protected function registerAdditionalQueueTypes(IntegrationExecutor $executor):void {}
   /**
    * @return void Sets the $this->contentTypes, which is an array of TYPE => [$fields]
    * Should probably set the endpoints here as well, which would be an array of [ TYPE => [ 'create' => '','update' =>'', 'delete'=>'', 'batchCreate'=>'','batchUpdate'=>'', 'batchDelete'=>''] endpoints
    */
   abstract protected function setContentTypes():void;
}