function &getTimeStart($offset = 0, $issunday = true, $now = "") { $offset = (double) $offset; $now = (int) $now; if (empty($now)) { $now = mktime(); } /* ------------------------------------------------------------------------------------------------ */ // Determine GMT Time (UTC+00:00) // Determine this minute, this hour, this day, this month, this year // Don't use strftime() $minute = (int) gmstrftime("%M", $now); $hour = (int) gmstrftime("%H", $now); $day = (int) gmstrftime("%d", $now); $month = (int) gmstrftime("%m", $now); $year = (int) gmstrftime("%Y", $now); // Determine Starting GMT Time and Local Time of Today $daystart = gmmktime(0, 0, 0, $month, $day, $year); $local_daystart = extVisitCounterDateTime::localTimeStart($daystart, $offset, "day"); // Determine Starting GMT Time and Local Time of Yesterday // $yesterdaystart = strtotime( "-1 day", $daystart ) ; $yesterdaystart = $daystart - 86400; $local_yesterdaystart = $local_daystart - 86400; // Determine Starting GMT Time and Local Time of This Week // If Sunday is starting day of week then Sunday = 0 ... Saturday = 6 // If Monday is starting day of week then Monday = 0 ... Sunday = 6 $weekday = (int) strftime("%w", $now); if (!$issunday) { if ($weekday) { $weekday--; } else { $weekday = 6; } } $weekstart = $daystart - $weekday * 86400; $local_weekstart = extVisitCounterDateTime::localTimeStart($weekstart, $offset, "week"); // Starting Starting GMT Time and Local Time of Last Week $lweekstart = $weekstart - 7 * 86400; $local_lweekstart = $local_weekstart - 7 * 86400; // Determine Starting GMT Time and Local Time of This Month $monthstart = gmmktime(0, 0, 0, $month, 1, $year); $local_monthstart = extVisitCounterDateTime::localTimeStart($monthstart, $offset, "month"); // Determine Starting GMT Time and Local Time of Last Month // $days_lmonth: Number days of last month (28/29, 30 or 31) $days_lmonth = (int) strftime("%d", $monthstart - 86400); $lmonthstart = $monthstart - $days_lmonth * 86400; $local_lmonthstart = $local_monthstart - $days_lmonth * 86400; $datetime = array(); $datetime["daystart"] = $daystart; $datetime["local_daystart"] = $local_daystart; $datetime["yesterdaystart"] = $yesterdaystart; $datetime["local_yesterdaystart"] = $local_yesterdaystart; $datetime["weekstart"] = $weekstart; $datetime["local_weekstart"] = $local_weekstart; $datetime["lweekstart"] = $lweekstart; $datetime["local_lweekstart"] = $local_lweekstart; $datetime["monthstart"] = $monthstart; $datetime["local_monthstart"] = $local_monthstart; $datetime["lmonthstart"] = $lmonthstart; $datetime["local_lmonthstart"] = $local_lmonthstart; return $datetime; }
// May be use $offset = $mainframe->getCfg( 'offset' ); // Get a reference to the global cache object. $cache =& JFactory::getCache(); $cache_time *= 60; if ($cache_time < 0 || $cache_time > 3600) { $cache_time = CACHE_TIMEOUT_DEFAULT * 60; } $cache->setLifeTime($cache_time); // Detect Guest's IP Address if (!empty($_SERVER['REMOTE_ADDR'])) { $ip = $_SERVER['REMOTE_ADDR']; } /* ------------------------------------------------------------------------------------------------ */ $now = mktime(); $visits_array = array(); $datetime =& extVisitCounterDateTime::getTimeStart($offset, $issunday, $now); $daystart = $datetime["daystart"]; $local_daystart = $datetime["local_daystart"]; $yesterdaystart = $datetime["yesterdaystart"]; $local_yesterdaystart = $datetime["local_yesterdaystart"]; $weekstart = $datetime["weekstart"]; $local_weekstart = $datetime["local_weekstart"]; $lweekstart = $datetime["lweekstart"]; $local_lweekstart = $datetime["local_lweekstart"]; $monthstart = $datetime["monthstart"]; $local_monthstart = $datetime["local_monthstart"]; $lmonthstart = $datetime["lmonthstart"]; $local_lmonthstart = $datetime["local_lmonthstart"]; /* ------------------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------------------ */ // BEGIN: Caculate number visits of Today, Yesterday, This Week, Last Week, This Month, Last Month
function migrateTable($now = '') { $now = empty($now) ? mktime() : (int) $now; $visits_array = array("visits" => 0, "guests" => 0, "members" => 0, "bots" => 0); $config =& JFactory::getConfig(); $offset = (double) $config->getValue('config.offset'); $issunday = true; $datetime =& extVisitCounterDateTime::getTimeStart($offset, $issunday, $now); $daystart = $datetime["daystart"]; $local_daystart = $datetime["local_daystart"]; $yesterdaystart = $datetime["yesterdaystart"]; $local_yesterdaystart = $datetime["local_yesterdaystart"]; $weekstart = $datetime["weekstart"]; $local_weekstart = $datetime["local_weekstart"]; $lweekstart = $datetime["lweekstart"]; $local_lweekstart = $datetime["local_lweekstart"]; $monthstart = $datetime["monthstart"]; $local_monthstart = $datetime["local_monthstart"]; $lmonthstart = $datetime["lmonthstart"]; $local_lmonthstart = $datetime["local_lmonthstart"]; asort($datetime); $visits_array['visits'] = extVisitCounterUpgrade::getVisits(0, current($datetime)); extVinaoraVisitorsCounter::insertLog(current($datetime), $visits_array); while ($cur_time = current($datetime)) { $next_time = next($datetime); if ($cur_time != $next_time && !empty($next_time)) { $visits_array['visits'] = extVisitCounterUpgrade::getVisits($cur_time, $next_time); extVinaoraVisitorsCounter::insertLog($next_time, $visits_array); } } $visits_array['visits'] = extVisitCounterUpgrade::getVisits(end($datetime), 0); extVinaoraVisitorsCounter::insertLog($now - 1, $visits_array); }