From: Brion Vibber Date: Tue, 30 Sep 2008 00:07:04 +0000 (+0000) Subject: Revert r41352-41355, r41362-41363: unauthorized schema change breaks parser tests X-Git-Tag: 1.31.0-rc.0~45004 X-Git-Url: http://git.heureux-cyclage.org/?a=commitdiff_plain;h=5127e1962688def484acf6fb9007d73d21f0ce0d;p=lhc%2Fweb%2Fwiklou.git Revert r41352-41355, r41362-41363: unauthorized schema change breaks parser tests --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 8406fa1e5c..2ed9bfd105 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -142,11 +142,10 @@ The following extensions are migrated into MediaWiki 1.14: * Improved upload file type detection for OpenDocument formats * Added the ability to set the target attribute on external links with $wgExternalLinkTarget -* (bug 674) Allow admins to block users from editing specific articles and - namespaces * (bug 368) Don't use caption for alt attribute; allow manual specification using new "alt=" parameter for images + === Bug fixes in 1.14 === * (bug 14907) DatabasePostgres::fieldType now defined. diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index c0fd122097..c1f9a2ef2f 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -198,7 +198,6 @@ $wgAutoloadLocalClasses = array( 'UserArray' => 'includes/UserArray.php', 'UserArrayFromResult' => 'includes/UserArray.php', 'UserMailer' => 'includes/UserMailer.php', - 'UserRestriction' => 'includes/UserRestriction.php', 'UserRightsProxy' => 'includes/UserRightsProxy.php', 'WatchedItem' => 'includes/WatchedItem.php', 'WatchlistEditor' => 'includes/WatchlistEditor.php', diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 1a601896f2..78b7327b7c 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1183,7 +1183,6 @@ $wgGroupPermissions['sysop']['suppressredirect'] = true; $wgGroupPermissions['sysop']['apihighlimits'] = true; $wgGroupPermissions['sysop']['browsearchive'] = true; $wgGroupPermissions['sysop']['noratelimit'] = true; -$wgGroupPermissions['sysop']['restrict'] = true; #$wgGroupPermissions['sysop']['mergehistory'] = true; // Permission to change users' group assignments @@ -2669,7 +2668,6 @@ $wgLogTypes = array( '', 'patrol', 'merge', 'suppress', - 'restrict', ); /** @@ -2700,7 +2698,6 @@ $wgLogNames = array( 'patrol' => 'patrol-log-page', 'merge' => 'mergelog', 'suppress' => 'suppressionlog', - 'restrict' => 'restrictionlog', ); /** @@ -2721,7 +2718,6 @@ $wgLogHeaders = array( 'patrol' => 'patrol-log-header', 'merge' => 'mergelogpagetext', 'suppress' => 'suppressionlogtext', - 'restrict' => 'restrictionlogtext', ); /** @@ -2755,8 +2751,6 @@ $wgLogActions = array( 'suppress/event' => 'logdelete-logentry', 'suppress/delete' => 'suppressedarticle', 'suppress/block' => 'blocklogentry', - 'restrict/restrict' => 'restrictentry', - 'restrict/remove' => 'restrictremoveentry', ); /** @@ -2827,8 +2821,6 @@ $wgSpecialPageGroups = array( 'Preferences' => 'users', 'Resetpass' => 'users', 'DeletedContributions' => 'users', - 'ListUserRestrictions' => 'users', - 'RestrictUser' => 'users', 'Mostlinked' => 'highuse', 'Mostlinkedcategories' => 'highuse', diff --git a/includes/LogPage.php b/includes/LogPage.php index 523559c635..00f2422ade 100644 --- a/includes/LogPage.php +++ b/includes/LogPage.php @@ -193,19 +193,6 @@ class LogPage { } else { $rv = wfMsgForContent( $wgLogActions[$key], $titleLink ); } - } elseif( $type == 'restrict' ) { - if( $params[0] == UserRestriction::PAGE ) - $subj = wfMsgExt( 'restrictlogpage', 'parseinline', $params[1] ); - if( $params[0] == UserRestriction::NAMESPACE ) - $subj = wfMsgExt( 'restrictlognamespace', 'parseinline', $wgLang->getDisplayNsText( $params[1] ) ); - $expiry = ''; - if( $key == 'restrict/restrict' ) - $expiry = $wgLang->translateBlockExpiry( $params[2] ); - if ( $skin ) { - $rv = wfMsg( $wgLogActions[$key], $titleLink, $subj, $expiry ); - } else { - $rv = wfMsgForContent( $wgLogActions[$key], $titleLink, $subj, $expiry ); - } } else { $details = ''; array_unshift( $params, $titleLink ); @@ -273,7 +260,6 @@ class LogPage { } break; case 'rights': - case 'restrict': $text = $wgContLang->ucfirst( $title->getText() ); $titleLink = $skin->makeLinkObj( Title::makeTitle( NS_USER, $text ) ); break; diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index b382385e3e..fec6c0a88a 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -126,9 +126,6 @@ class SpecialPage 'Allpages' => 'SpecialAllpages', 'Prefixindex' => 'SpecialPrefixindex', 'Ipblocklist' => array( 'SpecialPage', 'Ipblocklist' ), - 'ListUserRestrictions' => array( 'SpecialPage', 'ListUserRestrictions' ), - 'RemoveRestrictions' => array( 'UnlistedSpecialPage', 'RemoveRestrictions', 'restrict' ), - 'RestrictUser' => array( 'SpecialPage', 'RestrictUser', 'restrict' ), 'Specialpages' => array( 'UnlistedSpecialPage', 'Specialpages' ), 'Contributions' => array( 'SpecialPage', 'Contributions' ), 'Emailuser' => array( 'UnlistedSpecialPage', 'Emailuser' ), diff --git a/includes/Title.php b/includes/Title.php index 0b0027b61e..10a61683da 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -1011,7 +1011,9 @@ class Title { } $errors = $this->getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries ); - global $wgContLang, $wgLang, $wgEmailConfirmToEdit; + global $wgContLang; + global $wgLang; + global $wgEmailConfirmToEdit; if ( $wgEmailConfirmToEdit && !$user->isEmailConfirmed() && $action != 'createaccount' ) { $errors[] = array( 'confirmedittext' ); @@ -1043,7 +1045,20 @@ class Title { $blockTimestamp = $wgLang->timeanddate( wfTimestamp( TS_MW, $user->mBlock->mTimestamp ), true ); if ( $blockExpiry == 'infinity' ) { - $blockExpiry = wfMsg( 'ipbinfinite' ); + // Entry in database (table ipblocks) is 'infinity' but 'ipboptions' uses 'infinite' or 'indefinite' + $scBlockExpiryOptions = wfMsg( 'ipboptions' ); + + foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) { + if ( strpos( $option, ':' ) == false ) + continue; + + list ($show, $value) = explode( ":", $option ); + + if ( $value == 'infinite' || $value == 'indefinite' ) { + $blockExpiry = $show; + break; + } + } } else { $blockExpiry = $wgLang->timeanddate( wfTimestamp( TS_MW, $blockExpiry ), true ); } @@ -1053,9 +1068,9 @@ class Title { $errors[] = array( ($block->mAuto ? 'autoblockedtext' : 'blockedtext'), $link, $reason, $ip, $name, $blockid, $blockExpiry, $intended, $blockTimestamp ); } - + // Remove the errors being ignored. - + foreach( $errors as $index => $error ) { $error_key = is_array($error) ? $error[0] : $error; @@ -1078,8 +1093,6 @@ class Title { * @return \type{\array} Array of arrays of the arguments to wfMsg to explain permissions problems. */ private function getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries = true ) { - global $wgLang; - wfProfileIn( __METHOD__ ); $errors = array(); @@ -1225,31 +1238,6 @@ class Title { $errors[] = $return; } - // Check per-user restrictions - if( $action != 'read' ) { - $r = $user->getRestrictionForPage( $this ); - if( !$r ) - $r = $user->getRestrictionForNamespace( $this->getNamespace() ); - if( $r ) { - $error = array(); - $start = array( $wgLang->date( $r->getTimestamp() ), $wgLang->time( $r->getTimestamp() ) ); - if( $r->isPage() ) - $error = array( 'userrestricted-page', $this->getFullText(), - $r->getBlockerText(), $r->getReason(), $start[0], $start[1] ); - elseif( $r->isNamespace() ) - $error = array( 'userrestricted-namespace', $wgLang->getDisplayNsText( $this->getNamespace() ), - $r->getBlockerText(), $r->getReason(), $start[0], $start[1] ); - - if( $r->getExpiry() == 'infinity' ) { - $error[0] .= '-indef'; - } else { - $error[] = $wgLang->date( $r->getExpiry() ); - $error[] = $wgLang->time( $r->getExpiry() ); - } - $errors[] = $error; - } - } - wfProfileOut( __METHOD__ ); return $errors; } diff --git a/includes/User.php b/includes/User.php index c435071776..966a409d68 100644 --- a/includes/User.php +++ b/includes/User.php @@ -14,7 +14,7 @@ define( 'USER_TOKEN_LENGTH', 32 ); * \type{\int} Serialized record version. * @ingroup Constants */ -define( 'MW_USER_VERSION', 7 ); +define( 'MW_USER_VERSION', 6 ); /** * \type{\string} Some punctuation to prevent editing from broken text-mangling proxies. @@ -118,8 +118,6 @@ class User { 'mEditCount', // user_group table 'mGroups', - // user_restrictions table - 'mRestrictions', ); /** @@ -158,7 +156,6 @@ class User { 'proxyunbannable', 'purge', 'read', - 'restrict', 'reupload', 'reupload-shared', 'rollback', @@ -180,8 +177,7 @@ class User { //@{ var $mId, $mName, $mRealName, $mPassword, $mNewpassword, $mNewpassTime, $mEmail, $mOptions, $mTouched, $mToken, $mEmailAuthenticated, - $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups, - $mRestrictions; + $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups; //@} /** @@ -301,7 +297,6 @@ class User { function saveToCache() { $this->load(); $this->loadGroups(); - $this->loadRestrictions(); if ( $this->isAnon() ) { // Anonymous users are uncached return; @@ -883,7 +878,6 @@ class User { # Initialise user table data $this->loadFromRow( $s ); $this->mGroups = null; // deferred - $this->mRestrictions = null; $this->getEditCount(); // revalidation for nulls return true; } else { @@ -3243,50 +3237,4 @@ class User { return true; } - // Restrictions-related block - - public function loadRestrictions() { - if( is_null( $this->mRestrictions ) ) - $this->mRestrictions = UserRestriction::fetchForUser( $this->isLoggedIn() ? - intval( $this->getId() ) : $this->getName() ); - } - - public function getRestrictions() { - $this->loadRestrictions(); - - // Check for expired restrictions. Recache if found expired ones - static $checked = false; - if( !$checked ) { - $expired = false; - $old = $this->mRestrictions; - $this->mRestrictions = array(); - foreach( $old as $restriction ) { - if( $restriction->deleteIfExpired() ) - $expired = true; - else - $this->mRestrictions[] = $restriction; - } - if( $expired ) - $this->saveToCache(); - $checked = true; - } - - return $this->mRestrictions; - } - - public function getRestrictionForPage( Title $page ) { - foreach( $this->getRestrictions() as $r ) { - if( $r->isPage() && $page->equals( $r->getPage() ) ) - return $r; - } - return null; - } - - public function getRestrictionForNamespace( $nsid ) { - foreach( $this->getRestrictions() as $r ) { - if( $r->isNamespace() && $r->getNamespace() == $nsid ) - return $r; - } - return null; - } } diff --git a/includes/UserRestriction.php b/includes/UserRestriction.php deleted file mode 100644 index e90981fa62..0000000000 --- a/includes/UserRestriction.php +++ /dev/null @@ -1,158 +0,0 @@ -mId = $row->ur_id; - $obj->mType = $row->ur_type; - if( $obj->mType == self::PAGE ) { - $obj->mPage = Title::makeTitle( $row->ur_page_namespace, $row->ur_page_title ); - } elseif( $obj->mType == self::NAMESPACE ) { - $obj->mNamespace = $row->ur_namespace; - } else { - throw new MWException( "Unknown user restriction type: {$row->ur_type}" ); - } - - $obj->mSubjectId = $row->ur_user; - $obj->mSubjectText = $row->ur_user_text; - $obj->mBlockerId = $row->ur_by; - $obj->mBlockerText = $row->ur_by_text; - $obj->mReason = $row->ur_reason; - $obj->mTimestamp = wfTimestamp( TS_MW, $row->ur_timestamp ); - $obj->mExpiry = $row->ur_expiry; - return $obj; - } - - public static function fetchForUser( $user, $forWrite = false ) { - $dbr = wfGetDB( $forWrite ? DB_MASTER : DB_SLAVE ); - if( is_int( $user ) ) - $query = array( 'ur_user' => $user ); - else - $query = array( 'ur_user_text' => $user ); - $res = $dbr->select( 'user_restrictions', '*', $query, __METHOD__ ); - $result = array(); - foreach( $res as $row ) { - $result[] = self::newFromRow( $row ); - } - return $result; - } - - public static function newFromId( $id, $forWrite = false ) { - $dbr = wfGetDB( $forWrite ? DB_MASTER : DB_SLAVE ); - if( !$id || !is_numeric( $id ) ) - return null; - $res = $dbr->selectRow( 'user_restrictions', '*', array( 'ur_id' => $id ), __METHOD__ ); - return self::newFromRow( $res ); - } - - public function getId() { return $this->mId; } - public function setId( $v ) { $this->mId = $v; } - public function getType() { return $this->mType; } - public function setType( $v ) { $this->mType = $v; } - public function getNamespace() { return $this->mNamespace; } - public function setNamespace( $v ) { $this->mNamespace = $v; } - public function getPage() { return $this->mPage; } - public function setPage( $v ) { $this->mPage = $v; } - public function getSubjectId() { return $this->mSubjectId; } - public function setSubjectId( $v ) { $this->mSubjectId = $v; } - public function getSubjectText() { return $this->mSubjectText; } - public function setSubjectText( $v ) { $this->mSubjectText = $v; } - public function getBlockerId() { return $this->mBlockerId; } - public function setBlockerId( $v ) { $this->mBlockerId = $v; } - public function getBlockerText() { return $this->mBlockerText; } - public function setBlockerText( $v ) { $this->mBlockerText = $v; } - public function getReason() { return $this->mReason; } - public function setReason( $v ) { $this->mReason = $v; } - public function getTimestamp() { return $this->mTimestamp; } - public function setTimestamp( $v ) { $this->mTimestamp = $v; } - public function getExpiry() { return $this->mExpiry; } - public function setExpiry( $v ) { $this->mExpiry = $v; } - - public function isPage() { - return $this->mType == self::PAGE; - } - public function isNamespace() { - return $this->mType == self::NAMESPACE; - } - - public function isExpired() { - return is_numeric( $this->mExpiry ) && $this->mExpiry < wfTimestampNow( TS_MW ); - } - - public function deleteIfExpired() { - if( $this->isExpired() ) { - $this->delete(); - return true; - } else { - return false; - } - } - - public function delete() { - $dbw = wfGetDB( DB_MASTER ); - $dbw->delete( 'user_restrictions', array( 'ur_id' => $this->mId ), __METHOD__ ); - return $dbw->affectedRows(); - } - - public static function purgeExpired() { - $dbw = wfGetDB( DB_MASTER ); - $dbw->delete( 'user_restrictions', array( 'ur_expiry < ' . $dbw->addQuotes( $dbw->timestamp() ) ), __METHOD__ ); - } - - public function commit() { - $dbw = wfGetDB( DB_MASTER ); - $this->setId( $dbw->nextSequenceValue('user_restrictions_ur_id_val') ); - $row = array( - 'ur_id' => $this->mId, - 'ur_type' => $this->mType, - 'ur_user' => $this->mSubjectId, - 'ur_user_text' => $this->mSubjectText, - 'ur_by' => $this->mBlockerId, - 'ur_by_text' => $this->mBlockerText, - 'ur_reason' => $this->mReason, - 'ur_timestamp' => $dbw->timestamp( $this->mTimestamp ), - 'ur_expiry' => $this->mExpiry, - ); - if( $this->isPage() ) { - $row['ur_page_namespace'] = $this->mPage->getNamespace(); - $row['ur_page_title'] = $this->mPage->getDbKey(); - } - if( $this->isNamespace() ) { - $row['ur_namespace'] = $this->mNamespace; - } - $dbw->insert( 'user_restrictions', $row, __METHOD__ ); - } - - public static function formatType( $type ) { - return wfMsg( 'userrestrictiontype-' . $type ); - } - - /** - * Converts expiry which user input to the internal representation. - * Returns false if invalid expiry is set, Block::infinity() on empty value, - * Block::infinity() on infinity or 14-symbol timestamp - */ - public static function convertExpiry( $expiry ) { - if( !$expiry ) - return Block::infinity(); - if( in_array( $expiry, array( 'infinite', 'infinity', 'indefinite' ) ) ) - return Block::infinity(); - $unix = @strtotime( $expiry ); - if( !$unix || $unix === -1 ) - return false; - else - return wfTimestamp( TS_MW, $unix ); - } -} diff --git a/includes/specials/SpecialListUserRestrictions.php b/includes/specials/SpecialListUserRestrictions.php index a4251b2230..908bdc1a9e 100644 --- a/includes/specials/SpecialListUserRestrictions.php +++ b/includes/specials/SpecialListUserRestrictions.php @@ -134,7 +134,7 @@ class UserRestrictionsPager extends ReverseChronologicalPager { $subjlink = $sk->userLink( $r->getSubjectId(), $r->getSubjectText() ) . $sk->userToolLinks( $r->getSubjectId(), $r->getSubjectText() ); $expiry = is_numeric( $r->getExpiry() ) ? - wfMsg( 'listuserrestrictions-row-expiry', $wgLang->date( $r->getExpiry() ), $wgLang->time( $r->getExpiry() ) ) : + wfMsg( 'listuserrestrictions-row-expiry', $wgLang->timeanddate( $r->getExpiry() ) ) : wfMsg( 'ipbinfinite' ); $msg = ''; if( $r->isNamespace() ) { diff --git a/includes/specials/SpecialListusers.php b/includes/specials/SpecialListusers.php index eb97462099..5d8222b215 100644 --- a/includes/specials/SpecialListusers.php +++ b/includes/specials/SpecialListusers.php @@ -123,13 +123,10 @@ class UsersPager extends AlphabeticPager { } $item = wfSpecialList( $name, $groups ); - $edits = ''; - if ( $row->edits ) { - $editCount = $wgLang->formatNum( $row->edits ); - $edits = ' [' . wfMsgExt( 'usereditcount', 'parsemag', $editCount ) . ']'; - } + $editCount = $wgLang->formatNum( $row->edits ); + $edits = wfMsgExt( 'usereditcount', 'parsemag', $editCount ); wfRunHooks( 'SpecialListusersFormatRow', array( &$item, $row ) ); - return "
  • {$item}{$edits}
  • "; + return "
  • {$item} [$edits]
  • "; } function getBody() { diff --git a/includes/specials/SpecialRemoveRestrictions.php b/includes/specials/SpecialRemoveRestrictions.php index 5ad21ddb9b..ded6cbe3d7 100644 --- a/includes/specials/SpecialRemoveRestrictions.php +++ b/includes/specials/SpecialRemoveRestrictions.php @@ -56,7 +56,5 @@ function wfSpecialRemoveRestrictionsProcess( $r ) { if( $r->isNamespace() ) $params[] = $r->getNamespace(); $log->addEntry( 'remove', Title::makeTitle( NS_USER, $r->getSubjectText() ), $reason, $params ); - $userObj = User::newFromName( $r->getSubjectText(), false ); - $userObj->invalidateCache(); return $result; } diff --git a/includes/specials/SpecialRestrictUser.php b/includes/specials/SpecialRestrictUser.php index 25e6f4e79e..7d47a04336 100644 --- a/includes/specials/SpecialRestrictUser.php +++ b/includes/specials/SpecialRestrictUser.php @@ -106,7 +106,7 @@ class RestrictUserForm { if ( $error ) $wgOut->wrapWikiMsg( '$1', $error ); if ( $success ) - $wgOut->wrapWikiMsg( '$1', $success ); + $wgOut->wrapWikiMsg( '$1/strong>', $success ); } public static function doPageRestriction( $uid, $user ) { @@ -126,7 +126,6 @@ class RestrictUserForm { $l = new LogPage( 'restrict' ); $l->addEntry( 'restrict', Title::makeTitle( NS_USER, $user ), $r->getReason(), array( $r->getType(), $r->getPage()->getFullText(), $logExpiry) ); - self::invalidateCache( $user ); } public static function namespaceRestrictionForm( $uid, $user, $oldRestrictions ) { @@ -137,13 +136,13 @@ class RestrictUserForm { $wgUser->matchEditToken( $wgRequest->getVal( 'edittoken' ) ) ) { $ns = $wgRequest->getVal( 'namespace' ); if( $wgContLang->getNsText( $ns ) === false ) - $error = array( 'restrictuser-badnamespace' ); + $error = wfMsgExt( 'restrictuser-badnamespace', 'parseinline' ); elseif( UserRestriction::convertExpiry( $wgRequest->getVal( 'expiry' ) ) === false ) - $error = array( 'restrictuser-badexpiry', $wgRequest->getVal( 'expiry' ) ); + $error = wfMsgExt( 'restrictuser-badexpiry', 'parseinline', $wgRequest->getVal( 'expiry' ) ); else foreach( $oldRestrictions as $r ) if( $r->isNamespace() && $r->getNamespace() == $ns ) - $error = array( 'restrictuser-dupnamespace' ); + $error = wfMsgExt( 'restrictuser-dupnamespace', 'parse' ); if( !$error ) { self::doNamespaceRestriction( $uid, $user ); $success = array('restrictuser-success', $user); @@ -186,11 +185,5 @@ class RestrictUserForm { $l = new LogPage( 'restrict' ); $l->addEntry( 'restrict', Title::makeTitle( NS_USER, $user ), $r->getReason(), array( $r->getType(), $r->getNamespace(), $logExpiry ) ); - self::invalidateCache( $user ); - } - - private static function invalidateCache( $user ) { - $userObj = User::newFromName( $user, false ); - $userObj->invalidateCache(); } } diff --git a/languages/Language.php b/languages/Language.php index 29e8a882bf..fa485d1427 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -264,20 +264,6 @@ class Language { return strtr($ns, '_', ' '); } - /** - * A convenience function that returns the same thing as - * getFormattedNsText() except with '(Main)' for zero namespace. - * - * @return array - */ - function getDisplayNsText( $index ) { - if( $index == 0 ) { - return wfMsg( 'blanknamespace' ); - } else { - return $this->getFormattedNsText( $index ); - } - } - /** * Get a namespace key by value, case insensitive. * Only matches namespace names for the current language, not the diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index b6fe352f80..5f11681921 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -440,9 +440,6 @@ $specialPageAliases = array( 'Blankpage' => array( 'BlankPage' ), 'LinkSearch' => array( 'LinkSearch' ), 'DeletedContributions' => array( 'DeletedContributions' ), - 'ListUserRestrictions' => array( 'ListUserRestrictions' ), - 'RemoveRestrictions' => array( 'RemoveRestrictions' ), - 'RestrictUser' => array( 'RestrictUser' ), ); /** @@ -1201,38 +1198,6 @@ It appears to have been deleted.', 'edit-no-change' => 'Your edit was ignored, because no change was made to the text.', 'edit-already-exists' => 'Could not create a new page. It already exists.', -'userrestricted-page' => '\'\'\'Your user name or IP address has been restricted from editing page "$1".\'\'\' - -The restriction was put by [[User:$2|$2]]. -The reason given is \'\'$3\'\'. - -Restriction was put on $4 at $5 and expires on $6 at $7. - -You can contact [[User:$2|$2]] or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the restriction.', -'userrestricted-namespace' => "'''Your user name or IP address has been restricted from editing $1 namespace.''' - -The restriction was put by [[User:$2|$2]]. -The reason given is ''$3''. - -Restriction was put on $4 at $5 and expires on $6 at $7. - -You can contact [[User:$2|$2]] or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the restriction.", -'userrestricted-page-indef' => '\'\'\'Your user name or IP address has been restricted from editing page "$1".\'\'\' - -The restriction was put by [[User:$2|$2]]. -The reason given is \'\'$3\'\'. - -Restriction was put on $4 at $5 and will not expire. - -You can contact [[User:$2|$2]] or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the restriction.', -'userrestricted-namespace-indef' => "'''Your user name or IP address has been restricted from editing $1 namespace.''' - -The restriction was put by [[User:$2|$2]]. -The reason given is ''$3''. - -Restriction was put on $4 at $5 and will not expire. - -You can contact [[User:$2|$2]] or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the restriction.", # Parser/template warnings 'expensive-parserfunction-warning' => 'Warning: This page contains too many expensive parser function calls. @@ -2537,7 +2502,6 @@ Fill in a specific reason below (for example, citing particular pages that were 'ipbsubmit' => 'Block this user', 'ipbother' => 'Other time:', 'ipboptions' => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite', # display1:time1,display2:time2,... -'ipbinfinite' => 'infinite', 'ipbotheroption' => 'other', 'ipbotherreason' => 'Other/additional reason:', 'ipbhidename' => 'Hide username from the block log, active block list and user list', @@ -2610,70 +2574,6 @@ Please contact your Internet service provider or tech support and inform them of You cannot create an account', 'cant-block-while-blocked' => 'You cannot block other users while you are blocked.', -# Special:ListUserRestrictions -'listuserrestrictions' => 'List of user restrictions', -'listuserrestrictions-intro' => 'This list contains all restrictions from editing certain pages and namespaces put on users. -[[Special:Ipblocklist|Blocks]] are not listed here.', -'listuserrestrictions-row-ns' => 'restricted $1 from editing $2 namespace ($3)', -'listuserrestrictions-row-page' => 'restricted $1 from editing $2 ($3)', -'listuserrestrictions-row-expiry' => 'expires on $1 at $2', -'listuserrestrictions-legend' => 'Find a restriction', -'listuserrestrictions-type' => 'Type:', -'listuserrestrictions-user' => 'User:', -'listuserrestrictions-namespace' => 'Namespace:', -'listuserrestrictions-page' => 'Page:', -'listuserrestrictions-submit' => 'Go', -'listuserrestrictions-notfound' => 'There is no restriction that matches specified criteria.', -'listuserrestrictions-empty' => 'This list is empty.', -'listuserrestrictions-remove' => 'remove', -'userrestrictiontype-none' => '(none)', -'userrestrictiontype-namespace' => 'Namespace', -'userrestrictiontype-page' => 'Page', - -# Special:RemoveRestrictions -'removerestrictions' => 'Remove restriction from a user', -'removerestrictions-intro' => 'Use the form below to remove a restriction from a certain user.', -'removerestrictions-noid' => 'No restriction ID was specified.', -'removerestrictions-wrongid' => 'Restriction with that ID not found. -Most probably someone has removed it or it expired.', -'removerestrictions-legend' => 'Remove a restriction', -'removerestrictions-user' => 'Restricted user:', -'removerestrictions-type' => 'Restriction type:', -'removerestrictions-page' => 'Page:', -'removerestrictions-namespace' => 'Namespace:', -'removerestrictions-reason' => 'Reason:', -'removerestrictions-submit' => 'Remove the restriction', -'removerestrictions-success' => 'Successfully removed the restriction from [[User:$1|$1]].', - -# Special:RestrictUser -'restrictuser' => 'Restrict user', -'restrictuser-userselect' => 'Select a user', -'restrictuser-user' => 'User:', -'restrictuser-go' => 'Restrict user', -'restrictuser-notfound' => 'User not found', -'restrictuser-existing' => 'Existing restrictions', -'restrictuser-legend-page' => 'Restrict from editing certain page', -'restrictuser-legend-namespace' => 'Restrict from editing certain namespace', -'restrictuser-title' => 'Page to restrict:', -'restrictuser-namespace' => 'Namespace:', -'restrictuser-expiry' => 'Expires:', -'restrictuser-reason' => 'Reason:', -'restrictuser-submit' => 'Restrict user', -'restrictuser-badtitle' => 'Invalid title specified: $1.', -'restrictuser-badnamespace' => 'Invalid namespace specified.', -'restrictuser-badexpiry' => 'Invalid expiry specified: $1.', -'restrictuser-duptitle' => 'User is already restricted from editing this title.', -'restrictuser-dupnamespace' => 'User is already restricted from editing this namespace.', -'restrictuser-success' => 'Successfully restricted user $1.', - -# Special:Log/restrict -'restrictionlog' => 'User restriction log', -'restrictionlogtext' => 'This log contains all restrictions put on users by administrators.', -'restrictentry' => 'restricted $1 from editing $2 (expiry set to $3)', -'restrictremoveentry' => 'removed restriction from $1 for editing $2', -'restrictlognamespace' => '$1 namespace', -'restrictlogpage' => '[[$1]]', # do not translate or duplicate this message to other languages - # Developer tools 'lockdb' => 'Lock database', 'unlockdb' => 'Unlock database', diff --git a/maintenance/archives/patch-user_restrictions.sql b/maintenance/archives/patch-user_restrictions.sql deleted file mode 100644 index b78a108251..0000000000 --- a/maintenance/archives/patch-user_restrictions.sql +++ /dev/null @@ -1,40 +0,0 @@ --- Allows admins to block user from editing certain namespaces or pages - -CREATE TABLE /*$wgDBprefix*/user_restrictions ( - -- ID of the restriction - ur_id int NOT NULL auto_increment, - - -- Restriction type. Block from either editing namespace or page - ur_type varbinary(255) NOT NULL, - -- Namespace to restrict if ur_type = namespace - ur_namespace int default NULL, - -- Page to restrict if ur_type = page - ur_page_namespace int default NULL, - ur_page_title varchar(255) binary default '', - - -- User that is restricted - ur_user int unsigned NOT NULL, - ur_user_text tinyblob NOT NULL, - - -- User who has done this restriction - ur_by int unsigned NOT NULL, - ur_by_text varchar(255) binary NOT NULL default '', - -- Reason for this restriction - ur_reason tinyblob NOT NULL, - - -- Time when this restriction was made - ur_timestamp varbinary(14) NOT NULL default '', - -- Expiry or "infinity" - ur_expiry varbinary(14) NOT NULL default '', - - PRIMARY KEY ur_id (ur_id), - -- For looking up restrictions for user - INDEX ur_user (ur_user,ur_user_text(255)), - -- For Special:ListUserRestrictions - INDEX ur_type (ur_type(255),ur_timestamp), - INDEX ur_namespace (ur_namespace,ur_timestamp), - INDEX ur_page (ur_page_namespace,ur_page_title,ur_timestamp), - INDEX ur_timestamp (ur_timestamp), - -- For quick removal of expired restrictions - INDEX ur_expiry (ur_expiry) -) /*$wgDBTableOptions*/; diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 18b9e342ac..d4a60af865 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1243,44 +1243,4 @@ CREATE TABLE /*$wgDBprefix*/updatelog ( PRIMARY KEY (ul_key) ) /*$wgDBTableOptions*/; --- Allows admins to block user from editing certain namespaces or pages -CREATE TABLE /*$wgDBprefix*/user_restrictions ( - -- ID of the restriction - ur_id int NOT NULL auto_increment, - - -- Restriction type. Block from either editing namespace or page - ur_type varbinary(255) NOT NULL, - -- Namespace to restrict if ur_type = namespace - ur_namespace int default NULL, - -- Page to restrict if ur_type = page - ur_page_namespace int default NULL, - ur_page_title varchar(255) binary default '', - - -- User that is restricted - ur_user int unsigned NOT NULL, - ur_user_text tinyblob NOT NULL, - - -- User who has done this restriction - ur_by int unsigned NOT NULL, - ur_by_text varchar(255) binary NOT NULL default '', - -- Reason for this restriction - ur_reason tinyblob NOT NULL, - - -- Time when this restriction was made - ur_timestamp varbinary(14) NOT NULL default '', - -- Expiry or "infinity" - ur_expiry varbinary(14) NOT NULL default '', - - PRIMARY KEY ur_id (ur_id), - -- For looking up restrictions for user - INDEX ur_user (ur_user,ur_user_text(255)), - -- For Special:ListUserRestrictions - INDEX ur_type (ur_type(255),ur_timestamp), - INDEX ur_namespace (ur_namespace,ur_timestamp), - INDEX ur_page (ur_page_namespace,ur_page_title,ur_timestamp), - INDEX ur_timestamp (ur_timestamp), - -- For quick removal of expired restrictions - INDEX ur_expiry (ur_expiry) -) /*$wgDBTableOptions*/; - -- vim: sw=2 sts=2 et diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc index 659fed562d..4980910e86 100644 --- a/maintenance/updaters.inc +++ b/maintenance/updaters.inc @@ -145,10 +145,9 @@ $wgMysqlUpdates = array( array( 'update_password_format' ), // 1.14 - array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ), + array( 'add_field', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ), array( 'do_active_users_init' ), - array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ), - array( 'add_table', 'user_restrictions', 'patch-user_restrictions.sql' ), + array( 'add_field', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ) );