diff --git a/Python-Version/scripts/shared/__pycache__/notifier.cpython-314.pyc b/Python-Version/scripts/shared/__pycache__/notifier.cpython-314.pyc index 6270151..4f694fb 100644 Binary files a/Python-Version/scripts/shared/__pycache__/notifier.cpython-314.pyc and b/Python-Version/scripts/shared/__pycache__/notifier.cpython-314.pyc differ diff --git a/src/MetadataExtractor.php b/src/MetadataExtractor.php index 2162a07..cd20d6e 100644 --- a/src/MetadataExtractor.php +++ b/src/MetadataExtractor.php @@ -96,17 +96,85 @@ class MetadataExtractor $metadata['creativex_fields'] = []; if (isset($asset['metadata']['metadata_element_list'])) { foreach ($asset['metadata']['metadata_element_list'] as $category) { + $categoryId = $category['id'] ?? ''; + $categoryName = $category['name'] ?? ''; + + // Check if THIS CATEGORY is the CREATIVEX category + if (stripos($categoryId, 'CREATIX') !== false || + stripos($categoryId, 'CREATIVEX') !== false || + stripos($categoryName, 'CreativeX') !== false) { + + // This whole category is CREATIVEX - extract all its fields + if (isset($category['metadata_element_list'])) { + foreach ($category['metadata_element_list'] as $creativexItem) { + $itemId = $creativexItem['id'] ?? ''; + $itemName = $creativexItem['name'] ?? $itemId; + + // Check if it's a table or direct field + if (isset($creativexItem['metadata_element_list'])) { + // It's a table with fields + foreach ($creativexItem['metadata_element_list'] as $tableField) { + $tableFieldId = $tableField['id'] ?? ''; + $tableFieldName = $tableField['name'] ?? $tableFieldId; + + // Extract value + $fieldValue = '(empty)'; + if (isset($tableField['values']) && !empty($tableField['values'])) { + $tabularValues = []; + 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; + } + } + + $metadata['creativex_fields'][$tableFieldName] = [ + 'id' => $tableFieldId, + 'value' => $fieldValue + ]; + } + } else { + // Direct field + $fieldValue = null; + if (isset($creativexItem['value']['value']['value'])) { + $fieldValue = $creativexItem['value']['value']['value']; + } elseif (isset($creativexItem['value']['value']['field_value']['value'])) { + $fieldValue = $creativexItem['value']['value']['field_value']['value']; + } + + $metadata['creativex_fields'][$itemName] = [ + 'id' => $itemId, + 'value' => $fieldValue ?? '(empty)' + ]; + } + } + } + + // Found CREATIVEX category, no need to check other categories + continue; + } + + // Also check individual fields within other categories if (isset($category['metadata_element_list'])) { foreach ($category['metadata_element_list'] as $field) { $fieldId = $field['id'] ?? ''; $fieldName = $field['name'] ?? $fieldId; - // Check if this is a CREATIVEX/CREATIX field - if (stripos($fieldId, 'CREATIVEX') !== false || stripos($fieldId, 'CREATIX') !== false) { + // Check if this individual field is a CREATIVEX field + if (stripos($fieldId, 'CREATIVEX') !== false || + stripos($fieldId, 'CREATIX') !== false) { // This might be a parent field with nested tables if (isset($field['metadata_element_list'])) { // It's a parent CREATIX field with nested tables foreach ($field['metadata_element_list'] as $nestedTable) { + $nestedTableId = $nestedTable['id'] ?? ''; + $nestedTableName = $nestedTable['name'] ?? ''; + if (isset($nestedTable['metadata_element_list'])) { // Nested table fields foreach ($nestedTable['metadata_element_list'] as $nestedField) { @@ -126,17 +194,19 @@ class MetadataExtractor } if (!empty($tabularValues)) { $fieldValue = $tabularValues; + } else { + // Values array exists but is empty + $fieldValue = '(empty)'; } } elseif (isset($nestedField['value']['value']['value'])) { $fieldValue = $nestedField['value']['value']['value']; } - if ($fieldValue !== null) { - $metadata['creativex_fields'][$nestedFieldName] = [ - 'id' => $nestedFieldId, - 'value' => $fieldValue - ]; - } + // Add ALL CREATIVEX fields, even if empty (shows what fields exist) + $metadata['creativex_fields'][$nestedFieldName] = [ + 'id' => $nestedFieldId, + 'value' => $fieldValue ?? '(not set)' + ]; } } } @@ -152,12 +222,11 @@ class MetadataExtractor $fieldValue = $field['value']['value']['field_value']['value']; } - if ($fieldValue !== null) { - $metadata['creativex_fields'][$fieldName] = [ - 'id' => $fieldId, - 'value' => $fieldValue - ]; - } + // Add field even if value is null/empty (shows structure exists) + $metadata['creativex_fields'][$fieldName] = [ + 'id' => $fieldId, + 'value' => $fieldValue ?? '(empty)' + ]; } } } diff --git a/test_creativex.php b/test_creativex.php new file mode 100644 index 0000000..22eff2a --- /dev/null +++ b/test_creativex.php @@ -0,0 +1,35 @@ + $category) { + $catId = $category['id'] ?? 'no-id'; + $catName = $category['name'] ?? 'no-name'; + + if (stripos($catId, 'CREATIX') !== false || stripos($catId, 'CREATIVEX') !== false || + stripos($catName, 'CreativeX') !== false) { + echo "Found Category #{$catIndex}:" . PHP_EOL; + echo " ID: {$catId}" . PHP_EOL; + echo " Name: {$catName}" . PHP_EOL; + echo " Structure:" . PHP_EOL; + echo json_encode($category, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . PHP_EOL . PHP_EOL; + } + } +} + +// Test extraction +$metadata = MetadataExtractor::extractAllMetadata($asset); +echo "Extracted CREATIVEX fields: " . count($metadata['creativex_fields']) . PHP_EOL; + +if (!empty($metadata['creativex_fields'])) { + foreach ($metadata['creativex_fields'] as $name => $data) { + $val = is_array($data['value']) ? implode(', ', $data['value']) : $data['value']; + echo " - {$name}: {$val}" . PHP_EOL; + } +}