<?php
-# Class to represent an image
-# Provides methods to retrieve paths (physical, logical, URL),
-# to generate thumbnails or for uploading.
-
+/**
+ * @package MediaWiki
+ * $Id$
+ */
+
+/**
+ * Class to represent an image
+ *
+ * Provides methods to retrieve paths (physical, logical, URL),
+ * to generate thumbnails or for uploading.
+ * @package MediaWiki
+ */
class Image
{
/* private */
return $this->name;
}
+ function getTitle()
+ {
+ return $this->title;
+ }
+
function getURL()
{
return $this->url;
return $this->height;
}
+ function getSize()
+ {
+ $st = stat( $this->getImagePath() );
+ return $st['size'];
+ }
+
function getType()
{
return $this->type;
return wfUrlencode( $url );
}
-
function exists()
{
return $this->fileExists;
return $width."px-".$this->name;
}
- //**********************************************************************
- // Create a thumbnail of the image having the specified width.
- // The thumbnail will not be created if the width is larger than the
- // image's width. Let the browser do the scaling in this case.
- // The thumbnail is stored on disk and is only computed if the thumbnail
- // file does not exist OR if it is older than the image.
- // Returns the URL.
- function createThumb( $width ) {
+ function createThumb( $width, $height=-1 ) {
+ if ( $height == -1 ) {
+ return $this->renderThumb( $width );
+ }
+ if ( $width < $this->width ) {
+ $thumbheight = $this->height * $width / $this->width;
+ $thumbwidth = $width;
+ } else {
+ $thumbheight = $this->height;
+ $thumbwidth = $this->width;
+ }
+ if ( $thumbheight > $height ) {
+ $thumbwidth = $thumbwidth * $height / $thumbheight;
+ $thumbheight = $height;
+ }
+ return $this->renderThumb( $thumbwidth );
+ }
+
+ /**
+ * Create a thumbnail of the image having the specified width.
+ * The thumbnail will not be created if the width is larger than the
+ * image's width. Let the browser do the scaling in this case.
+ * The thumbnail is stored on disk and is only computed if the thumbnail
+ * file does not exist OR if it is older than the image.
+ * Returns the URL.
+ */
+ function /* private */ renderThumb( $width ) {
global $wgUploadDirectory;
global $wgImageMagickConvertCommand;
global $wgUseImageMagick;
return $thumbUrl;
} // END OF function createThumb
- //**********************************************************************
- // Return the image history of this image, line by line.
- // starts with current version, then old versions.
- // uses $this->historyLine to check which line to return:
- // 0 return line for current version
- // 1 query for old versions, return first one
- // 2, ... return next old version from above query
+ /**
+ * Return the image history of this image, line by line.
+ * starts with current version, then old versions.
+ * uses $this->historyLine to check which line to return:
+ * 0 return line for current version
+ * 1 query for old versions, return first one
+ * 2, ... return next old version from above query
+ */
function nextHistoryLine()
{
$fname = 'Image::nextHistoryLine()';
# Test to see if the row exists using INSERT IGNORE
# This avoids race conditions by locking the row until the commit, and also
# doesn't deadlock. SELECT FOR UPDATE causes a deadlock for every race condition.
- $dbw->insert( 'image',
+ $dbw->insertArray( 'image',
array(
'img_name' => $name,
'img_size'=> $size,
- 'img_timestamp' => $now,
+ 'img_timestamp' => $dbw->timestamp($now),
'img_description' => $desc,
'img_user' => $wgUser->getID(),
'img_user_text' => $wgUser->getName(),
'cur_comment' => $desc,
'cur_user' => $wgUser->getID(),
'cur_user_text' => $wgUser->getName(),
- 'cur_timestamp' => $now,
+ 'cur_timestamp' => $dbw->timestamp($now),
'cur_is_new' => 1,
'cur_text' => $textdesc,
'inverse_timestamp' => $won,
- 'cur_touched' => $now
+ 'cur_touched' => $dbw->timestamp($now)
), $fname
);
$id = $dbw->insertId() or 0; # We should throw an error instead
'oi_name' => $s->img_name,
'oi_archive_name' => $oldver,
'oi_size' => $s->img_size,
- 'oi_timestamp' => $s->img_timestamp,
+ 'oi_timestamp' => $dbw->timestamp($s->img_timestamp),
'oi_description' => $s->img_description,
'oi_user' => $s->img_user,
'oi_user_text' => $s->img_user_text
$dbw->updateArray( 'image',
array( /* SET */
'img_size' => $size,
- 'img_timestamp' => wfTimestampNow(),
+ 'img_timestamp' => $dbw->timestamp(),
'img_user' => $wgUser->getID(),
'img_user_text' => $wgUser->getName(),
'img_description' => $desc,
$descTitle->invalidateCache();
}
- $log = new LogPage( wfMsg( 'uploadlogpage' ), wfMsg( 'uploadlogpagetext' ) );
- $da = wfMsg( 'uploadedimage', '[[:' . $wgLang->getNsText(
- Namespace::getImage() ) . ":{$name}|{$name}]]" );
- $ta = wfMsg( 'uploadedimage', $name );
- $log->addEntry( $da, $desc, $ta );
+ $log = new LogPage( 'upload' );
+ $log->addEntry( 'upload', $descTitle, $desc );
}
function wfImageArchiveUrl( $name )