MediaWiki/archive/embedding/1.16/index.php

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search

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

<php><?php // comment these lines out for production use $fErrLevel = E_ALL | E_STRICT; error_reporting($fErrLevel); ini_set('display_errors', 1);

// ++++ CONFIGURATION PART 1 $wpWiki = '/wiki'; $wpSkins = "$wpWiki/skins"; $strTitleBase = 'YOUR SITE NAME HERE';

$arCSS = array(

 $wpSkins.'/vector/main-ltr.css' => '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" );

  1. Initialize MediaWiki base class

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

// ++++ 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".'<link rel="stylesheet" href="'.$fs.'" media="'.$medium.'" />';

}

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 '

';</php>