Viewing file: module_copy.php (12.98 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<? class Visitors { var $UserMode = true; var $AdminMode = true; 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 Install() { if (mysql_query("SELECT 1 FROM `AMCMS_visitors_agent` WHERE 0") == false) mysql_query(<<<STR CREATE TABLE IF NOT EXISTS `AMCMS_visitors_agent` ( `visitor_uid` varchar(30) NOT NULL, `visitor_agent` varchar(255) NOT NULL, PRIMARY KEY (`visitor_uid`,`visitor_agent`) ) ENGINE=MyISAM; STR ); if (mysql_query("SELECT 1 FROM `AMCMS_visitors_date` WHERE 0") == false) mysql_query(<<<STR CREATE TABLE IF NOT EXISTS `AMCMS_visitors_date` ( `visitor_date` date NOT NULL, `visitor_count` int(11) NOT NULL, PRIMARY KEY (`visitor_date`) ) ENGINE=MyISAM; STR );
if (mysql_query("SELECT 1 FROM `AMCMS_visitors_screen` WHERE 0") == false) mysql_query(<<<STR CREATE TABLE IF NOT EXISTS `AMCMS_visitors_screen` ( `visitor_uid` varchar(30) NOT NULL, `visitor_screen` varchar(10) NOT NULL, PRIMARY KEY (`visitor_uid`,`visitor_screen`) ) ENGINE=MyISAM; STR );
if (mysql_query("SELECT 1 FROM `AMCMS_visitors_today` WHERE 0") == false) mysql_query(<<<STR CREATE TABLE IF NOT EXISTS `AMCMS_visitors_today` ( `visitor_uid` varchar(30) NOT NULL, `visitor_date` datetime NOT NULL, PRIMARY KEY (`visitor_uid`) ) ENGINE=MyISAM; STR );
if (mysql_query("SELECT 1 FROM `visitor_uids` WHERE 0") == false) mysql_query(<<<STR CREATE TABLE IF NOT EXISTS `AMCMS_visitors_uids` ( `visitor_uid` varchar(30) NOT NULL, `visitor_ip` varchar(15) NOT NULL, `visitor_date` datetime NOT NULL, `visitor_lastvisit` datetime NOT NULL, PRIMARY KEY (`visitor_uid`) ) ENGINE=MyISAM; STR ); } function User() { global $language, $ULANG; /* Добавление в БД списка выданных uid-ов*/ $ip = $_SERVER['REMOTE_ADDR']; $date = GetCurrentDateAndTime(); $yesterday = GetYesterday(); $date1 = GetCurrentYear()."-".GetCurrentMonth()."-".GetCurrentDay()." 00:00:00"; $date2 = GetCurrentYear()."-".GetCurrentMonth()."-".GetCurrentDay()." 23:59:59"; $agent = $_SERVER['HTTP_USER_AGENT']; if (isset($_COOKIE['uid']) && strlen(trim($_COOKIE['uid'])) > 8) { $uid = $_COOKIE['uid']; $newUID = false; } else { $uid = uniqid(mt_rand()); $newUID = true; } if ($newUID == false) { $res = mysql_query("SELECT * FROM AMCMS_visitors_uids WHERE visitor_uid = '$uid'"); if (mysql_num_rows($res) == 0) { mysql_query("INSERT INTO AMCMS_visitors_uids (visitor_uid, visitor_date, visitor_lastvisit, visitor_ip) VALUES ('$uid', '$date', '$date', '$ip')"); } setcookie("uid", $uid, time() + 8*60*60*24*30*12); } if ($newUID == true) { $res = mysql_query("SELECT * FROM AMCMS_visitors_uids WHERE visitor_ip = '$ip' ORDER BY visitor_date DESC LIMIT 0, 1"); $row = mysql_fetch_array($res); if ((mysql_num_rows($res) == 0) || (DateDiff('s', $row['visitor_date'], $date) > GetParam("UID_Timeout"))) { mysql_query("INSERT INTO AMCMS_visitors_uids (visitor_uid, visitor_date, visitor_lastvisit, visitor_ip) VALUES ('$uid', '$date', '$date', '$ip')"); setcookie("uid", $uid, time() + 8*60*60*24*30*12); } else return; } $res = mysql_query("SELECT * FROM AMCMS_visitors_today WHERE visitor_date < '$date1'"); if (mysql_num_rows($res) > 0) { $count = mysql_num_rows($res); mysql_query("INSERT INTO AMCMS_visitors_date (visitor_date, visitor_count) VALUES ('$yesterday', '$count')"); mysql_query("DELETE FROM AMCMS_visitors_today WHERE visitor_date < '$date1'"); } mysql_query("UPDATE AMCMS_visitors_uids SET visitor_lastvisit = '$date' WHERE visitor_uid = '$uid'"); mysql_query("INSERT INTO AMCMS_visitors_agent (visitor_uid, visitor_agent) VALUES ('$uid','$agent')"); $res = mysql_query("SELECT * FROM AMCMS_visitors_today WHERE visitor_uid = '$uid' ORDER BY visitor_date DESC "); if (mysql_num_rows($res) == 0) mysql_query("INSERT INTO AMCMS_visitors_today (visitor_uid, visitor_date) VALUES ('$uid', '$date')"); else mysql_query("UPDATE AMCMS_visitors_today SET visitor_date = '$date' WHERE visitor_uid = '$uid'"); }
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; if (isset($_GET['mod']) && ($_GET['mod'] == $this->ClassName)) { return ""; return array( array('title' => $ALANG['PageAdd'], 'link' => '?mod='.$this->ClassName.'&PageAdd'), array('title' => $ALANG['PageList'], 'link' => '?mod='.$this->ClassName.'&PageList'), array('title' => $ALANG['ChapterAdd'], 'link' => '?mod='.$this->ClassName.'&ChapterAdd'), array('title' => $ALANG['ChapterList'], 'link' => '?mod='.$this->ClassName.'&ChapterList') ); } else return ""; } 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() { $date = GetCurrentYear()."-".GetCurrentMonth()."-".GetCurrentDay(); $res = mysql_query("SELECT COUNT(*) FROM AMCMS_visitors_today"); $row = mysql_fetch_assoc($res); return $row['COUNT(*)']; } function GetNowVisitors() { $time = strtotime(GetParam("TimeOffset")." -7 minutes"); $fecha = date("Y-m-d H:i:s", $time); $res = mysql_query("SELECT * FROM AMCMS_visitors_today WHERE visitor_date >= '{$fecha}'"); $count = mysql_num_rows($res); return $count == 0 ? 1 : $count; } function GetPageVisit($title) { $res = mysql_query("SELECT * FROM AMCMS_visitors_pages WHERE vispage_address = '".trim($_SERVER['QUERY_STRING'])."'"); $count = mysql_num_rows($res); if ($count == 0) { mysql_query("INSERT INTO AMCMS_visitors_pages (vispage_address, vispage_count, vispage_title) VALUES ('{$_SERVER['QUERY_STRING']}', 1, '{$title}')"); $cnt = 1; } else { $row = mysql_fetch_array($res); $cnt = $row['vispage_count'] + 1; mysql_query("UPDATE AMCMS_visitors_pages SET vispage_count = '{$cnt}', vispage_title = '{$title}' WHERE vispage_address = '".trim($_SERVER['QUERY_STRING'])."'"); } return $cnt; } 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() { if (isset($_GET['mod']) && ($_GET['mod'] == $this->ClassName)) { global $ALANG, $DefaultAdminLanguage, $_LANG_ID; /* if (isset($_GET['GeoUpdate'])) { $gi = geoip_open("geoip/GeoIPCity.dat" , GEOIP_MEMORY_CACHE); $res = mysql_query("SELECT * FROM AMCMS_visitors_uids"); while ($row = mysql_fetch_assoc($res)) { $record = geoip_record_by_addr($gi,$row['visitor_ip']); $country = $record->country_name; $city = $record->city; mysql_query("UPDATE AMCMS_visitors_uids SET visitor_country = '$country', visitor_city = '$city' WHERE visitor_uid = '{$row['visitor_uid']}'"); } }*/ $smarty = new Smarty(); $smarty->template_dir = $this->Directory."/templates"; $smarty->compile_dir = 'tmp/_compile_admin/'; $smarty->assign("languages", $_LANG_ID); $smarty->assign("ALANG", $ALANG); $res = mysql_query("SELECT * FROM AMCMS_visitors_agent"); $os = array(); while ($row = mysql_fetch_assoc($res)) { $b = detect_browser($row['visitor_agent']); if ($row['visitor_uid'] != $last) $os[$b['os']]++; $last = $row['visitor_uid']; $browser_detail[$b['name'].' '.$b['version']]++; $browser[$b['name']]++; } natsort($os); $os = array_reverse($os); natsort($browser_detail); $browser_detail = array_reverse($browser_detail); natsort($browser); $browser = array_reverse($browser);
$pages = array(); $res = mysql_query("SELECT * FROM AMCMS_visitors_pages ORDER BY vispage_count DESC"); while($row = mysql_fetch_array($res)) { $r['address'] = substr($row['vispage_address'], 0, 35); $r['link'] = $row['vispage_address']; $r['count'] = $row['vispage_count']; $pages [] = $r; } $smarty->assign("os", $os); $smarty->assign("browser", $browser); $smarty->assign("browser_detail", $browser_detail); $res = mysql_query("SELECT * FROM AMCMS_visitors_screen"); while ($row = mysql_fetch_assoc($res)) $screen[$row['visitor_screen']]++; natsort($screen); $screen = array_reverse($screen); $smarty->assign("screen", $screen); $smarty->assign("visitors_all", $this->GetAllVisitors()); $smarty->assign("visitors_today", $this->GetTodayVisitors()); $smarty->assign("visitors_last_month_by_days", $this->GetVisitorsForLast30DaysByDays()); $smarty->assign("visitors_now", $this->GetNowVisitors()); $smarty->assign("pages", $pages); 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, $language; $all = $this->GetAllVisitors(); $today = $this->GetTodayVisitors(); $now = $this->GetNowVisitors(); $pages = $this->GetPageVisit(''); $html .= "<div class=\"VisitorsDiv\">"; $html .= "<table align=\"center\" class=\"VisitorsTable\">"; $html .= "<tr>"; $html .= "<td>{$ULANG['VisitorsNow']}:</td>"; $html .= "<td>{$now}</td>"; $html .= "</tr>"; $html .= "<tr>"; $html .= "<td>{$ULANG['VisitorsPage']}:</td>"; $html .= "<td>{$pages}</td>"; $html .= "</tr>"; $html .= "<tr>"; $html .= "<td>{$ULANG['VisitorsToday']}:</td>"; $html .= "<td>{$today}</td>"; $html .= "</tr>"; $html .= "<tr>"; $html .= "<td>{$ULANG['VisitorsAll']}:</td>"; $html .= "<td>{$all}</td>"; $html .= "</tr>"; $html .= "</table>"; $html .= "</div>"; $result['Visitors'] = array('panelName' => $ULANG['VisitorsName'], 'panelHtml' => $html); return $result; } } $Modules [] = new Visitors(); ?>
|