示例#1
0
function show_paths()
{
    $config =& SlimStatConfig::get_instance();
    // get max visit
    $query = "SELECT MAX(`visit`) FROM `" . SlimStat::my_esc($config->database) . "`.`" . SlimStat::my_esc($config->stats) . "`";
    if ($result = mysql_query($query)) {
        list($max_visit) = mysql_fetch_row($result);
    }
    $str = "";
    // get requests
    $query = "SELECT * FROM `" . SlimStat::my_esc($config->database) . "`.`" . SlimStat::my_esc($config->stats) . "` WHERE ";
    if (!$config->show_crawlers) {
        $query .= "`browser` != '" . SlimStat::my_esc($config->i18n->crawler) . "' AND ";
    }
    $query .= "`visit` >= " . ($max_visit - $config->rows);
    $query .= " ORDER BY `visit` DESC, `dt`";
    if ($result = mysql_query($query)) {
        $prev_visit = 0;
        $visits = array();
        $visit = array();
        $pages = array();
        while ($assoc = mysql_fetch_assoc($result)) {
            if ($assoc["visit"] != $prev_visit && !empty($visit)) {
                $visits[] = $visit;
                $visit = array();
            }
            $visit[] = $assoc;
            $prev_visit = $assoc['visit'];
        }
        if (!empty($visit)) {
            $visits[] = $visit;
        }
        $str .= "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";
        $str .= "<tr><th>" . $config->i18n->fields["remote_ip"] . "</th>";
        $str .= "<th>" . $config->i18n->when . "</th>";
        $str .= "<th>" . $config->i18n->fields["browser"] . "</th>";
        $str .= "<th>" . $config->i18n->fields["platform"] . "</th>";
        $str .= "<th>" . $config->i18n->fields["country"] . "</th></tr>\n";
        $usr_today = SlimStat::to_user_time(time());
        $svr_today = SlimStat::to_server_time(mktime(0, 0, 0, date("n", $usr_today), date("d", $usr_today), date("Y", $usr_today)));
        foreach ($visits as $visit) {
            $is_today = $visit[0]["dt"] >= $svr_today;
            $mindt = SlimStat::time_label($visit[0]["dt"]);
            $maxdt = SlimStat::time_label($visit[sizeof($visit) - 1]["dt"]);
            $str .= "<tr><td class=\"accent\">" . htmlentities(SlimStat::get_domain($visit[0]["remote_ip"])) . "</td>";
            $str .= "<td class=\"accent\">";
            if ($is_today) {
                $str .= $mindt == $maxdt ? $mindt : $mindt . "-" . $maxdt;
            } else {
                $str .= SlimStat::time_label($visit[0]["dt"], time());
            }
            $str .= "</td>";
            $str .= "<td class=\"accent\">" . htmlentities($visit[0]["browser"]);
            if ($visit[0]["version"] != $config->i18n->indeterminable) {
                $str .= " " . htmlentities($visit[0]["version"]);
            }
            $str .= "</td><td class=\"accent\">" . htmlentities($visit[0]["platform"]) . "</td>";
            $str .= "<td class=\"accent\">" . htmlentities($visit[0]["country"]) . "</td></tr>\n";
            $prev_dt = "";
            foreach ($visit as $hit) {
                $str .= "<tr><td>";
                $str .= "<a href=\"" . $hit["resource"] . "\" class=\"external\"";
                $str .= "\" title=\"" . $config->i18n->link_title("external", "FIELD", strtolower($config->i18n->fields["resource"])) . "\">";
                $str .= "<img src=\"external.gif\" width=\"9\" height=\"9\" alt=\"\" /></a>&nbsp;&nbsp;";
                $str .= "<a href=\"?filter_resource=" . urlencode($hit["resource"]);
                $str .= "\" title=\"" . $config->i18n->link_title("details_filtered", "FIELD", strtolower($config->i18n->fields["resource"])) . "\">";
                if (isset($config->i18n->name_lookups["resource"][$hit["resource"]])) {
                    $str .= SlimStat::truncate($config->i18n->name_lookups["resource"][$hit["resource"]], 53);
                } else {
                    $str .= SlimStat::truncate($hit["resource"], 53);
                }
                $str .= "</a></td>";
                $dt_label = SlimStat::time_label($hit["dt"]);
                if (!$is_today && $prev_dt == "" || $mindt != $maxdt && $dt_label != $prev_dt) {
                    $str .= "<td>" . $dt_label . "</td>";
                } else {
                    $str .= "<td>&nbsp;</td>";
                }
                $prev_dt = $dt_label;
                if ($hit["referer"] != "" && $hit["domain"] != SlimStat::trim_referer($_SERVER["SERVER_NAME"])) {
                    $str .= "<td colspan=\"3\" class=\"last\">";
                    $str .= "<a href=\"?filter_domain=" . urlencode($hit["domain"]);
                    $str .= "\" title=\"" . $config->i18n->link_title("details_filtered", "FIELD", strtolower($config->i18n->fields["domain"])) . "\"";
                    $str .= ">" . htmlentities(SlimStat::truncate($hit["domain"], 30)) . "</a>&nbsp;&nbsp;";
                    $str .= "<a href=\"" . $hit["referer"] . "\" class=\"external\" rel=\"nofollow\"";
                    $str .= "\" title=\"" . $config->i18n->link_title("external", "FIELD", strtolower($config->i18n->fields["referer"])) . "\">";
                    $str .= "<img src=\"external.gif\" width=\"9\" height=\"9\" alt=\"\" /></a>";
                } else {
                    $str .= "<td colspan=\"3\">&nbsp;</td>";
                }
                $str .= "</tr>\n";
            }
        }
        $str .= "</table>\n";
        return $str;
    }
}
示例#2
0
 function time_label($_dt, $_compared_to_dt = 0)
 {
     $usr_dt = SlimStat::to_user_time($_dt);
     if ($_compared_to_dt == 0) {
         if (strftime("%p", $usr_dt) == "") {
             return strftime("%H:%M", $usr_dt);
         } else {
             return preg_replace("/^0/", "", strtolower(strftime("%I:%M%p", $usr_dt)));
         }
         //return strftime( "%r", $usr_dt );
     } elseif ($_dt >= SlimStat::to_server_time(strtotime(date("j M Y 00:00:00", SlimStat::to_user_time($_compared_to_dt))))) {
         return SlimStat::time_label($_dt);
     } else {
         return strftime("%e %b", $usr_dt);
     }
 }
