X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2FTitle.php;h=65b69a29a60d145130a431f9867b08a6c08b88ab;hp=1507a0da666139bea0e75f9141eeae0755c32891;hb=892b17237bb44630fa6f508c5bf85374a62def13;hpb=d67197fa116acc366419faedeeacd91158a98f8b diff --git a/includes/Title.php b/includes/Title.php index 1507a0da66..65b69a29a6 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -1627,7 +1627,7 @@ class Title implements LinkTarget { * * @since 1.19 (r105919) * @param array|string $query - * @param bool $query2 + * @param string|string[]|bool $query2 * @return string */ private static function fixUrlQueryArgs( $query, $query2 = false ) { @@ -1663,8 +1663,8 @@ class Title implements LinkTarget { * * @see self::getLocalURL for the arguments. * @see wfExpandUrl - * @param array|string $query - * @param bool $query2 + * @param string|string[] $query + * @param string|string[]|bool $query2 * @param string $proto Protocol type to use in URL * @return string The URL */ @@ -1681,8 +1681,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; } @@ -1696,11 +1697,11 @@ class Title implements LinkTarget { * valid to link, locally, to the current Title. * @see self::newFromText to produce a Title object. * - * @param string|array $query An optional query string, + * @param string|string[] $query An optional query string, * not used for interwiki links. Can be specified as an associative array as well, * e.g., array( 'action' => 'edit' ) (keys and values will be URL-escaped). * Some query patterns will trigger various shorturl path replacements. - * @param array $query2 An optional secondary query array. This one MUST + * @param string|string[]|bool $query2 An optional secondary query array. This one MUST * be an array. If a string is passed it will be interpreted as a deprecated * variant argument and urlencoded into a variant= argument. * This second query argument will be added to the $query @@ -1728,7 +1729,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 +1775,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 +1785,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; } @@ -1795,7 +1801,7 @@ class Title implements LinkTarget { * The result obviously should not be URL-escaped, but does need to be * HTML-escaped if it's being output in HTML. * - * @param array $query + * @param string|string[] $query * @param bool $query2 * @param string|int|bool $proto A PROTO_* constant on how the URL should be expanded, * or false (default) for no expansion @@ -1830,7 +1836,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 +1856,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 +2062,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 ); } @@ -3595,18 +3609,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 +3672,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 +3691,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 +3707,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 +3741,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 +3770,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 {