rendered paste body<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ZAAP</title>
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js" type="text/javascript"></script>
<script src="js/unittest.js" type="text/javascript"></script>
<script src="js/tooltip-v0.1.js" type="text/javascript"></script>
<script language="JavaScript">
// check all checkboxes
function checkAll(field) {
for (i = 0; i < field.length; i++) {
field[i].checked = true;
}
}
// uncheck all checkboxes
function uncheckAll(field) {
for (i = 0; i < field.length; i++) {
field[i].checked = false;
}
}
</script>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
<?php
session_start();
require "charts.php";
require "functions.php"; // addline(), deletecookie()
require "dbinfo.php";
$defaultcolors = array("",
"5c90b4","ffaa60","6bb06b","d56366","ab8cc7","d5b36a","9ad56a","94d5c3","c78cc6","94c3d5",
"5c90b4","ffaa60","6bb06b","d56366","ab8cc7","d5b36a","9ad56a","94d5c3","c78cc6","94c3d5",
"5c90b4","ffaa60","6bb06b","d56366","ab8cc7","d5b36a","9ad56a","94d5c3","c78cc6","94c3d5");
//////////////////////////////////////////////////// MUST DO FIRST: LINES AND PAGE OPTIONS
// debug options
//if (isset($_GET['debug']) && $_GET['debug'] == "on") {
ini_set('display_errors', 1);
ini_set('error_reporting', 2048);
//}
// if there are no lines, make a line to start fresh
if (!isset($_SESSION['lines'])) {
addline(1,"Line 1",$defaultcolors[1]);
header("Location: ".$_SERVER['REQUEST_URI']);
exit();
}
// check for graphnav
if (isset($_GET['graphnav'])) {
$_SESSION['graphnav'] = $_GET['graphnav'];
} elseif (!isset($_SESSION['graphnav'])) {
$_SESSION['graphnav'] = "1year";
}
// check for showline and showsection
if (isset($_GET['line'])) {
$_SESSION['showline'] = $_GET['line'];
if (isset($_GET['section'])) {
$_SESSION['showsection'] = $_GET['section'];
} elseif (isset($_SESSION['showsection'])) {
unset($_SESSION['showsection']);
}
} elseif (!isset($_SESSION['showline'])) {
$_SESSION['showline'] = $_SESSION['lines'][0]['id'];
}
// should we show or hide details sections by default
if (isset($_GET['collapse'])) {
$_SESSION['collapse'] = $_GET['collapse'];
} elseif (!isset($_SESSION['collapse'])) {
$_SESSION['collapse'] = 1; // default collapse sections
}
// figure out times of displaying
require "timecalc.php";
// hits/uniques/bandwidth
if (isset($_POST['measure'])) {
$_SESSION['measure'] = $_POST['view'];
} elseif (!isset($_SESSION['measure'])) {
$_SESSION['measure'] = "hits"; // default measure is hits
}
//////////////////////////////////////////////////// LINES
// adding a line
if (isset($_POST['addline'])) {
$id = $_POST['id'];
$label = $_POST['label'];
$color = $_POST['color'];
addline($id,$label,$color);
header("Location: /?line=$id");
exit();
}
// deleting a line
if (isset($_GET['deleteline'])) {
$id = $_GET['deleteline'];
deleteline($id);
header("Location: /");
exit();
}
// clear lines button
if (isset($_GET['clear'])) {
if ($_GET['clear'] == "lines") {
foreach($_SESSION['lines'] as $line) {
deleteline($line['id']);
}
}
addline(1,"Line 1",$defaultcolors[1]);
header("Location: /");
exit();
}
// updating which lines are visible
if (isset($_POST['visibilities'])) {
// make all lines invisible
foreach($_SESSION['lines'] as $line) {
$id = $line['id'];
$_SESSION['lines'][$id]['visible'] = 0;
}
// remake cookies
foreach ($_POST as $postkey => $postvalue) {
$e = explode("|", $postkey);
if ($e[0] == "line") {
$id = $exploded[1];
$_SESSION['lines'][$id]['visible'] = 1;
}
}
header("Location: /");
exit();
}
//////////////////////////////////////////////////// DETAIL FILTERING
// filtering results for a specific line
if (isset($_POST['filterdetails'])) {
$lineid = $_POST['line'];
$sectionid = $_POST['section'];
if ($_POST['action'] == "Update Line") {
// set new filtering options
foreach ($_POST as $postkey => $postvalue) {
$e = explode("|", $postkey);
if ($e[0] == "checkbox") {
$checkboxid = $e[1];
$checked = 0; // unchecked until proven guilty
foreach ($_POST as $postkey2 => $postvalue2) {
$e2 = explode("|", $postkey2);
if (($e2[0] == "filter") && ($e2[1] == $checkboxid)) {
$checked = 1;
}
}
$_SESSION['filters'][$lineid][$sectionid][$checkboxid]['checked'] = $checked;
}
}
}
header("Location: /?line=$lineid§ion=$sectionid");
exit();
}
//////////////////////////////////////////////////// GET STUFF FROM DATABASE INTO ARRAYS
// some variables for this section
$tablewidth_detailbar = 785;
$tablewidth_details = 600;
$tablewidth_details_withtext = 830;
$detailbarmax = 20; // max number of pieces in detailbar
$querylimit = 20; // limit of results coming from details queries
// populate data arrays for each section
$sectionnames = array("Browser","Result","Entry Page","Referrer","Page","Platform");
$sectionids = array("browser","result","entrypage","referrer","page","platform");
$queries = array(
"SELECT BrowserString as name, Count(*) as value FROM Traffic ",
"SELECT Result as name, Count(*) as value FROM Traffic ",
"SELECT Path as name, Count(*) as value FROM Traffic ", // entrypage
"SELECT Referrer as name, Count(*) as value FROM Traffic ",
"SELECT Path as name, Count(*) as value FROM Traffic ",
"SELECT Platform as name, Count(*) as value FROM Traffic "
);
$queries2 = array(
" GROUP BY BrowserString ORDER BY value DESC ",
" GROUP BY Result ORDER BY value DESC ",
" GROUP BY Path ORDER BY value DESC ", // entrypage
" GROUP BY Referrer ORDER BY value DESC ",
" GROUP BY Path ORDER BY value DESC ",
" GROUP BY Platform ORDER BY value DESC "
);
// get data into arrays for each item of each line
foreach($_SESSION['lines'] as $line) {
$lineid = $line['id'];
// get data for each section
$queryid = 0;
foreach ($sectionids as $sectionid) {
$query = $queries[$queryid];
$query2 = $queries2[$queryid]."LIMIT ".$querylimit;
$querymiddle = ""; // WHERE and AND section
// apply filtering
if (isset($_SESSION['filters'][$lineid])) {
foreach ($_SESSION['filters'][$lineid] as $filtersectionid => $filtersectionid_array) {
if ($filtersectionid != $sectionid) {
foreach ($filtersectionid_array as $filteritem) {
$filteritemid = $filteritem['id'];
$filteritemname = $filteritem['name'];
$filteritemvalue = $filteritem['value'];
// get db column name for this item
if ($filtersectionid == "browser") {
$column = "BrowserString";
} elseif ($filtersectionid == "result") {
$column = "Result";
} elseif ($filtersectionid == "entrypage") {
$column = "Path";
} elseif ($filtersectionid == "referrer") {
$column = "Referrer";
} elseif ($filtersectionid == "page") {
$column = "Path";
} elseif ($filtersectionid == "platform") {
$column = "Platform";
}
// where or and depending
if ($strlen($querymiddle) == 0) {
$querymiddle .= "WHERE";
} else {
$querymiddle .= "AND";
}
$querymiddle .= " ($column != '".mysql_escape_string($filteritemname)."') ";
}
}
}
}
$query = $query . $querymiddle . $query2;
//echo "<br><br>".$query."<br><br>";
$result = $db->query($query);
if (DB::isError($result)){
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] = null; // set this section as null if there are no items in it
} else {
// clear results
unset($_SESSION['lines'][$lineid]['filters'][$sectionid]['results']);
// refill results
$x = 0;
while ($row = $result->fetchRow()) {
$filteritemname = $row['name'];
$filteritemid = $x;
$filteritemvalue = $row['value'];
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['name'] = $name;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['value'] = $value;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['id'] = $x;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['checked'] = 1;
$x++;
}
}
$queryid++;
}
// process all the data and calculations for displaying
foreach ($sectionids as $sectionid) {
// calculate all this stuff only if there are even results
if ($_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] != null) {
$_SESSION['lines'][$lineid]['filters'][$sectionid]['detailsratio'] = $tablewidth_details / $_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][0]['value'];
// calculate percents for bars
$_SESSION['lines'][$lineid]['filters'][$sectionid]['total'] = 0;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['total_detailbar'] = 0;
$x = 0;
foreach ($_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] as $result) {
$value = $result['value'];
$_SESSION['lines'][$lineid]['filters'][$sectionid]['total'] += $value;
$x++;
if ($x < $detailbarmax) {
$_SESSION['lines'][$lineid]['filters'][$sectionid]['total_detailbar'] += $value;
} else {
break;
}
}
// get percents and pixel widths
$total = $_SESSION['lines'][$lineid]['filters'][$sectionid]['total'];
$total_detailbar = $_SESSION['lines'][$lineid]['filters'][$sectionid]['total_detailbar'];
$detailsratio = $_SESSION['lines'][$lineid]['filters'][$sectionid]['detailsratio'];
$x = 0;
foreach ($_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] as $result) {
// get some variables
$value = $result['value'];
// now the calculations
$percent = $value / $total;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['percent'] = $percent;
$percent_detailbar = $value / $total_detailbar;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['percent_detailbar'] = $percent_detailbar;
$width_detailbar = $percent_detailbar * $tablewidth_detailbar;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['width_detailbar'] = $width_detailbar;
$width_details = $value * $detailsratio;
$_SESSION['lines'][$lineid]['filters'][$sectionid]['results'][$x]['width_details'] = $width_details;
$x++;
}
}
}
}
?>
</head>
<body>
<div id="wrap">
<div id="header">
<h1><a href="index.php">ZAAP</a></h1>
</div>
<div id="main">
<!-- first level -->
<div id="measure">
<p>
<form enctype="multipart/form-data" method="post" action="/">
<h2>Measure:</h2> <input type="hidden" name="measure" value="1" />
<select name="view">
<?php
$measurenames = array("Hits","Uniques","Bandwidth");
$measureids = array("hits","uniques","bandwidth");
$x = 0;
foreach ($measurenames as $measurename) {
echo "<option label=\"$measurename\" value=\"$measureids[$x]\" ";
if ($measure == $measureids[$x]) {
echo "SELECTED";
}
echo ">$measurename</option>";
$x++;
}
?>
</select>
<input type="submit" name="action" value="Show"/>
</form>
</p>
</div>
<div id="graph">
<div id="graphnav">
<ul id="navlist">
<?php
$graphnavtabs = array("custom","1day","1week","1month","6months","1year");
$graphnavtabsnames = array("Custom","1 Day","1 Week","1 Month","6 Months","1 Year");
$x = 0;
foreach ($graphnavtabs as $tab) {
echo "<li><a href=\"/?graphnav=$tab\"";
if($graphnav == $tab) {
echo "class=\"current\"";
}
echo ">$graphnavtabsnames[$x]</a></li>";
$x++;
}
?>
</ul>
</div>
<div id="graphgraph">
<?php echo InsertChart( "charts.swf", "charts_library", "graph.php?graphnav=$graphnav&endtime=$endtime&measure=$measure", 770, 400, "ffffff", true ); ?>
</div>
<div id="graphtimeframe">
<p class="left">
< 12/2/05
</p>
<p class="right">
11/30/06 >
</p>
</div>
</div>
<div id="linelist">
<form enctype="multipart/form-data" method="post" action="/">
<input type="hidden" name="visibilities" value="1" />
<div id="visiblelines">
<h3>Visible Lines</h3>
<div class="pad">
<?php
foreach ($_SESSION['lines'] as $line) {
$color = $line['color'];
$label = $line['label'];
$id = $line['id'];
$visible = $line['visible'];
echo "<input type=\"checkbox\" name=\"line|$id\" ";
if ($visible == "1") {
echo "CHECKED";
}
echo " background=#$color /><span style=\"color:#$color;\">$label</span><br/>";
}
?>
</div>
</div>
<div id="updatevisibility">
<p><input type="submit" name="action" value="Update Visibilities"/></p>
</div>
</form>
<div id="addaline">
<h3>Add a Line</h3>
<div class="pad">
<?php
$counter = $_SESSION['counter'];
?>
<table cellpadding="0" cellspacing="0" border="0">
<form enctype="multipart/form-data" method="post" action="/">
<input type="hidden" name="addline" value="1" />
<input type="hidden" name="id" value="<?php echo $counter; ?>" />
<tr>
<td style="padding-right: 5px;">Label:</td>
<td><input type="text" name="label" size="12" value="Line <?php echo $counter; ?>" /></td>
</tr>
<tr>
<td style="padding-right: 5px;">Color:</td>
<td><input type="text" name="color" size="12" value="<?php echo $defaultcolors[$counter]; ?>" /></td>
</tr>
<tr>
<td></td>
<td style="padding-top: 2px;"><input type="submit" name="action" value="Add Line" /></td>
</tr>
</form>
</table>
</div>
</div>
</div>
<!-- second level -->
<div id="linetabs">
<ul id="navlist">
<?php
// list the lines as tabs, selected one highlighted
$x = 0;
foreach ($_SESSION['lines'] as $line) {
$color = $line['color'];
$id = $line['id'];
$label = $line['label'];
echo "<li>";
echo "<a href=\"/?line=$id\" style=\"background-color:#$color;\" ";
if ($_SESSION['showline'] == $id) {
echo "class=\"current\"";
}
echo ">".$label."</a>";
echo "<a href=\"/?deleteline=$id\" style=\"background-color:#$color;padding-bottom: 3px; margin-bottom: 0;\" class=\"";
if ($_SESSION['showline'] == $id) {
echo "current ";
}
echo "deleteline\"><span>x</span></a>";
echo "</li>";
$x++;
}
?>
</ul>
</div>
<div id="linedetails" style="background-color: #<?php echo $_SESSION['lines'][$_SESSION['showline']]['color']; ?>;">
<ul>
<?php
$lineid = $_SESSION['showline'];
$section_x = 0;
foreach ($sectionnames as $sectionname) {
// section specific details
$sectionid = $sectionids[$section_x];
// check if this section should not be hidden
if((isset($_SESSION['showsection']) && ($_SESSION['showsection'] == $sectionid)) || ($_SESSION['collapse'] == 0))) {
$display = "normal";
} else {
$display = "none";
}
?>
<li>
<div class="plusminus">
<a href="#" onClick="new Effect.SlideDown('<?php echo $sectionid; ?>'); return false;">+</a> <a href="#" onClick="new Effect.SlideUp('<?php echo $sectionid; ?>'); return false;">-</a>
</div>
<h3><?php echo $sectionname; ?></h3>
<div class="detailbar">
<table width="<?php echo $tablewidth_detailbar; ?>" cellpadding="0" cellspacing="0" border="0">
<tr>
<?php
$x = 0;
foreach ($_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] as $result) {
$width = $result['width_details'];
if ($width < 1) {
$width = 1;
}
$value = $result['value'];
$id = $result['id'];
$percent = round($result['percent']*100,2);
$checked = $result['checked'];
echo "<td width=\"".$width."\">";
// tooltip
echo "<div id=\"tooltip-".$id."-".$x."\" style=\"display:none; margin: 5px; background-color: #f0f0f0; padding: 2px; border: 1px solid #777;\">";
echo "$name<br/>";
echo "<b>Value:</b> $value<br/>";
echo "<b>Percent:</b> $percent%<br/>";
echo "<b>Included in Line:</b> ";
if ($checked == 1) {
echo "Yes";
} else {
echo "No";
}
echo "<br/>";
echo "</div>";
// the bar (that activates the tooltip)
echo "<div id=\"bar-".$id."-".$x."\" class=\"bar";
if ($checked == 1) {
echo " checked";
}
echo "\"> </a>";
// and now the javascript of the tooltip
echo "<script type=\"text/javascript\">";
echo "var my_tooltip = new Tooltip('bar-".$id."-".$x."','tooltip-".$id."-".$x."')";
echo "</script>";
echo "</td>";
$x++;
if ($x > $detailbarmax) {
break;
}
}
?>
</tr>
</table>
</div>
<?php
$formname = "form_".$lineid."_".$sectionid;
?>
<div id="<?php echo $sectionid; ?>" class="details" style="display: <?php echo $display; ?>;">
<form enctype="multipart/form-data" method="post" name="<?php echo $formname; ?>" action="<?php echo $url_full; ?>">
<input type="hidden" name="filterdetails" value="1" />
<input type="hidden" name="line" value="<?php echo $lineid; ?>" />
<input type="hidden" name="section" value="<?php echo $sectionid; ?>" />
<div class="table">
<table width="<?php echo $tablewidth_details_withtext; ?>" cellpadding="0" cellspacing="0" border="0">
<?php
$x = 0;
foreach ($_SESSION['lines'][$lineid]['filters'][$sectionid]['results'] as $name) {
$value = $result['value'];
$id = $result['id'];
$percent = round($result['percent']*100,2);
$width = $results['width_details'];
$width_negative = $tablewidth_details - $width;
$checked = $result['checked'];
echo "<tr>";
echo "<td width=\"170\">";
echo "<input type=\"hidden\" name=\"checkbox|$id\" value=\"$id\" />"; // BECAUSE FORMS DONT POST UNCHECKED BOXES! GAH!
echo "<input type=\"checkbox\" name=\"filter|$id\" ";
if ($checked == 1) {
echo "CHECKED";
}
echo "/> ".$name."</td>";
echo "<td width=\"45\">".$value."</td>";
echo "<td><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"$tablewidth_details\"><tr><td width=\"$width\"><div class=\"bar\"> </div></td><td width=\"$width_negative\" style=\"text-align:left;padding-left:5px;\">$percent%</td></tr></table></td>";
echo "</tr>";
$x++;
}
?>
</table>
</div>
<div class="panel">
<p class="left">
<input type="submit" name="action" value="Update Line" />
</p>
<p class="right">
<input type="button" name="CheckAll" value="Check All"
onClick="checkAll(document.<?php echo $formname; ?>)">
<input type="button" name="UnCheckAll" value="Uncheck All"
onClick="uncheckAll(document.<?php echo $formname; ?>)">
</p>
</div>
</form>
</div>
</li>
<?php
$section_x++;
}
?>
</ul>
</div>
</div>
<div id="footer">
<p class="left">Info 424 Autumn 2006 - Zach, Adam, Anh</p>
<p class="right">
<?php if ($_SESSION['collapse'] == 1) { ?>
<a href="index.php?collapse=0">Uncollapse Details by Default</a>
<?php } else { ?>
<a href="index.php?collapse=1">Collapse Details by Default</a>
<?php } ?>
- <a href="index.php?clear=lines">Clear All Lines</a>
</p>
</div>
</div>
</body>
</html>