MediaWiki/embedding/1.16/index.php

About
This works with MediaWiki v1.16.x.

The "FIXED title" example in the "CONFIGURATION PART 2" section of the code only displays one page from your wiki, but could probably be expanded to display only a specified set of pages. The advantage is that it will never pull up a "this page has not been created yet" message with edit-links pointing to your (possibly hidden/secret) wiki. There's probably a way to suppress that message (and return a 404 code) while still allowing new pages to be created/displayed without modifying code.

Instructions

 * Modify the settings inside the CONFIGURATION block to match your site's configuration
 * Put this file (index.php) in the folder where you want the pages to appear. (I've only tested this in "/", however.)
 * Modify Apache/.htaccess -- see /.htaccess (not needed if you are only serving one title)
 * Whatever is in project:Transclude/ will appear (without the wiki skin) at http://yourdomain.com, project:Transclude/a page will appear at http://yourdomain.com/a_page , and so on.

Future

 * I haven't tested to see if a trailing "/" brings up a different page or not; if it does, then trimming off trailing "/"s from the request should fix that, if it's a problem.

History

 * 2011-03-17 changed $wgArticle creation method -- other method returns fully-skinned error page when user does not have read access to the requested page
 * also added some debug code in case of other unanticipated problems
 * 2011-03-18
 * several small improvements; configuration is now in one block, browser-title now includes the page's title
 * now universalized -- can serve fixed or dynamic title set by changes to configuration

Code
 'screen',  $wpSkins.'/common/shared.css' => 'screen',  $wpSkins.'/common/commonPrint.css' => 'print'); // CONFIGURATION PART 1

$preIP = dirname( __FILE__ ).$wpWiki; //$preIP = dirname( '../index.html' ).'/wiki'; chdir($preIP); require_once( "$preIP/includes/WebStart.php" );

require_once( "$preIP/includes/Wiki.php" ); $mediaWiki = new MediaWiki; OutputPage::setEncodings; # Not really used yet
 * 1) Initialize MediaWiki base class

// ++++ CONFIGURATION PART 2

// (example 1) DYNAMIC titles: $strTitleReq = $wgRequest->GetText('title'); $wpPage = 'project:Transclude/'.$strTitleReq;

// (example 2) FIXED title: $wpPage = 'project:Transclude/home';

// CONFIGURATION PART 2

$wgTitle = $mediaWiki->checkInitialQueries( $wpPage, 'view' );

// load $wgArticle $wgArticle = MediaWiki::articleFromTitle( $wgTitle ); //$wgArticle = $mediaWiki->initialize ( $wgTitle, $wgOut, $wgUser, $wgRequest ); //$mediaWiki->performRequestForTitle( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );

// create appropriate title string $strPageName = $wgTitle->getText; $strTitlePage = substr($strPageName,strrpos($strPageName,'/')+1); if (empty($strTitlePage)) { $strTitle = $strTitleBase; } else { $strTitle = $strTitlePage.' - '.$strTitleBase; } //$out = $wgParser->recursiveTagParse($txtPage);

if (is_object($wgArticle)) { // fetch the page contents and parse it   require_once( "$preIP/includes/Article.php" ); global $wgParser; $txtPage = $wgArticle->getContent; $objOptions = new ParserOptions; $objPOut = $wgParser->parse( $txtPage, $wgTitle, $objOptions ); $out = $objPOut->getText; } else { $out = "could not load page from database"; }

$htHdr = ''; foreach ($arCSS as $fs => $medium) { $htHdr .= "\n".''; }

echo <<<__END__ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> $strTitle $htHdr  __END__;

echo $out;

echo ' ';