X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FWikiPage.php;h=9507e5fcf45755cad693339a047adf1acf68c170;hb=f90977bcc58fd88a806a50ca2d3faad0ee2dab2e;hp=576979c32f7e4fa79aeefa077ce20b3f8246bdaf;hpb=67f4e13fe275ab2f958b356366aa131050c970e4;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/WikiPage.php b/includes/WikiPage.php index 576979c32f..9507e5fcf4 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -48,9 +48,11 @@ class WikiPage implements Page, IDBAccessObject { public $mDataLoaded = false; // !< Boolean public $mIsRedirect = false; // !< Boolean public $mLatest = false; // !< Integer (false means "not loaded") - public $mPreparedEdit = false; // !< Array /**@}}*/ + /** @var stdclass Map of cache fields (text, parser output, ect) for a proposed/new edit */ + protected $mPreparedEdit = false; + /** * @var int */ @@ -242,6 +244,18 @@ class WikiPage implements Page, IDBAccessObject { $this->mTimestamp = ''; $this->mIsRedirect = false; $this->mLatest = false; + // Bug 57026: do not clear mPreparedEdit since prepareTextForEdit() already checks + // the requested rev ID and content against the cached one for equality. For most + // content types, the output should not change during the lifetime of this cache. + // Clearing it can cause extra parses on edit for no reason. + } + + /** + * Clear the mPreparedEdit cache field, as may be needed by mutable content types + * @return void + * @since 1.23 + */ + public function clearPreparedEdit() { $this->mPreparedEdit = false; } @@ -2233,7 +2247,7 @@ class WikiPage implements Page, IDBAccessObject { * @return Status */ public function doUpdateRestrictions( array $limit, array $expiry, &$cascade, $reason, User $user ) { - global $wgCascadingRestrictionLevels; + global $wgCascadingRestrictionLevels, $wgContLang; if ( wfReadOnly() ) { return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); @@ -2306,6 +2320,9 @@ class WikiPage implements Page, IDBAccessObject { $logAction = 'protect'; } + // Truncate for whole multibyte characters + $reason = $wgContLang->truncate( $reason, 255 ); + if ( $id ) { // Protection of existing page if ( !wfRunHooks( 'ArticleProtect', array( &$this, &$user, $limit, $reason ) ) ) { return Status::newGood(); @@ -2379,7 +2396,7 @@ class WikiPage implements Page, IDBAccessObject { 'pt_namespace' => $this->mTitle->getNamespace(), 'pt_title' => $this->mTitle->getDBkey(), 'pt_create_perm' => $limit['create'], - 'pt_timestamp' => $dbw->encodeExpiry( wfTimestampNow() ), + 'pt_timestamp' => $dbw->timestamp(), 'pt_expiry' => $dbw->encodeExpiry( $expiry['create'] ), 'pt_user' => $user->getId(), 'pt_reason' => $reason, @@ -2407,7 +2424,7 @@ class WikiPage implements Page, IDBAccessObject { // Update the protection log $log = new LogPage( 'protect' ); - $log->addEntry( $logAction, $this->mTitle, trim( $reason ), $params, $user ); + $log->addEntry( $logAction, $this->mTitle, $reason, $params, $user ); return Status::newGood(); }