Eventscripts Optimiser
\n"; $content = $_POST["script"]; $lines = explode("\r\n", $content); $linecount = 0; $waserror = 0; $lbrack = 0; $rbrack = 0; $inblock = 0; $temp = 0; $blockerror = 0; $firstblock = 1; $firstdoblock = 1; $error[0] = 0; $error[1] = 0; $error[2] = 0; $error[3] = 0; $error[4] = 0; $error[5] = 0; $error[6] = 0; $error[7] = 0; $error[8] = 0; echo "

\n"; if ($_POST["scriptname"]) { $scriptname = $_POST["scriptname"]; preg_match("/ *(([^ \/]+\/)?[^ \/]+)/", $scriptname, $regex); $scriptname = $regex[1]; } foreach ($lines as $line) { $linecount = $linecount + 1; $actualline = $line; $linestrip = trim($line); $whitespace = strspn($line, " "); $whitespacelist[$linecount] = $whitespace; if (strstr($line, "//")) { $line = explode("//", $line); $line = $line[0]; } $line = strtolower(trim($line)); if ($line) { $regex = 0; $regex = preg_match("/^(block|event) ./", $line); if ($regex) { if ($blockerror == 1) { if ($_POST["codeoutblock"]) { echo "
\n"; if ($outblockline2) { echo "> [Lines ".$outblockline." - ".$outblockline2."] Code outside of block
\n"; } else { echo "> [Line ".$outblockline."] Code outside of block
\n"; } $waserror = 1; $error[4] = $error[4] + 1; } } if ($rbrack != $lbrack) { if ($_POST["uneqcurl"]) { echo "
\n"; echo "> Unequal number of curly brackets in block
\n"; echo "
\n"; echo "{ = ".$lbrack."
\n"; echo "} = ".$rbrack."
\n"; $waserror = 1; $error[5] = $error[5] + 1; } } $blockname = ereg_replace("^(block|event) ", "", $line); if (preg_match("/^block /", $line)) { $actualblocklist[] = $blockname; } $inblock = 1; $lbrack = 0; $rbrack = 0; $blockerror = 0; if ($waserror) { echo "
\n"; $waserror = 0; } echo ">>> [Line ".$linecount."] ".$line."
\n"; $fixblocks[$linecount] = "1"; if ($firstblock) { $blocklist[] = $blockname; $firstblock = 0; } else { if (in_array($blockname, $blocklist)) { if ($_POST["blockname"]) { echo "
\n"; echo "> Block name used twice
\n"; echo "
\n"; echo "".$linestrip."
\n"; $waserror = 1; $error[6] = $error[6] + 1; } } else { $blocklist[] = $blockname; } } } else if ($inblock == 0) { if ($blockerror == 0) { $regex = 1; $blockerror = 1; $outblockline = $linecount; $outblockline2 = 0; } else { $outblockline2 = $linecount; } } if ($line == "{") { $lbrack = $lbrack + 1; } else if ($line == "}") { $rbrack = $rbrack + 1; } if ($regex != 1) { if ($rbrack == $lbrack) { $inblock = 0; } else { $linenq = $line; if (strstr($linenq, '"')) { if ((substr_count($line, '"') % 2) == 1) { if ($_POST["uneqqu"]) { echo "
\n"; echo "> [Line ".$linecount."] Uneven number of quote marks
\n"; echo "
\n"; echo "".$linestrip."
\n"; echo "".$linestrip.'"
'; echo "\n"; $waserror = 1; $line = $line.'"'; $error[3] = $error[3] + 1; } $fixbrack[$linecount] = "1"; $linenq = $linenq.'"'; } while (strstr($linenq, '"')) { $linenq = ereg_replace('"[^"]*"', "", $linenq); } } if (substr_count($linenq, "(") != substr_count($linenq, ")")) { if ($_POST["uneqbrac"]) { echo "
\n"; echo "> [Line ".$linecount."] Uneven number of brackets
\n"; echo "
\n"; echo " ( = ".substr_count($linenq, "(")."
\n"; echo " ) = ".substr_count($linenq, ")")."
\n"; $waserror = 1; $error[2] = $error[2] + 1; } } if (preg_match("/.*(\(| )(server|event)_var\(/", $linenq)) { $temp = 0; if (preg_match("/.*(\(| )event_var\(/", $linenq)) { $temp = 1; } if (strpos($linenq, "event_var(") < strpos($linenq, "event_var(")) { $temp2 = "event_var("; } else { $temp2 = "server_var("; } $explode = explode($temp2, $linenq); if (preg_match("/.* (es |exp |es_[^x]|if( |\()|else |esnq )/", " ".$explode[0])) { $temp = 0; } else { $temp = 1; } if ($temp) { if (preg_match("/^es_xnq/", $line)) { $newline = substr_replace($linestrip, "es", 0, 4); } else if (preg_match("/^es_x(else|if)/", $line)) { $newline = substr_replace($linestrip, "", 0, 4); } else if (preg_match("/^es_x/", $line)) { $newline = substr_replace($linestrip, "es_", 0, 4); } else { $newline = "es ".$linestrip; } if ($_POST["expneeded"]) { echo "
\n"; echo "> [Line ".$linecount."] Expansion needed
\n"; echo "
\n"; echo "".$linestrip."
\n"; echo "".$newline."
\n"; $line = $newline; $waserror = 1; $error[0] = $error[0] + 1; } $fixneedexp[$linecount] = $newline; } } else if (preg_match("/^(es |es_[^x]|if( |\()|esnq )/", $line)) { if (preg_match("/^es_/", $line)) { $newline = substr_replace($linestrip, "x", 3, 0); } else if (preg_match("/^es /", $line)) { $newline = substr_replace($linestrip, "", 0, 3); } else if (preg_match("/^if/", $line)) { $newline = "es_x".$linestrip; } else if (preg_match("/^esnq/", $line)) { $newline = substr_replace($linestrip, "_x", 2, 0); } if ($_POST["expunec"]) { echo "
\n"; echo "> [Line ".$linecount."] Unecessary expansion
\n"; echo "
\n"; echo "".$linestrip."
\n"; echo "".$newline."
\n"; $line = $newline; $waserror = 1; $error[1] = $error[1] + 1; } $fixexpunec[$linecount] = $newline; } if (preg_match("/^es es_x/", $line)) { if (preg_match("/^es es_x(if|else)/", $line)) { $newline = substr_replace($linestrip, "", 0, 7); } else if (preg_match("/^es es_xnq/", $line)) { $newline = substr_replace($linestrip, "_x", 2, 5); } else { $newline = substr_replace($linestrip, "es_", 0, 7); } if ($_POST["esx"]) { echo "
\n"; echo "> [Line ".$linecount."] Use of 'es es_x'
\n"; echo "
\n"; echo "".$linestrip."
\n"; echo "".$newline."
\n"; $line = $newline; $waserror = 1; $error[9] = $error[9] + 1; } $fixesx[$linecount] = $newline; } if ($scriptname) { if (preg_match("/.*es_x?doblock ".preg_quote($scriptname, "/").'\/([^ "\/]+) /', $line, $regex)) { if ($doblockline[$regex[1]]) { $doblockline[$regex[1]] = $doblockline[$regex[1]].", ".$linecount; } else { $doblockline[$regex[1]] = $linecount; } if ($firstdoblock) { $doblocklist[] = $regex[1]; $firstdoblock = 0; } else if (!in_array($regex[1], $doblocklist)) { $doblocklist[] = $regex[1]; } } } } } } if ($waserror) { $error[8] = $error[8] + 1; } } if ($blockerror == 1) { if ($_POST["codeoutblock"]) { echo "
\n"; if ($outblockline2) { echo "> [Lines ".$outblockline." - ".$outblockline2."] Code outside of block
\n"; } else { echo "> [Line ".$outblockline."] Code outside of block
\n"; } $error[4] = $error[4] + 1; $waserror = 1; } } if ($rbrack != $lbrack) { if ($_POST["uneqcurl"]) { echo "
\n"; echo "> Unequal number of curly brackets in block
\n"; echo "
\n"; echo "{ = ".$lbrack."
\n"; echo "} = ".$rbrack."
\n"; $waserror = 1; $error[5] = $error[5] + 1; } } if ($waserror) { $error[8] = $error[8] + 1; } if ($actualblocklist) { if ($doblocklist) { $temp = 1; foreach ($doblocklist as $blockname) { if(!in_array($blockname, $actualblocklist)) { if ($_POST["blockexist"]) { if ($temp) { echo "
\n"; echo "> None existent block(s) referenced
\n"; echo "
\n"; $temp = 0; } if (preg_match("/.*,/", $doblockline[$blockname])) { echo " block ".$blockname." [Lines ".$doblockline[$blockname]."]
\n"; } else { echo " block ".$blockname." [Line ".$doblockline[$blockname]."]
\n"; } $error[7] = $error[7] + 1; } } } } } echo '

'; echo "Statistics
\n"; echo "
\n"; echo "Lines: ".$linecount."
\n"; echo "
\n"; if ($error[0]) { echo "Needed expansion: ".$error[0]."
\n"; } if ($error[1]) { echo "Unnecessary expansion: ".$error[1]."
\n"; } if ($error[2]) { echo "Unequal Brackets: ".$error[2]."
\n"; } if ($error[3]) { echo "Unequal Quote Marks: ".$error[3]."
\n"; } if ($error[4]) { echo "Code outside blocks: ".$error[4]."
\n"; } if ($error[5]) { echo "Unequal Curly Brackets in block: ".$error[5]."
\n"; } if ($error[6]) { echo "Blocks with same name: ".$error[6]."
\n"; } if ($error[7]) { echo "Referenced non existent blocks: ".$error[7]."
\n"; } if ($error[9]) { echo "Use of es es_x: ".$error[9]."
\n"; } $totalerrors = ($error[0] + $error[1] + $error[2] + $error[3] + $error[4] + $error[5] + $error[6] + $error[7] + $error[9]); if ($totalerrors) { echo "
\n"; echo "Total errors: ".$totalerrors.""; } else { echo "Total errors: 0"; } echo "


\n"; $temp = 0; echo "
"; if ($error[0]) { echo " Needed expansion
\n"; $temp = 1; $_SESSION["fixneedexp"] = $fixneedexp; } if ($error[1]) { echo " Unnecessary expansion
\n"; $temp = 1; $_SESSION["fixexpunec"] = $fixexpunec; } if ($error[3]) { echo " Unequal Quote Marks
\n"; $temp = 1; $_SESSION["fixbrack"] = $fixbrack; } if ($error[4]) { echo " Code outside blocks
\n"; $temp = 1; } if ($error[5]) { echo " Unequal Curly Brackets in block
\n"; $temp = 1; } if ($error[9]) { echo " Use of 'es es_x'
\n"; $temp = 1; $_SESSION["fixesx"] = $fixesx; } if ($temp) { $_SESSION["whitespacelist"] = $whitespacelist; $_SESSION["fixblocks"] = $fixblocks; $_SESSION["lines"] = $lines; echo "
\n"; echo " Indent code correctly
\n"; echo " Tabs
\n Spaces
\n"; echo "
\n"; echo "
"; } echo "

\n"; ?>