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;
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 ); }
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();
wfSpecialSearch();
} else if( !$wgTitle or $wgTitle->getDBkey() == '' ) {
$wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
+ $wgOut->setStatusCode( 404 );
$wgOut->errorpage( 'badtitle', 'badtitletext' );
} else if ( $wgTitle->getInterwiki() != '' ) {
if( $rdfrom = $wgRequest->getVal( 'rdfrom' ) ) {
$wgOut->redirect( $url );
} else {
$wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
+ $wgOut->setStatusCode( 404 );
$wgOut->errorpage( 'badtitle', 'badtitletext' );
}
} else if ( ( $action == 'view' ) &&
$wgTitle = Title::makeTitle( NS_IMAGE, $wgTitle->getDBkey() );
}
+ if ( !$wgTitle->exists() ) {
+ $wgOut->setStatusCode( 404 );
+ }
+
$ns = $wgTitle->getNamespace();
// Namespace might change when using redirects
}
if ( in_array( $action, $wgDisabledActions ) ) {
+ $wgOut->setStatusCode( 404 );
$wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
} else {
switch( $action ) {
break;
default:
if (wfRunHooks('UnknownAction', array($action, $wgArticle))) {
+ $wgOut->setStatusCode( 404 );
$wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
}
}