22.07.2011, 21:04
Du studierst Informatik, oder? Ich glaub ich geb dir das ganze Teil und du machst es fertig, weil ich mach nur immer wieder Probleme draus ^^
Also das ist es bis jetzt
Code:
<?php
$plugins->add_hook("parse_message", "alglinker_run");
function alglinker_info()
{
return array(
"name" => "Algorithmus-Verlinker",
"description" => "Verlinkt Algorithmen mithilfe von [alg]- oder [alg=size]-Tags zum cube.garron.us Simulator",
"website" => "http://www.speedcube.de",
"author" => "Felk",
"authorsite" => "http://www.speedcube.de",
"version" => "1.0",
"guid" => "795e4538050784720a1196a8b6e8065f", // Das ist die guid vom Spoiler-Plugin. Ich habs einfach mal so gelassen
"compatibility" => "16*"
);
}
function alglinker_activate()
{
}
function alglinker_deactivate()
{
}
function alglinker_run($message)
{
// Assign pattern and replace values.
//$pattern = array("#\[spoiler=(?:"|\"|')?(.*?)[\"']?(?:"|\"|')?\](.*?)\[\/spoiler\](\r\n?|\n?)#si", "#\[spoiler\](.*?)\[\/spoiler\](\r\n?|\n?)#si");
$move = "\b[UDFBLR]('|2|\b)";
$pattern = array(
"#\[alg=([2-7]{1})\](.*?)\[\/alg\]#si",
"#\[alg\](.*?)\[\/alg\]#si",
//"#(?<!U|U'|U2|D|D'|D2|F|F'|F2|B|B'|B2|R|R'|R2|L|L'|L2|u|u'|u2|d|d'|d2|f|f'|f2|b|b'|b2|r|r'|r2|l|l'|l2|Uw|Uw'|Uw2|Dw|Dw'|Dw2|Fw|Fw'|Fw2|Bw|Bw'|Bw2|Rw|Rw'|Rw2|Lw|Lw'|Lw2|x|y|z|x'|y'|z'|x2|y2|z2)(\x20|^)(((((F|B|R|L|U|D)(w?))|(f|b|r|l|u|d|x|y|z))('|2){0,1}(\x20|$)){3,})(?!U|U'|U2|D|D'|D2|F|F'|F2|B|B'|B2|R|R'|R2|L|L'|L2|u|u'|u2|d|d'|d2|f|f'|f2|b|b'|b2|r|r'|r2|l|l'|l2|Uw|Uw'|Uw2|Dw|Dw'|Dw2|Fw|Fw'|Fw2|Bw|Bw'|Bw2|Rw|Rw'|Rw2|Lw|Lw'|Lw2|x|y|z|x'|y'|z'|x2|y2|z2)#"
//"#((\b[UDFBLR][w]?[']?[2]?( |$)){3,})#mi"
"#($move( $move){2,})#i"
);
$replace = array(
"<a href=\"http://alg.garron.us/?alg=$2&animtype=solve&cube=$1x$1x$1\" target=\"_blank\">$2</a>",
"<a href=\"http://alg.garron.us/?alg=$1&animtype=solve\" target=\"_blank\">$1</a>",
"<a href=\"http://alg.garron.us/?alg=$1&animtype=solve\" target=\"_blank\">$1</a>"
);
//$replace = array("<div><div class=\"spoiler_header\">$1 <a href=\"javascript:void(0);\" onclick=\"javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='<button>Ausklappen</button>';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='<button>Einklappen</button>';}\"><button>Ausklappen</button></a></div><div class=\"spoiler_body\" style=\"display: none;\">$2</div></div>", "<div><div class=\"spoiler_header\">Spoiler <a href=\"javascript:void(0);\" onclick=\"javascript:if(parentNode.parentNode.getElementsByTagName('div')[1].style.display=='block'){parentNode.parentNode.getElementsByTagName('div')[1].style.display='none';this.innerHTML='<button>Ausklappen</button>';}else {parentNode.parentNode.getElementsByTagName('div')[1].style.display='block';this.innerHTML='<button>Einklappen</button>';}\"><button>Ausklappen</button></a></div><div class=\"spoiler_body\" style=\"display: none;\">$1</div></div>");
$message = preg_replace($pattern, $replace, $message);
/*while(preg_match($pattern[0], $message) or preg_match($pattern[1], $message) or preg_match($pattern[2], $message))
{
$message = preg_replace($pattern, $replace, $message);
}*/
// Funktioniert nicht, geht aber auch ohne.
//$message = preg_replace("#(http://alg\.garron\.us/\?alg=)( )(\"|&)#", "$1_", $message);
//$message = preg_replace("#(http://alg\.garron\.us/\?alg=)(')(\"|&)#", "$2-", $message);
return $message;
}
?>