hasPermission("SITEWRITER") && !$user->hasPermission("SITEWRITER_ANALYTICS")) { if ($_GET['msg'] != "no_permission") { header("Location: app.php?page=analytics&msg=no_permission"); } die(); } $select_filter = []; if (!empty($VARS['siteid'])) { if ($database->has('sites', ['siteid' => $VARS['siteid']])) { $select_filter["analytics.siteid"] = $VARS['siteid']; } } if (!empty($VARS['after'])) { if (strtotime($VARS['after']) !== FALSE) { $select_filter["time[>]"] = date("Y-m-d H:i:s", strtotime($VARS['after'])); } } if (!empty($VARS['before'])) { if (strtotime($VARS['before']) !== FALSE) { $select_filter["time[<]"] = date("Y-m-d H:i:s", strtotime($VARS['before'])); } } $where = []; if (count($select_filter) == 1) { $where = $select_filter; } else if (count($select_filter) > 1) { $where = ["AND" => $select_filter]; } $where["LIMIT"] = 1000; $where["ORDER"] = ["time" => "DESC"]; $records = $database->select("analytics", [ "[>]sites" => ["siteid" => "siteid"], "[>]pages" => ["pageid" => "pageid"], ], [ "analytics.siteid", "analytics.pageid", "uuid", "country", "region", "city", "countrycode", "regioncode", "lat", "lon", "time", "pages.title (pagetitle)", "pages.slug (pageslug)", "sites.sitename" ], $where); $format = "Y-m-00 00:00:00"; if (count($records) > 1) { $max = $records[0]; $min = $records[count($records) - 1]; $diff = strtotime($max['time']) - strtotime($min['time']); } else { $diff = 0; } if ($diff < 60 * 60) { // 1 hour $format = "Y-m-d H:i:00"; } else if ($diff < 60 * 60 * 24 * 3) { // 3 days $format = "Y-m-d H:00:00"; } else if ($diff < 60 * 60 * 24 * 60) { // 30 days $format = "Y-m-d 00:00:00"; } $visitors = []; $viewsovertime = []; $pages = []; foreach ($records as $r) { if (!array_key_exists($r["uuid"], $visitors)) { $visitors[$r["uuid"]] = $r; } $rf = date($format, strtotime($r['time'])); if (array_key_exists($rf, $viewsovertime)) { $viewsovertime[$rf] ++; } else { $viewsovertime[$rf] = 1; } if (array_key_exists($r['pageid'], $pages)) { $pages[$r['pageid']]["views"] ++; } else { $pages[$r['pageid']] = [ "pagetitle" => $r['pagetitle'], "sitename" => $r['sitename'], "views" => 1 ]; } } $pageviews = count($records); usort($pages, function($a, $b) { return $b['views'] <=> $a['views']; }); require_once __DIR__ . "/../lib/countries_2_3.php"; $countries = []; $states = []; $visitsovertime = []; foreach ($visitors as $r) { $rf = date($format, strtotime($r['time'])); if (array_key_exists($rf, $visitsovertime)) { $visitsovertime[$rf] ++; } else { $visitsovertime[$rf] = 1; } if (array_key_exists($COUNTRY_CODES[$r['countrycode']], $countries)) { $countries[$COUNTRY_CODES[$r['countrycode']]] ++; } else { $countries[$COUNTRY_CODES[$r['countrycode']]] = 1; } if ($r['countrycode'] === "US") { if (array_key_exists($r['regioncode'], $states)) { $states[$r['regioncode']] ++; } else { $states[$r['regioncode']] = 1; } } } $visits = count($visitors); $countrymapdata = []; foreach ($countries as $id => $count) { $countrymapdata[] = [$id, $count]; } $statemapdata = []; foreach ($states as $id => $count) { $statemapdata[] = [$id, $count]; } ?>
" data-toggle="datetimepicker" data-target="#date_after" />
" data-toggle="datetimepicker" data-target="#date_before" />
0) { ?>

get("overview"); ?>

get("visits") ?>
get("page views") ?>
get("views per visit") ?>

get("visits over time"); ?>

get("page views over time"); ?>

get("visitor map"); ?>

get("page ranking"); ?>

build("x views", ["views" => $p['views']]); ?>

get("recent actions"); ?>

$max) { break; } ?>
get("no data"); ?>