--- /dev/null
+<?php
+function xhtml_open_tags($s) {
+ // returns array of opened tags in $s
+ $return = array();
+ preg_match_all('~<([^>]+)~', $s, $matches);
+ foreach ($matches[1] as $val) {
+ if ($val{0} == "/") {
+ array_pop($return);
+ } elseif (substr($val, -1) != "/") {
+ $return[] = $val;
+ }
+ }
+ return $return;
+}
+
+page_header("Coverage", (extension_loaded("xdebug") ? "" : "Xdebug has to be enabled."));
+
+if ($_GET["coverage"] === "0") {
+ unset($_SESSION["coverage"]); // disable coverage if it is not available
+ if (extension_loaded("xdebug")) {
+ $_SESSION["coverage"] = array();
+ echo "<p class='message'>Coverage started.</p>\n";
+ }
+} elseif (preg_match('~^(include/)?[-_.a-z0-9]+$~i', $_GET["coverage"])) {
+ // highlight single file
+ $filename = $_GET["coverage"];
+ $cov = $_SESSION["coverage"][realpath($filename)];
+ $file = explode("<br />", highlight_file($filename, true));
+ unset($prev_color);
+ $s = "";
+ for ($l=0; $l <= count($file); $l++) {
+ $line = $file[$l];
+ $color = "#C0FFC0"; // tested
+ switch ($cov[$l+1]) {
+ case -1: $color = "#FFC0C0"; break; // untested
+ case -2: $color = "Silver"; break; // dead code
+ case null: $color = ""; break; // not executable
+ }
+ if (!isset($prev_color)) {
+ $prev_color = $color;
+ }
+ if ($prev_color != $color || !isset($line)) {
+ echo "<div" . ($prev_color ? " style='background-color: $prev_color;'" : "") . ">" . $s;
+ $open_tags = xhtml_open_tags($s);
+ foreach (array_reverse($open_tags) as $tag) {
+ echo "</" . preg_replace('~ .*~', '', $tag) . ">";
+ }
+ echo "</div>\n";
+ $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
+ $prev_color = $color;
+ }
+ $s .= "$line<br />\n";
+ }
+} else {
+ // display list of files
+ echo "<table cellspacing='0'>\n";
+ foreach (array_merge(glob("*.php"), glob("include/*.php")) as $filename) {
+ $cov = $_SESSION["coverage"][realpath($filename)];
+ $ratio = 0;
+ if (isset($cov)) {
+ $values = array_count_values($cov);
+ $ratio = round(100 - 100 * $values[-1] / count($cov));
+ }
+ echo "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><th><a href=\"" . htmlspecialchars($SELF) . "coverage=$filename\">$filename</a></th></tr>\n";
+ }
+ echo "</table>\n";
+ echo '<p><a href="' . htmlspecialchars($SELF) . 'coverage=0">Start new coverage</a></p>' . "\n";
+}
+page_footer("auth");
+exit;
}
xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
register_shutdown_function('save_coverage');
- if ($_GET["start"]) {
- // included from ../coverage.php
- return;
- }
}
// disable magic quotes to be able to use database escaping function
if (get_magic_quotes_gpc()) {
include "./include/lang.inc.php";
include "./lang/$LANG.inc.php";
include "./include/design.inc.php";
+if (isset($_GET["coverage"])) {
+ include "./coverage.inc.php";
+}
include "./include/pdo.inc.php";
include "./include/mysql.inc.php";
include "./include/auth.inc.php";
$filename = "adminer" . ($_COOKIE["adminer_lang"] ? "-$_COOKIE[adminer_lang]" : "") . ".php";
$file = file_get_contents(dirname(__FILE__) . "/adminer/index.php");
+$file = preg_replace('(' . str_replace(' ', '\\s*', preg_quote(' if (isset($_GET["coverage"])) { include "./coverage.inc.php"; }')) . ')', '', $file);
$file = preg_replace_callback('~\\b(include|require) "([^"]*)";~', 'put_file', $file);
$file = preg_replace("~if \\(isset\\(\\\$_SESSION\\[\"coverage.*\n}\n| && !isset\\(\\\$_SESSION\\[\"coverage\"\\]\\)~sU", '', $file);
if ($_COOKIE["adminer_lang"]) {
+++ /dev/null
-<?php
-error_reporting(E_ALL & ~E_NOTICE);
-if (!ini_get("session.auto_start")) {
- session_name("adminer_sid");
- session_set_cookie_params(ini_get("session.cookie_lifetime"), preg_replace('~_coverage\\.php(\\?.*)?$~', '', $_SERVER["REQUEST_URI"]));
- session_start();
-}
-
-function xhtml_open_tags($s) {
- // returns array of opened tags in $s
- $return = array();
- preg_match_all('~<([^>]+)~', $s, $matches);
- foreach ($matches[1] as $val) {
- if ($val{0} == "/") {
- array_pop($return);
- } elseif (substr($val, -1) != "/") {
- $return[] = $val;
- }
- }
- return $return;
-}
-
-if (!extension_loaded("xdebug")) {
- echo "<p>Xdebug has to be enabled.</p>\n";
-}
-
-if ($_GET["start"]) {
- unset($_SESSION["coverage"]);
- xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
- $_SESSION["coverage"] = array();
- include "./adminer/index.php";
- header("Location: .");
- exit;
-}
-if (preg_match('~^(include/)?[-_.a-z0-9]+$~i', $_GET["filename"])) {
- // highlight single file
- $filename = "adminer/$_GET[filename]";
- $cov = $_SESSION["coverage"][realpath($filename)];
- $file = explode("<br />", highlight_file($filename, true));
- unset($prev_color);
- $s = "";
- for ($l=0; $l <= count($file); $l++) {
- $line = $file[$l];
- $color = "#C0FFC0"; // tested
- switch ($cov[$l+1]) {
- case -1: $color = "#FFC0C0"; break; // untested
- case -2: $color = "Silver"; break; // dead code
- case null: $color = ""; break; // not executable
- }
- if (!isset($prev_color)) {
- $prev_color = $color;
- }
- if ($prev_color != $color || !isset($line)) {
- echo "<div" . ($prev_color ? " style='background-color: $prev_color;'" : "") . ">" . $s;
- $open_tags = xhtml_open_tags($s);
- foreach (array_reverse($open_tags) as $tag) {
- echo "</" . preg_replace('~ .*~', '', $tag) . ">";
- }
- echo "</div>\n";
- $s = ($open_tags ? "<" . implode("><", $open_tags) . ">" : "");
- $prev_color = $color;
- }
- $s .= "$line<br />\n";
- }
-} else {
- // display list of files
- echo "<table border='0' cellspacing='0' cellpadding='1'>\n";
- foreach (array_merge(glob("adminer/*.php"), glob("adminer/include/*.php")) as $filename) {
- $cov = $_SESSION["coverage"][realpath($filename)];
- $filename = substr($filename, 8);
- $ratio = 0;
- if (isset($cov)) {
- $values = array_count_values($cov);
- $ratio = round(100 - 100 * $values[-1] / count($cov));
- }
- echo "<tr><td align='right' style='background-color: " . ($ratio < 50 ? "Red" : ($ratio < 75 ? "#FFEA20" : "#A7FC9D")) . ";'>$ratio%</td><td><a href='coverage.php?filename=$filename'>$filename</a></td></tr>\n";
- }
- echo "</table>\n";
- echo "<p><a href='coverage.php?start=1'>Start new coverage</a> (requires <a href='http://www.xdebug.org'>Xdebug</a>)</p>\n";
-}
</thead><tbody>
<tr>
<td>open</td>
- <td>/adminer/coverage.php?start=1</td>
+ <td>/adminer/adminer/?coverage=0</td>
<td></td>
</tr>
<tr>
</tr>
<tr>
<td>open</td>
- <td>/adminer/coverage.php</td>
+ <td>/adminer/adminer/?coverage=</td>
<td></td>
</tr>