summaryrefslogtreecommitdiff
path: root/includes/RawPage.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/RawPage.php')
-rw-r--r--includes/RawPage.php35
1 files changed, 6 insertions, 29 deletions
diff --git a/includes/RawPage.php b/includes/RawPage.php
index b422d49e..8e515af3 100644
--- a/includes/RawPage.php
+++ b/includes/RawPage.php
@@ -2,7 +2,7 @@
/**
* Copyright (C) 2004 Gabriel Wicke <wicke@wikidev.net>
* http://wikidev.net/
- * Based on PageHistory and SpecialExport
+ * Based on HistoryPage and SpecialExport
*
* License: GPL (http://www.gnu.org/copyleft/gpl.html)
*
@@ -109,34 +109,9 @@ class RawPage {
}
function view() {
- global $wgOut, $wgScript;
+ global $wgOut, $wgScript, $wgRequest;
- if( isset( $_SERVER['SCRIPT_URL'] ) ) {
- # Normally we use PHP_SELF to get the URL to the script
- # as it was called, minus the query string.
- #
- # Some sites use Apache rewrite rules to handle subdomains,
- # and have PHP set up in a weird way that causes PHP_SELF
- # to contain the rewritten URL instead of the one that the
- # outside world sees.
- #
- # If in this mode, use SCRIPT_URL instead, which mod_rewrite
- # provides containing the "before" URL.
- $url = $_SERVER['SCRIPT_URL'];
- } else {
- $url = $_SERVER['PHP_SELF'];
- }
-
- if( $url == '' ) {
- # This will make the next check fail with a confusing error
- # message, so we should mention it separately.
- wfHttpError( 500, 'Internal Server Error',
- "\$_SERVER['PHP_SELF'] is not set. Perhaps you're using CGI" .
- " and haven't set cgi.fix_pathinfo = 1 in php.ini?" );
- return;
- }
-
- if( strcmp( $wgScript, $url ) ) {
+ if( $wgRequest->isPathInfoBad() ) {
# Internet Explorer will ignore the Content-Type header if it
# thinks it sees a file extension it recognizes. Make sure that
# all raw requests are done through the script node, which will
@@ -150,6 +125,7 @@ class RawPage {
#
# Just return a 403 Forbidden and get it over with.
wfHttpError( 403, 'Forbidden',
+ 'Invalid file extension found in PATH_INFO. ' .
'Raw pages must be accessed through the primary script entry point.' );
return;
}
@@ -159,7 +135,8 @@ class RawPage {
$mode = $this->mPrivateCache ? 'private' : 'public';
header( 'Cache-Control: '.$mode.', s-maxage='.$this->mSmaxage.', max-age='.$this->mMaxage );
- if( HTMLFileCache::useFileCache() ) {
+ global $wgUseFileCache;
+ if( $wgUseFileCache and HTMLFileCache::useFileCache() ) {
$cache = new HTMLFileCache( $this->mTitle, 'raw' );
if( $cache->isFileCacheGood( /* Assume up to date */ ) ) {
$cache->loadFromFileCache();