r64382 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r64381‎ | r64382 | r64383 >
Date:09:01, 30 March 2010
Author:mglaser
Status:deferred
Tags:
Comment:
changed Pages key to page_data
do not save bypass data
added profiling information
added some comments
Modified paths:
  • /trunk/extensions/PagedTiffHandler (modified) (history)
  • /trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php (modified) (history)
  • /trunk/extensions/PagedTiffHandler/PagedTiffHandler_body.php (modified) (history)

Diff [purge]

Index: trunk/extensions/PagedTiffHandler/PagedTiffHandler_body.php
@@ -56,7 +56,7 @@
5757 function isMultiPage($img = false) {
5858 if (!$img) return true;
5959 $meta = unserialize($img->metadata);
60 - return ($meta['Pages'] > 1);
 60+ return ($meta['page_amount'] > 1);
6161 }
6262
6363 /**
@@ -72,7 +72,6 @@
7373 function check( $saveName, $tempName, &$error ) {
7474 global $wgTiffMaxEmbedFiles, $wgTiffMaxMetaSize, $wgMaxUploadSize, $wgTiffRejectOnError, $wgTiffRejectOnWarning,
7575 $wgTiffUseTiffReader, $wgTiffReaderPath, $wgTiffReaderCheckEofForJS;
76 - if (!(substr($saveName, -5, 5)=='.tiff' || substr($saveName, -4, 4)=='.tif')) return true; ### why? ^DK
7776 wfLoadExtensionMessages( 'PagedTiffHandler' );
7877 if($wgTiffUseTiffReader) {
7978 require_once($wgTiffReaderPath.'/TiffReader.php');
@@ -124,7 +123,7 @@
125124 wfDebug( __METHOD__.": tiff_too_much_meta ($saveName)\n" );
126125 return false;
127126 }
128 - if($wgTiffMaxEmbedFiles && $meta['Pages'] > $wgTiffMaxEmbedFiles) {
 127+ if($wgTiffMaxEmbedFiles && $meta['page_amount'] > $wgTiffMaxEmbedFiles) {
129128 $error = 'tiff_too_much_embed_files';
130129 wfDebug( __METHOD__.": tiff_too_much_embed_files ($saveName)\n" );
131130 return false;
@@ -139,8 +138,7 @@
140139 function getParamMap() {
141140 return array(
142141 'img_width' => 'width',
143 - // @todo check height ### height!! ^DK
144 - ## Die Methode gibt nur die ParamMap für die MagicWordIDs zurück. Es gibt keine MagicWordID für height. ^SU
 142+ // @todo check height ## MediaWiki bietet keine MagicWord-ID für height. Dies scheint ein Bug zu sein. ^SU
145143 'img_page' => 'page',
146144 'img_lossy' => 'lossy',
147145 );
@@ -159,10 +157,10 @@
160158 }
161159 return false;
162160 }
163 - if ( $value <= 0 || $value > PHP_INT_MAX ) { ## check against integer overflow ^SU
 161+ if ( $value <= 0 || $value > 65535 ) { ## ImageMagick läuft bei einer Seitenangabe höher als 65535 in einen Overflow. ^SU
164162 return false;
165163 } else {
166 - return true; ## spills at 65536?? ^DK
 164+ return true;
167165 }
168166 } else {
169167 return false;
@@ -232,8 +230,11 @@
233231 $srcHeight = $size['height'];
234232
235233 if ( isset( $params['height'] ) && $params['height'] != -1 ) {
236 - ## checks if with the given ratio the image box should be fitted ^SU
237 - if ( $params['width'] * $srcHeight > $params['height'] * $srcWidth ) { ## huh?? what does this do? ^DK
 234+ ## Wenn das Bild im Hochformat ist und der Height-Parameter angegeben ist,
 235+ ## wird der Width-Parameter angepasst, sofern width x height die Original-Ratio
 236+ ## zerstören würden. Dies dient der Paging-Vorschau auf der ImagePage,
 237+ ## damit die Seiten-Vorschauen nicht das Seiten-Layout zerstören. ^SU
 238+ if ( $params['width'] * $srcHeight > $params['height'] * $srcWidth ) {
238239 $params['width'] = wfFitBoxWidth( $srcWidth, $srcHeight, $params['height'] );
239240 }
240241 }
@@ -258,6 +259,7 @@
259260 if ( !$metadata ) {
260261 if($metadata == -1) {
261262 return $this->doThumbError( @$params['width'], @$params['height'], 'tiff_error_cached' ); ##test this ^DK
 263+ // $wgCacheType = CACHE_DB
262264 }
263265 return $this->doThumbError( @$params['width'], @$params['height'], 'tiff_no_metadata' );
264266 }
@@ -284,7 +286,7 @@
285287 return new ThumbnailImage( $image, $dstUrl, $width,
286288 $height, $dstPath, $page );
287289
288 - if(isset($meta['pages'][$page]['pixels']) && $meta['pages'][$page]['pixels'] > $wgTiffMaxEmbedFileResolution)
 290+ if(isset($meta['page_data'][$page]['pixels']) && $meta['page_data'][$page]['pixels'] > $wgTiffMaxEmbedFileResolution)
289291 return $this->doThumbError( $width, $height, 'tiff_sourcefile_too_large' );
290292
291293 if(($width * $height) > $wgTiffMaxEmbedFileResolution)
@@ -335,7 +337,7 @@
336338 function getThumbExtension( $image, $page, $lossy ) {
337339 if($lossy === NULL) {
338340 $data = $this->getMetaArray($image);
339 - if((strtolower($data['pages'][$page]['alpha']) == 'true')) {
 341+ if((strtolower($data['page_data'][$page]['alpha']) == 'true')) {
340342 return '.png';
341343 }
342344 else {
@@ -358,7 +360,7 @@
359361 function pageCount( $image ) {
360362 $data = $this->getMetaArray( $image );
361363 if ( !$data ) return false;
362 - return intval( $data['Pages'] );
 364+ return intval( $data['page_amount'] );
363365 }
364366
365367 /**
@@ -397,8 +399,8 @@
398400 if( $metadata ) {
399401 wfLoadExtensionMessages( 'PagedTiffHandler' );
400402 return wfMsgExt('tiff-file-info-size', 'parseinline',
401 - $wgLang->formatNum( $metadata['pages'][$page]['width'] ),
402 - $wgLang->formatNum( $metadata['pages'][$page]['height'] ),
 403+ $wgLang->formatNum( $metadata['page_data'][$page]['width'] ),
 404+ $wgLang->formatNum( $metadata['page_data'][$page]['height'] ),
403405 $wgLang->formatSize( $image->getSize() ),
404406 $image->getMimeType(),
405407 $page );
@@ -413,8 +415,7 @@
414416 function isMetadataValid( $image, $metadata ) {
415417 if(!empty( $metadata ) && $metadata != serialize(array())) {
416418 $meta = unserialize($metadata);
417 - ## Sollte das wirklich geändert werden, werden bereits bestehende Bilder Fehler produzieren. ^SU
418 - if(isset($meta['Pages']) && isset($meta['pages'])) { # ['Pages'] UND ['pages']? wieso das denn? das ist verwirrend... ^DK
 419+ if(isset($meta['page_amount']) && isset($meta['page_data'])) {
419420 return true;
420421 }
421422 }
@@ -428,8 +429,7 @@
429430 * @return array of strings
430431 * @access private
431432 */
432 - ## könnte in den ImageHandler ... ist bis jetzt aber nur im BitmapHandler implementiert. ^SU
433 - function visibleMetadataFields() { #sieht vollig generisch aus. gehört das nicht in die oberklasse? ^DK
 433+ function visibleMetadataFields() {
434434 $fields = array();
435435 $lines = explode( "\n", wfMsg( 'metadata-fields' ) );
436436 foreach( $lines as $line ) {
@@ -527,7 +527,7 @@
528528 ## Ist dies nicht der Fall, wird eine Instanz erstellt und im ImageObject gespeichert. ^SU
529529 if ( !$image )
530530 $tiffimg = new PagedTiffImage( $path );
531 - elseif ( !isset( $image->tiffImage ) ) #wo kommt $image her, wofür ist es gut? könnte es evtl schon ein TiffImage sein? ^DK
 531+ elseif ( !isset( $image->tiffImage ) )
532532 $tiffimg = $image->tiffImage = new PagedTiffImage( $path );
533533 else
534534 $tiffimg = $image->tiffImage;
@@ -539,8 +539,6 @@
540540 * Returns an Array with the Image-Metadata.
541541 */
542542 function getMetaArray( $image ) {
543 - # gehört das nicht ein einen lazy initializer in TiffImage::getMetaArray() oder so? ^DK
544 - # Nein. Die Methode holt die Metadaten aus dem MediaWiki-ImageObject und nicht aus dem TiffImage. ^SU
545543 if ( isset( $image->tiffMetaArray ) )
546544 return $image->tiffMetaArray;
547545
Index: trunk/extensions/PagedTiffHandler/PagedTiffHandler.image.php
@@ -70,9 +70,9 @@
7171 * Returns an array with width and height of the tiff page.
7272 */
7373 public static function getPageSize( $data, $page ) {
74 - if( isset( $data['pages'][$page] ) ) {
75 - return array('width' => $data['pages'][$page]['width'],
76 - 'height' => $data['pages'][$page]['height']);
 74+ if( isset( $data['page_data'][$page] ) ) {
 75+ return array('width' => $data['page_data'][$page]['width'],
 76+ 'height' => $data['page_data'][$page]['height']);
7777 }
7878 return false;
7979 }
@@ -80,8 +80,8 @@
8181 /**
8282 * Reads metadata of the tiff file via shell command and returns an associative array.
8383 * layout:
84 - * meta['Pages'] = amount of pages
85 - * meta['pages'] = metadata per page
 84+ * meta['page_amount'] = amount of pages
 85+ * meta['page_data'] = metadata per page
8686 * meta['exif'] = Exif, XMP and IPTC
8787 * meta['errors'] = identify-errors
8888 * meta['warnings'] = identify-warnings
@@ -99,7 +99,7 @@
100100 if($this->_meta === NULL) {
101101 if ( $wgImageMagickIdentifyCommand ) {
102102
103 - wfProfileIn( 'PagedTiffImage' );
 103+ wfProfileIn( 'PagedTiffImage::retrieveMetaData' );
104104 /**
105105 * ImageMagick is used in order to get the basic metadata of embedded files.
106106 * This is not reliable in exiv2m since it is not possible to name a set of required fields.
@@ -122,6 +122,7 @@
123123 $cmd = wfEscapeShellArg( $wgTiffExivCommand ) .
124124 ' -u -psix -Pnt ' . // read EXIF, XMP, IPTC as name-tag => interpreted data -ignore unknown fields
125125 // exiv2-doc @link http://www.exiv2.org/sample.html
 126+ ## In der Linux-Version von exiv2 gibt es einen Bug, sodass diese Parameter dort nicht funktionieren. ^SU
126127 wfEscapeShellArg( $this->mFilename );
127128
128129 wfRunHooks( "PagedTiffHandlerExivCommand", array( &$cmd, $this->mFilename ) );
@@ -148,7 +149,7 @@
149150 wfProfileOut( 'identify -verbose' );
150151 $this->_meta['exif'] = $this->parseVerbose($dump);
151152 }
152 - wfProfileOut( 'PagedTiffImage' );
 153+ wfProfileOut( 'PagedTiffImage::retrieveMetaData' );
153154 }
154155 }
155156 unset($this->_meta['exif']['Image']);
@@ -167,8 +168,8 @@
168169 $infos = NULL;
169170 preg_match_all('/\[BEGIN\](.+?)\[END\]/si', $dump, $infos, PREG_SET_ORDER);
170171 $data = array();
171 - $data['Pages'] = count($infos);
172 - $data['pages'] = array();
 172+ $data['page_amount'] = count($infos);
 173+ $data['page_data'] = array();
173174 foreach($infos as $info) {
174175 $entry = array();
175176 $lines = explode("\n", $info[1]);
@@ -195,7 +196,7 @@
196197 $entry[trim($parts[0])] = trim($parts[1]);
197198 }
198199 $entry['pixels'] = $entry['height'] * $entry['width'];
199 - $data['pages'][$entry['page']] = $entry;
 200+ $data['page_data'][$entry['page']] = $entry;
200201 }
201202
202203 $dump = preg_replace('/\[BEGIN\](.+?)\[END\]/si', '', $dump);
@@ -210,17 +211,18 @@
211212 break;
212213 }
213214 }
214 - if(!$knownError) {
 215+ if(!$knownError) {
 216+ ## BypassMessages werden nicht gespeichert ^SU
215217 foreach($wgTiffIdentifyBypassMessages as $msg) {
216218 if (preg_match($msg, trim($error))) {
217 - $data['warnings'][] = $error;
 219+ //$data['warnings'][] = $error;
218220 $knownError = true;
219221 break;
220222 }
221223 }
222224 }
223225 if(!$knownError) {
224 - $data['unknownErrors'][] = $error;
 226+ $data['warning'][] = $error;
225227 }
226228 }
227229 }
Property changes on: trunk/extensions/PagedTiffHandler
___________________________________________________________________
Name: svn:ignore
228230 + nbproject

Status & tagging log