X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FTitle.php;h=3ed6b8bb6e14ee728b65a1ea80febf89947ead7d;hb=d4a1177aa66759a5cf05887830435bb9e50f7780;hp=65b69a29a60d145130a431f9867b08a6c08b88ab;hpb=38b0060dc4306291e0cd78acdf45a83d5324e5b3;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Title.php b/includes/Title.php index 65b69a29a6..3ed6b8bb6e 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -134,7 +134,7 @@ class Title implements LinkTarget { /** * @var int Namespace index when there is no namespace. Don't change the - * following default, NS_MAIN is hardcoded in several places. See bug 696. + * following default, NS_MAIN is hardcoded in several places. See T2696. * Zero except in {{transclusion}} tags. */ public $mDefaultNamespace = NS_MAIN; @@ -307,7 +307,7 @@ class Title implements LinkTarget { } } - // Convert things like é ā or 〗 into normalized (bug 14952) text + // Convert things like é ā or 〗 into normalized (T16952) text $filteredText = Sanitizer::decodeCharReferencesAndNormalize( $text ); $t = new Title(); @@ -1233,12 +1233,6 @@ class Title implements LinkTarget { && ( $this->hasContentModel( CONTENT_MODEL_CSS ) || $this->hasContentModel( CONTENT_MODEL_JAVASCRIPT ) ); - # @note This hook is also called in ContentHandler::getDefaultModel. - # It's called here again to make sure hook functions can force this - # method to return true even outside the MediaWiki namespace. - - Hooks::run( 'TitleIsCssOrJsPage', [ $this, &$isCssOrJsPage ], '1.25' ); - return $isCssOrJsPage; } @@ -2423,7 +2417,7 @@ class Title implements LinkTarget { * * @param string $action The action to check * @param bool $short Short circuit on first error - * @return array List of errors + * @return array Array containing an error message key and any parameters */ private function missingPermissionError( $action, $short ) { // We avoid expensive display logic for quickUserCan's and such @@ -2431,19 +2425,7 @@ class Title implements LinkTarget { return [ 'badaccess-group0' ]; } - $groups = array_map( [ 'User', 'makeGroupLinkWiki' ], - User::getGroupsWithPermission( $action ) ); - - if ( count( $groups ) ) { - global $wgLang; - return [ - 'badaccess-groups', - $wgLang->commaList( $groups ), - count( $groups ) - ]; - } else { - return [ 'badaccess-group0' ]; - } + return User::newFatalPermissionDeniedStatus( $action )->getErrorsArray()[0]; } /** @@ -2567,6 +2549,29 @@ class Title implements LinkTarget { * protection, or false if there's none. */ public function getTitleProtection() { + $protection = $this->getTitleProtectionInternal(); + if ( $protection ) { + if ( $protection['permission'] == 'sysop' ) { + $protection['permission'] = 'editprotected'; // B/C + } + if ( $protection['permission'] == 'autoconfirmed' ) { + $protection['permission'] = 'editsemiprotected'; // B/C + } + } + return $protection; + } + + /** + * Fetch title protection settings + * + * To work correctly, $this->loadRestrictions() needs to have access to the + * actual protections in the database without munging 'sysop' => + * 'editprotected' and 'autoconfirmed' => 'editsemiprotected'. Other + * callers probably want $this->getTitleProtection() instead. + * + * @return array|bool + */ + protected function getTitleProtectionInternal() { // Can't protect pages in special namespaces if ( $this->getNamespace() < 0 ) { return false; @@ -2594,12 +2599,6 @@ class Title implements LinkTarget { // fetchRow returns false if there are no rows. $row = $dbr->fetchRow( $res ); if ( $row ) { - if ( $row['permission'] == 'sysop' ) { - $row['permission'] = 'editprotected'; // B/C - } - if ( $row['permission'] == 'autoconfirmed' ) { - $row['permission'] = 'editsemiprotected'; // B/C - } $row['expiry'] = $dbr->decodeExpiry( $row['expiry'] ); } $this->mTitleProtection = $row; @@ -2997,7 +2996,7 @@ class Title implements LinkTarget { $this->loadRestrictionsFromRows( $rows, $oldFashionedRestrictions ); } else { - $title_protection = $this->getTitleProtection(); + $title_protection = $this->getTitleProtectionInternal(); if ( $title_protection ) { $now = wfTimestampNow(); @@ -3759,14 +3758,14 @@ class Title implements LinkTarget { } $newPageName = preg_replace( '#^' . preg_quote( $this->getDBkey(), '#' ) . '#', - StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # bug 21234 + StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # T23234 $oldSubpage->getDBkey() ); if ( $oldSubpage->isTalkPage() ) { $newNs = $nt->getTalkPage()->getNamespace(); } else { $newNs = $nt->getSubjectPage()->getNamespace(); } - # Bug 14385: we need makeTitleSafe because the new page names may + # T16385: we need makeTitleSafe because the new page names may # be longer than 255 characters. $newSubpage = Title::makeTitleSafe( $newNs, $newPageName ); @@ -3883,7 +3882,7 @@ class Title implements LinkTarget { * categories' names. * * @return array Array of parents in the form: - * $parent => $currentarticle + * $parent => $currentarticle */ public function getParentCategories() { global $wgContLang;