Merge "Delete UIDGenerator cache files after unit tests"
[lhc/web/wiklou.git] / includes / api / ApiQuerySiteinfo.php
index 07561ca..1cd8d98 100644 (file)
@@ -78,6 +78,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                case 'rightsinfo':
                                        $fit = $this->appendRightsInfo( $p );
                                        break;
+                               case 'restrictions':
+                                       $fit = $this->appendRestrictions( $p );
+                                       break;
                                case 'languages':
                                        $fit = $this->appendLanguages( $p );
                                        break;
@@ -562,7 +565,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        $vcsVersion = $gitInfo->getHeadSHA1();
                                        if ( $vcsVersion !== false ) {
                                                $ret['vcs-system'] = 'git';
-                                               $ret['vcs-version'] =  $vcsVersion;
+                                               $ret['vcs-version'] = $vcsVersion;
                                                $ret['vcs-url'] = $gitInfo->getHeadViewUrl();
                                                $ret['vcs-date'] = wfTimestamp( TS_ISO_8601, $gitInfo->getHeadCommitDate() );
                                        } else {
@@ -573,12 +576,20 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                                        $ret['vcs-url'] = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
                                                }
                                        }
+
                                        if ( SpecialVersion::getExtLicenseFileName( $extensionPath ) ) {
                                                $ret['license-name'] = isset( $ext['license-name'] ) ? $ext['license-name'] : '';
-                                               $ret['license'] = SpecialPage::getTitleFor( 'Version', "License/{$ext['name']}" )->getLinkURL();
+                                               $ret['license'] = SpecialPage::getTitleFor(
+                                                       'Version',
+                                                       "License/{$ext['name']}"
+                                               )->getLinkURL();
                                        }
+
                                        if ( SpecialVersion::getExtAuthorsFileName( $extensionPath ) ) {
-                                               $ret['credits'] = SpecialPage::getTitleFor( 'Version', "Credits/{$ext['name']}" )->getLinkURL();
+                                               $ret['credits'] = SpecialPage::getTitleFor(
+                                                       'Version',
+                                                       "Credits/{$ext['name']}"
+                                               )->getLinkURL();
                                        }
                                }
                                $data[] = $ret;
@@ -607,6 +618,25 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                return $this->getResult()->addValue( 'query', $property, $data );
        }
 
+       protected function appendRestrictions( $property ) {
+               global $wgRestrictionTypes, $wgRestrictionLevels,
+                       $wgCascadingRestrictionLevels, $wgSemiprotectedRestrictionLevels;
+
+               $data = array(
+                       'types' => $wgRestrictionTypes,
+                       'levels' => $wgRestrictionLevels,
+                       'cascadinglevels' => $wgCascadingRestrictionLevels,
+                       'semiprotectedlevels' => $wgSemiprotectedRestrictionLevels,
+               );
+
+               $this->getResult()->setIndexedTagName( $data['types'], 'type' );
+               $this->getResult()->setIndexedTagName( $data['levels'], 'level' );
+               $this->getResult()->setIndexedTagName( $data['cascadinglevels'], 'level' );
+               $this->getResult()->setIndexedTagName( $data['semiprotectedlevels'], 'level' );
+
+               return $this->getResult()->addValue( 'query', $property, $data );
+       }
+
        public function appendLanguages( $property ) {
                $params = $this->extractRequestParams();
                $langCode = isset( $params['inlanguagecode'] ) ? $params['inlanguagecode'] : '';
@@ -729,6 +759,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        'extensions',
                                        'fileextensions',
                                        'rightsinfo',
+                                       'restrictions',
                                        'languages',
                                        'skins',
                                        'extensiontags',
@@ -770,6 +801,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                ' extensions            - Returns extensions installed on the wiki',
                                ' fileextensions        - Returns list of file extensions allowed to be uploaded',
                                ' rightsinfo            - Returns wiki rights (license) information if available',
+                               ' restrictions          - Returns information on available restriction (protection) types',
                                ' languages             - Returns a list of languages MediaWiki supports' .
                                        "(optionally localised by using {$p}inlanguagecode)",
                                ' skins                 - Returns a list of all enabled skins',
@@ -789,7 +821,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
        }
 
        public function getDescription() {
-               return 'Return general information about the site';
+               return 'Return general information about the site.';
        }
 
        public function getPossibleErrors() {