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:
DJP 2025-11-09 14:44:18 -05:00
parent 27c71c48b6
commit b3fa3aef20

View file

@ -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)