@@ -331,7 +331,7 @@ protected static function processLogical(Document $document, array $logicalUnit)
331331 $ doc = $ document ->getCurrentDocument ();
332332 $ doc ->cPid = $ document ->getPid ();
333333 // Get metadata for logical unit.
334- $ metadata = $ doc ->metadataArray [$ logicalUnit ['id ' ]];
334+ $ metadata = $ doc ->metadataArray [$ logicalUnit ['id ' ]] ?? [] ;
335335 if (!empty ($ metadata )) {
336336 $ extConf = GeneralUtility::makeInstance (ExtensionConfiguration::class)->get (self ::$ extKey , 'general ' );
337337 $ validator = new DocumentValidator ($ metadata , explode (', ' , $ extConf ['requiredMetadataFields ' ]));
@@ -356,19 +356,19 @@ protected static function processLogical(Document $document, array $logicalUnit)
356356 // There can be only one toplevel unit per UID, independently of backend configuration
357357 $ solrDoc ->setField ('toplevel ' , $ logicalUnit ['id ' ] == $ doc ->toplevelId ? true : false );
358358 $ solrDoc ->setField ('title ' , $ metadata ['title ' ][0 ]);
359- $ solrDoc ->setField ('volume ' , $ metadata ['volume ' ][0 ]);
359+ $ solrDoc ->setField ('volume ' , $ metadata ['volume ' ][0 ] ?? '' );
360360 // verify date formatting
361361 if (strtotime ($ metadata ['date ' ][0 ])) {
362362 $ solrDoc ->setField ('date ' , self ::getFormattedDate ($ metadata ['date ' ][0 ]));
363363 }
364364 $ solrDoc ->setField ('record_id ' , $ metadata ['record_id ' ][0 ]);
365- $ solrDoc ->setField ('purl ' , $ metadata ['purl ' ][0 ]);
365+ $ solrDoc ->setField ('purl ' , $ metadata ['purl ' ][0 ] ?? '' );
366366 $ solrDoc ->setField ('location ' , $ document ->getLocation ());
367367 $ solrDoc ->setField ('urn ' , $ metadata ['urn ' ]);
368368 $ solrDoc ->setField ('license ' , $ metadata ['license ' ]);
369369 $ solrDoc ->setField ('terms ' , $ metadata ['terms ' ]);
370370 $ solrDoc ->setField ('restrictions ' , $ metadata ['restrictions ' ]);
371- $ coordinates = json_decode ($ metadata ['coordinates ' ][0 ]);
371+ $ coordinates = json_decode ($ metadata ['coordinates ' ][0 ] ?? '' );
372372 if (is_object ($ coordinates )) {
373373 $ feature = (array ) $ coordinates ->features [0 ];
374374 $ geometry = (array ) $ feature ['geometry ' ];
@@ -518,7 +518,8 @@ private static function processMetadata($document, $metadata, &$solrDoc): array
518518 && substr ($ indexName , -8 ) !== '_sorting '
519519 ) {
520520 $ solrDoc ->setField (self ::getIndexFieldName ($ indexName , $ document ->getPid ()), $ data );
521- if (in_array ($ indexName , self ::$ fields ['sortables ' ])) {
521+ if (in_array ($ indexName , self ::$ fields ['sortables ' ]) &&
522+ in_array ($ indexName . '_sorting ' , $ metadata )) {
522523 // Add sortable fields to index.
523524 $ solrDoc ->setField ($ indexName . '_sorting ' , $ metadata [$ indexName . '_sorting ' ][0 ]);
524525 }
0 commit comments