Jake Vanderwerf
2026-07-05 fff721dd185f5b97f7ae7a6e64189e55887ff590
inc/rest/routes/UploadRoutes.php
@@ -4,12 +4,12 @@
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;
@@ -105,7 +105,6 @@
         ->args([
            'id'     => 'string|required',
            'content'   => 'string|required',
            'user'      => 'int|required'
         ])
         ->register();
@@ -114,7 +113,6 @@
         ->auth(PermissionHandler::combine(['nonce']))
         ->rateLimit(30)
         ->args([
            'user'   => 'int|required',
            'items'  => 'array|required',
            'id'    => 'string'
         ])
@@ -130,6 +128,8 @@
    {
        $data = $request->get_params();
      $args = [];
      $registrar = Registrar::getInstance($data['content']??'');
      foreach ($data as $key => $value) {
         switch ($key) {
            case 'depends_on':
@@ -140,15 +140,25 @@
            case 'item_id':
               if (is_numeric($value)) {
                  $args['item_id'] = absint($value);
                  if (!array_key_exists('post_id', $args)) {
                     $args['post_id'] = absint($value);
                  if ($registrar) {
                     switch ($registrar->getType()) {
                        case 'post':
                           $args['post_id'] = absint($value);
                           break;
                        case 'term':
                           $args['term_id'] = absint($value);
                           break;
                        case 'user':
                           $args['user_id'] = absint($value);
                           break;
                     }
                  }
               }
               break;
            // Post Type/Taxonomy
            case 'content':
               $key = str_replace('-', '_', $key);
               if ($value === 'options' || array_key_exists($value, JVB_CONTENT) || Features::forTaxonomy($key)->has('is_content')) {
               $value = str_replace('-', '_', $value);
               if ($value === 'options' || $registrar) {
                  $args['content'] = $value;
               }
               break;
@@ -162,15 +172,13 @@
               break;
            // User ID
            case 'user':
               if ($this->userCheck($value)) {
                  $args['user'] = (int) $value;
                  if (!array_key_exists('post_id', $args) &&
                     !array_key_exists('post_id', $data) &&
                     !array_key_exists('term_id', $data) &&
                     !array_key_exists('item_id', $data)) {
                     $args['post_id'] = (int)get_user_meta((int) $value, BASE.'link', true);
                  }
               if (!array_key_exists('post_id', $args) &&
                  !array_key_exists('post_id', $data) &&
                  !array_key_exists('term_id', $data) &&
                  !array_key_exists('item_id', $data)) {
                  $args['post_id'] = (int)get_user_meta((int) $value, BASE.'profile_link', true);
               }
               break;
            // Operation ID
            case 'id':
@@ -249,13 +257,13 @@
            case 'field_key':
            case 'field_type':
            case 'subtype':
            case 'item_id':
            case 'context':
               if (is_string($value)) {
                  $args[$key] = sanitize_text_field($value);
               }
               break;
         }
         $args['user'] = get_current_user_id();
      }
        return $args;
    }
@@ -274,8 +282,8 @@
         $files = $request->get_file_params();
         $args = $this->buildUploadArgs($request);
         if (!$args['user']) {
         $userID = get_current_user_id();
         if (!$userID) {
             return $this->unauthorized();
         }
         if (!$args['content']) {
@@ -405,7 +413,7 @@
      error_log('With ID: '.print_r($args['upload'], true));
      $queuedProcessing = JVB()->queue()->queueOperation(
         $operation_type,
         $args['user'],
         get_current_user_id(),
         array_merge(
            ['secured_files' => $secured_data['files']],
            $args
@@ -429,7 +437,7 @@
         if (!$queuedProcessing['updated_existing']) {
            JVB()->queue()->queueOperation(
               'attach_upload_to_content',
               $args['user'],
               get_current_user_id(),
               $args,
               [
                  'priority'      => 'high',
@@ -442,7 +450,7 @@
      JVB()->queue()->queueOperation(
         'temporary_cleanup',
         $args['user'],
         get_current_user_id(),
         [
            'files'     => $secured_data['files'],
            'context'   => $args,
@@ -627,7 +635,7 @@
      } elseif (array_key_exists('term_id', $data)) {
         $meta = Meta::forTerm($data['term_id']);
      } else {
         $link = (int)get_user_meta($data['user'], BASE.'link');
         $link = (int)get_user_meta($data['user'], BASE.'profile_link');
         $meta = Meta::forPost($link);
      }
@@ -640,7 +648,6 @@
      // Update with comma-separated string
      $meta->set($data['field_name'], implode(',', $all_ids));
      $meta->save();
   }
   /**
@@ -1090,9 +1097,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];
@@ -1148,7 +1155,7 @@
         $files = $request->get_file_params();
         $args = $this->buildUploadArgs($request);
         if (!array_key_exists('user', $args) || $args['user'] === 0){
         if (!$args['user']) {
            return $this->unauthorized();
         }
         if (!array_key_exists('content', $args) || empty($args['content'])) {