X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fapi%2FApiQueryAllImages.php;h=669351fde3d1b61b620bb34305ad86de6856bac9;hb=ab2d63b53ed29c44e4917125555af3dc2eb9964e;hp=4095bd81fdf4a254310a78f7b2ff62f463a87040;hpb=5df5a5b4a8ce61cda82af3c636a9b1f3016e6464;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/api/ApiQueryAllImages.php b/includes/api/ApiQueryAllImages.php index 4095bd81fd..669351fde3 100644 --- a/includes/api/ApiQueryAllImages.php +++ b/includes/api/ApiQueryAllImages.php @@ -59,7 +59,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { } /** - * @param $resultPageSet ApiPageSet + * @param ApiPageSet $resultPageSet * @return void */ public function executeGenerator( $resultPageSet ) { @@ -75,7 +75,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { } /** - * @param $resultPageSet ApiPageSet + * @param ApiPageSet $resultPageSet * @return void */ private function run( $resultPageSet = null ) { @@ -168,6 +168,20 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { $params['start'], $params['end'] ); + // Include in ORDER BY for uniqueness + $this->addWhereRange( 'img_name', $ascendingOrder ? 'newer' : 'older', null, null ); + + if ( !is_null( $params['continue'] ) ) { + $cont = explode( '|', $params['continue'] ); + $this->dieContinueUsageIf( count( $cont ) != 2 ); + $op = ( $ascendingOrder ? '>' : '<' ); + $continueTimestamp = $db->addQuotes( $db->timestamp( $cont[0] ) ); + $continueName = $db->addQuotes( $cont[1] ); + $this->addWhere( "img_timestamp $op $continueTimestamp OR " . + "(img_timestamp = $continueTimestamp AND " . + "img_name $op= $continueName)" + ); + } // Image filters if ( !is_null( $params['user'] ) ) { @@ -254,7 +268,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { if ( $params['sort'] == 'name' ) { $this->setContinueEnumParameter( 'continue', $row->img_name ); } else { - $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->img_timestamp ) ); + $this->setContinueEnumParameter( 'continue', "$row->img_timestamp|$row->img_name" ); } break; } @@ -270,7 +284,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { if ( $params['sort'] == 'name' ) { $this->setContinueEnumParameter( 'continue', $row->img_name ); } else { - $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->img_timestamp ) ); + $this->setContinueEnumParameter( 'continue', "$row->img_timestamp|$row->img_name" ); } break; } @@ -378,7 +392,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { ); } - private $propertyFilter = array( 'archivename', 'thumbmime' ); + private $propertyFilter = array( 'archivename', 'thumbmime', 'uploadwarning' ); public function getResultProperties() { return array_merge( @@ -394,7 +408,7 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase { } public function getDescription() { - return 'Enumerate all images sequentially'; + return 'Enumerate all images sequentially.'; } public function getPossibleErrors() {