<?php
# BlinkenApplet Mediawiki Extension
# An extension to display Blinkenlights scrolltexts on Mediawiki pages.
# by mutante for took (author of BlinkenApplet)
# http://s23.org/wiki/BlinkenApplet
# http://blinkenapplet.sf.net/
# S23 - 2006/06/15
$wgExtensionFunctions[] = "wfBlinkenExtension";
# extension hook callback function from mediawiki
function wfBlinkenExtension() {
global $wgParser;
$wgParser->setHook( "blinken", "renderBlinkenapplet" );
}
# the actual extension function
function renderBlinkenapplet( $input, $argv ) {
global $wgOutputEncoding;
# Config
# set path to applet here
$appletpath="/w/extensions/BlinkenApplet0.71.jar";
# set a mysql user with (select) access to "wikidb" here
$dbuser="wikiuser";
$dbpass="";
# Just in case your MySQL server is not on the same host
$dbhost="localhost";
# Just in case you choose a different database name on Mediawiki install
$dbname="wikidb";
# End Config
# debug level of BlinkenApplet
$debug=1;
$version="BlinkenApplet0.71.jar";
# some default input for testing
# $input="BlinkenApplet by took running on S23 Wiki. It works.";
# filter our mysql escape strings from user input, just to make sure
# $input = mysql_escape_string($input);
# If not too long, set Input Text
if (!is_string($input) || strlen($input)>255) {
$input="no input text or input input text > 255 chars";
}
# Input SPECIALS
case "\$fnord":
# fetch a random fnord from mysql (fnord database doesnt ship with Mediawiki)
$hd = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die ("Unable to connect");
mysql_select_db ("$dbname", $hd) or die ("Unable to select database");
$res = mysql_query("SELECT * from fnord ORDER BY rand() LIMIT 0,1", $hd) or die ("Unable to run query");
while ($row = mysql_fetch_assoc($res))
{
$id = $row["id"];
$fnord = $row["text"];
}
$input = $fnord;
break;
case "\$wikistats":
$hd = mysql_connect("$dbhost", "$dbuser", "$dbpass") or die ("Unable to connect");
mysql_select_db ("$dbname", $hd) or die ("Unable to select database");
$res = mysql_query("SELECT * from site_stats", $hd) or die ("Unable to run query");
while ($row = mysql_fetch_assoc($res))
{
$views = $row["ss_total_views"];
$edits = $row["ss_total_edits"];
$good = $row["ss_good_articles"];
$total = $row["ss_total_pages"];
$users = $row["ss_users"];
$images = $row["ss_images"];
}
$input = "Wiki Site Stats: Views: $views Edits: $edits Good pages: $good Total pages: $total Users: $users Images: $images";
break;
case "\$date":
# show date
$input = `date -u`;
break;
case "\$ddate":
# show discordian date
$input = `ddate`;
break;
case "\$ddate +%.":
# ddate easteregg
$input = `ddate +%.`;
break;
case "\$loadavg":
# show load average
$input = `top -b -n1 -s | grep load | cut -d, -f4,5,6`;
break;
case "\$myIP":
# show User IP
if (getenv(HTTP_X_FORWARDED_FOR)) {
$ip = getenv(HTTP_X_FORWARDED_FOR);
} else {
$ip = getenv(REMOTE_ADDR);
}
$input="Your IP is $ip";
break;
default:
# normal text input
$input=$input;
}
# crypt:<text>
# encrypt input text
# http://www.php.net/crypt
if (substr($input, 0, 6) == "crypt:") {
$input=explode(":",$input);
$input=$input[1];
$input=crypt($input);
$input=substr($input,0, 254);
}
# dict:<dict>
# fetch a dictionary definition
# man dict
if (substr($input, 0, 5) == "dict:") {
$input=explode(":",$input);
$input=$input[1];
# $input=`dict $input | sed s/\'//g | sed s/\"//g | xargs`;
# $input=explode(":",$input);
# $input=$input[1].$input[2];
# $input=addslashes($input);
$input="Dict feature currently disabled for security reasons.";
$input=substr($input,0, 254);
}
# Set Colors
# Background Color
$bgcolor=explode(",",$argv["bgcolor"]);
$bgred=$bgcolor[0];
$bggreen=$bgcolor[1];
$bgblue=$bgcolor[2];
if (!is_numeric($bgred) || $bgred<0 || $bgred>255) {
$bgred="255";
}
if (!is_numeric($bggreen) || $bggreen<0 || $bggreen>255) {
$bggreen="255";
}
if (!is_numeric($bgblue) || $bgblue<0 || $bgblue>255) {
$bgblue="255";
}
$bgcolor="$bgred,$bggreen,$bgblue";
# LampOn Color
$lamponcolor=explode(",",$argv["lamponcolor"]);
$lamponred=$lamponcolor[0];
$lampongreen=$lamponcolor[1];
$lamponblue=$lamponcolor[2];
if (!is_numeric($lamponred) || $lamponred<0 || $lamponred>255) {
$lamponred="0";
}
if (!is_numeric($lampongreen) || $lampongreen<0 || $lampongreen>255) {
$lampongreen="255";
}
if (!is_numeric($lamponblue) || $lamponblue<0 || $lamponblue>255) {
$lamponblue="0";
}
$lamponcolor="$lamponred,$lampongreen,$lamponblue";
# LampOff Color
$lampoffcolor=explode(",",$argv["lampoffcolor"]);
$lampoffred=$lampoffcolor[0];
$lampoffgreen=$lampoffcolor[1];
$lampoffblue=$lampoffcolor[2];
if (!is_numeric($lampoffred) || $lampoffred<0 || $lampoffred>255) {
$lampoffred="0";
}
if (!is_numeric($lampoffgreen) || $lampoffgreen<0 || $lampoffgreen>255) {
$lampoffgreen="0";
}
if (!is_numeric($lampoffblue) || $lampoffblue<0 || $lampoffblue>255) {
$lampoffblue="0";
}
$lampoffcolor="$lampoffred,$lampoffgreen,$lampoffblue";
# Set Font
# Set Font
switch ($argv["font"]) {
case "5pxStd":
$font="5pxStd";
break;
case "8pxStd":
$font="8pxStd";
break;
case "MorseCode":
$font="MorseCode";
break;
default:
$font="5pxStd";
}
# Set Loop
if ($argv["loop"]=="Off" || $argv["loop"]=="off" ) {
$loop="off";
} else {
$loop="on";
}
# Set Width
if (is_numeric($argv["width"]) && $argv["width"]>=0 && $argv["width"] <=800) {
$width=$argv["width"];
} else {
$width=200;
}
# Set Height
if (is_numeric($argv["height"]) && $argv["height"]>=0 && $argv["height"] <=800) {
$height=$argv["height"];
} else {
$height=200;
}
# Set Delay
if (is_numeric($argv["delay"]) && $argv["delay"]>=0 && $argv["delay"] <=100) {
$delay=$argv["delay"];
} else {
$delay=1;
}
# Build Html Output
$output= <<<END
<applet codebase = "." code=blinkenapplet.BlinkenApplet.class
archive="$appletpath" width="$width" height="$height">
<param name="debugLevel" value="$debug">
<param name="lauftext" value="$input">
<param name="lauftext_loop" value="$loop">
<param name="ShowDemo1" value="off">
<param name="ShowDemo2" value="off">
<param name="lauftext_schriftart" value="$font">
<param name="delayFaktor" value="$delay">
<param name="bgColor" value="$bgcolor">
<param name="LampOffColor" value="$lampoffcolor">
<param name="LampOnColor" value="$lamponcolor">
</applet>
END;
# Send it
return $output;
}
?>
Cookies help us deliver our services. By using our services, you agree to our use of cookies.