*
* @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).
+ * e.g., [ 'action' => 'edit' ] (keys and values will be URL-escaped).
* Some query patterns will trigger various shorturl path replacements.
* @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
* @throws Exception
*
* @deprecated since 1.33,
- * use MediaWikiServices::getInstance()->getPermissionManager()->getUserPermissionsErrors()
+ * use MediaWikiServices::getInstance()->getPermissionManager()->getPermissionErrors()
*
*/
public function getUserPermissionsErrors(
* @return array|bool True on success, getUserPermissionsErrors()-like array on failure
*/
public function isValidMoveOperation( &$nt, $auth = true, $reason = '' ) {
+ wfDeprecated( __METHOD__, '1.25' );
+
global $wgUser;
if ( !( $nt instanceof Title ) ) {
public function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true,
array $changeTags = []
) {
+ wfDeprecated( __METHOD__, '1.25' );
+
global $wgUser;
$mp = new MovePage( $this, $nt );
/**
* Move this page's subpages to be subpages of $nt
*
+ * @deprecated since 1.34, use MovePage instead
* @param Title $nt Move target
* @param bool $auth Whether $wgUser's permissions should be checked
* @param string $reason The reason for the move
public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true,
array $changeTags = []
) {
- global $wgMaximumMovedPages;
- // Check permissions
- if ( !$this->userCan( 'move-subpages' ) ) {
- return [
- [ 'cant-move-subpages' ],
- ];
- }
- // Do the source and target namespaces support subpages?
- $nsInfo = MediaWikiServices::getInstance()->getNamespaceInfo();
- if ( !$nsInfo->hasSubpages( $this->mNamespace ) ) {
- return [
- [ 'namespace-nosubpages', $nsInfo->getCanonicalName( $this->mNamespace ) ],
- ];
- }
- if ( !$nsInfo->hasSubpages( $nt->getNamespace() ) ) {
- return [
- [ 'namespace-nosubpages', $nsInfo->getCanonicalName( $nt->getNamespace() ) ],
- ];
- }
+ wfDeprecated( __METHOD__, '1.34' );
- $subpages = $this->getSubpages( $wgMaximumMovedPages + 1 );
- $retval = [];
- $count = 0;
- foreach ( $subpages as $oldSubpage ) {
- $count++;
- if ( $count > $wgMaximumMovedPages ) {
- $retval[$oldSubpage->getPrefixedText()] = [
- [ 'movepage-max-pages', $wgMaximumMovedPages ],
- ];
- break;
- }
+ global $wgUser;
- // We don't know whether this function was called before
- // or after moving the root page, so check both
- // $this and $nt
- if ( $oldSubpage->getArticleID() == $this->getArticleID()
- || $oldSubpage->getArticleID() == $nt->getArticleID()
- ) {
- // When moving a page to a subpage of itself,
- // don't move it twice
- continue;
- }
- $newPageName = preg_replace(
- '#^' . preg_quote( $this->mDbkeyform, '#' ) . '#',
- StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # T23234
- $oldSubpage->getDBkey() );
- if ( $oldSubpage->isTalkPage() ) {
- $newNs = $nt->getTalkPage()->getNamespace();
- } else {
- $newNs = $nt->getSubjectPage()->getNamespace();
- }
- # T16385: we need makeTitleSafe because the new page names may
- # be longer than 255 characters.
- $newSubpage = self::makeTitleSafe( $newNs, $newPageName );
+ $mp = new MovePage( $this, $nt );
+ $method = $auth ? 'moveSubpagesIfAllowed' : 'moveSubpages';
+ $result = $mp->$method( $wgUser, $reason, $createRedirect, $changeTags );
- $success = $oldSubpage->moveTo( $newSubpage, $auth, $reason, $createRedirect, $changeTags );
- if ( $success === true ) {
- $retval[$oldSubpage->getPrefixedText()] = $newSubpage->getPrefixedText();
+ if ( !$result->isOk() ) {
+ return $result->getErrorsArray();
+ }
+
+ $retval = [];
+ foreach ( $result->getValue() as $key => $status ) {
+ if ( $status->isOK() ) {
+ $retval[$key] = $status->getValue();
} else {
- $retval[$oldSubpage->getPrefixedText()] = $success;
+ $retval[$key] = $status->getErrorsArray();
}
}
return $retval;
* @return bool
*/
public function isValidMoveTarget( $nt ) {
+ wfDeprecated( __METHOD__, '1.25' );
+
# Is it an existing file?
if ( $nt->getNamespace() == NS_FILE ) {
- $file = wfLocalFile( $nt );
+ $file = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
+ ->newFile( $nt );
$file->load( File::READ_LATEST );
if ( $file->exists() ) {
wfDebug( __METHOD__ . ": file exists\n" );
return true; // any interwiki link might be viewable, for all we know
}
+ $services = MediaWikiServices::getInstance();
switch ( $this->mNamespace ) {
case NS_MEDIA:
case NS_FILE:
// file exists, possibly in a foreign repo
- return (bool)wfFindFile( $this );
+ return (bool)$services->getRepoGroup()->findFile( $this );
case NS_SPECIAL:
// valid special page
- return MediaWikiServices::getInstance()->getSpecialPageFactory()->
- exists( $this->mDbkeyform );
+ return $services->getSpecialPageFactory()->exists( $this->mDbkeyform );
case NS_MAIN:
// selflink, possibly with fragment
return $this->mDbkeyform == '';