function getMetadata($image, $filename) { try { $meta = BitmapMetadataHandler::Jpeg($filename); if (!is_array($meta)) { // This should never happen, but doesn't hurt to be paranoid. throw new MWException('Metadata array is not an array'); } $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version(); return serialize($meta); } catch (MWException $e) { // BitmapMetadataHandler throws an exception in certain exceptional // cases like if file does not exist. wfDebug(__METHOD__ . ': ' . $e->getMessage() . "\n"); /* This used to use 0 (ExifBitmapHandler::OLD_BROKEN_FILE) for the cases * * No metadata in the file * * Something is broken in the file. * However, if the metadata support gets expanded then you can't tell if the 0 is from * a broken file, or just no props found. A broken file is likely to stay broken, but * a file which had no props could have props once the metadata support is improved. * Thus switch to using -1 to denote only a broken file, and use an array with only * MEDIAWIKI_EXIF_VERSION to denote no props. */ return ExifBitmapHandler::BROKEN_FILE; } }
/** * File has an invalid time (+ one valid but really weird time) * that shouldn't be included */ public function testIPTCDatesInvalid() { $meta = BitmapMetadataHandler::Jpeg($this->filePath . 'iptc-timetest-invalid.jpg'); $this->assertEquals('1845:03:02 00:01:02', $meta['DateTimeOriginal']); $this->assertFalse(isset($meta['DateTimeDigitized'])); }