IfPageExists.php
From Knot Atlas
Jump to navigationJump to search
This is now deprecated, replaced by mediawiki's ParserFunction extension, in particular the parser function #ifexist:
<?php
# Example WikiMedia extension
# with WikiMedia's extension mechanism it is possible to define
# new tags of the form
# <TAGNAME> some text </TAGNAME>
# the function registered by the extension gets the text between the
# tags as input and can transform it into arbitrary HTML code.
# Note: The output is not interpreted as WikiText but directly
# included in the HTML output. So Wiki markup is not supported.
# To activate the extension, include it from your LocalSettings.php
# with: include("extensions/YourExtensionName.php");
$wgExtensionFunctions[] = "wfIfPageExistsExtension";
function wfIfPageExistsExtension() {
global $wgParser;
# register the extension with the WikiText parser
# the first parameter is the name of the new tag.
# In this case it defines the tag <example> ... </example>
# the second parameter is the callback function for
# processing the text between the tags
$wgParser->setHook( "ifpageexists", "ifPageExists" );
}
# The callback function for converting the input text to HTML output
function ifPageExists( $input ) {
global $wgTitle;
# first, let's replace {{PAGENAME}} wherever it appears.
$input = str_replace("{{PAGENAME}}", $wgTitle->getText(), $input);
# let's try to extract a transclusion
if(ereg ("\{\{([^|}]*)", $input, $regs)) {
# okay, we've found a likely looking target.
$targetpage = $regs[1];
# now ask the database if the page exists
$article = & new Article( Title::newFromText($targetpage) );
$content = $article->getContent( false );
if( $content == "(There is currently no text in this page)" ) return "";
if( $content == "" ) return "";
}
global $wgParser, $wgUser;
$parserOptions = ParserOptions::newFromUser( $wgUser );
$parser = & new Parser();
$output = & $parser->parse($input, $wgTitle, $parserOptions);
return $output->getText();
}
?>