Jake Vanderwerf
2026-03-03 772462eeca3002a1d52508aeba485aab2b4742ad
inc/rest/routes/UploadRoutes.php
@@ -2,13 +2,14 @@
namespace JVBase\rest\routes;
use JVBase\managers\queue\executors\UploadExecutor;
use JVBase\managers\queue\mergers\UploadMerger;
use JVBase\managers\queue\TypeConfig;
use JVBase\registrar\Registrar;
use JVBase\rest\PermissionHandler;
use JVBase\rest\Rest;
use JVBase\meta\Meta;
use JVBase\managers\UploadManager;
use JVBase\rest\Route;
use JVBase\utility\Features;
use WP_REST_Request;
use WP_REST_Response;
use WP_Error;
@@ -34,9 +35,11 @@
   {
      $registry = JVB()->queue()->registry();
      $executor = new UploadExecutor();
      $merger = new UploadMerger('secured_files');
      // Image uploads - chunked at 5 files
      $registry->register('image_upload', new TypeConfig(
         mergeable: $merger,
         executor: $executor,
         chunkKey: 'secured_files',
         chunkSize: 3
@@ -44,6 +47,7 @@
      // Video uploads - one at a time (heavy processing)
      $registry->register('video_upload', new TypeConfig(
         mergeable: $merger,
         executor: $executor,
         chunkKey: 'secured_files',
         chunkSize: 1
@@ -51,6 +55,7 @@
      // Document uploads - chunked at 10
      $registry->register('document_upload', new TypeConfig(
         mergeable: $merger,
         executor: $executor,
         chunkKey: 'secured_files',
         chunkSize: 5
@@ -143,7 +148,7 @@
            // Post Type/Taxonomy
            case 'content':
               $key = str_replace('-', '_', $key);
               if ($value === 'options' || array_key_exists($value, JVB_CONTENT) || Features::forTaxonomy($key)->has('is_content')) {
               if ($value === 'options' || array_key_exists($value, Registrar::getRegistered('post')) || Registrar::getInstance($key)->hasFeature('is_content')??false) {
                  $args['content'] = $value;
               }
               break;
@@ -414,24 +419,25 @@
      error_log('queuedProcessing operation: '.print_r($queuedProcessing, true));
      $uploadOpId = $queuedProcessing['operation_id'];
      if ($args['mode'] !== 'selection') {
         $dependencies = [$args['upload']];
         error_log('Queueing attach to upload with id: '.print_r($args['id'], true));
         error_log('And dependent on: '.print_r($dependencies, true));
         error_log('Attaching args: '.print_r($args, true));
         $attachingOp = JVB()->queue()->queueOperation(
            'attach_upload_to_content',
            $args['user'],
            $args,
            [
               'priority'      => 'high',
               'operation_id'  => $args['id'],
               'depends_on'    => $dependencies
            ]
         );
         error_log('queued attaching operation: '.print_r($attachingOp, true));
         // Only create attach_upload_to_content if the upload was NOT merged.
         // When merged, the original upload's attach_upload_to_content
         // will handle all files after the merged image_upload completes.
         if (!$queuedProcessing['updated_existing']) {
            JVB()->queue()->queueOperation(
               'attach_upload_to_content',
               $args['user'],
               $args,
               [
                  'priority'      => 'high',
                  'operation_id'  => $args['id'],
                  'depends_on'    => [$uploadOpId]
               ]
            );
         }
      }
      JVB()->queue()->queueOperation(
@@ -445,7 +451,7 @@
            'priority'      => 'low',
            'chunk_size'    => 5,
            'chunk_key'     => 'files',
            'depends_on'    => $args['upload']
            'depends_on'    => [$uploadOpId]
         ]
      );
@@ -1084,9 +1090,9 @@
      if (!empty($args['content']) && !empty($args['field_name'])) {
         $content_type = $args['content'];
         $field_name = $args['field_name'];
         if (array_key_exists($content_type, JVB_CONTENT)) {
            $content_fields = JVB_CONTENT[$content_type]['fields'] ?? [];
         $registrar = Registrar::getInstance($content_type);
         if ($registrar) {
            $content_fields = $registrar->getFields();
            if (array_key_exists($field_name, $content_fields)) {
               $field_def = $content_fields[$field_name];