aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRiver Tarnell <kateturner@users.mediawiki.org>2005-07-03 04:00:33 +0000
committerRiver Tarnell <kateturner@users.mediawiki.org>2005-07-03 04:00:33 +0000
commite4a87e105aa20858d5edd07dee20ea8cad5643dc (patch)
treeaa40c2d37864d16a9e599e4a183a9a2823cdebbf
parent3791c6e5e013b16ae1096a64985727134f80ab04 (diff)
downloadmediawikicore-e4a87e105aa20858d5edd07dee20ea8cad5643dc.tar.gz
mediawikicore-e4a87e105aa20858d5edd07dee20ea8cad5643dc.zip
implement "action=render"
Notes
Notes: http://mediawiki.org/wiki/Special:Code/MediaWiki/9849
-rw-r--r--includes/Article.php15
-rw-r--r--includes/OutputPage.php12
-rw-r--r--includes/Setup.php18
-rw-r--r--includes/Skin.php28
-rw-r--r--includes/SkinTemplate.php92
-rw-r--r--index.php19
-rwxr-xr-xmaintenance/mcc.php1
7 files changed, 101 insertions, 84 deletions
diff --git a/includes/Article.php b/includes/Article.php
index a35d535c1b25..5d239e13c316 100644
--- a/includes/Article.php
+++ b/includes/Article.php
@@ -93,7 +93,7 @@ class Article {
if ( 0 == $this->getID() ) {
if ( 'edit' == $action ) {
- wfProfileOut( $fname );
+ wfProfileOut( $fname );
# Should we put something in the textarea?
# if &preload=Pagename is set, we try to get
# the revision text and put it in.
@@ -109,12 +109,12 @@ class Article {
# Don't preload anything.
# We used to put MediaWiki:Newarticletext here.
# This is now shown above the edit box instead.
- return '';
+ return '';
}
wfProfileOut( $fname );
-
+
return wfMsg( 'noarticletext' );
- } else {
+ } else {
$this->loadContent( $noredir );
# check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page
if ( $this->mTitle->getNamespace() == NS_USER_TALK &&
@@ -833,6 +833,13 @@ class Article {
wfProfileOut( $fname );
}
+ function render() {
+ global $wgOut;
+
+ $wgOut->setArticleBodyOnly(true);
+ $this->view();
+ }
+
/**
* Insert a new empty page record for this article.
* This *must* be followed up by creating a revision
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index e079edb1fa21..f58fde9f0698 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -32,6 +32,7 @@ class OutputPage {
var $mParserOptions;
var $mShowFeedLinks = false;
var $mEnableClientCache = true;
+ var $mArticleBodyOnly = false;
/**
* Constructor
@@ -67,6 +68,7 @@ class OutputPage {
function getScript() { return $this->mScripts; }
function setETag($tag) { $this->mETag = $tag; }
+ function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; }
function addLink( $linkarr ) {
# $linkarr should be an associative array of attributes. We'll escape on output.
@@ -447,9 +449,13 @@ class OutputPage {
setcookie( $name, $val, $exp, '/' );
}
- wfProfileIn( 'Output-skin' );
- $sk->outputPage( $this );
- wfProfileOut( 'Output-skin' );
+ if ($this->mArticleBodyOnly) {
+ $this->out($this->mBodytext);
+ } else {
+ wfProfileIn( 'Output-skin' );
+ $sk->outputPage( $this );
+ wfProfileOut( 'Output-skin' );
+ }
$this->sendCacheControl();
ob_end_flush();
diff --git a/includes/Setup.php b/includes/Setup.php
index ecbd474b5bf3..1b31c1881be6 100644
--- a/includes/Setup.php
+++ b/includes/Setup.php
@@ -51,7 +51,7 @@ wfProfileIn( $fname.'-includes' );
require_once( 'GlobalFunctions.php' );
require_once( 'Hooks.php' );
require_once( 'Namespace.php' );
-require_once( 'RecentChange.php' );
+require_once( 'RecentChange.php' );
require_once( 'User.php' );
require_once( 'Skin.php' );
require_once( 'OutputPage.php' );
@@ -110,8 +110,8 @@ $wgMemc =& wfGetMainCache();
$messageMemc =& wfGetMessageCacheStorage();
$parserMemc =& wfGetParserCacheStorage();
-wfDebug( 'Main cache: ' . get_class( $wgMemc ) .
- "\nMessage cache: " . get_class( $messageMemc ) .
+wfDebug( 'Main cache: ' . get_class( $wgMemc ) .
+ "\nMessage cache: " . get_class( $messageMemc ) .
"\nParser cache: " . get_class( $parserMemc ) . "\n" );
wfProfileOut( $fname.'-memcached' );
@@ -134,7 +134,7 @@ wfProfileOut( $fname.'-SetupSession' );
wfProfileIn( $fname.'-database' );
if ( !$wgDBservers ) {
- $wgDBservers = array(array(
+ $wgDBservers = array(array(
'host' => $wgDBserver,
'user' => $wgDBuser,
'password' => $wgDBpassword,
@@ -188,7 +188,7 @@ wfProfileOut( $fname.'-language1' );
wfProfileIn( $fname.'-User' );
# Skin setup functions
-# Entries can be added to this variable during the inclusion
+# Entries can be added to this variable during the inclusion
# of the extension file. Skins can then perform any necessary initialisation.
foreach ( $wgSkinExtensionFunctions as $func ) {
$func();
@@ -246,14 +246,14 @@ wfProfileOut( $fname.'-MessageCache' );
# SEARCH INDEX UPDATES, AND MANY MANY THINGS.
# DO NOT USE THIS MODE EXCEPT FOR TESTING RIGHT NOW.
#
-# To disable it, the easiest thing could be to uncomment the
+# To disable it, the easiest thing could be to uncomment the
# following; they should effectively disable the UI switch functionality
#
# $wgLangClass = $wgContLangClass;
# $wgLanguageCode = $wgContLanguageCode;
# $wgLang = $wgContLang;
#
-# TODO: Need to change reference to $wgLang to $wgContLang at proper
+# TODO: Need to change reference to $wgLang to $wgContLang at proper
# places, including namespaces, dates in signatures, magic words,
# and links
#
@@ -299,8 +299,8 @@ wfProfileOut( $fname.'-misc2' );
wfProfileIn( $fname.'-extensions' );
# Extension setup functions for extensions other than skins
-# Entries should be added to this variable during the inclusion
-# of the extension file. This allows the extension to perform
+# Entries should be added to this variable during the inclusion
+# of the extension file. This allows the extension to perform
# any necessary initialisation in the fully initialised environment
foreach ( $wgExtensionFunctions as $func ) {
$func();
diff --git a/includes/Skin.php b/includes/Skin.php
index 65b16d31dcdc..ad48e25210e3 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -147,6 +147,7 @@ class Skin extends Linker {
wfProfileIn( 'Skin::outputPage' );
$this->initPage( $out );
+
$out->out( $out->headElement() );
$out->out( "\n<body" );
@@ -159,6 +160,7 @@ class Skin extends Linker {
$out->out( "<!-- Wiki debugging output:\n" .
$out->mDebugtext . "-->\n" );
}
+
$out->out( $this->beforeContent() );
$out->out( $out->mBodytext . "\n" );
@@ -197,17 +199,17 @@ class Skin extends Linker {
*/
function userCanPreview( $action ) {
global $wgTitle, $wgRequest, $wgUser;
-
+
if( $action != 'submit' )
return false;
if( !$wgRequest->wasPosted() )
return false;
- if( !$wgTitle->userCanEditCssJsSubpage() )
+ if( !$wgTitle->userCanEditCssJsSubpage() )
return false;
return $wgUser->matchEditToken(
$wgRequest->getVal( 'wpEditToken' ) );
}
-
+
# get the user/site-specific stylesheet, SkinPHPTal called from RawPage.php (settings are cached that way)
function getUserStylesheet() {
global $wgOut, $wgStylePath, $wgContLang, $wgUser, $wgRequest, $wgTitle, $wgAllowUserCss;
@@ -258,7 +260,7 @@ class Skin extends Linker {
return $s . $this->reallyDoGetUserStyles();
}
-
+
function reallyDoGetUserStyles() {
global $wgUser;
$s = '';
@@ -406,7 +408,7 @@ END;
return $s;
}
-
+
function getCategoryLinks () {
global $wgOut, $wgTitle, $wgParser;
global $wgUseCategoryMagic, $wgUseCategoryBrowser, $wgLang;
@@ -926,7 +928,7 @@ END;
}
}
}
-
+
$go = wfMsg( 'go' );
$sp = wfMsg( 'specialpages' );
$spp = $wgContLang->specialPage( 'Specialpages' );
@@ -936,7 +938,7 @@ END;
$s .= "<select name=\"wpDropdown\">\n";
$s .= "<option value=\"{$spp}\">{$sp}</option>\n";
-
+
foreach ( $a as $name => $desc ) {
$p = $wgContLang->specialPage( $name );
$s .= "<option value=\"{$p}\">{$desc}</option>\n";
@@ -1097,7 +1099,7 @@ END;
# 0 != $id->getEmailauthenticationtimestamp() && # .. which is authenticated
# 1 != $wgUser->getOption('disablemail'); # and not disabled
}
-
+
function emailUserLink() {
global $wgTitle;
@@ -1235,13 +1237,13 @@ END;
$title = Title::makeTitle( NS_SPECIAL, $name );
return $title->getLocalURL( $urlaction );
}
-
+
/*static*/ function makeI18nUrl ( $name, $urlaction='' ) {
$title = Title::newFromText( wfMsgForContent($name) );
$this->checkTitle($title, $name);
return $title->getLocalURL( $urlaction );
}
-
+
/*static*/ function makeUrl ( $name, $urlaction='' ) {
$title = Title::newFromText( $name );
$this->checkTitle($title, $name);
@@ -1290,11 +1292,11 @@ END;
*
* @return array
* @access private
- */
+ */
function buildSidebar() {
$fname = 'SkinTemplate::buildSidebar';
wfProfileIn( $fname );
-
+
$bar = array();
$lines = explode( "\n", wfMsgForContent( 'sidebar' ) );
foreach ($lines as $line) {
@@ -1317,7 +1319,7 @@ END;
} else { continue; }
}
}
-
+
wfProfileOut( $fname );
return $bar;
}
diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php
index 9aa3b874704a..20f017d44c40 100644
--- a/includes/SkinTemplate.php
+++ b/includes/SkinTemplate.php
@@ -23,7 +23,7 @@
* Todo: Needs some serious refactoring into functions that correspond
* to the computations individual esi snippets need. Most importantly no body
* parsing for most of those of course.
- *
+ *
* PHPTAL support has been moved to a subclass in SkinPHPTal.php,
* and is optional. You'll need to install PHPTAL manually to use
* skins that depend on it.
@@ -57,10 +57,10 @@ class MediaWiki_I18N {
function translate($value) {
$fname = 'SkinTemplate-translate';
wfProfileIn( $fname );
-
+
// Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
$value = preg_replace( '/^string:/', '', $value );
-
+
$value = wfMsg( $value );
// interpolate variables
while (preg_match('/\$([0-9]*?)/sm', $value, $m)) {
@@ -135,7 +135,7 @@ class SkinTemplate extends Skin {
function &setupTemplate( $classname, $repository=false, $cache_dir=false ) {
return new $classname();
}
-
+
/**
* initialize various variables and generate the template
*
@@ -152,7 +152,7 @@ class SkinTemplate extends Skin {
$fname = 'SkinTemplate::outputPage';
wfProfileIn( $fname );
-
+
extract( $wgRequest->getValues( 'oldid', 'diff' ) );
wfProfileIn( "$fname-init" );
@@ -355,7 +355,7 @@ class SkinTemplate extends Skin {
# Language links
$language_urls = array();
-
+
if ( !$wgHideInterlanguageLinks ) {
foreach( $wgOut->getLanguageLinks() as $l ) {
$nt = Title::newFromText( $l );
@@ -395,12 +395,12 @@ class SkinTemplate extends Skin {
wfProfileIn( "$fname-execute" );
$res = $tpl->execute();
wfProfileOut( "$fname-execute" );
-
+
// result may be an error
$this->printOrError( $res );
wfProfileOut( $fname );
}
-
+
/**
* Output the string, or print error message if it's
* an error object of the appropriate type.
@@ -421,7 +421,7 @@ class SkinTemplate extends Skin {
function buildPersonalUrls() {
$fname = 'SkinTemplate::buildPersonalUrls';
wfProfileIn( $fname );
-
+
/* set up the default links for the personal toolbar */
global $wgShowIPinHeader;
$personal_urls = array();
@@ -507,7 +507,7 @@ class SkinTemplate extends Skin {
'exists' => $title->getArticleID() != 0?true:false
);
}
-
+
function makeArticleUrlDetails( $name, $urlaction='' ) {
$title = Title::newFromText( $name );
$title= $title->getSubjectPage();
@@ -517,7 +517,7 @@ class SkinTemplate extends Skin {
'exists' => $title->getArticleID() != 0?true:false
);
}
-
+
/**
* an array of edit links by default used for the tabs
* @return array
@@ -527,7 +527,7 @@ class SkinTemplate extends Skin {
global $wgContLang, $wgUseValidation, $wgDBprefix, $wgValidationForAnons;
$fname = 'SkinTemplate::buildContentActionUrls';
wfProfileIn( $fname );
-
+
global $wgUser, $wgRequest;
$action = $wgRequest->getText( 'action' );
$section = $wgRequest->getText( 'section' );
@@ -543,14 +543,14 @@ class SkinTemplate extends Skin {
$nskey,
!$this->mTitle->isTalkPage(),
'', true);
-
+
$content_actions['talk'] = $this->tabAction(
$this->mTitle->getTalkPage(),
'talk',
$this->mTitle->isTalkPage(),
'',
true);
-
+
wfProfileIn( "$fname-edit" );
if ( $this->mTitle->userCanEdit() ) {
$oid = ( $oldid && ! isset( $diff ) ) ? '&oldid='.IntVal( $oldid ) : false;
@@ -651,7 +651,7 @@ class SkinTemplate extends Skin {
}
if( $wgUser->isLoggedIn() || $wgValidationForAnons ) { # and $action != 'submit' ) {
- # Validate tab. TODO: add validation to logged-in user rights
+ # Validate tab. TODO: add validation to logged-in user rights
if($wgUseValidation && ( $action == "" || $action=='view' ) ){ # && $wgUser->isAllowed('validate')){
if ( $oldid ) $oid = IntVal( $oldid ) ; # Use the oldid
else
@@ -710,7 +710,7 @@ class SkinTemplate extends Skin {
wfProfileOut( $fname );
return $content_actions;
}
-
+
/**
@@ -721,14 +721,14 @@ class SkinTemplate extends Skin {
function buildNavUrls () {
$fname = 'SkinTemplate::buildNavUrls';
wfProfileIn( $fname );
-
+
global $wgUser, $wgRequest;
global $wgSiteSupportPage, $wgEnableUploads, $wgUploadNavigationUrl;
$action = $wgRequest->getText( 'action' );
$oldid = $wgRequest->getVal( 'oldid' );
$diff = $wgRequest->getVal( 'diff' );
-
+
$nav_urls = array();
$nav_urls['mainpage'] = array('href' => $this->makeI18nUrl('mainpage'));
$nav_urls['randompage'] = array('href' => $this->makeSpecialUrl('Random'));
@@ -741,8 +741,8 @@ class SkinTemplate extends Skin {
$nav_urls['help'] = array('href' => $this->makeI18nUrl('helppage'));
if( $wgEnableUploads ) {
if ($wgUploadNavigationUrl) {
- $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl );
- } else {
+ $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl );
+ } else {
$nav_urls['upload'] = array('href' => $this->makeSpecialUrl('Upload'));
}
} else {
@@ -750,7 +750,7 @@ class SkinTemplate extends Skin {
}
$nav_urls['specialpages'] = array('href' => $this->makeSpecialUrl('Specialpages'));
-
+
// A print stylesheet is attached to all pages, but nobody ever
// figures that out. :) Add a link...
if( $this->iscontent && ($action == '' || $action == 'view' || $action == 'purge' ) ) {
@@ -758,7 +758,7 @@ class SkinTemplate extends Skin {
'text' => wfMsg( 'printableversion' ),
'href' => $wgRequest->appendQuery( 'printable=yes' ) );
}
-
+
if( $this->mTitle->getNamespace() != NS_SPECIAL) {
$nav_urls['whatlinkshere'] = array(
'href' => $this->makeSpecialUrl("Whatlinkshere/$this->thispage")
@@ -832,14 +832,14 @@ class SkinTemplate extends Skin {
return 'nstab-main';
}
}
-
+
/**
* @access private
*/
function setupUserCss() {
$fname = 'SkinTemplate::setupUserCss';
wfProfileIn( $fname );
-
+
global $wgRequest, $wgAllowUserCss, $wgUseSiteCss, $wgContLang, $wgSquidMaxage, $wgStylePath, $wgUser;
$sitecss = '';
@@ -847,10 +847,10 @@ class SkinTemplate extends Skin {
$siteargs = '&maxage=' . $wgSquidMaxage;
# Add user-specific code if this is a user and we allow that kind of thing
-
+
if ( $wgAllowUserCss && $this->loggedin ) {
$action = $wgRequest->getText('action');
-
+
# if we're previewing the CSS page, use it
if( $this->mTitle->isCssSubpage() and $this->userCanPreview( $action ) ) {
$siteargs = "&smaxage=0&maxage=0";
@@ -865,15 +865,15 @@ class SkinTemplate extends Skin {
}
if ($wgContLang->isRTL()) $sitecss .= '@import "' . $wgStylePath . '/' . $this->stylename . '/rtl.css";' . "\n";
-
+
# If we use the site's dynamic CSS, throw that in, too
if ( $wgUseSiteCss ) {
$sitecss .= '@import "' . $this->makeNSUrl(ucfirst($this->skinname) . '.css', 'action=raw&ctype=text/css&smaxage=' . $wgSquidMaxage, NS_MEDIAWIKI) . '";' . "\n";
$sitecss .= '@import "' . $this->makeUrl('-','action=raw&gen=css' . $siteargs) . '";' . "\n";
}
-
+
# If we use any dynamic CSS, make a little CDATA block out of it.
-
+
if ( !empty($sitecss) || !empty($usercss) ) {
$this->usercss = "/*<![CDATA[*/\n" . $sitecss . $usercss . '/*]]>*/';
}
@@ -886,7 +886,7 @@ class SkinTemplate extends Skin {
function setupUserJs() {
$fname = 'SkinTemplate::setupUserJs';
wfProfileIn( $fname );
-
+
global $wgRequest, $wgAllowUserJs, $wgJsMimeType;
$action = $wgRequest->getText('action');
@@ -900,7 +900,7 @@ class SkinTemplate extends Skin {
}
wfProfileOut( $fname );
}
-
+
/**
* returns css with user-specific options
* @access public
@@ -909,21 +909,21 @@ class SkinTemplate extends Skin {
function getUserStylesheet() {
$fname = 'SkinTemplate::getUserStylesheet';
wfProfileIn( $fname );
-
+
global $wgUser;
$s = "/* generated user stylesheet */\n";
$s .= $this->reallyDoGetUserStyles();
wfProfileOut( $fname );
return $s;
}
-
+
/**
* @access public
*/
function getUserJs() {
$fname = 'SkinTemplate::getUserJs';
wfProfileIn( $fname );
-
+
global $wgStylePath;
$s = '/* generated javascript */';
$s .= "var skin = '{$this->skinname}';\nvar stylepath = '{$wgStylePath}';";
@@ -936,7 +936,7 @@ class SkinTemplate extends Skin {
if ('&lt;'.$msgKey.'&gt;' != $userJS) {
$s .= $userJS;
}
-
+
wfProfileOut( $fname );
return $s;
}
@@ -956,28 +956,28 @@ class QuickTemplate {
$this->data = array();
$this->translator = new MediaWiki_I18N();
}
-
+
/**
* @access public
*/
function set( $name, $value ) {
$this->data[$name] = $value;
}
-
+
/**
* @access public
*/
function setRef($name, &$value) {
$this->data[$name] =& $value;
}
-
+
/**
* @access public
*/
function setTranslator( &$t ) {
$this->translator = &$t;
}
-
+
/**
* @access public
*/
@@ -992,28 +992,28 @@ class QuickTemplate {
function text( $str ) {
echo htmlspecialchars( $this->data[$str] );
}
-
+
/**
* @access private
*/
function html( $str ) {
echo $this->data[$str];
}
-
+
/**
* @access private
*/
function msg( $str ) {
echo htmlspecialchars( $this->translator->translate( $str ) );
}
-
+
/**
* @access private
*/
function msgHtml( $str ) {
echo $this->translator->translate( $str );
}
-
+
/**
* An ugly, ugly hack.
* @access private
@@ -1026,14 +1026,14 @@ class QuickTemplate {
$wgOut->mParserOptions, true );
echo $parserOutput->getText();
}
-
+
/**
* @access private
*/
function haveData( $str ) {
return $this->data[$str];
}
-
+
/**
* @access private
*/
@@ -1043,5 +1043,5 @@ class QuickTemplate {
}
}
-} // end of if( defined( 'MEDIAWIKI' ) )
+} // end of if( defined( 'MEDIAWIKI' ) )
?>
diff --git a/index.php b/index.php
index c808f95b97f7..27b7fb988a17 100644
--- a/index.php
+++ b/index.php
@@ -25,7 +25,7 @@ if( !file_exists( 'LocalSettings.php' ) ) {
<head>
<title>MediaWiki <?php echo $wgVersion ?></title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
-
+
<style type='text/css' media='screen, projection'>
html, body {
color: #000;
@@ -41,7 +41,7 @@ if( !file_exists( 'LocalSettings.php' ) ) {
</head>
<body>
<img src='skins/common/images/mediawiki.png' alt='The MediaWiki logo' />
-
+
<h1>MediaWiki <?php echo $wgVersion ?></h1>
<div class='error'>
<?php
@@ -81,12 +81,12 @@ if ( '' == $title && 'delete' != $action ) {
$wgTitle = Title::newFromID( $curid );
} else {
$wgTitle = Title::newFromURL( $title );
- /* check variant links so that interwiki links don't have to worry about
+ /* check variant links so that interwiki links don't have to worry about
the possible different language variants
*/
if( !is_null($wgTitle) && $wgTitle->getArticleID() == 0 )
$wgContLang->findVariantLink( $title, $wgTitle );
-
+
}
wfProfileOut( 'main-misc-setup' );
@@ -172,6 +172,7 @@ if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) {
case 'info':
case 'markpatrolled':
case 'validate':
+ case 'render':
$wgArticle->$action();
break;
case 'print':
@@ -203,20 +204,20 @@ if( !$wgDisableInternalSearch && !is_null( $search ) && $search !== '' ) {
User::SetupSession();
}
# Continue...
- case 'edit':
+ case 'edit':
$internal = $wgRequest->getVal( 'internaledit' );
$external = $wgRequest->getVal( 'externaledit' );
$section = $wgRequest->getVal( 'section' );
- $oldid = $wgRequest->getVal( 'oldid' );
- if(!$wgUseExternalEditor || $action=='submit' || $internal ||
+ $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();
+ $editor->submit();
} elseif($wgUseExternalEditor && ($external || $wgUser->getOption('externaleditor'))) {
require_once( 'includes/ExternalEdit.php' );
$mode = $wgRequest->getVal( 'mode' );
- $extedit = new ExternalEdit( $wgArticle, $mode );
+ $extedit = new ExternalEdit( $wgArticle, $mode );
$extedit->edit();
}
break;
diff --git a/maintenance/mcc.php b/maintenance/mcc.php
index 1a063f2363f1..b7697c730bde 100755
--- a/maintenance/mcc.php
+++ b/maintenance/mcc.php
@@ -9,6 +9,7 @@
/** */
require_once( "commandLine.inc" );
+require_once("memcached-client.php");
$mcc = new memcached( array('persistant' => true) );
$mcc->set_servers( $wgMemCachedServers );