aboutsummaryrefslogtreecommitdiffstats
path: root/includes/api/ApiQueryDuplicateFiles.php
diff options
context:
space:
mode:
authordaniel <daniel.kinzler@wikimedia.de>2012-04-25 19:49:09 +0200
committerdaniel <daniel.kinzler@wikimedia.de>2012-04-25 19:49:09 +0200
commita990fd78ffa34b3a6834398e7efc80ac05fbf1ed (patch)
tree665d074477fcea7c694d6da4ce6622337cdc931a /includes/api/ApiQueryDuplicateFiles.php
parentf0672924480eeed1b2c49fd46c1e795fbeb9cae9 (diff)
parentbc89933210faebe3d1cabc5fd670fe68a237a020 (diff)
downloadmediawikicore-a990fd78ffa34b3a6834398e7efc80ac05fbf1ed.tar.gz
mediawikicore-a990fd78ffa34b3a6834398e7efc80ac05fbf1ed.zip
merged from master
Diffstat (limited to 'includes/api/ApiQueryDuplicateFiles.php')
-rw-r--r--includes/api/ApiQueryDuplicateFiles.php22
1 files changed, 16 insertions, 6 deletions
diff --git a/includes/api/ApiQueryDuplicateFiles.php b/includes/api/ApiQueryDuplicateFiles.php
index beca58791572..0132d67c5dc6 100644
--- a/includes/api/ApiQueryDuplicateFiles.php
+++ b/includes/api/ApiQueryDuplicateFiles.php
@@ -80,17 +80,27 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
$this->dieUsage( 'Invalid continue param. You should pass the ' .
'original value returned by the previous query', '_badcontinue' );
}
- $orig = $this->getDB()->strencode( $this->titleTokey( $cont[0] ) );
- $dup = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $op = $params['dir'] == 'descending' ? '<' : '>';
+ $db = $this->getDB();
+ $orig = $db->addQuotes( $this->titleTokey( $cont[0] ) );
+ $dup = $db->addQuotes( $this->titleToKey( $cont[1] ) );
$this->addWhere(
- "i1.img_name > '$orig' OR " .
- "(i1.img_name = '$orig' AND " .
- "i2.img_name >= '$dup')"
+ "i1.img_name $op $orig OR " .
+ "(i1.img_name = $orig AND " .
+ "i2.img_name $op= $dup)"
);
}
$dir = ( $params['dir'] == 'descending' ? ' DESC' : '' );
- $this->addOption( 'ORDER BY', 'i1.img_name' . $dir );
+ // Don't order by i1.img_name if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
+ $this->addOption( 'ORDER BY', 'i2.img_name' . $dir );
+ } else {
+ $this->addOption( 'ORDER BY', array(
+ 'i1.img_name' . $dir,
+ 'i2.img_name' . $dir
+ ));
+ }
$this->addOption( 'LIMIT', $params['limit'] + 1 );
$res = $this->select( __METHOD__ );