name = 'statsorigin';
$this->tab = 'Stats';
$this->version = 1.0;
parent::__construct();
$this->displayName = $this->l('Visitors origin');
$this->description = $this->l('Display the websites from where your visitors come from');
}
function install()
{
return (parent::install() AND $this->registerHook('AdminStatsModules'));
}
private function getOrigins($dateBetween)
{
$directLink = $this->l('Direct link');
$result = mysql_query('
SELECT c.http_referer
FROM '._DB_PREFIX_.'connections c
WHERE c.date_add BETWEEN '.$dateBetween);
$websites = array($directLink => 0);
while ($row = mysql_fetch_assoc($result))
{
if (!isset($row['http_referer']) OR empty($row['http_referer']))
++$websites[$directLink];
else
{
$website = preg_replace('/^www./', '', parse_url($row['http_referer'], PHP_URL_HOST));
if (!isset($websites[$website]))
$websites[$website] = 1;
else
++$websites[$website];
}
}
mysql_free_result($result);
arsort($websites);
return $websites;
}
function hookAdminStatsModules()
{
$websites = $this->getOrigins(ModuleGraph::getDateBetween());
$this->_html = '
';
return $this->_html;
}
protected function getData($layers)
{
$this->_titles['main'] = $this->l('10 first websites');
$websites = $this->getOrigins($this->getDate());
$total = 0;
$total2 = 0;
$i = 0;
foreach ($websites as $website => $totalRow)
{
if (!$totalRow)
continue;
$total += $totalRow;
if ($i++ < 9)
{
$this->_legend[] = $website;
$this->_values[] = $totalRow;
$total2 += $totalRow;
}
}
if ($total != $total2)
{
$this->_legend[] = $this->l('Others');
$this->_values[] = $total - $total2;
}
}
}
?>