Viewing file: module.php (15.97 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<? class Visitors { var $UserMode = false; var $AdminMode = false; var $SearchMode = false; var $PanelMode = true; var $UserAsynchMode = true; var $VisitorsTable; var $VisitorsOSTable; var $VisitorsScreenTable; var $Directory; var $ClassName = 'Visitors'; function Visitors() {
$this->Directory = dirname(__FILE__); $this->ClassName = $this->ClassName; } function User() { return; }
function UserAsynch() { global $language, $ULANG; if (isset($_POST['getdate'])) { $arr['ok'] = true; $arr['date'] = (int)GetCurrentDay().' '.$ULANG['MonthRP'.((int)GetCurrentMonth())].' '.GetCurrentYear().' '.$ULANG['YearRP']; $arr['time'] = GetCurrentHours().":".GetCurrentMinutes(); $arr['day'] = $ULANG['Day'.GetCurrentDayOfWeek()]; echo "{ok:{$arr['ok']}, okString:'', date:'{$arr['date']}', time:'{$arr['time']}', day:'{$arr['day']}'}"; return; } if (isset($_POST['width']) && isset($_POST['height']) && isset($_COOKIE['uid'])) { $ip = $_SERVER['REMOTE_ADDR']; $uid = $_COOKIE['uid']; $screen = $_POST['width']."x".$_POST['height']; $_SESSION['screen_width'] = $_POST['width']; mysql_query("INSERT INTO AMCMS_visitors_screen (visitor_uid, visitor_screen) VALUES ('{$uid}', '{$screen}')"); }
} function Menu() { global $ALANG; return array( array('title' => $ALANG['VisitorsMenuGeneral'], 'link' => '?mod='.$this->ClassName.'&General'), ); } function GetAllVisitors() { $res = mysql_query("SELECT COUNT(visitor_uid) FROM AMCMS_visitors_uids"); $row = mysql_fetch_assoc($res); return $row['COUNT(visitor_uid)']; } function GetTodayVisitors() { $res = mysql_query("SELECT COUNT(DISTINCT visitor_uid) FROM AMCMS_visitors_visits WHERE DATE(visitor_session_start) = DATE(NOW())"); $row = mysql_fetch_assoc($res); return $row['COUNT(DISTINCT visitor_uid)']; } function GetNowVisitors() { $res = mysql_query("SELECT COUNT(*) FROM AMCMS_visitors_visits WHERE visitor_session_finish >= DATE_SUB(now(), INTERVAL 7 MINUTE)"); $row = mysql_fetch_assoc($res); $count = $row['COUNT(*)']; return $count == 0 ? 1 : $count; } function GetPageVisit() { $res = mysql_query("SELECT SUM(page_visits_count) FROM AMCMS_visitors_pages WHERE page_address = '".trim($_SERVER['REQUEST_URI'])."'"); $row = mysql_fetch_assoc($res); $count = $row['SUM(page_visits_count)']; return $count; } function GetVisitorsForLast30DaysByDays() { $sql = ""; for ($i = 1; $i <= 30; $i++) { $time = strtotime("-".$i." day"); $year = date("Y", $time); $month = date("m", $time); $day = date("d", $time); $date1 = $year."-".$month."-".$day." 00:00:00"; $date2 = $year."-".$month."-".$day." 23:59:59"; $sql = "SELECT visitor_count FROM AMCMS_visitors_date WHERE (visitor_date >= '{$date1}') AND (visitor_date <= '{$date2}')"; $rows[$i]['date'] = $year."-".$month."-".$day; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); $rows[$i]['count'] = $row['visitor_count']; } return $rows; } function Admin() { global $ALANG, $alang; $smarty = GetAdminSmarty("zzvisitors"); // визитов по месяцам $res = mysql_query("SELECT COUNT(visitor_sid)as count, MONTH(visitor_session_start) as month, YEAR(visitor_session_start) as year FROM `AMCMS_visitors_visits` GROUP BY month, year ORDER BY year DESC, month DESC"); $monthstat = array(); $yearstat = array(); while($row = mysql_fetch_assoc($res)) { $monthstat[$row['year']."-".$row['month']]['visits'] = $row; $yearstat[$row['year']]['visits']['count'] += $row['count']; $ys['visits']['count'] += $row['count']; } // обращений к сайту по месяцам $res = mysql_query("SELECT SUM(page_visits_count) as count, MONTH(page_date)as month, YEAR(page_date) as year FROM `AMCMS_visitors_pages` GROUP BY year, month ORDER BY year DESC, month DESC"); while($row = mysql_fetch_assoc($res)) { $monthstat[$row['year']."-".$row['month']]['access'] = $row; $yearstat[$row['year']]['access']['count'] += $row['count']; $ys['access']['count'] += $row['count']; } // новых посетителей по месяцам $res = mysql_query("SELECT COUNT(visitor_uid)as count, MONTH(visitor_first_visit)as month, YEAR(visitor_first_visit) as year FROM `AMCMS_visitors_uids` GROUP BY month, year ORDER BY year DESC, month DESC"); while($row = mysql_fetch_assoc($res)) { $monthstat[$row['year']."-".$row['month']]['new'] = $row; $yearstat[$row['year']]['new']['count'] += $row['count']; $ys['new']['count'] += $row['count']; } $yearstat['Total'] = $ys; $smarty->assign("monthstat", $monthstat); $smarty->assign("yearstat", $yearstat); $weekdaystat = array(); // визитов по дням недели $res = mysql_query("SELECT COUNT(visitor_sid) as count, WEEKDAY(visitor_session_start) as weekday FROM `AMCMS_visitors_visits` GROUP BY weekday ORDER BY weekday ASC"); while($row = mysql_fetch_assoc($res)) $weekdaystat[$row['weekday'] + 1]['visits']['count'] = $row['count']; // новых по дням недели $res = mysql_query("SELECT COUNT(visitor_uid) as count, WEEKDAY(visitor_first_visit) as weekday FROM `AMCMS_visitors_uids` GROUP BY weekday ORDER BY weekday ASC"); while($row = mysql_fetch_assoc($res)) $weekdaystat[$row['weekday'] + 1]['new']['count'] = $row['count']; // страниц по дням недели $res = mysql_query("SELECT SUM(page_visits_count) as count, WEEKDAY(page_date) as weekday FROM `AMCMS_visitors_pages` GROUP BY weekday ORDER BY weekday ASC"); while($row = mysql_fetch_assoc($res)) $weekdaystat[$row['weekday'] + 1]['access']['count'] = $row['count']; $smarty->assign("weekdaystat", $weekdaystat); $hoursstat = array(); // статистика по браузерам $res = mysql_query("SELECT COUNT(*) as count, visitor_browser FROM AMCMS_visitors_agents WHERE visitor_date >= DATE_SUB(now(), INTERVAL 3 MONTH) GROUP BY visitor_browser ORDER BY count DESC"); while($row = mysql_fetch_assoc($res)) $browserstat[] = array("browser" => $row['visitor_browser'], "count" => $row['count']); $smarty->assign("browserstat", $browserstat); // детализированная статистика по браузерам $res = mysql_query("SELECT COUNT(*) as count, visitor_browser, visitor_browser_version FROM AMCMS_visitors_agents WHERE visitor_date >= DATE_SUB(now(), INTERVAL 3 MONTH) GROUP BY visitor_browser, visitor_browser_version ORDER BY count DESC"); while($row = mysql_fetch_assoc($res)) $browserdetstat[] = array("browser" => $row['visitor_browser'], "version" => $row['visitor_browser_version'], "count" => $row['count']); $smarty->assign("browserdetstat", $browserdetstat);
$res = mysql_query("SELECT COUNT(*) as count, visitor_width, visitor_height FROM AMCMS_visitors_screens WHERE visitor_date >= DATE_SUB(now(), INTERVAL 3 MONTH) GROUP BY visitor_width, visitor_height ORDER BY count DESC"); while($row = mysql_fetch_assoc($res)) $screenstat[] = array("width" => $row['visitor_width'], "height" => $row['visitor_height'], "count" => $row['count']); $smarty->assign("screenstat", $screenstat);
// визитов по часам $res = mysql_query("SELECT COUNT(visitor_sid) as count, HOUR(visitor_session_start) as hours FROM `AMCMS_visitors_visits` GROUP BY hours ORDER BY hours ASC"); while($row = mysql_fetch_assoc($res)) $hoursstat[$row['hours']]['visits']['count'] = $row['count']; // новых по часам $res = mysql_query("SELECT COUNT(visitor_uid) as count, HOUR(visitor_first_visit) as hours FROM `AMCMS_visitors_uids` GROUP BY hours ORDER BY hours ASC"); while($row = mysql_fetch_assoc($res)) $hoursstat[$row['hours']]['new']['count'] = $row['count']; // обращений к сайту по часам $res = mysql_query("SELECT SUM(page_visits_count)as count, HOUR(page_date) as hours FROM `AMCMS_visitors_pages` GROUP BY hours ORDER BY hours ASC"); while($row = mysql_fetch_assoc($res)) $hoursstat[$row['hours']]['access']['count'] = $row['count']; $smarty->assign("hoursstat", $hoursstat);
/* // визитов по дням $res = mysql_query("SELECT COUNT(visitor_sid) as count, DAY(visitor_session_start) as day, MONTH(visitor_session_start) as month, YEAR(visitor_session_start) as year, WEEKDAY(visitor_session_start) as weekday FROM `AMCMS_visitors_visits` GROUP BY month, year, day ORDER BY year DESC, month DESC, day DESC"); // новых посетителей по дням $res = mysql_query("SELECT COUNT(visitor_uid)as count, DAY(visitor_first_visit) as day, MONTH(visitor_first_visit)as month, YEAR(visitor_first_visit) as year FROM `AMCMS_visitors_uids` GROUP BY year, month, day ORDER BY year DESC, month DESC, day DESC"); // обращений к сайту по дням $res = mysql_query("SELECT SUM(page_visits_count)as count, DAY(page_date) as day, MONTH(page_date)as month, YEAR(page_date) as year FROM `AMCMS_visitors_pages` GROUP BY year, month, day ORDER BY year DESC, month DESC, day DESC"); */ $result['Content'] = $smarty->fetch('visitors.tpl'); $result['Title'] = $ALANG['VisitorsGeneral']; return $result;
//SELECT *
//$countries = array(); //$cities = array(); //$gi = geoip_open("geoip/GeoIPCity.dat" , GEOIP_MEMORY_CACHE); /*$res = mysql_query("SELECT * FROM AMCMS_visitors_uids"); while ($row = mysql_fetch_assoc($res)) { $countries[$row['visitor_country']]++; $cities[$row['visitor_city']]++;; } natsort($countries); natsort($cities); $countries = array_reverse($countries); $cities = array_reverse($cities); print_r($countries); print_r($cities);*/ /* $html = ""; $html .= "<ul>"; $res = mysql_query("SELECT visitor_country, COUNT(visitor_country) FROM `AMCMS_visitors_uids` GROUP BY visitor_country ORDER BY COUNT(visitor_country) DESC"); while ($row = mysql_fetch_assoc($res)) { $country = $row['visitor_country']; $sql = "SELECT *, COUNT(visitor_city) FROM `AMCMS_visitors_uids` WHERE visitor_country='{$country}' GROUP BY visitor_city ORDER BY COUNT(visitor_city) DESC"; $res_cities = mysql_query($sql); $html .= "<li>".$country." (".$row['COUNT(visitor_country)'].")"; $html .= "<ul>"; while ($city = mysql_fetch_assoc($res_cities)) { if (strlen($city['visitor_city']) == 0) $city['visitor_city'] = "Unknown"; $html .= "<li>".$city['visitor_city']. " (".$city['COUNT(visitor_city)'].")</li>"; } $html .= "</ul>"; $html .= "</li>"; } $html .= "</ul>";*/ /*$record = geoip_record_by_addr($gi,$row['visitor_ip']); $country = $record->country_name; $city = $record->city; // mysql_query("INSERT INTO AMCMS_visitors_ips (visitor_ip, visitor_country, visitor_city) VALUES ('{$row['visitor_ip']}', '{$country}', '{$city}')"); $countries[$record->country_name]++; $cities[$record->city]++;;*/ //echo var_dump($row); $smarty->assign("visitors_countries", $html); $result['Content'] = $smarty->fetch('visitors.tpl'); return $result; } function Panel() { global $ulang, $ULANG, $smarty; $ip = $_SERVER['REMOTE_ADDR']; $date = GetCurrentDateAndTime(); $agent = $_SERVER['HTTP_USER_AGENT']; $expire = false; $newUID = false; $bot = false; $sid = session_id(); if (!isset($_COOKIE['expire'])) { $browser = detect_browser($agent); if ($browser["name"] == "BOT") $bot = true; $expire = true; } if (isset($_COOKIE['uid']) && strlen(trim($_COOKIE['uid'])) > 8) { $uid = $_COOKIE['uid']; $sql = "SELECT * FROM AMCMS_visitors_uids WHERE (visitor_uid = '{$uid}') LIMIT 0, 1"; $res = mysql_query($sql); if (mysql_num_rows($res) > 0) $newUID = false; else $newUID = true; } else { $uid = uniqid(mt_rand()); $newUID = true; $sql = "SELECT * FROM AMCMS_visitors_uids WHERE (visitor_ip = '{$ip}') AND (visitor_first_visit >= DATE_SUB(now(),INTERVAL 1 HOUR)) LIMIT 0, 1"; $res = mysql_query($sql); if (mysql_num_rows($res) > 0) { //$bot = true; $expire = false; $newUID = false; } } if (!$bot) { if (!isset($_SESSION['visit_start'])) { $_SESSION['visit_start'] = GetCurrentDateAndTime(); $_SESSION['visit_finish'] = GetCurrentDateAndTime(); $_SESSION['visit_pages_count'] = 1; // $_SESSION['visit_pages'][] = $_SERVER['REQUEST_URI']; $pages = serialize($_SESSION['visit_pages']); $sql = "INSERT INTO AMCMS_visitors_visits (visitor_uid, visitor_ip, visitor_sid, visitor_session_start, visitor_session_finish, visitor_viewed_pages, visitor_viewed_pages_count) VALUES ('$uid', '$ip', '{$sid}', '{$_SESSION['visit_start']}', '{$_SESSION['visit_finish']}', '{$pages}', '{$_SESSION['visit_pages_count']}')"; mysql_query($sql); } else { $_SESSION['visit_finish'] = GetCurrentDateAndTime(); $_SESSION['visit_pages_count']++; $_SESSION['visit_pages'][] = $_SERVER['REQUEST_URI']; $pages = serialize($_SESSION['visit_pages']); $sql = "UPDATE AMCMS_visitors_visits SET visitor_session_finish = '{$_SESSION['visit_finish']}', visitor_viewed_pages = '{$pages}', visitor_viewed_pages_count = '{$_SESSION['visit_pages_count']}' WHERE visitor_sid = '$sid'"; mysql_query($sql); } if ($newUID) { setcookie("uid", $uid, time() + 8*60*60*24*30*12); $sql = "INSERT INTO AMCMS_visitors_uids (visitor_ip, visitor_uid, visitor_first_visit, visitor_last_visit) VALUES ('$ip', '$uid', now(), now())"; mysql_query($sql); } else { $sql = "UPDATE AMCMS_visitors_uids SET visitor_last_visit = now() WHERE visitor_uid = '{$uid}'"; mysql_query($sql); } if ($expire && isset($_SESSION['screen_width']) && isset($_SESSION['screen_height'])) { $sql = "INSERT INTO AMCMS_visitors_agents (visitor_uid, visitor_agent, visitor_browser, visitor_browser_version, visitor_os, visitor_os_version, visitor_date) VALUES ('$uid', '$agent', '{$browser['name']}', '{$browser['version']}', '{$browser['os']}', '{$browser['os_version']}', now())"; mysql_query($sql); $ip = $_SERVER['REMOTE_ADDR']; $uid = $_COOKIE['uid']; mysql_query("INSERT INTO AMCMS_visitors_screens (visitor_uid, visitor_width, visitor_height, visitor_date) VALUES ('{$uid}', '{$_SESSION['screen_width']}', '{$_SESSION['screen_height']}', now())"); setcookie("expire", "1", time() + 60*60*24*30); } $sql = "select * from AMCMS_visitors_pages where (month(page_date) = month(now())) and (year(page_date) = year(now())) AND (page_address = '{$_SERVER['REQUEST_URI']}')"; $res = mysql_query($sql) or die(mysql_error()); if (mysql_num_rows($res) == 0) { $sql = "INSERT INTO AMCMS_visitors_pages (page_date, page_address, page_visits_count, page_title) VALUES (now(), '{$_SERVER['REQUEST_URI']}', '1', '{$smarty->tpl_vars['PageTitle']}')"; mysql_query($sql); } else { $row = mysql_fetch_assoc($res); $count = $row['page_visits_count'] + 1; $sql = "UPDATE AMCMS_visitors_pages SET page_visits_count = '{$count}' where page_id = '{$row['page_id']}'"; mysql_query($sql); } }
$sm = GetUserSmarty($this->ClassName); $cond = "AND TIMEDIFF(NOW(), user_date_lastaccess) < '00:08:00'"; $count = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) as count FROM AMCMS_users WHERE user_status = '1' {$cond}")); $count = $count['count']; $now = max(array($count, $this->GetNowVisitors())); $guests = max(array(0, $now - $count)); $sm->assign("now", $now ); $sm->assign("guests", $guests ); $sm->assign("all", $this->GetAllVisitors()); $sm->assign("today", $this->GetTodayVisitors()); $sm->assign("pages", $this->GetPageVisit()); $sm->assign("online", $count); $result['Visitors'] = array('Title' => "Статистика", 'Content' => $sm->fetch("panel.tpl"), 'Module' => $this->ClassName, 'class' => 'statistic'); return $result; } } $Modules ["Visitors"] = new Visitors(); ?>
|