Merge "Making listToText() not break if passed a 1-item list."
[lhc/web/wiklou.git] / includes / api / ApiQueryTags.php
index ad708bd..edd1553 100644 (file)
@@ -1,9 +1,8 @@
 <?php
-
 /**
- * Created on Jul 9, 2009
  *
- * API for MediaWiki 1.8+
+ *
+ * Created on Jul 9, 2009
  *
  * Copyright © 2009
  *
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  */
 
-if ( !defined( 'MEDIAWIKI' ) ) {
-       // Eclipse helper - will be ignored in production
-       require_once( 'ApiQueryBase.php' );
-}
-
 /**
  * Query module to enumerate change tags.
  *
@@ -35,7 +31,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
  */
 class ApiQueryTags extends ApiQueryBase {
 
-       private $limit, $result;
+       /**
+        * @var ApiResult
+        */
+       private $result;
+
+       private $limit;
        private $fld_displayname = false, $fld_description = false,
                        $fld_hitcount = false;
 
@@ -58,9 +59,7 @@ class ApiQueryTags extends ApiQueryBase {
                $this->addTables( 'change_tag' );
                $this->addFields( 'ct_tag' );
 
-               if ( $this->fld_hitcount ) {
-                       $this->addFields( 'count(*) AS hitcount' );
-               }
+               $this->addFieldsIf( 'count(*) AS hitcount', $this->fld_hitcount );
 
                $this->addOption( 'LIMIT', $this->limit + 1 );
                $this->addOption( 'GROUP BY', 'ct_tag' );
@@ -70,7 +69,7 @@ class ApiQueryTags extends ApiQueryBase {
 
                $ok = true;
 
-               while ( $row = $res->fetchObject() ) {
+               foreach ( $res as $row ) {
                        if ( !$ok ) {
                                break;
                        }
@@ -109,9 +108,8 @@ class ApiQueryTags extends ApiQueryBase {
                }
 
                if ( $this->fld_description ) {
-                       $msg = wfMsg( "tag-$tagName-description" );
-                       $msg = wfEmptyMsg( "tag-$tagName-description", $msg ) ? '' : $msg;
-                       $tag['description'] = $msg;
+                       $msg = wfMessage( "tag-$tagName-description" );
+                       $tag['description'] = $msg->exists() ? $msg->text() : '';
                }
 
                if ( $this->fld_hitcount ) {
@@ -129,6 +127,10 @@ class ApiQueryTags extends ApiQueryBase {
                return true;
        }
 
+       public function getCacheMode( $params ) {
+               return 'public';
+       }
+
        public function getAllowedParams() {
                return array(
                        'continue' => array(
@@ -167,11 +169,28 @@ class ApiQueryTags extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string'
+                       ),
+                       'displayname' => array(
+                               'displayname' => 'string'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'hitcount' => array(
+                               'hitcount' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List change tags';
        }
 
-       protected function getExamples() {
+       public function getExamples() {
                return array(
                        'api.php?action=query&list=tags&tgprop=displayname|description|hitcount'
                );