moving stuff from index.php to includes/Wiki.php
authorMagnus Manske <magnusmanske@users.mediawiki.org>
Thu, 29 Dec 2005 10:21:20 +0000 (10:21 +0000)
committerMagnus Manske <magnusmanske@users.mediawiki.org>
Thu, 29 Dec 2005 10:21:20 +0000 (10:21 +0000)
includes/Wiki.php [new file with mode: 0644]
index.php

diff --git a/includes/Wiki.php b/includes/Wiki.php
new file mode 100644 (file)
index 0000000..517a901
--- /dev/null
@@ -0,0 +1,204 @@
+<?
+
+#__________________________
+#wiki class
+
+class MediaWikiType {
+
+       function main_action () {
+               global $wgTitle , $wgArticle , $wgRequest , $wgOut , $wgServer ;
+               global $wgDisableInternalSearch , $wgUseCategoryMagic , $wgDisabledActions , $action ;
+               wfProfileIn( 'main-action' );
+
+               if( !$wgDisableInternalSearch && !is_null( $this->mSearch ) && $this->mSearch !== '' ) {
+                       require_once( 'includes/SpecialSearch.php' );
+                       $wgTitle = Title::makeTitle( NS_SPECIAL, 'Search' );
+                       wfSpecialSearch();
+               } else if( !$wgTitle or $wgTitle->getDBkey() == '' ) {
+                       $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
+                       $wgOut->errorpage( 'badtitle', 'badtitletext' );
+               } else if ( $wgTitle->getInterwiki() != '' ) {
+                       if( $rdfrom = $wgRequest->getVal( 'rdfrom' ) ) {
+                               $url = $wgTitle->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) );
+                       } else {
+                               $url = $wgTitle->getFullURL();
+                       }
+                       # Check for a redirect loop
+                       if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url ) && $wgTitle->isLocal() ) {
+                               $wgOut->redirect( $url );
+                       } else {
+                               $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
+                               $wgOut->errorpage( 'badtitle', 'badtitletext' );
+                       }
+               } else if ( ( $action == 'view' ) &&
+                       (!isset( $_GET['title'] ) || $wgTitle->getPrefixedDBKey() != $_GET['title'] ) &&
+                       !count( array_diff( array_keys( $_GET ), array( 'action', 'title' ) ) ) )
+               {
+                       /* redirect to canonical url, make it a 301 to allow caching */
+                       $wgOut->setSquidMaxage( 1200 );
+                       $wgOut->redirect( $wgTitle->getFullURL(), '301');
+               } else if ( NS_SPECIAL == $wgTitle->getNamespace() ) {
+                       # actions that need to be made when we have a special pages
+                       SpecialPage::executePath( $wgTitle );
+               } else {
+                       if ( NS_MEDIA == $wgTitle->getNamespace() ) {
+                               $wgTitle = Title::makeTitle( NS_IMAGE, $wgTitle->getDBkey() );
+                       }
+               
+                       $ns = $wgTitle->getNamespace();
+               
+                       // Namespace might change when using redirects
+                       if($action == 'view' && !$wgRequest->getVal( 'oldid' ) ) {
+                               $wgArticle = new Article( $wgTitle );
+                               $rTitle = Title::newFromRedirect( $wgArticle->fetchContent() );
+                               if($rTitle) {
+                                       # Reload from the page pointed to later
+                                       $wgArticle->mContentLoaded = false;
+                                       $ns = $rTitle->getNamespace();
+                               }
+                       }
+
+                       // Categories and images are handled by a different class
+                       if ( $ns == NS_IMAGE ) {
+                               unset($wgArticle);
+                               require_once( 'includes/ImagePage.php' );
+                               $wgArticle = new ImagePage( $wgTitle );
+                       } elseif ( $wgUseCategoryMagic && $ns == NS_CATEGORY ) {
+                               unset($wgArticle);
+                               require_once( 'includes/CategoryPage.php' );
+                               $wgArticle = new CategoryPage( $wgTitle );
+                       }
+               
+                       if ( in_array( $action, $wgDisabledActions ) ) {
+                               $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
+                       } else {
+                               $act = 'act_' . $action ;
+                               if ( method_exists ( $this , $act ) ) {
+                                       $this->$act ( $action ) ;
+                               } else {
+                                       $this->action_unknown ( $action ) ;
+                               }
+                       }
+               }
+
+               wfProfileOut( 'main-action' );
+       }
+
+#____________________________________________________________________________________
+#Action methods
+       
+       function act_view ( $action ) {
+               global $wgOut , $wgSquidMaxage , $wgArticle ;
+               $wgOut->setSquidMaxage( $wgSquidMaxage );
+               $wgArticle->view();
+       }
+       
+       function act_print ( $action ) {
+               global $wgArticle ;
+               $wgArticle->view () ;
+       }
+       
+       function act_dublincore ( $action ) {
+               global $wgArticle , $wgEnableDublinCoreRdf ;
+               if( !$wgEnableDublinCoreRdf ) {
+                       wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) );
+               } else {
+                       require_once( 'includes/Metadata.php' );
+                       wfDublinCoreRdf( $wgArticle );
+               }
+       }
+       
+       function act_creativecommons ( $action ) { 
+               global $wgArticle , $wgEnableCreativeCommonsRdf ;
+               if( !$wgEnableCreativeCommonsRdf ) {
+                       wfHttpError( 403, 'Forbidden', wfMsg('nocreativecommons') );
+               } else {
+                       require_once( 'includes/Metadata.php' );
+                       wfCreativeCommonsRdf( $wgArticle );
+               }
+       }
+       
+       function act_credits ( $action ) { 
+               global $wgArticle ;
+               require_once( 'includes/Credits.php' );
+               showCreditsPage( $wgArticle );
+       }
+       
+       function act_submit ( $action ) { 
+               global $wgCommandLineMode , $wgRequest ;
+               if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) {
+                       # Send a cookie so anons get talk message notifications
+                       User::SetupSession();
+               }
+               $this->act_edit ( $action ) ;
+       }
+       
+       function act_edit ( $action ) { 
+               global $wgRequest , $wgUseExternalEditor , $wgUser , $wgArticle ;
+               $internal = $wgRequest->getVal( 'internaledit' );
+               $external = $wgRequest->getVal( 'externaledit' );
+               $section = $wgRequest->getVal( 'section' );
+               $oldid = $wgRequest->getVal( 'oldid' );
+               if(!$wgUseExternalEditor || $action=='submit' || $internal ||
+                       $section || $oldid || (!$wgUser->getOption('externaleditor') && !$external)) {
+                       require_once( 'includes/EditPage.php' );
+                       $editor = new EditPage( $wgArticle );
+                       $editor->submit();
+               } elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) {
+                       require_once( 'includes/ExternalEdit.php' );
+                       $mode = $wgRequest->getVal( 'mode' );
+                       $extedit = new ExternalEdit( $wgArticle, $mode );
+                       $extedit->edit();
+               }
+       }
+       
+       function act_history ( $action ) { 
+               global $wgTitle , $wgArticle , $wgSquidMaxage ;
+               if ($_SERVER['REQUEST_URI'] == $wgTitle->getInternalURL('action=history')) {
+                       $wgOut->setSquidMaxage( $wgSquidMaxage );
+               }
+               require_once( 'includes/PageHistory.php' );
+               $history = new PageHistory( $wgArticle );
+               $history->history();
+       }
+       
+       function act_raw ( $action ) { 
+               global $wgArticle ;
+               require_once( 'includes/RawPage.php' );
+               $raw = new RawPage( $wgArticle );
+               $raw->view();
+       }
+       
+       
+       function action_unknown ( $action ) {
+               global $wgArticle , $wgOut ;
+               if (wfRunHooks('UnknownAction', array($action, $wgArticle))) {
+                       $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
+               }
+       }
+       
+       
+       function act_watch ( $action ) { $this->article_action ( $action ) ; } 
+       function act_unwatch ( $action ) { $this->article_action ( $action ) ; } 
+       function act_delete ( $action ) { $this->article_action ( $action ) ; } 
+       function act_revert ( $action ) { $this->article_action ( $action ) ; } 
+       function act_rollback ( $action ) { $this->article_action ( $action ) ; } 
+       function act_protect ( $action ) { $this->article_action ( $action ) ; } 
+       function act_unprotect ( $action ) { $this->article_action ( $action ) ; } 
+       function act_info ( $action ) { $this->article_action ( $action ) ; } 
+       function act_markpatrolled ( $action ) { $this->article_action ( $action ) ; } 
+       function act_validate ( $action ) { $this->article_action ( $action ) ; } 
+       function act_render ( $action ) { $this->article_action ( $action ) ; } 
+       function act_deletetrackback ( $action ) { $this->article_action ( $action ) ; } 
+       function act_purge ( $action ) { $this->article_action ( $action ) ; } 
+
+       function article_action ( $action ) {
+               global $wgArticle ;
+               $wgArticle->$action() ;
+       }
+
+       
+} ; # end of class MediaWikiType
+
+?>
+
index 360f048..8fff434 100644 (file)
--- a/index.php
+++ b/index.php
@@ -67,6 +67,12 @@ require_once( 'includes/Setup.php' );
 wfProfileIn( 'main-misc-setup' );
 OutputPage::setEncodings(); # Not really used yet
 
