Jake Vanderwerf
2026-08-26 d8cc8f9eedcb21c4ba5ac4d91852591fbb179d92
inc/integrations/Integrations.php
@@ -29,6 +29,9 @@
    * These properties define how the integration connects to external services
    */
   protected string|array $apiBase = ''; // Base URL(s) for API endpoints. Array format: ['base' => '', 'auth' => '']
   /**
    * @var array<APIEndpoint> An array of endpoints objects, with optional create, update, delete, batch<x>, and batchImport
    */
   protected array $apiEndpoints = [];   // Valid endpoint paths for this service
   protected int $refresh_interval = 0; //seconds before expiry to refresh tokens. 0 to disable
@@ -56,6 +59,7 @@
      $this->userID = $userID;
      $this->cache = Cache::for('integrations_' . $this->cacheName);
      $this->getPostTypes();
      $this->getTaxonomies();
      $this->getUsers();
@@ -259,7 +263,7 @@
      }
      try {
         if ($this->isOAuthService && !$this->hasOAuthCredentials()){
         if (!$this->hasOAuthCredentials()){
            //If this is an OAuth service, we might only be saving the app credentials first
            $result = true;
         } else {
@@ -334,7 +338,7 @@
      array $data,
      array $options = []
   ):bool {
      $queue = JVB()->queue();
      $queue = Queue::getInstance();
      $queued =  $queue->queueOperation(
         $type,
@@ -397,8 +401,11 @@
      if (!empty($this->syncPostTypes)) {
         $this->addSavePost();
         add_action('transition_post_status', [$this, 'handlePostStatusTransition'], 10, 3);
         if (method_exists($this, 'addSavePost')) {
            $this->addSavePost();
         }
//       add_action('transition_post_status', [$this, 'handlePostStatusTransition'], 10, 3);
         if ($this->canSync['delete']) {
            add_action('before_delete_post', [$this, 'handleDeletePost'], 10, 1);
@@ -486,10 +493,7 @@
   public function hasOAuthCredentials(?int $userID = null): bool
   {
      if ($userID !== $this->userID) {
         $this->switchUser($userID);
      }
      return $this->hasOAuth && $this->hasValidOAuth();
      return false;
   }
@@ -543,7 +547,7 @@
   public static function hasExtraOptions():bool
   {
      return static::getInstance()::$hasExtraOptions;
      return self::$hasExtraOptions;
   }
   /**
@@ -603,7 +607,7 @@
      if ($jpegVersion !== '' && is_int($jpegVersion)) {
         return $jpegVersion;
      }
      $uploader = new UploadManager();
      $uploader = UploadManager::getInstance();
      $converted = $uploader->convertImageTo($imgID, 'jpeg', 80, false);
      if ($converted && !is_wp_error($converted)) {
         update_post_meta($imgID, BASE . 'jpeg_version', $converted['attachment_id']);
@@ -616,6 +620,7 @@
   /**
    * Used by JVBase\registrar\helpers\AddIntegrationFields.php
    * @param string|null $content_type
    * @return array
    */
   public function getAdditionalFields(?string $content_type = null):array