def('moduleclass_sfx', '');//joomla process this paremeter internaly
//$moduleclass_sfx = $params->get('moduleclass_sfx');//joomla process this paremeter internaly
/* Get DateStamps */
// might want to use JoomlaStats time offset
//$date_today = strtotime("now");
$date_today = (time() + ($mosConfig_offset*60*60));
$date_yesterday = strtotime("-1 day", $date_today);
$date_today_d = date("d", $date_today);
$date_today_m = date("n", $date_today);
$date_today_y = date("Y", $date_today);
$date_yesterday_d = date("d", $date_yesterday);
$date_yesterday_m = date("m", $date_yesterday);
$date_yesterday_y = date("Y", $date_yesterday);
$moduleclass_sfx = $params->get("moduleclass_sfx", "");//@bug moduleclass_sfx parameter is used in joomla in different way. This parameters should be renamed
$v_counter_offset = (int)$params->get("v_counter_offset", 0);
$p_counter_offset = (int)$params->get("p_counter_offset", 0);
$occurred_text = $params->get("occurred", "");
if (!class_exists('MyClass'))
{
class JStatsCounter
{
var $id; // int reordered id
var $name; // string
var $label; // string
var $published; // bool
var $ordering; // int
var $counter; // int / string
var $date; // string when the max occured
var $showdate; // bool
function JStatsCounter($params, $counter_name, $id)
{
$this->id = $id;
$this->name = $counter_name;
$this->label = $params->get($this->name . "_label", " ");
if ($params->get($this->name . "_published") == 1)
$this->published = true;
else
$this->published = false;
if ($params->get($this->name . "_showdate") == 1)
$this->showdate = true;
else
$this->showdate = false;
$this->ordering = $params->get($this->name . "_ordering", 99);
$this->counter = 0;
}
function this_js_extension_install_problem_text()
{
$this_js_extension_install_problem_text = '
��������, ������ Counters ��� ����������� ����������. ';
return $this_js_extension_install_problem_text;
}
function setCounter($sql)
{
global $database;
if (trim($sql)!="" && $this->published === true)
{
$database->setQuery($sql);
if ($this->showdate)
{
$row = $database->loadRow();
if ($database->getErrorNum() > 0)
echo $this->this_js_extension_install_problem_text();
$this->counter = (int)$row[0];
$this->date = $row[1] ."-". + $row[2]; // fixed year month //RB: maybe add a format field and
if ( (isset($row[3])) && ($row[3] != 0) )
$this->date .= "-". $row[3]; // and possibly day
}
else
if ($this->name == "data_since")
{
$this->counter = $database->loadResult();
if ($database->getErrorNum() > 0)
echo $this->this_js_extension_install_problem_text();
$this->counter = substr($this->counter,0,strpos($this->counter," ")); // keep it as string and use only date part (example 2007-04-20 22:40:59)
}
else
$this->counter = (int)$database->loadResult();
if ($database->getErrorNum() > 0)
echo $this->this_js_extension_install_problem_text();
}
}
}
}
/* make Counters */
$counters = array();
$counter_names = array(
array("name" => "v_today",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 AND #__jstats_visits.day=" . $date_today_d . " AND #__jstats_visits.month=" . $date_today_m . " AND #__jstats_visits.year=" . $date_today_y . " GROUP by #__jstats_visits.day"),
array("name" => "v_yesterday",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 AND #__jstats_visits.day=" . $date_yesterday_d . " AND #__jstats_visits.month=" . $date_yesterday_m . " AND #__jstats_visits.year=" . $date_yesterday_y . " GROUP by #__jstats_visits.day"),
array("name" => "v_month",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 AND #__jstats_visits.month=" . $date_today_m . " AND #__jstats_visits.year=" . $date_today_y . " GROUP by #__jstats_visits.month"),
array("name" => "v_total",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1"),
array("name" => "v_maxaday",
// "query" => "SELECT SQL_BIG_RESULT count(*) as maxcount FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 GROUP by #__jstats_visits.day ORDER by maxcount DESC LIMIT 1"),
"query" => "SELECT SQL_BIG_RESULT count(*) as maxcount, year, month, day FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 GROUP by year, month, day ORDER by maxcount DESC LIMIT 1"),
array("name" => "v_maxamonth",
// "query" => "SELECT SQL_BIG_RESULT count(*) as maxcount FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 GROUP by #__jstats_visits.month ORDER by maxcount DESC LIMIT 1"),
"query" => "SELECT SQL_BIG_RESULT count(*) as maxcount, year, month FROM #__jstats_visits LEFT JOIN #__jstats_ipaddresses ON (#__jstats_visits.ip_id=#__jstats_ipaddresses.id) WHERE #__jstats_ipaddresses.type=1 GROUP by year, month ORDER by maxcount DESC LIMIT 1"),
array("name" => "p_today",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_page_request WHERE day=" . $date_today_d . " AND month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "p_yesterday",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_page_request WHERE day=" . $date_yesterday_d . " AND month=" . $date_yesterday_m . " AND year=" . $date_yesterday_y),
array("name" => "p_month",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_page_request WHERE month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "p_total",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_page_request"),
array("name" => "bots",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ipaddresses, #__jstats_visits WHERE (#__jstats_visits.ip_id = #__jstats_ipaddresses.id) AND (#__jstats_ipaddresses.browser !='') AND (#__jstats_ipaddresses.type =2) AND (#__jstats_visits.day =" . $date_today_d . ") AND (#__jstats_visits.month =" . $date_today_m . ") AND (#__jstats_visits.year =" . $date_today_y . ")"),
array("name" => "data_since",
"query" => "SELECT min(time) FROM #__jstats_visits`"),
array("name" => "katalog_today",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji WHERE day=" . $date_today_d . " AND month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "katalog_month",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji WHERE month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "katalog_total",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji_ed"),
array("name" => "download_today",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji_ed WHERE day=" . $date_today_d . " AND month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "download_month",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji WHERE month=" . $date_today_m . " AND year=" . $date_today_y),
array("name" => "download_total",
"query" => "SELECT SQL_BIG_RESULT count(*) FROM #__jstats_ji_ed")
);
for ($i=0, $n=count($counter_names); $i<$n; $i++)
{
$counters[$i] = new JStatsCounter($params, $counter_names[$i]["name"], ($i+1));
$counters[$i]->setCounter($counter_names[$i]["query"]);
}
/* reorder */
$new_counter = array();
foreach ($counters as $c)
{
if ($c->published)
{
$new_i = $c->ordering;
while (isset($new_counter[$new_i]))
$new_i++;
$new_counter[$new_i] = $c;
}
}
unset($counters);
ksort($new_counter);
reset($new_counter);
/* Diplay */
$out = '
' . $c->label . ' | ' . $c->counter . ' |
'. $occurred_text .' | ' . $c->date . ' |