X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FTitle.php;h=3ce775b8bc80d95e94a786c4d3f41689e4878f15;hb=44ac0de8d1d6c4dfdeeb9f52f18f164a18176b46;hp=64ff5b417b404827d6c8097d612cfd65ed2fb33a;hpb=41f1ce0d35b929d480ce87605a3234c187e44fd2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Title.php b/includes/Title.php index 64ff5b417b..3ce775b8bc 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -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; } @@ -1681,8 +1675,9 @@ class Title implements LinkTarget { # Finally, add the fragment. $url .= $this->getFragmentForURL(); - - Hooks::run( 'GetFullURL', [ &$this, &$url, $query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetFullURL', [ &$titleRef, &$url, $query ] ); return $url; } @@ -1728,7 +1723,9 @@ class Title implements LinkTarget { $dbkey = wfUrlencode( $this->getPrefixedDBkey() ); if ( $query == '' ) { $url = str_replace( '$1', $dbkey, $wgArticlePath ); - Hooks::run( 'GetLocalURL::Article', [ &$this, &$url ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetLocalURL::Article', [ &$titleRef, &$url ] ); } else { global $wgVariantArticlePath, $wgActionPaths, $wgContLang; $url = false; @@ -1772,8 +1769,9 @@ class Title implements LinkTarget { $url = "{$wgScript}?title={$dbkey}&{$query}"; } } - - Hooks::run( 'GetLocalURL::Internal', [ &$this, &$url, $query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetLocalURL::Internal', [ &$titleRef, &$url, $query ] ); // @todo FIXME: This causes breakage in various places when we // actually expected a local URL and end up with dupe prefixes. @@ -1781,7 +1779,9 @@ class Title implements LinkTarget { $url = $wgServer . $url; } } - Hooks::run( 'GetLocalURL', [ &$this, &$url, $query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetLocalURL', [ &$titleRef, &$url, $query ] ); return $url; } @@ -1830,7 +1830,9 @@ class Title implements LinkTarget { $query = self::fixUrlQueryArgs( $query, $query2 ); $server = $wgInternalServer !== false ? $wgInternalServer : $wgServer; $url = wfExpandUrl( $server . $this->getLocalURL( $query ), PROTO_HTTP ); - Hooks::run( 'GetInternalURL', [ &$this, &$url, $query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetInternalURL', [ &$titleRef, &$url, $query ] ); return $url; } @@ -1848,7 +1850,9 @@ class Title implements LinkTarget { public function getCanonicalURL( $query = '', $query2 = false ) { $query = self::fixUrlQueryArgs( $query, $query2 ); $url = wfExpandUrl( $this->getLocalURL( $query ) . $this->getFragmentForURL(), PROTO_CANONICAL ); - Hooks::run( 'GetCanonicalURL', [ &$this, &$url, $query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + Hooks::run( 'GetCanonicalURL', [ &$titleRef, &$url, $query ] ); return $url; } @@ -2052,18 +2056,22 @@ class Title implements LinkTarget { private function checkPermissionHooks( $action, $user, $errors, $rigor, $short ) { // Use getUserPermissionsErrors instead $result = ''; - if ( !Hooks::run( 'userCan', [ &$this, &$user, $action, &$result ] ) ) { + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + if ( !Hooks::run( 'userCan', [ &$titleRef, &$user, $action, &$result ] ) ) { return $result ? [] : [ [ 'badaccess-group0' ] ]; } // Check getUserPermissionsErrors hook - if ( !Hooks::run( 'getUserPermissionsErrors', [ &$this, &$user, $action, &$result ] ) ) { + // Avoid PHP 7.1 warning from passing $this by reference + $titleRef = $this; + if ( !Hooks::run( 'getUserPermissionsErrors', [ &$titleRef, &$user, $action, &$result ] ) ) { $errors = $this->resultToError( $errors, $result ); } // Check getUserPermissionsErrorsExpensive hook if ( $rigor !== 'quick' && !( $short && count( $errors ) > 0 ) - && !Hooks::run( 'getUserPermissionsErrorsExpensive', [ &$this, &$user, $action, &$result ] ) + && !Hooks::run( 'getUserPermissionsErrorsExpensive', [ &$titleRef, &$user, $action, &$result ] ) ) { $errors = $this->resultToError( $errors, $result ); } @@ -2409,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 @@ -2417,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]; } /** @@ -3595,18 +3591,6 @@ class Title implements LinkTarget { ); } - /** - * Move this page without authentication - * - * @deprecated since 1.25 use MovePage class instead - * @param Title $nt The new page Title - * @return array|bool True on success, getUserPermissionsErrors()-like array on failure - */ - public function moveNoAuth( &$nt ) { - wfDeprecated( __METHOD__, '1.25' ); - return $this->moveTo( $nt, false ); - } - /** * Check whether a given move operation would be valid. * Returns true if ok, or a getUserPermissionsErrors()-like array otherwise @@ -3670,9 +3654,12 @@ class Title implements LinkTarget { * @param string $reason The reason for the move * @param bool $createRedirect Whether to create a redirect from the old title to the new title. * Ignored if the user doesn't have the suppressredirect right. + * @param array $changeTags Applied to the entry in the move log and redirect page revision * @return array|bool True on success, getUserPermissionsErrors()-like array on failure */ - public function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true ) { + public function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true, + array $changeTags = [] ) { + global $wgUser; $err = $this->isValidMoveOperation( $nt, $auth, $reason ); if ( is_array( $err ) ) { @@ -3686,7 +3673,7 @@ class Title implements LinkTarget { } $mp = new MovePage( $this, $nt ); - $status = $mp->move( $wgUser, $reason, $createRedirect ); + $status = $mp->move( $wgUser, $reason, $createRedirect, $changeTags ); if ( $status->isOK() ) { return true; } else { @@ -3702,24 +3689,32 @@ class Title implements LinkTarget { * @param string $reason The reason for the move * @param bool $createRedirect Whether to create redirects from the old subpages to * the new ones Ignored if the user doesn't have the 'suppressredirect' right + * @param array $changeTags Applied to the entry in the move log and redirect page revision * @return array Array with old page titles as keys, and strings (new page titles) or - * arrays (errors) as values, or an error array with numeric indices if no pages - * were moved + * getUserPermissionsErrors()-like arrays (errors) as values, or a + * getUserPermissionsErrors()-like error array with numeric indices if + * no pages were moved */ - public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true ) { + public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true, + array $changeTags = [] ) { + global $wgMaximumMovedPages; // Check permissions if ( !$this->userCan( 'move-subpages' ) ) { - return [ 'cant-move-subpages' ]; + return [ + [ 'cant-move-subpages' ], + ]; } // Do the source and target namespaces support subpages? if ( !MWNamespace::hasSubpages( $this->getNamespace() ) ) { - return [ 'namespace-nosubpages', - MWNamespace::getCanonicalName( $this->getNamespace() ) ]; + return [ + [ 'namespace-nosubpages', MWNamespace::getCanonicalName( $this->getNamespace() ) ], + ]; } if ( !MWNamespace::hasSubpages( $nt->getNamespace() ) ) { - return [ 'namespace-nosubpages', - MWNamespace::getCanonicalName( $nt->getNamespace() ) ]; + return [ + [ 'namespace-nosubpages', MWNamespace::getCanonicalName( $nt->getNamespace() ) ], + ]; } $subpages = $this->getSubpages( $wgMaximumMovedPages + 1 ); @@ -3728,9 +3723,9 @@ class Title implements LinkTarget { foreach ( $subpages as $oldSubpage ) { $count++; if ( $count > $wgMaximumMovedPages ) { - $retval[$oldSubpage->getPrefixedText()] = - [ 'movepage-max-pages', - $wgMaximumMovedPages ]; + $retval[$oldSubpage->getPrefixedText()] = [ + [ 'movepage-max-pages', $wgMaximumMovedPages ], + ]; break; } @@ -3757,7 +3752,7 @@ class Title implements LinkTarget { # be longer than 255 characters. $newSubpage = Title::makeTitleSafe( $newNs, $newPageName ); - $success = $oldSubpage->moveTo( $newSubpage, $auth, $reason, $createRedirect ); + $success = $oldSubpage->moveTo( $newSubpage, $auth, $reason, $createRedirect, $changeTags ); if ( $success === true ) { $retval[$oldSubpage->getPrefixedText()] = $newSubpage->getPrefixedText(); } else {