From ea20fe5ab698b23a00f803d3dc65c468df0e26db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anke=20H=C3=A4slich?= Date: Fri, 17 Mar 2023 15:34:01 +0100 Subject: [PATCH 1/2] BUGFIX: Check if `dateTimeProperty` has correct type in `ExifExtractor` For some unknown reason we encountered a file with the `$exifData[$dateTimeProperty]` being a boolean value. Using `->format(...)` will therefore fail and not continue to execute the extraction of metadata. --- Classes/Domain/Extractor/ExifExtractor.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Classes/Domain/Extractor/ExifExtractor.php b/Classes/Domain/Extractor/ExifExtractor.php index af47cf7..983d5dd 100644 --- a/Classes/Domain/Extractor/ExifExtractor.php +++ b/Classes/Domain/Extractor/ExifExtractor.php @@ -230,7 +230,10 @@ public function extractMetaData(FlowResource $resource, MetaDataCollection $meta } foreach (static::$subSecondProperties as $subSecondProperty => $dateTimeProperty) { - if (isset($exifData[$subSecondProperty], $exifData[$dateTimeProperty])) { + if ( + isset($exifData[$subSecondProperty], $exifData[$dateTimeProperty]) && + $exifData[$dateTimeProperty] instanceof \DateTimeInterface + ) { $exifData[$dateTimeProperty] = \DateTime::createFromFormat( 'Y-m-d H:i:s.u', $exifData[$dateTimeProperty]->format('Y-m-d H:i:s.') . $exifData[$subSecondProperty] @@ -240,7 +243,10 @@ public function extractMetaData(FlowResource $resource, MetaDataCollection $meta } foreach (static::$timeOffsetProperties as $timeOffsetProperty => $dateTimeProperty) { - if (isset($exifData[$timeOffsetProperty], $exifData[$dateTimeProperty])) { + if ( + isset($exifData[$timeOffsetProperty], $exifData[$dateTimeProperty]) && + $exifData[$dateTimeProperty] instanceof \DateTimeInterface + ) { $exifData[$dateTimeProperty] = \DateTime::createFromFormat( 'Y-m-d H:i:s.uP', $exifData[$dateTimeProperty]->format('Y-m-d H:i:s.u') . $exifData[$timeOffsetProperty] From 067a144d9bda140575eba7c7fdd459c82c353c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anke=20H=C3=A4slich?= Date: Fri, 17 Mar 2023 16:19:37 +0100 Subject: [PATCH 2/2] Apply fixes from StyleCI --- Classes/Domain/Extractor/ExifExtractor.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Classes/Domain/Extractor/ExifExtractor.php b/Classes/Domain/Extractor/ExifExtractor.php index 983d5dd..9870564 100644 --- a/Classes/Domain/Extractor/ExifExtractor.php +++ b/Classes/Domain/Extractor/ExifExtractor.php @@ -262,19 +262,19 @@ public function extractMetaData(FlowResource $resource, MetaDataCollection $meta $value = \substr($exifData['UserComment'], 8); switch ($characterCode) { case \chr(0x41) . \chr(0x53) . \chr(0x43) . \chr(0x49) . \chr(0x49) - . \chr(0x0) . \chr(0x0) . \chr(0x0): // ASCII + . \chr(0x0) . \chr(0x0) . \chr(0x0): // ASCII $encoding = 'US-ASCII'; break; case \chr(0x4A) . \chr(0x49) . \chr(0x53) . \chr(0x0) . \chr(0x0) - . \chr(0x0) . \chr(0x0) . \chr(0x0): // JIS + . \chr(0x0) . \chr(0x0) . \chr(0x0): // JIS $encoding = 'EUC-JP'; break; case \chr(0x55) . \chr(0x4E) . \chr(0x49) . \chr(0x43) . \chr(0x4F) - . \chr(0x44) . \chr(0x45) . \chr(0x0): // Unicode + . \chr(0x44) . \chr(0x45) . \chr(0x0): // Unicode $encoding = 'UTF-8'; break; case \chr(0x0) . \chr(0x0) . \chr(0x0) . \chr(0x0) . \chr(0x0) - . \chr(0x0) . \chr(0x0) . \chr(0x0): // Undefined + . \chr(0x0) . \chr(0x0) . \chr(0x0): // Undefined default: // try it with ASCII anyway $encoding = 'ASCII';