function formatMetadata($image) { $result = array('visible' => array(), 'collapsed' => array()); $metadata = $image->getMetadata(); if (!$metadata) { return false; } $exif = unserialize($metadata); if (!$exif) { return false; } unset($exif['MEDIAWIKI_EXIF_VERSION']); $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); } return $result; }
function getExifData() { global $wgRequest; if ($this->metadata === '0') { return array(); } $purge = $wgRequest->getVal('action') == 'purge'; $ret = unserialize($this->metadata); $oldver = isset($ret['MEDIAWIKI_EXIF_VERSION']) ? $ret['MEDIAWIKI_EXIF_VERSION'] : 0; $newver = Exif::version(); if (!count($ret) || $purge || $oldver != $newver) { $this->updateExifData($newver); } if (isset($ret['MEDIAWIKI_EXIF_VERSION'])) { unset($ret['MEDIAWIKI_EXIF_VERSION']); } $format = new FormatExif($ret); return $format->getFormattedData(); }
/** * @todo document */ function makeFormattedData() { $format = new FormatExif($this->getFilteredData()); $this->mFormattedExifData = $format->getFormattedData(); }
function getExifData() { global $wgRequest; $handler = $this->getHandler(); if (!$handler || $handler->getMetadataType($this) != 'exif') { return array(); } if (!$this->metadata) { return array(); } $exif = unserialize($this->metadata); if (!$exif) { return array(); } $format = new FormatExif($exif); return $format->getFormattedData(); }
/** * 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; }