Viewing file: module_copy.php (13.34 KB) -rwxrwxrwx 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();
?>
|