From 8c6502de2f8ec2bd8382cd6945c327d7be400e14 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Wed, 28 Jan 2026 05:34:41 +0000
Subject: [PATCH] =Queue cleanup - seems to be working enough to get legacy before and after going!
---
inc/rest/routes/UploadRoutes.php | 96 +++++++++++++++++++++++++++++++++++++-----------
1 files changed, 74 insertions(+), 22 deletions(-)
diff --git a/inc/rest/routes/UploadRoutes.php b/inc/rest/routes/UploadRoutes.php
index 941207b..1da0412 100644
--- a/inc/rest/routes/UploadRoutes.php
+++ b/inc/rest/routes/UploadRoutes.php
@@ -2,6 +2,8 @@
namespace JVBase\rest\routes;
use JVBase\JVB;
+use JVBase\managers\queue\executors\UploadExecutor;
+use JVBase\managers\queue\TypeConfig;
use JVBase\rest\RestRouteManager;
use JVBase\meta\MetaManager;
use JVBase\managers\UploadManager;
@@ -21,9 +23,62 @@
{
$this->action = 'dash-';
parent::__construct();
- add_filter(BASE.'handle_bulk_operation', [$this, 'processOperation'], 10, 3);
+
+ add_action('init', [$this, 'registerUploadExecutors'], 5);
}
+ /**
+ * Register upload operation types with the queue's TypeRegistry
+ */
+ public function registerUploadExecutors(): void
+ {
+ $registry = JVB()->queue()->registry();
+ $executor = new UploadExecutor();
+
+ // Image uploads - chunked at 5 files
+ $registry->register('image_upload', new TypeConfig(
+ executor: $executor,
+ chunkKey: 'secured_files',
+ chunkSize: 5
+ ));
+
+ // Video uploads - one at a time (heavy processing)
+ $registry->register('video_upload', new TypeConfig(
+ executor: $executor,
+ chunkKey: 'secured_files',
+ chunkSize: 1
+ ));
+
+ // Document uploads - chunked at 10
+ $registry->register('document_upload', new TypeConfig(
+ executor: $executor,
+ chunkKey: 'secured_files',
+ chunkSize: 10
+ ));
+
+ // Metadata updates
+ $registry->register('update_metadata', new TypeConfig(
+ executor: $executor
+ ));
+
+ // Cleanup - chunked at 5
+ $registry->register('temporary_cleanup', new TypeConfig(
+ executor: $executor,
+ chunkKey: 'files',
+ chunkSize: 5
+ ));
+
+ // Attach to content (depends on upload completing)
+ $registry->register('attach_upload_to_content', new TypeConfig(
+ executor: $executor
+ ));
+
+ // Process upload groups into posts
+ $registry->register('process_upload_groups', new TypeConfig(
+ executor: $executor
+ ));
+ }
+
/**
* Registers upload routes
* @return void
@@ -728,14 +783,8 @@
try {
$data = $request->get_params();
- // Validate user permissions
- if (!$this->userCheck($data['user'])) {
- return $this->sendResponse(
- false,
- ['error_code' => 'invalid_user'],
- 'Invalid user specified'
- );
- }
+ error_log('Received data for meta change: '.print_r($data, true));
+
$items = $data['items']??false;
if (!$items) {
@@ -748,12 +797,12 @@
}
$pending = [];
$attachments = array_filter($items, function ($item) {
- return is_numeric($item);
- }, ARRAY_FILTER_USE_KEY);
+ return array_key_exists('attachmentId', $item);
+ });
if (count($attachments) !== count($items)) {
$pending = array_filter($items, function ($item) {
- return !is_numeric($item);
- }, ARRAY_FILTER_USE_KEY);
+ return array_key_exists('uploadId',$item);
+ });
}
@@ -796,9 +845,12 @@
{
$updated_count = 0;
$errors = [];
-
- foreach ($data as $attachment_id => $info) {
+ $ids = [];
+ foreach ($data as $info) {
try {
+ $attachment_id = $info['attachmentId'];
+ $ids[] = $attachment_id;
+ unset($info['attachmentId']);
// Verify attachment exists and user has permission
if (!$this->verifyAttachmentAccess($attachment_id, $user)) {
$errors[] = "No permission to edit attachment {$attachment_id}";
@@ -818,7 +870,7 @@
[
'updated_count' => $updated_count,
'errors' => $errors,
- 'attachment_ids' => $data['attachment_ids']
+ 'attachment_ids' => $ids
],
$updated_count > 0 ?
"Updated metadata for {$updated_count} attachment(s)" :
@@ -938,18 +990,18 @@
protected function applyMeta(int $attachment_id, array $metadata): void
{
// Update alt text
- if (!empty($metadata['alt'])) {
- update_post_meta($attachment_id, '_wp_attachment_image_alt', sanitize_text_field($metadata['alt']));
+ if (!empty($metadata['image-alt-text'])) {
+ update_post_meta($attachment_id, '_wp_attachment_image_alt', sanitize_text_field($metadata['image-alt-text']));
}
$postUpdates = [];
// Update title
- if (!empty($metadata['title'])) {
- $postUpdates['post_title'] = $metadata['title'];
+ if (!empty($metadata['image-title'])) {
+ $postUpdates['post_title'] = $metadata['image-title'];
}
// Update caption
- if (!empty($metadata['caption'])) {
- $postUpdates['post_excerpt'] = sanitize_textarea_field($metadata['caption']);
+ if (!empty($metadata['image-caption'])) {
+ $postUpdates['post_excerpt'] = sanitize_textarea_field($metadata['image-caption']);
}
if (!empty($postUpdates)) {
--
Gitblit v1.10.0