2727 */
2828final readonly class PredefinedAssetMetadataProvider implements MappingProviderInterface
2929{
30+ private const DEFAULT_METADATA = ['title ' , 'alt ' , 'copyright ' ];
31+
3032 public function __construct (
3133 private LanguageServiceInterface $ languageService ,
3234 private FieldDefinitionServiceInterface $ fieldDefinitionService
@@ -41,25 +43,15 @@ public function getMappingProperties(): array
4143 $ languages = array_merge ([MappingProperty::NOT_LOCALIZED_KEY ], $ this ->languageService ->getValidLanguages ());
4244
4345 foreach ($ predefinedMetaDataList as $ predefinedMetaData ) {
44- $ languageMapping = [
45- 'properties ' => [],
46- ];
47-
48- if ($ typeMapping = $ this ->getTypeMapping ($ predefinedMetaData ->getType ())) {
49- foreach ($ languages as $ language ) {
50- $ languageMapping ['properties ' ][$ language ] = $ typeMapping ;
51- }
52- }
53-
5446 $ mappingProperties [] = new MappingProperty (
5547 $ predefinedMetaData ->getName (),
5648 $ predefinedMetaData ->getType (),
57- $ languageMapping ,
49+ $ this -> getLanguageMappingByType ( $ languages , $ predefinedMetaData -> getType ()) ,
5850 $ languages
5951 );
6052 }
6153
62- return $ mappingProperties ;
54+ return array_merge ( $ mappingProperties, $ this -> getDefaultMetadataMapping ( $ languages )) ;
6355 }
6456
6557 private function getTypeMapping (string $ type ): ?array
@@ -68,4 +60,37 @@ private function getTypeMapping(string $type): ?array
6860 ->getFieldDefinitionAdapter ($ type )
6961 ?->getIndexMapping();
7062 }
63+
64+ private function getLanguageMappingByType (array $ languages , string $ type ): array
65+ {
66+ $ languageMapping = [
67+ 'properties ' => [],
68+ ];
69+
70+ if ($ typeMapping = $ this ->getTypeMapping ($ type )) {
71+ foreach ($ languages as $ language ) {
72+ $ languageMapping ['properties ' ][$ language ] = $ typeMapping ;
73+ }
74+ }
75+
76+ return $ languageMapping ;
77+ }
78+
79+ /**
80+ * @return MappingProperty[]
81+ */
82+ private function getDefaultMetadataMapping (array $ languages ): array
83+ {
84+ $ mappingProperties = [];
85+ foreach (self ::DEFAULT_METADATA as $ metadata ) {
86+ $ mappingProperties [] = new MappingProperty (
87+ $ metadata ,
88+ 'input ' ,
89+ $ this ->getLanguageMappingByType ($ languages , 'input ' ),
90+ $ languages
91+ );
92+ }
93+
94+ return $ mappingProperties ;
95+ }
7196}
0 commit comments