API CLASS FILE
From VMPanel
Step 1
Copy the following code into your extensions directory under Code/Code.php file. </translate>
<source lang="php" enclose="div"> <?php if( !defined( 'MEDIAWIKI' ) ) {
echo( "This is an extension to the MediaWiki package and cannot be run standalone.\n" );
die( -1 );
} $wgExtensionCredits['other'][] = array(
'path' => __FILE__,
'name' => 'Code',
'version' => '0.9',
'author' => 'Paul Grinberg',
'url' => 'https://www.mediawiki.org/wiki/Extension:Code',
'description' => 'Allows syntax highlighting using GeSHi'
);
$wgHooks['ParserFirstCallInit'][] = 'efCodeExtensionInit';
function efCodeExtensionInit(Parser &$parser) {
$parser->setHook( "Code", "efCodeExtensionRenderCode" ); return true;
}
function efCodeExtensionRenderCode($input, $argv, $parser) {
global $wgShowHideDivi, $wgOut;
// default values $language = 'text'; $showLineNumbers = false; $showDownloadLink = false; $source = $input; $tabwidth = 4;
foreach ($argv as $key => $value) {
switch ($key) {
case 'lang':
$language = $value;
break;
case 'linenumbers':
$showLineNumbers = true;
break;
case 'tabwidth':
$tabwidth = $value;
break;
case 'download':
$showDownloadLink = true;
break;
case 'fileurl':
$html = $parser->unstrip($parser->recursiveTagParse($value),$parser->mStripState);
$i = preg_match('/<a.*?>(.*?)<\/a>/', $html, $matches);
$url = $matches[1];
//print("URL is '$url'");
#$source = "file_get_contents disabled! Contact your wiki admin with questions.";
$source = file_get_contents($url);
break;
default :
wfDebug( __METHOD__.": Requested '$key ==> $value'\n" );
break;
}
}
if (!defined('GESHI_VERSION')) {
include('geshi/geshi.php'); // include only once or else wiki dies
}
$geshi = new GeSHi($source, $language);
$error = $geshi->error(); // die gracefully if errors found
if ($error) {
return "Code Extension Error: $error";
}
$geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS); // always display line numbers
$geshi->set_tab_width($tabwidth);
$code = $geshi->parse_code();
$code_pieces = preg_split('/\<ol/', $code );
$output = ;
$ol_tag = '<ol';
if (!$showLineNumbers) {
// if not asked to show line numbers, then we should hide them. This is the preferred method
// because this allows for a means of a block of code in the middle of a numbered list
$output .= "<style type='text/css'></style>";
$ol_tag = "<ol class='codelinenumbers'";
}
$output .= $code_pieces[0];
if ($showDownloadLink) {
$output .= "<a href=\"javascript:win3 = window.open(, 'code', 'width=320,height=210,scrollbars=yes');win3.document.writeln('$source');\" style=\"float:right\">Download Code</a>\n";
}
$output .= $ol_tag . $code_pieces[1];
return $output;
} </source>
<translate>