public function addVisitor() { $ip = determineIP(); $table = DB_PREFIX . "visitor_counter"; $dt = date("Ymd"); $tm = time(); $online_limit = time() - 1800; $query = $this->db->query("INSERT INTO {$table} (ip, dt, hits, online) VALUES('{$ip}','{$dt}','1','{$tm}') ON DUPLICATE KEY " . "UPDATE hits=hits+1, online='{$tm}';"); $res = array(); $res["today_visitor"] = $this->db->query("SELECT * FROM {$table} WHERE dt='{$dt}' GROUP BY ip")->num_rows; $res["total_visitor"] = $this->db->query("SELECT COUNT(hits) FROM {$table}")->row["COUNT(hits)"]; $res["today_hits"] = $this->db->query("SELECT SUM(hits) FROM {$table} WHERE dt='{$dt}' GROUP BY dt")->row["SUM(hits)"]; $res["total_hits"] = $this->db->query("SELECT SUM(hits) FROM {$table}")->row["SUM(hits)"]; $res["online_visitor"] = $this->db->query("SELECT * FROM {$table} WHERE online > '{$online_limit}'")->num_rows; return $res; }
public function addVisitor($setting) { $table = DB_PREFIX . "visitor_counter"; $time_now = time(); $time_out = $setting["text_time_new_counter"]; $ip_address = determineIP(); // $ip_address = "192.168.0.1"; $res = array(); $current_day = date('z') + 1; $current_week = date('W'); $current_month = date('n'); $current_year = date('Y'); if ($this->db->query("SELECT `ip_address` FROM {$table} WHERE `ip_address` = '{$ip_address}'")->num_rows) { if (!$this->db->query("SELECT `ip_address` FROM {$table} WHERE UNIX_TIMESTAMP(`last_visit`) + {$time_out} > {$time_now} AND `ip_address` = '{$ip_address}'")->num_rows) { $query = $this->db->query("SELECT DAYOFYEAR(`last_visit`) as day, WEEKOFYEAR( `last_visit` ) as week, MONTH(`last_visit`) as month, YEAR(`last_visit`) as year\r\n\t\t\t\t\t\t\t\t\t FROM {$table}\r\n\t\t\t\t\t\t\t\t\t WHERE ip_address= '{$ip_address}'"); $db_day = $query->row["day"]; $db_week = $query->row["week"]; $db_month = $query->row["month"]; $db_year = $query->row["month"]; $query_counter = $this->db->query("SELECT today_visit, yesterday_visit, week_visit, last_week_visit, month_visit, year_visit FROM {$table} WHERE ip_address= '{$ip_address}'"); $today_update = $query_counter->row["today_visit"]; $yesterday_update = $query_counter->row["yesterday_visit"]; $week_update = $query_counter->row["week_visit"]; $last_week_update = $query_counter->row["last_week_visit"]; $month_update = $query_counter->row["month_visit"]; $year_update = $query_counter->row["year_visit"]; switch ($current_day - $db_day) { case 0: $today_update++; break; case 1: $yesterday_update = $today_update; $today_update = 1; break; default: $yesterday_update = 0; $today_update = 1; break; } switch ($current_week - $db_week) { case 0: $week_update++; break; case 1: $last_week_update = $week_update; $week_update = 1; break; default: $last_week_update = 0; $week_update = 1; break; } if ($current_month - $db_month != 0) { $month_update = 1; } else { $month_update++; } if ($current_year - $db_year != 0) { $year_update = 1; $month_update = 1; $last_week_update = 0; $week_update = 1; } else { $year_update++; } $this->db->query("UPDATE {$table} SET last_visit = NOW(), today_visit = " . $today_update . ", yesterday_visit = " . $yesterday_update . ", week_visit = " . $week_update . ", last_week_visit = " . $last_week_update . ", month_visit = " . $month_update . ", year_visit = " . $year_update . ", total_visit = total_visit + 1 WHERE ip_address= '{$ip_address}' ;"); } } else { $this->db->query("INSERT INTO {$table} (ip_address, last_visit, today_visit, yesterday_visit, week_visit, last_week_visit, month_visit, year_visit, total_visit) VALUES ('{$ip_address}', NOW(), 1, 0, 1, 0, 1, 1, 1)"); } $res["online_visitor"] = $this->db->query("SELECT `ip_address` FROM {$table} WHERE UNIX_TIMESTAMP(`last_visit`) + {$time_out} > {$time_now}")->num_rows; $day_query = $this->db->query("SELECT SUM(`today_visit`) AS day FROM {$table} WHERE DAYOFYEAR(`last_visit`) = '{$current_day}' AND YEAR(`last_visit`) = '{$current_year}'"); $res["today_visitor"] = $day_query->row["day"]; $yesterday_query1 = $this->db->query("SELECT SUM(`today_visit`) AS today FROM {$table} WHERE DAYOFYEAR(`last_visit`) = " . ($current_day - 1) . " AND YEAR(`last_visit`) = '{$current_year}'"); $yesterday_query2 = $this->db->query("SELECT SUM(`yesterday_visit`) AS yesterday FROM {$table} WHERE DAYOFYEAR(`last_visit`) = " . $current_day . " AND YEAR(`last_visit`) = '{$current_year}'"); $res["yesterday_visitor"] = $yesterday_query1->row["today"] + $yesterday_query2->row["yesterday"]; $week_query = $this->db->query("SELECT SUM(`week_visit`) AS week FROM {$table} WHERE WEEKOFYEAR(`last_visit`) = " . $current_week . " AND YEAR(`last_visit`) = '{$current_year}'"); $res["week_visitor"] = $week_query->row["week"]; $lastweek_query1 = $this->db->query("SELECT SUM(`week_visit`) AS week FROM {$table} WHERE WEEKOFYEAR(`last_visit`) = " . ($current_week - 1) . " AND YEAR(`last_visit`) = '{$current_year}'"); $lastweek_query2 = $this->db->query("SELECT SUM(`last_week_visit`) AS last_week FROM {$table} WHERE WEEKOFYEAR(`last_visit`) = " . $current_week . " AND YEAR(`last_visit`) = '{$current_year}'"); $res["lastweek_visitor"] = $lastweek_query1->row["week"] + $lastweek_query2->row["last_week"]; $month_query = $this->db->query("SELECT SUM(`month_visit`) AS month FROM {$table} WHERE MONTH(`last_visit`) = " . $current_month . " AND YEAR(`last_visit`) = '{$current_year}'"); $res["month_visitor"] = $month_query->row["month"]; $year_query = $this->db->query("SELECT SUM(`year_visit`) AS year FROM {$table} WHERE YEAR(`last_visit`) = " . $current_year . ""); $res["year_visitor"] = $year_query->row["year"]; $visit_query = $this->db->query("SELECT SUM(`total_visit`) AS total FROM {$table}"); $res["total_visitor"] = $visit_query->row["total"]; //----------------- $res["ip_visitor"] = $ip_address; $time = getdate(); $date = $time['mday']; $month = $time['mon']; $year = $time['year']; $current_date = "{$date}-{$month}-{$year}"; $res["server_time"] = $current_date; return $res; }