function hour_table($_dt, $_title, $_n_loops, $_end_increment, $_dt_decrement, $_filters) { $config =& SlimStatConfig::get_instance(); $thead = array("first" => array(isset($config->i18n->fields[$_title]) ? $config->i18n->fields[$_title] : $_title), "last" => array($config->i18n->hits)); $tbody = array(); if ($config->show_visits && !isset($_filters["filter_visit"])) { $thead["last"][] = $config->i18n->visits; } if ($config->show_uniques) { $thead["last"][] = $config->i18n->uniques; } for ($i = 0; $i < $_n_loops; $i++) { $dt_start = SlimStat::to_server_time(strtotime(date("Y-m-d H:00:00", $_dt))); $dt_end = SlimStat::to_server_time(strtotime(date("Y-m-d H:59:59", $_dt + eval("return (" . $_end_increment . ");")))); if (SlimStat::to_server_time($dt_start) <= time()) { $row = array("first" => array(), "last" => array()); $assoc = SlimStat::get_hits_visits_uniques($dt_start, $dt_end, $_filters); if ($assoc["hits"] > 0) { if ($dt_start == $_filters["filter_dt_start"] && $dt_end == $_filters["filter_dt_end"]) { $row["first"][] = "<em>" . SlimStat::time_period_label($dt_start, $dt_end) . "</em>"; } else { $filters_copy = $_filters; unset($filters_copy["filter_dt_start"]); unset($filters_copy["filter_dt_end"]); $str = "<a href=\"?" . SlimStat::implode_assoc("=", "&", $filters_copy); $str .= (empty($filters_copy) ? "" : "&") . "filter_dt_start=" . $dt_start . "&filter_dt_end=" . $dt_end; $str .= "\">" . SlimStat::time_period_label($dt_start, $dt_end) . "</a>"; $row["first"][] = $str; } $row["last"][] = $assoc["hits"]; if ($config->show_visits && !isset($_filters["filter_visit"])) { $row["last"][] = $assoc["visits"]; } if ($config->show_uniques) { $row["last"][] = $assoc["uniques"]; } $tbody[] = $row; } } $_dt -= eval("return (" . $_dt_decrement . ");"); } return SlimStat::render_table($thead, $tbody, true); }