public function execute() { $handler = new PagedTiffHandler(); $path = $this->mArgs[0]; $file = UnregisteredLocalFile::newFromPath($path, "image/tiff"); $metadata = $handler->getMetadata( $file, $path ); if ( !$metadata ) { print "FAILED! \n"; return; } $metadata = unserialize( $metadata ); if ( !$metadata ) { print "BROKEN! \n"; return; } print_r($metadata); }
/** * Get an array structure that looks like this: * * array( * 'visible' => array( * 'Human-readable name' => 'Human readable value', * ... * ), * 'collapsed' => array( * 'Human-readable name' => 'Human readable value', * ... * ) * ) * The UI will format this into a table where the visible fields are always * visible, and the collapsed fields are optionally visible. * * The function should return false if there is no metadata to display. */ function formatMetadata( $image ) { $result = array( 'visible' => array(), 'collapsed' => array() ); $metadata = $image->getMetadata(); if ( !$metadata ) { return false; } $exif = unserialize( $metadata ); $exif = $exif['exif']; if ( !$exif ) { return false; } unset( $exif['MEDIAWIKI_EXIF_VERSION'] ); if ( class_exists( 'FormatMetadata' ) ) { // 1.18+ $formatted = FormatMetadata::getFormattedData( $exif ); } else { // 1.17 and earlier. $format = new FormatExif( $exif ); $formatted = $format->getFormattedData(); } // Sort fields into visible and collapsed $visibleFields = $this->visibleMetadataFields(); foreach ( $formatted as $name => $value ) { $tag = strtolower( $name ); self::addMeta( $result, in_array( $tag, $visibleFields ) ? 'visible' : 'collapsed', 'exif', $tag, $value ); } $meta = unserialize( $metadata ); $errors_raw = PagedTiffHandler::getMetadataErrors( $meta ); if ( $errors_raw ) { $errors = PagedTiffHandler::joinMessages( $errors_raw ); self::addMeta( $result, 'collapsed', 'metadata', 'error', $errors ); // XXX: need translation for <metadata-error> } if ( !empty( $meta['warnings'] ) ) { $warnings = PagedTiffHandler::joinMessages( $meta['warnings'] ); self::addMeta( $result, 'collapsed', 'metadata', 'warning', $warnings ); // XXX: need translation for <metadata-warning> } return $result; }