示例#3
0
</td><?php 
        }
        ?>
					<?php 
        if ($config->show_uniques) {
            ?>
<td class="last"><?php 
            print $hvu["uniques"];
            ?>
</td><?php 
        }
        ?>
				</tr>
				<?php 
        // this month
        $usr_dt = SlimStat::to_user_time(time());
        while (date("j", $usr_dt) > 1) {
            // move back to start of month
            $usr_dt -= $config->day;
        }
        $svr_dt = SlimStat::to_server_time($usr_dt);
        $hvu = SlimStat::get_hits_visits_uniques($svr_dt);
        ?>
				<tr>
					<td><a href="?show=thismonth" title="<?php 
        print $config->i18n->link_title('details_dt', 'DT', $config->i18n->date_periods['this_month']);
        ?>
"><?php 
        print ucfirst($config->i18n->date_periods["this_month"]);
        ?>
</a></td>
示例#4
0
    $filters["filter_" . $_GET["new_filter_field"]] = urlencode($_GET["new_filter_value"]);
}
ksort($filters);
$today_dt_start = SlimStat::to_user_time(time());
$today_dt_start = SlimStat::to_server_time(mktime(0, 0, 0, date("n", $today_dt_start), date("d", $today_dt_start), date("Y", $today_dt_start)));
$today_dt_end = SlimStat::to_user_time(time());
$today_dt_end = SlimStat::to_server_time(mktime(23, 59, 59, date("n", $today_dt_end), date("d", $today_dt_end), date("Y", $today_dt_end)));
$thisweek_dt_start = SlimStat::to_user_time($today_dt_start);
while (date("w", $thisweek_dt_start) != $config->week_start_day) {
    // move back to start of week
    $thisweek_dt_start = mktime(0, 0, 0, date("n", $thisweek_dt_start), date("d", $thisweek_dt_start) - 1, date("Y", $thisweek_dt_start));
}
$thisweek_dt_end = SlimStat::to_server_time(mktime(23, 59, 59, date("n", $thisweek_dt_start), date("d", $thisweek_dt_start) + 6, date("Y", $thisweek_dt_start)));
$thisweek_dt_start = SlimStat::to_server_time($thisweek_dt_start);
$thismonth_dt_start = SlimStat::to_server_time(mktime(0, 0, 0, date("n", SlimStat::to_user_time(time())), 1, date("Y", SlimStat::to_user_time(time()))));
$thismonth_dt_end = SlimStat::to_server_time(mktime(23, 59, 59, date("n", SlimStat::to_user_time(time())) + 1, 0, date("Y", SlimStat::to_user_time(time()))));
if (isset($filters["filter_dt_start"]) && isset($filters["filter_dt_end"])) {
    $dt_start = min(intval($filters["filter_dt_start"]), intval($filters["filter_dt_end"]));
    $dt_end = max(intval($filters["filter_dt_start"]), intval($filters["filter_dt_end"]));
    if ($dt_start > 0 && $dt_end > 0) {
        $filters["filter_dt_start"] = $dt_start;
        $filters["filter_dt_end"] = $dt_end;
        if (!isset($_GET["show"]) && sizeof($filters) == 2) {
            if ($dt_start == $today_dt_start && $dt_end == $today_dt_end) {
                $_GET["show"] = "today";
            } elseif ($dt_start == $thisweek_dt_start && $dt_end == $thisweek_dt_end) {
                $_GET["show"] = "thisweek";
            } elseif ($dt_start == $thismonth_dt_start && $dt_end == $thismonth_dt_end) {
                $_GET["show"] = "thismonth";
            }
        }