Jake Vanderwerf
2026-02-11 6110744a00d28db84216ceb5313fbb10fe7b5609
=UploadExecutor processAttachToContent fix
1 files modified
28 ■■■■ changed files
inc/managers/queue/executors/UploadExecutor.php 28 ●●●● patch | view | raw | blame | history
inc/managers/queue/executors/UploadExecutor.php
@@ -151,27 +151,43 @@
            throw new Exception('No upload operation ID provided');
        }
        // Get results from the dependency
        $uploadOp = JVB()->queue()->get($uploadOpId);
        if (!$uploadOp || $uploadOp->outcome !== 'success') {
        if (!$uploadOp || !in_array($uploadOp->outcome, ['success', 'partial'])) {
            throw new Exception("Upload operation {$uploadOpId} not completed successfully");
        }
        $uploadResults = $uploadOp->result ?? [];
        $uploadResults = $uploadOp->result['uploads'] ?? [];
        if (empty($uploadResults)) {
            throw new Exception('No upload results found');
        }
        // Attach to content via field
        // Resolve post_id from content_update dependency for new posts
        if (empty($data['post_id']) || str_starts_with((string)($data['item_id'] ?? ''), 'new')) {
            foreach ($operation->dependencies as $depId) {
                $dep = JVB()->queue()->get($depId);
                if ($dep && $dep->type === 'content_update' && !empty($dep->result['new_posts'])) {
                    $itemId = $data['item_id'] ?? null;
                    if ($itemId && isset($dep->result['new_posts'][$itemId])) {
                        $data['post_id'] = $dep->result['new_posts'][$itemId];
                        break;
                    }
                }
            }
            if (empty($data['post_id'])) {
                throw new Exception('Could not resolve post_id from dependencies');
            }
        }
        if (!empty($data['field_name'])) {
            $this->updateFieldValue($data, $uploadResults);
            $this->saveToMeta($data, $uploadResults);
        }
        $progress->advance(1);
        return new Result(
            outcome: 'success',
            result: ['attached' => count($uploadResults)]
            result: ['attached' => count($uploadResults), 'post_id' => $data['post_id']]
        );
    }