Fix HTTP 500 error - use existing helper functions instead of createAssetManager
Fixed: - Replaced non-existent createAssetManager() with existing helper functions - Added findMasterAssetsFolder() helper function (mirrors findUploadFolder logic) - Added extractStatusFromAsset() helper to extract status from asset metadata - Uses existing getAssetsFromFolder() function to retrieve assets Now properly: - Finds Master Assets folder using findMasterAssetsFolder() - Finds Final Assets folder using findUploadFolder() - Gets assets using getAssetsFromFolder() - Extracts status from asset metadata structure No more 500 errors - folder viewing should work now! 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
27c71c48b6
commit
b3fa3aef20
1 changed files with 87 additions and 25 deletions
112
workflow_v3.php
112
workflow_v3.php
|
|
@ -1156,32 +1156,34 @@ if ($_POST && $testRunner) {
|
|||
$folderName = ($folderType === 'master') ? '01. Master Assets' : '01. Final Assets';
|
||||
$results['debug_folder_view_type'] = $folderName;
|
||||
|
||||
// Find folder within campaign
|
||||
$assetManager = createAssetManager($testRunner);
|
||||
|
||||
// First get campaign folders
|
||||
$searchResult = $assetManager->searchForFolder($folderName);
|
||||
|
||||
if ($searchResult['success'] && count($searchResult['folders']) > 0) {
|
||||
// Find folders that are children of this campaign
|
||||
foreach ($searchResult['folders'] as $folder) {
|
||||
// Check if this folder belongs to our campaign by searching its children
|
||||
$folderId = $folder['id'];
|
||||
$contentsResult = $assetManager->getFolderContents($folderId);
|
||||
|
||||
if ($contentsResult['success']) {
|
||||
$results['debug_folder_contents'] = [
|
||||
'folder_name' => $folderName,
|
||||
'folder_type' => ucfirst($folderType) . ' Assets',
|
||||
'folder_id' => $folderId,
|
||||
'items' => $contentsResult['items']
|
||||
];
|
||||
$success = "Found " . count($contentsResult['items']) . " items in {$folderName}";
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Use existing helper function to find folder
|
||||
if ($folderType === 'master') {
|
||||
$folderId = findMasterAssetsFolder($testRunner, $campaignId);
|
||||
} else {
|
||||
$results['debug_folder_error'] = "Folder '{$folderName}' not found";
|
||||
$folderId = findUploadFolder($testRunner, $campaignId, $configV3);
|
||||
}
|
||||
|
||||
if ($folderId) {
|
||||
// Get assets from folder using existing helper
|
||||
$assets = getAssetsFromFolder($testRunner, $folderId);
|
||||
|
||||
$results['debug_folder_contents'] = [
|
||||
'folder_name' => $folderName,
|
||||
'folder_type' => ucfirst($folderType) . ' Assets',
|
||||
'folder_id' => $folderId,
|
||||
'items' => array_map(function($asset) {
|
||||
return [
|
||||
'type' => 'asset',
|
||||
'name' => $asset['name'] ?? 'Unknown',
|
||||
'id' => $asset['asset_id'] ?? '',
|
||||
'size' => $asset['file_size'] ?? 0,
|
||||
'status' => extractStatusFromAsset($asset)
|
||||
];
|
||||
}, $assets)
|
||||
];
|
||||
$success = "Found " . count($assets) . " assets in {$folderName} for campaign";
|
||||
} else {
|
||||
$results['debug_folder_error'] = "Folder '{$folderName}' not found in campaign";
|
||||
$error = $results['debug_folder_error'];
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1256,6 +1258,66 @@ function extractStatus($folder)
|
|||
return null;
|
||||
}
|
||||
|
||||
function extractStatusFromAsset($asset)
|
||||
{
|
||||
if (isset($asset['metadata']) && isset($asset['metadata']['metadata_element_list'])) {
|
||||
foreach ($asset['metadata']['metadata_element_list'] as $category) {
|
||||
if (isset($category['metadata_element_list'])) {
|
||||
foreach ($category['metadata_element_list'] as $field) {
|
||||
if ($field['id'] === 'CONTENT.SCALING.STATUS') {
|
||||
return $field['value']['value']['value'] ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function findMasterAssetsFolder($testRunner, $campaignId)
|
||||
{
|
||||
// Similar to findUploadFolder but looks for Master Assets instead
|
||||
$requests = $testRunner->getAvailableRequests();
|
||||
|
||||
foreach ($requests as $index => $request) {
|
||||
$name = strtolower($request['name']);
|
||||
if (strpos($name, 'retrieve master asset folder') !== false ||
|
||||
strpos($name, 'master asset folder and final') !== false) {
|
||||
|
||||
$modifiedRequest = $request;
|
||||
$url = is_array($request['request']['url']) ? $request['request']['url']['raw'] : $request['request']['url'];
|
||||
$url = preg_replace('/folders\/[a-f0-9]+\//', "folders/{$campaignId}/", $url);
|
||||
|
||||
$configV3 = new ConfigV3();
|
||||
$url = str_replace('{{baseUrl}}', $configV3->getBaseUrl(), $url);
|
||||
|
||||
if (is_array($modifiedRequest['request']['url'])) {
|
||||
$modifiedRequest['request']['url']['raw'] = $url;
|
||||
} else {
|
||||
$modifiedRequest['request']['url'] = $url;
|
||||
}
|
||||
|
||||
$result = $testRunner->runSingleTest($modifiedRequest, $index);
|
||||
|
||||
if ($result['status'] === 'PASS') {
|
||||
$data = json_decode($result['response']['body'], true);
|
||||
$folders = $data['folder_children']['asset_list'] ?? [];
|
||||
|
||||
foreach ($folders as $folder) {
|
||||
$folderName = extractFolderName($folder);
|
||||
// Look for Master Assets folder
|
||||
if (strpos($folderName, 'Master') !== false) {
|
||||
return $folder['asset_id'];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function loadCampaignsByStatus($testRunner, $status)
|
||||
{
|
||||
// Search for ALL Local Adaptation campaigns (without status filter in API)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue