X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FProtectionForm.php;h=2adedb774c276891daa8718494f9086a40f83323;hb=7f0b8463c8e1834c2dd5bef7d0dd34d7d1064d9b;hp=c83635207389b24b147000391dc2a1e4127c0f94;hpb=b85a785c22295a177a2056c30090ba2b5e158239;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php index c836352073..2adedb774c 100644 --- a/includes/ProtectionForm.php +++ b/includes/ProtectionForm.php @@ -57,11 +57,11 @@ class ProtectionForm { /** Map of action to the expiry time of the existing protection */ var $mExistingExpiry = array(); - function __construct( Article $article ) { + function __construct( Page $article ) { global $wgUser; // Set instance variables. $this->mArticle = $article; - $this->mTitle = $article->mTitle; + $this->mTitle = $article->getTitle(); $this->mApplicableTypes = $this->mTitle->getRestrictionTypes(); // Check if the form should be disabled. @@ -89,7 +89,7 @@ class ProtectionForm { $this->mCascade = $wgRequest->getBool( 'mwProtect-cascade', $this->mCascade ); foreach( $this->mApplicableTypes as $action ) { - // Fixme: this form currently requires individual selections, + // @todo FIXME: This form currently requires individual selections, // but the db allows multiples separated by commas. // Pull the actual restriction from the DB @@ -133,7 +133,7 @@ class ProtectionForm { // Prevent users from setting levels that they cannot later unset if( $val == 'sysop' ) { // Special case, rewrite sysop to either protect and editprotected - if( !$wgUser->isAllowed('protect') && !$wgUser->isAllowed('editprotected') ) + if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) ) continue; } else { if( !$wgUser->isAllowed($val) ) @@ -147,7 +147,9 @@ class ProtectionForm { /** * Get the expiry time for a given action, by combining the relevant inputs. * - * @return 14-char timestamp or "infinity", or false if the input was invalid + * @param $action string + * + * @return string 14-char timestamp or "infinity", or false if the input was invalid */ function getExpiry( $action ) { if ( $this->mExpirySelection[$action] == 'existing' ) { @@ -158,7 +160,7 @@ class ProtectionForm { $value = $this->mExpirySelection[$action]; } if ( $value == 'infinite' || $value == 'indefinite' || $value == 'infinity' ) { - $time = Block::infinity(); + $time = wfGetDB( DB_SLAVE )->getInfinity(); } else { $unix = strtotime( $value ); @@ -166,7 +168,7 @@ class ProtectionForm { return false; } - // Fixme: non-qualified absolute times are not in users specified timezone + // @todo FIXME: Non-qualified absolute times are not in users specified timezone // and there isn't notice about it in the ui $time = wfTimestamp( TS_MW, $unix ); } @@ -235,7 +237,8 @@ class ProtectionForm { $wgOut->showPermissionsErrorPage( $this->mPermErrors ); } } else { - $wgOut->addWikiMsg( 'protect-text', $this->mTitle->getPrefixedText() ); + $wgOut->addWikiMsg( 'protect-text', + wfEscapeWikiText( $this->mTitle->getPrefixedText() ) ); } $wgOut->addHTML( $this->buildForm() ); @@ -316,10 +319,10 @@ class ProtectionForm { return false; } - if( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) { - $this->mArticle->doWatch(); - } elseif( $this->mTitle->userIsWatching() ) { - $this->mArticle->doUnwatch(); + if ( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) { + WatchAction::doWatch( $this->mTitle, $wgUser ); + } elseif ( $this->mTitle->userIsWatching() ) { + WatchAction::doUnwatch( $this->mTitle, $wgUser ); } return $ok; } @@ -467,7 +470,10 @@ class ProtectionForm { " . Xml::input( 'mwProtect-reason', 60, $this->mReason, array( 'type' => 'text', - 'id' => 'mwProtect-reason', 'maxlength' => 255 ) ) . + 'id' => 'mwProtect-reason', 'maxlength' => 180 ) ) . + // Limited maxlength as the database trims at 255 bytes and other texts + // chosen by dropdown menus on this page are also included in this database field. + // The byte limit of 180 bytes is enforced in javascript " "; # Disallow watching is user is not logged in @@ -527,7 +533,7 @@ class ProtectionForm { //don't let them choose levels above their own (aka so they can still unprotect and edit the page). but only when the form isn't disabled if( $key == 'sysop' ) { //special case, rewrite sysop to protect and editprotected - if( !$wgUser->isAllowed('protect') && !$wgUser->isAllowed('editprotected') && !$this->disabled ) + if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) && !$this->disabled ) continue; } else { if( !$wgUser->isAllowed($key) && !$this->disabled )