*/
public static function newFromID( $id ) {
$t = Title::newFromID( $id );
- # @todo FIXME: Doesn't inherit right
- return $t == null ? null : new self( $t );
- # return $t == null ? null : new static( $t ); // PHP 5.3
+ return $t == null ? null : new static( $t );
}
/**
return $article;
}
+ /**
+ * Get the page this view was redirected from
+ * @return Title|null
+ * @since 1.28
+ */
+ public function getRedirectedFrom() {
+ return $this->mRedirectedFrom;
+ }
+
/**
* Tell the page view functions that this view was redirected
* from another page on the wiki.
* @return string Return the text of this revision
*/
public function getContent() {
- ContentHandler::deprecated( __METHOD__, '1.21' );
+ wfDeprecated( __METHOD__, '1.21' );
$content = $this->getContentObject();
return ContentHandler::getContentText( $content );
}
function fetchContent() {
// BC cruft!
- ContentHandler::deprecated( __METHOD__, '1.21' );
+ wfDeprecated( __METHOD__, '1.21' );
if ( $this->mContentLoaded && $this->mContent ) {
return $this->mContent;
// @todo Get rid of mContent everywhere!
$this->mContent = ContentHandler::getContentText( $content );
- ContentHandler::runLegacyHooks( 'ArticleAfterFetchContent', [ &$this, &$this->mContent ] );
+ ContentHandler::runLegacyHooks(
+ 'ArticleAfterFetchContent',
+ [ &$this, &$this->mContent ],
+ '1.21'
+ );
return $this->mContent;
}
$this->mContentObject = $content;
$this->mRevIdFetched = $this->mRevision->getId();
- Hooks::run( 'ArticleAfterFetchContentObject', [ &$this, &$this->mContentObject ] );
+ ContentHandler::runLegacyHooks(
+ 'ArticleAfterFetchContentObject',
+ [ &$this, &$this->mContentObject ],
+ '1.21'
+ );
return $this->mContentObject;
}
* page of the given title.
*/
public function view() {
- global $wgUseFileCache, $wgDebugToolbar, $wgMaxRedirects;
+ global $wgUseFileCache, $wgDebugToolbar;
# Get variables from query string
# As side effect this will load the revision and update the title
# Try client and file cache
if ( !$wgDebugToolbar && $oldid === 0 && $this->mPage->checkTouched() ) {
- # Use the greatest of the page's timestamp or the timestamp of any
- # redirect in the chain (bug 67849)
- $timestamp = $this->mPage->getTouched();
- if ( isset( $this->mRedirectedFrom ) ) {
- $timestamp = max( $timestamp, $this->mRedirectedFrom->getTouched() );
-
- # If there can be more than one redirect in the chain, we have
- # to go through the whole chain too in case an intermediate
- # redirect was changed.
- if ( $wgMaxRedirects > 1 ) {
- $titles = Revision::newFromTitle( $this->mRedirectedFrom )
- ->getContent( Revision::FOR_THIS_USER, $user )
- ->getRedirectChain();
- $thisTitle = $this->getTitle();
- foreach ( $titles as $title ) {
- if ( Title::compare( $title, $thisTitle ) === 0 ) {
- break;
- }
- $timestamp = max( $timestamp, $title->getTouched() );
- }
- }
- }
-
- # Is it client cached?
- if ( $outputPage->checkLastModified( $timestamp ) ) {
- wfDebug( __METHOD__ . ": done 304\n" );
-
- return;
- # Try file cache
- } elseif ( $wgUseFileCache && $this->tryFileCache() ) {
+ # Try to stream the output from file cache
+ if ( $wgUseFileCache && $this->tryFileCache() ) {
wfDebug( __METHOD__ . ": done file cache\n" );
# tell wgOut that output is taken care of
$outputPage->disable();
# Allow extensions do their own custom view for certain pages
$outputDone = true;
- } elseif ( !ContentHandler::runLegacyHooks( 'ArticleViewCustom',
- [ $this->fetchContentObject(), $this->getTitle(), $outputPage ] ) ) {
-
+ } elseif ( !ContentHandler::runLegacyHooks(
+ 'ArticleViewCustom',
+ [ $this->fetchContentObject(), $this->getTitle(), $outputPage ],
+ '1.21'
+ ) ) {
# Allow extensions do their own custom view for certain pages
$outputDone = true;
}
// Give hooks a chance to customise the output
if ( ContentHandler::runLegacyHooks(
'ShowRawCssJs',
- [ $this->mContentObject, $this->getTitle(), $outputPage ] )
- ) {
+ [ $this->mContentObject, $this->getTitle(), $outputPage ],
+ '1.24'
+ ) ) {
// If no legacy hooks ran, display the content of the parser output, including RL modules,
// but excluding metadata like categories and language links
$po = $this->mContentObject->getParserOutput( $this->getTitle() );
return false;
}
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$oldestRevisionTimestamp = $dbr->selectField(
'revision',
'MIN( rev_timestamp )',
if ( !$rc ) {
// Don't cache: This can be hit if the page gets accessed very fast after
- // its creation / latest upload or in case we have high slave lag. In case
+ // its creation / latest upload or in case we have high replica DB lag. In case
// the revision is too old, we will already return above.
return false;
}
// This, as a side-effect, also makes sure that the following query isn't being run for
// pages with a larger history, unless the user has the 'bigdelete' right
// (and is about to delete this page).
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$revisions = $edits = (int)$dbr->selectField(
'revision',
'COUNT(rev_page)',
/**
* Check if the page can be cached
+ * @param integer $mode One of the HTMLFileCache::MODE_* constants (since 1.28)
* @return bool
*/
- public function isFileCacheable() {
+ public function isFileCacheable( $mode = HTMLFileCache::MODE_NORMAL ) {
$cacheable = false;
- if ( HTMLFileCache::useFileCache( $this->getContext() ) ) {
+ if ( HTMLFileCache::useFileCache( $this->getContext(), $mode ) ) {
$cacheable = $this->mPage->getId()
&& !$this->mRedirectedFrom && !$this->getTitle()->isRedirect();
// Extension may have reason to disable file caching on some pages.
* @see WikiPage::doDeleteArticleReal
*/
public function doDeleteArticleReal(
- $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null
+ $reason, $suppress = false, $u1 = null, $u2 = null, &$error = '', User $user = null,
+ $tags = []
) {
return $this->mPage->doDeleteArticleReal(
- $reason, $suppress, $u1, $u2, $error, $user
+ $reason, $suppress, $u1, $u2, $error, $user, $tags
);
}
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::doEdit
+ *
+ * @deprecated since 1.21: use doEditContent() instead.
*/
public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
+ wfDeprecated( __METHOD__, '1.21' );
return $this->mPage->doEdit( $text, $summary, $flags, $baseRevId, $user );
}
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::doPurge
*/
- public function doPurge() {
- return $this->mPage->doPurge();
+ public function doPurge( $flags = WikiPage::PURGE_ALL ) {
+ return $this->mPage->doPurge( $flags );
}
/**
* Call to WikiPage function for backwards compatibility.
- * @see WikiPage::doQuickEditContent
+ * @see WikiPage::getLastPurgeTimestamp
*/
- public function doQuickEditContent(
- Content $content, User $user, $comment = '', $minor = false, $serialFormat = null
- ) {
- return $this->mPage->doQuickEditContent(
- $content, $user, $comment, $minor, $serialFormat
- );
+ public function getLastPurgeTimestamp() {
+ return $this->mPage->getLastPurgeTimestamp();
}
/**
/**
* Call to WikiPage function for backwards compatibility.
* @see WikiPage::getText
+ * @deprecated since 1.21 use WikiPage::getContent() instead
*/
public function getText( $audience = Revision::FOR_PUBLIC, User $user = null ) {
- ContentHandler::deprecated( __METHOD__, '1.21' );
+ wfDeprecated( __METHOD__, '1.21' );
return $this->mPage->getText( $audience, $user );
}
/**
* Call to WikiPage function for backwards compatibility.
+ * @deprecated since 1.21, use prepareContentForEdit
* @see WikiPage::prepareTextForEdit
*/
public function prepareTextForEdit( $text, $revid = null, User $user = null ) {