From 2832d79f21bfc2d288d591977d6e180ec8bd4f25 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=86var=20Arnfj=C3=B6r=C3=B0=20Bjarmason?= Date: Mon, 19 Dec 2005 01:04:32 +0000 Subject: [PATCH] * (bug 1436) &templates=expand now expands templates --- includes/RawPage.php | 56 +++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/includes/RawPage.php b/includes/RawPage.php index 67b464ae42..7dc0e80f77 100644 --- a/includes/RawPage.php +++ b/includes/RawPage.php @@ -19,6 +19,9 @@ require_once( 'Revision.php' ); */ class RawPage { var $mArticle, $mTitle, $mRequest; + var $mOldId, $mGen, $mCharset; + var $mSmaxage, $mMaxage; + var $mContentType, $mExpandTemplates; function RawPage( &$article, $request = false ) { global $wgRequest, $wgInputEncoding, $wgSquidMaxage, $wgJsMimeType; @@ -36,9 +39,11 @@ class RawPage { $ctype = $this->mRequest->getText( 'ctype' ); $smaxage = $this->mRequest->getInt( 'smaxage', $wgSquidMaxage ); $maxage = $this->mRequest->getInt( 'maxage', $wgSquidMaxage ); + $this->mExpandTemplates = $this->mRequest->getText( 'templates' ) === 'expand'; $this->mOldId = $this->mRequest->getInt( 'oldid' ); # special case for 'generated' raw things: user css/js $gen = $this->mRequest->getText( 'gen' ); + if($gen == 'css') { $this->mGen = $gen; if($smaxage == '') $smaxage = $wgSquidMaxage; @@ -53,7 +58,7 @@ class RawPage { $this->mCharset = $wgInputEncoding; $this->mSmaxage = $smaxage; $this->mMaxage = $maxage; - if(empty($ctype) or !in_array($ctype, $allowedCTypes)) { + if ( $ctype == '' or ! in_array( $ctype, $allowedCTypes ) ) { $this->mContentType = 'text/x-wiki'; } else { $this->mContentType = $ctype; @@ -118,21 +123,27 @@ class RawPage { } } - function getArticleText () { + function getArticleText() { + global $wgParser; + if( $this->mTitle ) { - # Special case for MediaWiki: messages; we can hit the message cache. - if( $this->mTitle->getNamespace() == NS_MEDIAWIKI) { - $rawtext = wfMsgForContent( $this->mTitle->getDbkey() ); - return $rawtext; - } - - # else get it from the DB - $rev = Revision::newFromTitle( $this->mTitle, $this->mOldId ); - if( $rev ) { - $lastmod = wfTimestamp( TS_RFC2822, $rev->getTimestamp() ); - header( 'Last-modified: ' . $lastmod ); - return $rev->getText(); + $text = ''; + + // If it's a MediaWiki message we can just hit the message cache + if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) + $text = wfMsgForContentNoTrans( $this->mTitle->getDbkey() ); + else { + // Get it from the DB + $rev = Revision::newFromTitle( $this->mTitle, $this->mOldId ); + if ( $rev ) { + $lastmod = wfTimestamp( TS_RFC2822, $rev->getTimestamp() ); + header( "Last-modified: $lastmod" ); + $text = $rev->isDeleted() ? '' : $rev->getText(); + } else + $text = ''; } + + return $this->parseArticleText( $text ); } # Bad title or page does not exist @@ -145,5 +156,22 @@ class RawPage { } return ''; } + + function parseArticleText( $text ) { + if ( $text === '' ) + return ''; + else + if ( $this->mExpandTemplates ) { + global $wgTitle; + + $parser = new Parser(); + $parser->Options( new ParserOptions() ); // We don't want this to be user-specific + $parser->Title( $wgTitle ); + $parser->OutputType( OT_HTML ); + + return $parser->replaceVariables( $text ); + } else + return $text; + } } ?> -- 2.20.1