From 9db190c7e736ec8d063187d4241b59feaf7dc2d1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 22 Jun 2011 11:28:20 +0200 Subject: update to MediaWiki 1.17.0 --- includes/RawPage.php | 96 +++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 49 deletions(-) (limited to 'includes/RawPage.php') diff --git a/includes/RawPage.php b/includes/RawPage.php index 2b610318..ff935c2a 100644 --- a/includes/RawPage.php +++ b/includes/RawPage.php @@ -1,7 +1,10 @@ + * Raw page text accessor + * + * Copyright © 2004 Gabriel Wicke * http://wikidev.net/ + * * Based on HistoryPage and SpecialExport * * License: GPL (http://www.gnu.org/copyleft/gpl.html) @@ -20,15 +23,15 @@ class RawPage { var $mSmaxage, $mMaxage; var $mContentType, $mExpandTemplates; - function __construct( &$article, $request = false ) { + function __construct( Article $article, $request = false ) { global $wgRequest, $wgInputEncoding, $wgSquidMaxage, $wgJsMimeType, $wgGroupPermissions; - $allowedCTypes = array('text/x-wiki', $wgJsMimeType, 'text/css', 'application/x-zope-edit'); - $this->mArticle =& $article; - $this->mTitle =& $article->mTitle; + $allowedCTypes = array( 'text/x-wiki', $wgJsMimeType, 'text/css', 'application/x-zope-edit' ); + $this->mArticle = $article; + $this->mTitle = $article->mTitle; if( $request === false ) { - $this->mRequest =& $wgRequest; + $this->mRequest = $wgRequest; } else { $this->mRequest = $request; } @@ -54,7 +57,7 @@ class RawPage { break; case 'prev': # output previous revision, or nothing if there isn't one - if( ! $oldid ) { + if( !$oldid ) { # get the current revision so we can get the penultimate one $this->mArticle->getTouched(); $oldid = $this->mArticle->mLatest; @@ -73,8 +76,12 @@ class RawPage { if( $gen == 'css' ) { $this->mGen = $gen; - if( is_null( $smaxage ) ) $smaxage = $wgSquidMaxage; - if($ctype == '') $ctype = 'text/css'; + if( is_null( $smaxage ) ) { + $smaxage = $wgSquidMaxage; + } + if( $ctype == '' ) { + $ctype = 'text/css'; + } } elseif( $gen == 'js' ) { $this->mGen = $gen; if( is_null( $smaxage ) ) $smaxage = $wgSquidMaxage; @@ -85,9 +92,9 @@ class RawPage { $this->mCharset = $wgInputEncoding; # Force caching for CSS and JS raw content, default: 5 minutes - if( is_null($smaxage) and ($ctype=='text/css' or $ctype==$wgJsMimeType) ) { + if( is_null( $smaxage ) && ( $ctype == 'text/css' || $ctype == $wgJsMimeType ) ) { global $wgForcedRawSMaxage; - $this->mSmaxage = intval($wgForcedRawSMaxage); + $this->mSmaxage = intval( $wgForcedRawSMaxage ); } else { $this->mSmaxage = intval( $smaxage ); } @@ -95,13 +102,13 @@ class RawPage { # Output may contain user-specific data; # vary generated content for open sessions and private wikis - if( $this->mGen or !$wgGroupPermissions['*']['read'] ) { + if( $this->mGen || !$wgGroupPermissions['*']['read'] ) { $this->mPrivateCache = $this->mSmaxage == 0 || session_id() != ''; } else { $this->mPrivateCache = false; } - if( $ctype == '' or ! in_array( $ctype, $allowedCTypes ) ) { + if( $ctype == '' || !in_array( $ctype, $allowedCTypes ) ) { $this->mContentType = 'text/x-wiki'; } else { $this->mContentType = $ctype; @@ -109,44 +116,30 @@ class RawPage { } function view() { - global $wgOut, $wgScript, $wgRequest; - - 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 - # have eg '.php' and should remain safe. - # - # We used to redirect to a canonical-form URL as a general - # backwards-compatibility / good-citizen nice thing. However - # a lot of servers are set up in buggy ways, resulting in - # redirect loops which hang the browser until the CSS load - # times out. - # - # Just return a 403 Forbidden and get it over with. - wfHttpError( 403, 'Forbidden', - 'Invalid file extension found in PATH_INFO or QUERY_STRING. ' . - 'Raw pages must be accessed through the primary script entry point.' ); + global $wgOut, $wgRequest; + + if( !$wgRequest->checkUrlExtension() ) { + $wgOut->disable(); return; } - header( "Content-type: ".$this->mContentType.'; charset='.$this->mCharset ); + header( 'Content-type: ' . $this->mContentType . '; charset=' . $this->mCharset ); # allow the client to cache this for 24 hours $mode = $this->mPrivateCache ? 'private' : 'public'; - header( 'Cache-Control: '.$mode.', s-maxage='.$this->mSmaxage.', max-age='.$this->mMaxage ); - + header( 'Cache-Control: ' . $mode . ', s-maxage=' . $this->mSmaxage . ', max-age=' . $this->mMaxage ); + global $wgUseFileCache; - if( $wgUseFileCache and HTMLFileCache::useFileCache() ) { + if( $wgUseFileCache && HTMLFileCache::useFileCache() ) { $cache = new HTMLFileCache( $this->mTitle, 'raw' ); if( $cache->isFileCacheGood( /* Assume up to date */ ) ) { $cache->loadFromFileCache(); $wgOut->disable(); return; } else { - ob_start( array(&$cache, 'saveToFileCache' ) ); + ob_start( array( &$cache, 'saveToFileCache' ) ); } } - + $text = $this->getRawText(); if( !wfRunHooks( 'RawPageViewBeforeOutput', array( &$this, &$text ) ) ) { @@ -158,11 +151,12 @@ class RawPage { } function getRawText() { - global $wgUser, $wgOut, $wgRequest; + global $wgUser, $wgOut; if( $this->mGen ) { $sk = $wgUser->getSkin(); - if( !StubObject::isRealObject( $wgOut ) ) + if( !StubObject::isRealObject( $wgOut ) ) { $wgOut->_unstub( 2 ); + } $sk->initPage( $wgOut ); if( $this->mGen == 'css' ) { return $sk->generateUserStylesheet(); @@ -183,8 +177,9 @@ class RawPage { $key = $this->mTitle->getDBkey(); $text = wfMsgForContentNoTrans( $key ); # If the message doesn't exist, return a blank - if( wfEmptyMsg( $key, $text ) ) + if( wfEmptyMsg( $key, $text ) ) { $text = ''; + } $found = true; } else { // Get it from the DB @@ -193,11 +188,12 @@ class RawPage { $lastmod = wfTimestamp( TS_RFC2822, $rev->getTimestamp() ); header( "Last-modified: $lastmod" ); - if( !is_null($this->mSection ) ) { + if( !is_null( $this->mSection ) ) { global $wgParser; - $text = $wgParser->getSection ( $rev->getText(), $this->mSection ); - } else + $text = $wgParser->getSection( $rev->getText(), $this->mSection ); + } else { $text = $rev->getText(); + } $found = true; } } @@ -209,7 +205,7 @@ class RawPage { # 404s aren't generally cached and it would create # extra hits when user CSS/JS are on and the user doesn't # have the pages. - header( "HTTP/1.0 404 Not Found" ); + header( 'HTTP/1.0 404 Not Found' ); } // Special-case for empty CSS/JS @@ -221,22 +217,24 @@ class RawPage { // // Give it a comment... if( strlen( $text ) == 0 && - ($this->mContentType == 'text/css' || + ( $this->mContentType == 'text/css' || $this->mContentType == 'text/javascript' ) ) { - return "/* Empty */"; + return '/* Empty */'; } return $this->parseArticleText( $text ); } function parseArticleText( $text ) { - if( $text === '' ) + if( $text === '' ) { return ''; - else + } else { if( $this->mExpandTemplates ) { global $wgParser; return $wgParser->preprocess( $text, $this->mTitle, new ParserOptions() ); - } else + } else { return $text; + } + } } } -- cgit v1.2.2