, Copyright 2007. ## LICENSE: You can redistribute this software and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Markup('textarea', 'inline', '/\\(:textarea (.*?):\\)/e', "Keep(''); $MarkupExpr['source'] = 'ZAPMsource($args[0])'; function ZAPMsource($p) { global $pagename; if (substr($p, 0, 1) != "+") $t = ""; else $p = substr($p, 1); if ($p == '') $p = $pagename; if (strpos($p, "#ID")) { $a = "[[" . substr($p, strpos($p, "#ID")) . "]]"; $p = substr($p, 0, strpos($p, "#ID")); } if (!CondAuth($pagename, $HandleAuth['source'])) return; $page = ReadPage($p); $source = $page['text']; if ($a != '') { $source = substr($source, strpos(" $source", $a) - 1); if (strpos(substr($source,5), "[[#ID")) $source = substr($source, 0, strpos(substr($source,5), "[[#ID") + 5); } if ($t != "") return Keep(substr($source, strlen($a))); return Keep(substr("$source$t", strlen($a))); } $MarkupExpr['attr'] = 'ZAPMattr($args[0], $args[1])'; function ZAPMattr($attr, $page) { global $pagename; if ((!CondAuth($pagename, "admin")) && (substr($attr, 0, 6) == "passwd")) return; if (($attr == 'title') || ($attr == 'keywords') || ($attr == 'description') || (substr($attr, 0, 6) == "passwd") ) { if ($page == '') $page = $pagename; $page = ReadPage($page); return $page[$attr]; } return false; } $MarkupExpr['random'] = 'rand($args[0], $args[1])'; $MarkupExpr['server'] = 'ZAPMserver($args[0])'; function ZAPMserver($p) { if ($p == "return") return substr($_SERVER[HTTP_REFERER], strpos($_SERVER[HTTP_REFERER], "?n=") + 3); if ($p == "browser") return $_SERVER[HTTP_USER_AGENT]; if ($p == "secure") return $_SERVER[HTTPS]; if ($p == "ip") return $_SERVER[REMOTE_ADDR]; if ($p == "host") return $_SERVER[SERVER_NAME]; if ($p == "software") return $_SERVER[SERVER_SOFTWARE]; if ($p == "query") return $_SERVER[QUERY_STRING]; return false; } SDV($ZAPmath, "/^[-+*\\/% ()0-9.]+$/"); $MarkupExpr['math'] = 'ZAPMmath($args[0])'; function ZAPMmath($p) { global $ZAPmath; if ($p == '') return; if (!preg_match($ZAPmath, $p)) return; eval("\$r = $p;"); return $r; } $MarkupExpr['wiki'] = 'ZAPMwiki($params)'; SDV($ZAPdirectives, 'table,tableend,cell,cellnr,include,if,pagelist,input,messages,redirect,title'); SDV($ZAPformdirectives, false); function ZAPMwiki($p) { global $ZAPdirectives, $ZAPformdirectives; $c = substr($p, 0, strpos($p, " ")); $p = substr($p, strpos($p, " ")); $pmlist = explode(",", $ZAPdirectives); if (in_array($c, $pmlist)) return stripslashes("(:$c $p:)"); if ((substr($c, 0, 3) == 'zap') && ($ZAPformdirectives == true)) return stripslashes("(:$c $p:)"); return false; } $MarkupExpr['count'] = 'ZAPMcount($args[0], $args[1])'; SDV($ZAPexclude, 'RecentChanges,GroupHeader,GroupFooter,GroupAttributes,SideBar,SideMenu'); function ZAPMcount($g, $x) { global $ZAPexclude, $pagename; if ($g == '') $g = substr($pagename, 0, strpos($pagename, "."));; if ($x != '') $ZAPexclude .= "," . $x; $count = count(ListPages("/^$g\./")); if (substr($ZAPexclude, -3) == "all") return $count; $ex = explode(",", $ZAPexclude); foreach($ex as $exx) { if (PageExists("$g.$exx")) $count = $count - 1; } return $count; } $MarkupExpr['thread'] = 'ZAPMthread($args[0])'; SDV($ZAPthreadstart,'1000'); function ZAPMthread($p) { global $ZAPthreadstart; if ($p == '') $p = $g; $e = $ZAPthreadstart - 1; $gg = explode(",", $p); foreach($gg as $ggg) { foreach(ListPages("/^$ggg\\.\\d/") as $n) { $n = substr($n,strlen($ggg)+1); if (! ereg("^[0-9]+$", $n)) continue; $e = max($e,$n); } } $e = $e + 1; return $e; } $MarkupExpr['captcha'] = 'ZAPMcaptcha($args[0])'; SDV($ZAPcaptcha, ''); function ZAPMcaptcha($p) { global $ZAPcaptcha; if ($ZAPcaptcha != '') return $ZAPcaptcha; if ($p == '') { $rr[0] = 10000; $rr[1] = 99999; } else $rr = explode("|", $p); $rrr = rand($rr[0], $rr[1]); $ZAPcaptcha = $rrr; return $ZAPcaptcha; } $MarkupExpr['list'] = 'ZAPMlist($args[0], $args[1])'; function ZAPMlist($l, $x) { if ($l == '') return; $ll = explode(",", $l); $xx = explode("^", $x); foreach($ll as $lll) $list .= str_replace('{item}', $lll, $xx[0]) . $xx[1]; $list = substr($list, 0, - strlen($xx[1])); return $list; }