From 08aee8c709fc662bd4da8f5d201333200c934795 Mon Sep 17 00:00:00 2001 From: umherirrender Date: Sun, 17 Jun 2012 09:59:19 +0200 Subject: [PATCH] (bug 32383) Allow descending order for list=langbacklinks Change-Id: I5ebcb8c3d49f85eba14c1caafb5b5b78ccee4605 --- RELEASE-NOTES-1.20 | 1 + includes/api/ApiQueryLangBacklinks.php | 28 +++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/RELEASE-NOTES-1.20 b/RELEASE-NOTES-1.20 index a696541be3..cff8a8c5c6 100644 --- a/RELEASE-NOTES-1.20 +++ b/RELEASE-NOTES-1.20 @@ -174,6 +174,7 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki. * (bug 31777) Upload unknown error ``fileexists-forbidden'' * (bug 32382) Allow descending order for list=iwbacklinks * (bug 32381) Allow descending order for list=backlinks, list=embeddedin and list=imageusage +* (bug 32383) Allow descending order for list=langbacklinks === Languages updated in 1.20 === diff --git a/includes/api/ApiQueryLangBacklinks.php b/includes/api/ApiQueryLangBacklinks.php index f423719c0c..c7639ee5f3 100644 --- a/includes/api/ApiQueryLangBacklinks.php +++ b/includes/api/ApiQueryLangBacklinks.php @@ -62,15 +62,16 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase { } $db = $this->getDB(); + $op = $params['dir'] == 'descending' ? '<' : '>'; $prefix = $db->addQuotes( $cont[0] ); $title = $db->addQuotes( $this->titleToKey( $cont[1] ) ); $from = intval( $cont[2] ); $this->addWhere( - "ll_lang > $prefix OR " . + "ll_lang $op $prefix OR " . "(ll_lang = $prefix AND " . - "(ll_title > $title OR " . + "(ll_title $op $title OR " . "(ll_title = $title AND " . - "ll_from >= $from)))" + "ll_from $op= $from)))" ); } @@ -84,22 +85,23 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase { $this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect', 'll_from', 'll_lang', 'll_title' ) ); + $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' ); if ( isset( $params['lang'] ) ) { $this->addWhereFld( 'll_lang', $params['lang'] ); if ( isset( $params['title'] ) ) { $this->addWhereFld( 'll_title', $params['title'] ); - $this->addOption( 'ORDER BY', 'll_from' ); + $this->addOption( 'ORDER BY', 'll_from' . $sort ); } else { $this->addOption( 'ORDER BY', array( - 'll_title', - 'll_from' + 'll_title' . $sort, + 'll_from' . $sort )); } } else { $this->addOption( 'ORDER BY', array( - 'll_lang', - 'll_title', - 'll_from' + 'll_lang' . $sort, + 'll_title' . $sort, + 'll_from' . $sort )); } @@ -178,6 +180,13 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase { 'lltitle', ), ), + 'dir' => array( + ApiBase::PARAM_DFLT => 'ascending', + ApiBase::PARAM_TYPE => array( + 'ascending', + 'descending' + ) + ), ); } @@ -192,6 +201,7 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase { ' lltitle - Adds the title of the language ink', ), 'limit' => 'How many total pages to return', + 'dir' => 'The direction in which to list', ); } -- 2.20.1