Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
 /**
  * @todo document
  */
 function makeFormattedData()
 {
     $format = new FormatExif($this->getFilteredData());
     $this->mFormattedExifData = $format->getFormattedData();
 }
Ejemplo n.º 4
0
 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;
	}