$asset['asset_id'] ?? null, 'name' => $asset['name'] ?? null, 'data_type' => $asset['data_type'] ?? null, 'mime_type' => $asset['mime_type'] ?? null, 'file_size' => $asset['file_size'] ?? null, 'creator_id' => $asset['creator_id'] ?? null, 'date_imported' => $asset['date_imported'] ?? null, 'date_last_updated' => $asset['date_last_updated'] ?? null, 'version' => $asset['version'] ?? null, 'locked' => $asset['locked'] ?? null, 'asset_state' => $asset['asset_state'] ?? null ]; // Content information if (isset($asset['asset_content_info']['master_content'])) { $content = $asset['asset_content_info']['master_content']; $metadata['content'] = [ 'content_file_name' => $content['content_file_name'] ?? null, 'content_size' => $content['content_size'] ?? null, 'mime_type' => $content['mime_type'] ?? null, 'width' => $content['width'] ?? null, 'height' => $content['height'] ?? null, 'content_checksum' => $content['content_checksum'] ?? null, 'encoding' => $content['encoding'] ?? null, 'content_signed_url' => $content['content_signed_url'] ?? null, 'url' => $content['url'] ?? null ]; } // Custom metadata fields $metadata['custom_fields'] = []; if (isset($asset['metadata']['metadata_element_list'])) { foreach ($asset['metadata']['metadata_element_list'] as $category) { $categoryName = $category['name'] ?? 'Unknown Category'; $metadata['custom_fields'][$categoryName] = []; if (isset($category['metadata_element_list'])) { foreach ($category['metadata_element_list'] as $field) { $fieldId = $field['id'] ?? 'unknown'; $fieldName = $field['name'] ?? $fieldId; $fieldValue = null; // Extract field value if (isset($field['value']['value']['value'])) { $fieldValue = $field['value']['value']['value']; } elseif (isset($field['value']['value']['display_value'])) { $fieldValue = $field['value']['value']['display_value']; } elseif (isset($field['value']['value']['field_value']['value'])) { $fieldValue = $field['value']['value']['field_value']['value']; } // Handle tabular fields if (isset($field['metadata_element_list'])) { $tabularValues = []; foreach ($field['metadata_element_list'] as $tableField) { if (isset($tableField['values'])) { foreach ($tableField['values'] as $value) { if (isset($value['value']['value'])) { $tabularValues[] = $value['value']['value']; } elseif (isset($value['value']['display_value'])) { $tabularValues[] = $value['value']['display_value']; } } } } if (!empty($tabularValues)) { $fieldValue = $tabularValues; } } if ($fieldValue !== null) { $metadata['custom_fields'][$categoryName][$fieldName] = [ 'id' => $fieldId, 'value' => $fieldValue, 'data_type' => $field['data_type'] ?? null, 'editable' => $field['editable'] ?? null, 'required' => $field['required'] ?? null ]; } } } } } // Permissions $metadata['permissions'] = []; if (isset($asset['access_control_descriptor']['permissions_map']['entry'])) { foreach ($asset['access_control_descriptor']['permissions_map']['entry'] as $permission) { $permissionName = str_replace('text.securityPolicy.permission.', '', $permission['key'] ?? ''); $metadata['permissions'][$permissionName] = $permission['value'] ?? false; } } // Renditions and previews $metadata['renditions'] = []; if (isset($asset['rendition_content'])) { foreach ($asset['rendition_content'] as $renditionType => $rendition) { if (is_array($rendition)) { $metadata['renditions'][$renditionType] = [ 'content_size' => $rendition['content_size'] ?? null, 'mime_type' => $rendition['mime_type'] ?? null, 'width' => $rendition['width'] ?? null, 'height' => $rendition['height'] ?? null, 'url' => $rendition['url'] ?? null, 'content_signed_url' => $rendition['content_signed_url'] ?? null ]; } } } return $metadata; } public static function formatMetadataForDisplay($metadata) { $output = "
"; // Basic Information if (!empty($metadata['basic'])) { $output .= "
"; $output .= "
📋 Basic Asset Information
"; $output .= "
"; } // Content Information if (!empty($metadata['content'])) { $output .= "
"; $output .= "
🖼️ Content Information
"; $output .= "
"; } // Custom Fields if (!empty($metadata['custom_fields'])) { $output .= "
"; $output .= "
🏷️ Custom Metadata Fields
"; foreach ($metadata['custom_fields'] as $categoryName => $fields) { if (!empty($fields)) { $output .= ""; } } $output .= "
"; } // Permissions if (!empty($metadata['permissions'])) { $output .= "
"; $output .= "
🔐 Permissions
"; $output .= "
"; foreach ($metadata['permissions'] as $permission => $allowed) { $status = $allowed ? '✅' : '❌'; $permissionName = ucwords(str_replace(['Permission', '_'], ['', ' '], $permission)); $output .= "
{$status} {$permissionName}
"; } $output .= "
"; } // Renditions if (!empty($metadata['renditions'])) { $output .= "
"; $output .= "
🎨 Available Renditions
"; foreach ($metadata['renditions'] as $type => $rendition) { $output .= "
"; $output .= "
" . ucwords(str_replace('_', ' ', $type)) . "
"; if ($rendition['width'] && $rendition['height']) { $output .= "

Size: {$rendition['width']}x{$rendition['height']}px

"; } if ($rendition['content_size']) { $output .= "

File Size: " . number_format($rendition['content_size']) . " bytes

"; } if ($rendition['mime_type']) { $output .= "

Type: {$rendition['mime_type']}

"; } $output .= "
"; } $output .= "
"; } $output .= "
"; return $output; } }