diff options
author | daniel <daniel.kinzler@wikimedia.de> | 2012-04-25 19:49:09 +0200 |
---|---|---|
committer | daniel <daniel.kinzler@wikimedia.de> | 2012-04-25 19:49:09 +0200 |
commit | a990fd78ffa34b3a6834398e7efc80ac05fbf1ed (patch) | |
tree | 665d074477fcea7c694d6da4ce6622337cdc931a /includes/api/ApiQueryDuplicateFiles.php | |
parent | f0672924480eeed1b2c49fd46c1e795fbeb9cae9 (diff) | |
parent | bc89933210faebe3d1cabc5fd670fe68a237a020 (diff) | |
download | mediawikicore-a990fd78ffa34b3a6834398e7efc80ac05fbf1ed.tar.gz mediawikicore-a990fd78ffa34b3a6834398e7efc80ac05fbf1ed.zip |
merged from master
Diffstat (limited to 'includes/api/ApiQueryDuplicateFiles.php')
-rw-r--r-- | includes/api/ApiQueryDuplicateFiles.php | 22 |
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__ ); |