+
+# The wiki action class
+require_once ( "includes/Wiki.php" ) ;
+$wgTheWiki = new MediaWikiType ; 
+
+
 # Query string fields
 $action = $wgRequest->getVal( 'action', 'view' );
 $title = $wgRequest->getVal( 'title' );
@@ -110,157 +116,11 @@ if ( !is_null( $wgTitle ) && !$wgTitle->userCanRead() ) {
        exit;
 }
 
-wfProfileIn( 'main-action' );
-
-if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) {
-       require_once( 'includes/SpecialSearch.php' );
-       $wgTitle = Title::makeTitle( NS_SPECIAL, 'Search' );
-       wfSpecialSearch();
-} else if( !$wgTitle or $wgTitle->getDBkey() == '' ) {
-       $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
-       $wgOut->errorpage( 'badtitle', 'badtitletext' );
-} else if ( $wgTitle->getInterwiki() != '' ) {
-       if( $rdfrom = $wgRequest->getVal( 'rdfrom' ) ) {
-               $url = $wgTitle->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) );
-       } else {
-               $url = $wgTitle->getFullURL();
-       }
-       # Check for a redirect loop
-       if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url ) && $wgTitle->isLocal() ) {
-               $wgOut->redirect( $url );
-       } else {
-               $wgTitle = Title::newFromText( wfMsgForContent( 'badtitle' ) );
-               $wgOut->errorpage( 'badtitle', 'badtitletext' );
-       }
-} else if ( ( $action == 'view' ) &&
-       (!isset( $_GET['title'] ) || $wgTitle->getPrefixedDBKey() != $_GET['title'] ) &&
-       !count( array_diff( array_keys( $_GET ), array( 'action', 'title' ) ) ) )
-{
-       /* redirect to canonical url, make it a 301 to allow caching */
-       $wgOut->setSquidMaxage( 1200 );
-       $wgOut->redirect( $wgTitle->getFullURL(), '301');
-} else if ( NS_SPECIAL == $wgTitle->getNamespace() ) {
-       # actions that need to be made when we have a special pages
-       SpecialPage::executePath( $wgTitle );
-} else {
-       if ( NS_MEDIA == $wgTitle->getNamespace() ) {
-               $wgTitle = Title::makeTitle( NS_IMAGE, $wgTitle->getDBkey() );
-       }
 
-       $ns = $wgTitle->getNamespace();
+$wgTheWiki->mSearch = $search ;
+$wgTheWiki->main_action () ;
+# $search = $wgTheWiki->mSearch ; # Not needed
 
-       // Namespace might change when using redirects
-       if($action == 'view' && !$wgRequest->getVal( 'oldid' ) ) {
-               $wgArticle = new Article( $wgTitle );
-               $rTitle = Title::newFromRedirect( $wgArticle->fetchContent() );
-               if($rTitle) {
-                       # Reload from the page pointed to later
-                       $wgArticle->mContentLoaded = false;
-                       $ns = $rTitle->getNamespace();
-               }
-       }
-
-       // Categories and images are handled by a different class
-       if ( $ns == NS_IMAGE ) {
-               unset($wgArticle);
-               require_once( 'includes/ImagePage.php' );
-               $wgArticle = new ImagePage( $wgTitle );
-       } elseif ( $wgUseCategoryMagic && $ns == NS_CATEGORY ) {
-               unset($wgArticle);
-               require_once( 'includes/CategoryPage.php' );
-               $wgArticle = new CategoryPage( $wgTitle );
-       }
-
-       if ( in_array( $action, $wgDisabledActions ) ) {
-               $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
-       } else {
-               switch( $action ) {
-                       case 'view':
-                               $wgOut->setSquidMaxage( $wgSquidMaxage );
-                               $wgArticle->view();
-                               break;
-                       case 'watch':
-                       case 'unwatch':
-                       case 'delete':
-                       case 'revert':
-                       case 'rollback':
-                       case 'protect':
-                       case 'unprotect':
-                       case 'info':
-                       case 'markpatrolled':
-                       case 'validate':
-                       case 'render':
-                       case 'deletetrackback':
-                       case 'purge':
-                               $wgArticle->$action();
-                               break;
-                       case 'print':
-                               $wgArticle->view();
-                               break;
-                       case 'dublincore':
-                               if( !$wgEnableDublinCoreRdf ) {
-                                       wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) );
-                               } else {
-                                       require_once( 'includes/Metadata.php' );
-                                       wfDublinCoreRdf( $wgArticle );
-                               }
-                               break;
-                       case 'creativecommons':
-                               if( !$wgEnableCreativeCommonsRdf ) {
-                                       wfHttpError( 403, 'Forbidden', wfMsg('nocreativecommons') );
-                               } else {
-                                       require_once( 'includes/Metadata.php' );
-                                       wfCreativeCommonsRdf( $wgArticle );
-                               }
-                               break;
-                       case 'credits':
-                               require_once( 'includes/Credits.php' );
-                               showCreditsPage( $wgArticle );
-                               break;
-                       case 'submit':
-                               if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) {
-                                       # Send a cookie so anons get talk message notifications
-                                       User::SetupSession();
-                               }
-                               # Continue...
-                       case 'edit':
-                               $internal = $wgRequest->getVal( 'internaledit' );
-                               $external = $wgRequest->getVal( 'externaledit' );
-                               $section = $wgRequest->getVal( 'section' );
-                               $oldid = $wgRequest->getVal( 'oldid' );
-                               if(!$wgUseExternalEditor || $action=='submit' || $internal ||
-                                  $section || $oldid || (!$wgUser->getOption('externaleditor') && !$external)) {
-                                       require_once( 'includes/EditPage.php' );
-                                       $editor = new EditPage( $wgArticle );
-                                       $editor->submit();
-                               } elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) {
-                                       require_once( 'includes/ExternalEdit.php' );
-                                       $mode = $wgRequest->getVal( 'mode' );
-                                       $extedit = new ExternalEdit( $wgArticle, $mode );
-                                       $extedit->edit();
-                               }
-                               break;
-                       case 'history':
-                               if ($_SERVER['REQUEST_URI'] == $wgTitle->getInternalURL('action=history')) {
-                                       $wgOut->setSquidMaxage( $wgSquidMaxage );
-                               }
-                               require_once( 'includes/PageHistory.php' );
-                               $history = new PageHistory( $wgArticle );
-                               $history->history();
-                               break;
-                       case 'raw':
-                               require_once( 'includes/RawPage.php' );
-                               $raw = new RawPage( $wgArticle );
-                               $raw->view();
-                               break;
-                       default:
-                               if (wfRunHooks('UnknownAction', array($action, $wgArticle))) {
-                                       $wgOut->errorpage( 'nosuchaction', 'nosuchactiontext' );
-                               }
-               }
-       }
-}
-wfProfileOut( 'main-action' );
 
 # Deferred updates aren't really deferred anymore. It's important to report errors to the
 # user, and that means doing this before OutputPage::output(). Note that for page saves,