var $mHeaders, $mCookies, $mMetatags, $mKeywords;
var $mLinktags, $mPagetitle, $mBodytext, $mDebugtext;
var $mHTMLtitle, $mRobotpolicy, $mIsarticle, $mPrintable;
- var $mSubtitle, $mRedirect;
+ var $mSubtitle, $mRedirect, $mStatusCode;
var $mLastModified, $mETag, $mCategoryLinks;
var $mScripts, $mLinkColours;
$this->mSquidMaxage = 0;
$this->mScripts = '';
$this->mETag = false;
+ $this->mRevisionId = null;
}
function addHeader( $name, $val ) { array_push( $this->mHeaders, $name.': '.$val ) ; }
function addCookie( $name, $val ) { array_push( $this->mCookies, array( $name, $val ) ); }
function redirect( $url, $responsecode = '302' ) { $this->mRedirect = $url; $this->mRedirectCode = $responsecode; }
-
+ function setStatusCode( $statusCode ) { $this->mStatusCode = $statusCode; }
+
# To add an http-equiv meta tag, precede the name with "http:"
function addMeta( $name, $val ) { array_push( $this->mMetatags, array( $name, $val ) ); }
function addKeyword( $text ) { array_push( $this->mKeywords, $text ); }
function setParserOptions( $options ) {
return wfSetVar( $this->mParserOptions, $options );
}
+
+ /**
+ * Set the revision ID which will be seen by the wiki text parser
+ * for things such as embedded {{REVISIONID}} variable use.
+ * @param mixed $revid an integer, or NULL
+ * @return mixed previous value
+ */
+ function setRevisionId( $revid ) {
+ $val = is_null( $revid ) ? null : intval( $revid );
+ return wfSetVar( $this->mRevisionId, $val );
+ }
/**
* Convert wikitext to HTML and add it to the buffer
function addWikiTextTitle($text, &$title, $linestart) {
global $wgParser, $wgUseTidy;
- $parserOutput = $wgParser->parse( $text, $title, $this->mParserOptions, $linestart );
+ $parserOutput = $wgParser->parse( $text, $title, $this->mParserOptions,
+ $linestart, true, $this->mRevisionId );
$this->mLanguageLinks += $parserOutput->getLanguageLinks();
$this->mCategoryLinks += $parserOutput->getCategoryLinks();
if ( $parserOutput->getCacheTime() == -1 ) {
* Saves the text into the parser cache if possible
*/
function addPrimaryWikiText( $text, $cacheArticle ) {
- global $wgParser, $wgParserCache, $wgUser, $wgTitle, $wgUseTidy;
+ global $wgParser, $wgParserCache, $wgUser, $wgUseTidy;
- $parserOutput = $wgParser->parse( $text, $wgTitle, $this->mParserOptions, true );
+ $parserOutput = $wgParser->parse( $text, $cacheArticle->mTitle,
+ $this->mParserOptions, true, true, $this->mRevisionId );
$text = $parserOutput->getText();
*/
function parse( $text, $linestart = true ) {
global $wgParser, $wgTitle;
- $parserOutput = $wgParser->parse( $text, $wgTitle, $this->mParserOptions, $linestart );
+ $parserOutput = $wgParser->parse( $text, $wgTitle, $this->mParserOptions,
+ $linestart, true, $this->mRevision );
return $parserOutput->getText();
}
wfProfileOut( $fname );
return;
}
+ elseif ( $this->mStatusCode )
+ {
+ $statusMessage = array(
+ 100 => 'Continue',
+ 101 => 'Switching Protocols',
+ 102 => 'Processing',
+ 200 => 'OK',
+ 201 => 'Created',
+ 202 => 'Accepted',
+ 203 => 'Non-Authoritative Information',
+ 204 => 'No Content',
+ 205 => 'Reset Content',
+ 206 => 'Partial Content',
+ 207 => 'Multi-Status',
+ 300 => 'Multiple Choices',
+ 301 => 'Moved Permanently',
+ 302 => 'Found',
+ 303 => 'See Other',
+ 304 => 'Not Modified',
+ 305 => 'Use Proxy',
+ 307 => 'Temporary Redirect',
+ 400 => 'Bad Request',
+ 401 => 'Unauthorized',
+ 402 => 'Payment Required',
+ 403 => 'Forbidden',
+ 404 => 'Not Found',
+ 405 => 'Method Not Allowed',
+ 406 => 'Not Acceptable',
+ 407 => 'Proxy Authentication Required',
+ 408 => 'Request Timeout',
+ 409 => 'Conflict',
+ 410 => 'Gone',
+ 411 => 'Length Required',
+ 412 => 'Precondition Failed',
+ 413 => 'Request Entity Too Large',
+ 414 => 'Request-URI Too Large',
+ 415 => 'Unsupported Media Type',
+ 416 => 'Request Range Not Satisfiable',
+ 417 => 'Expectation Failed',
+ 422 => 'Unprocessable Entity',
+ 423 => 'Locked',
+ 424 => 'Failed Dependency',
+ 500 => 'Internal Server Error',
+ 501 => 'Not Implemented',
+ 502 => 'Bad Gateway',
+ 503 => 'Service Unavailable',
+ 504 => 'Gateway Timeout',
+ 505 => 'HTTP Version Not Supported',
+ 507 => 'Insufficient Storage'
+ );
+ if ( $statusMessage[$this->mStatusCode] )
+ header( 'HTTP/1.1 ' . $this->mStatusCode . ' ' . $statusMessage[$this->mStatusCode] );
+ }
# Buffer output; final headers may depend on later processing
ob_start();
if( is_string( $source ) ) {
if( strcmp( $source, '' ) == 0 ) {
- $source = wfMsg( 'noarticletext' );
+ $source = wfMsg( $wgUser->isLoggedIn() ? 'noarticletext' : 'noarticletextanon' );
}
$rows = $wgUser->getOption( 'rows' );
$cols = $wgUser->getOption( 'cols' );