dépôts
/
lhc
/
web
/
wiklou.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make transcluded special pages not disable cache in miser mode.
[lhc/web/wiklou.git]
/
includes
/
parser
/
Parser.php
diff --git
a/includes/parser/Parser.php
b/includes/parser/Parser.php
index
116b274
..
6c84623
100644
(file)
--- a/
includes/parser/Parser.php
+++ b/
includes/parser/Parser.php
@@
-2648,16
+2648,12
@@
class Parser {
break;
case 'revisionuser':
# Let the edit saving system know we should parse the page
break;
case 'revisionuser':
# Let the edit saving system know we should parse the page
- # *after* a revision ID has been assigned
. This is
for null edits.
- $this->mOutput->setFlag( 'vary-
revision
' );
- wfDebug( __METHOD__ . ": {{REVISIONUSER}} used, setting vary-
revision
...\n" );
+ # *after* a revision ID has been assigned for null edits.
+ $this->mOutput->setFlag( 'vary-
user
' );
+ wfDebug( __METHOD__ . ": {{REVISIONUSER}} used, setting vary-
user
...\n" );
$value = $this->getRevisionUser();
break;
case 'revisionsize':
$value = $this->getRevisionUser();
break;
case 'revisionsize':
- # Let the edit saving system know we should parse the page
- # *after* a revision ID has been assigned. This is for null edits.
- $this->mOutput->setFlag( 'vary-revision' );
- wfDebug( __METHOD__ . ": {{REVISIONSIZE}} used, setting vary-revision...\n" );
$value = $this->getRevisionSize();
break;
case 'namespace':
$value = $this->getRevisionSize();
break;
case 'namespace':
@@
-3129,6
+3125,7
@@
class Parser {
&& $this->mOptions->getAllowSpecialInclusion()
&& $this->ot['html']
) {
&& $this->mOptions->getAllowSpecialInclusion()
&& $this->ot['html']
) {
+ $specialPage = SpecialPageFactory::getPage( $title->getDBkey() );
// Pass the template arguments as URL parameters.
// "uselang" will have no effect since the Language object
// is forced to the one defined in ParserOptions.
// Pass the template arguments as URL parameters.
// "uselang" will have no effect since the Language object
// is forced to the one defined in ParserOptions.
@@
-3147,7
+3144,12
@@
class Parser {
$context = new RequestContext;
$context->setTitle( $title );
$context->setRequest( new FauxRequest( $pageArgs ) );
$context = new RequestContext;
$context->setTitle( $title );
$context->setRequest( new FauxRequest( $pageArgs ) );
- $context->setUser( $this->getUser() );
+ if ( $specialPage && $specialPage->maxIncludeCacheTime() === 0 ) {
+ $context->setUser( $this->getUser() );
+ } else {
+ // If this page is cached, then we better not be per user.
+ $context->setUser( User::newFromName( '127.0.0.1', false ) );
+ }
$context->setLanguage( $this->mOptions->getUserLangObj() );
$ret = SpecialPageFactory::capturePath( $title, $context );
if ( $ret ) {
$context->setLanguage( $this->mOptions->getUserLangObj() );
$ret = SpecialPageFactory::capturePath( $title, $context );
if ( $ret ) {
@@
-3155,7
+3157,9
@@
class Parser {
$this->mOutput->addOutputPageMetadata( $context->getOutput() );
$found = true;
$isHTML = true;
$this->mOutput->addOutputPageMetadata( $context->getOutput() );
$found = true;
$isHTML = true;
- $this->disableCache();
+ if ( $specialPage && $specialPage->maxIncludeCacheTime() !== false ) {
+ $this->mOutput->updateCacheExpiry( $specialPage->maxIncludeCacheTime() );
+ }
}
} elseif ( MWNamespace::isNonincludable( $title->getNamespace() ) ) {
$found = false; # access denied
}
} elseif ( MWNamespace::isNonincludable( $title->getNamespace() ) ) {
$found = false; # access denied
@@
-5637,7
+5641,7
@@
class Parser {
# will change the size.
if ( $revObject ) {
$this->mRevisionSize = $revObject->getSize();
# will change the size.
if ( $revObject ) {
$this->mRevisionSize = $revObject->getSize();
- } else
if ( $this->ot['wiki'] || $this->mOptions->getIsPreview() )
{
+ } else {
$this->mRevisionSize = $this->mInputSize;
}
}
$this->mRevisionSize = $this->mInputSize;
}
}