From a9b3b28d001941921aa70d37fdc87c758a163a44 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Fri, 05 Jun 2026 16:47:03 +0000
Subject: [PATCH] =Some hefty changes to FeedBlock. Transitioning to loading first page in php to save on extra requests. Got a bit to do yet, but I have to work on Northeh for a bit here.
---
inc/rest/routes/UploadRoutes.php | 73 ++++++++++++++++++++++--------------
1 files changed, 45 insertions(+), 28 deletions(-)
diff --git a/inc/rest/routes/UploadRoutes.php b/inc/rest/routes/UploadRoutes.php
index 67183ba..5222e4d 100644
--- a/inc/rest/routes/UploadRoutes.php
+++ b/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
@@ -125,6 +130,8 @@
{
$data = $request->get_params();
$args = [];
+ $registrar = Registrar::getInstance($data['content']??'');
+
foreach ($data as $key => $value) {
switch ($key) {
case 'depends_on':
@@ -135,15 +142,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;
@@ -163,7 +180,7 @@
!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);
+ $args['post_id'] = (int)get_user_meta((int) $value, BASE.'profile_link', true);
}
}
break;
@@ -414,24 +431,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 +463,7 @@
'priority' => 'low',
'chunk_size' => 5,
'chunk_key' => 'files',
- 'depends_on' => $args['upload']
+ 'depends_on' => [$uploadOpId]
]
);
@@ -621,7 +639,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);
}
@@ -634,7 +652,6 @@
// Update with comma-separated string
$meta->set($data['field_name'], implode(',', $all_ids));
- $meta->save();
}
/**
@@ -1084,9 +1101,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];
--
Gitblit v1.10.0