Don't require an existence check before calling loadPageData(). Added an accessor...
[lhc/web/wiklou.git] / includes / RawPage.php
index 1093cf9..119f0c9 100644 (file)
@@ -36,27 +36,52 @@ class RawPage {
                        $this->mRequest = $request;
                }
 
-               $ctype = $this->mRequest->getText( 'ctype' );
-               $smaxage = $this->mRequest->getInt( 'smaxage', $wgSquidMaxage );
+               $ctype = $this->mRequest->getVal( 'ctype' );
+               $smaxage = $this->mRequest->getIntOrNull( 'smaxage', $wgSquidMaxage );
                $maxage = $this->mRequest->getInt( 'maxage', $wgSquidMaxage );
-               $this->mExpandTemplates = $this->mRequest->getText( 'templates' ) === 'expand';
-               $this->mOldId = $this->mRequest->getInt( 'oldid' );
+               $this->mExpandTemplates = $this->mRequest->getVal( 'templates' ) === 'expand';
+               
+               $oldid = $this->mRequest->getInt( 'oldid' );
+               switch ( $wgRequest->getText( 'direction' ) ) {
+                       case 'next':
+                               # output next revision, or nothing if there isn't one
+                               if ( $oldid ) {
+                                       $oldid = $this->mTitle->getNextRevisionId( $oldid );
+                               }
+                               $oldid = $oldid ? $oldid : -1;
+                               break;
+                       case 'prev':
+                               # output previous revision, or nothing if there isn't one
+                               if ( ! $oldid ) {
+                                       # get the current revision so we can get the penultimate one
+                                       $this->mArticle->getTouched();
+                                       $oldid = $this->mArticle->mLatest;
+                               }
+                               $prev = $this->mTitle->getPreviousRevisionId( $oldid );
+                               $oldid = $prev ? $prev : -1 ;
+                               break;
+                       case 'cur':
+                               $oldid = 0;
+                               break;
+               }
+               $this->mOldId = $oldid;
+               
                # special case for 'generated' raw things: user css/js
-               $gen = $this->mRequest->getText( 'gen' );
+               $gen = $this->mRequest->getVal( 'gen' );
 
                if($gen == 'css') {
                        $this->mGen = $gen;
-                       if($smaxage == '') $smaxage = $wgSquidMaxage;
+                       if( is_null( $smaxage ) ) $smaxage = $wgSquidMaxage;
                        if($ctype == '') $ctype = 'text/css';
-               } else if ($gen == 'js') {
+               } elseif ($gen == 'js') {
                        $this->mGen = $gen;
-                       if($smaxage == '') $smaxage = $wgSquidMaxage;
+                       if( is_null( $smaxage ) ) $smaxage = $wgSquidMaxage;
                        if($ctype == '') $ctype = $wgJsMimeType;
                } else {
                        $this->mGen = false;
                }
                $this->mCharset = $wgInputEncoding;
-               $this->mSmaxage = $smaxage;
+               $this->mSmaxage = intval( $smaxage );
                $this->mMaxage = $maxage;
                if ( $ctype == '' or ! in_array( $ctype, $allowedCTypes ) ) {
                        $this->mContentType = 'text/x-wiki';
@@ -126,8 +151,6 @@ class RawPage {
        }
 
        function getArticleText() {
-               global $wgParser;
-
                if( $this->mTitle ) {
                        $text = '';