name = 'statsequipment';
$this->tab = 'Stats';
$this->version = 1.0;
parent::__construct();
$this->displayName = $this->l('Software');
$this->description = $this->l('Display the software used by your visitors');
}
public function install()
{
return (parent::install() AND $this->registerHook('AdminStatsModules'));
}
private function getEquipment()
{
$result = mysql_query('
SELECT DISTINCT g.*
FROM `'._DB_PREFIX_.'connections` c
LEFT JOIN `'._DB_PREFIX_.'guest` g ON g.`id_guest` = c.`id_guest`
WHERE c.`date_add` BETWEEN '.ModuleGraph::getDateBetween());
$calcArray = array('jsOK' => 0, 'jsKO' => 0, 'javaOK' => 0, 'javaKO' => 0, 'wmpOK' => 0, 'wmpKO' => 0, 'qtOK' => 0, 'qtKO' => 0, 'realOK' => 0, 'realKO' => 0, 'flashOK' => 0, 'flashKO' => 0, 'directorOK' => 0, 'directorKO' => 0);
while ($row = mysql_fetch_assoc($result))
{
if (!$row['javascript'])
{
++$calcArray['jsKO'];
continue;
}
++$calcArray['jsOK'];
($row['windows_media']) ? ++$calcArray['wmpOK'] : ++$calcArray['wmpKO'];
($row['real_player']) ? ++$calcArray['realOK'] : ++$calcArray['realKO'];
($row['adobe_flash']) ? ++$calcArray['flashOK'] : ++$calcArray['flashKO'];
($row['adobe_director']) ? ++$calcArray['directorOK'] : ++$calcArray['directorKO'];
($row['sun_java']) ? ++$calcArray['javaOK'] : ++$calcArray['javaKO'];
($row['apple_quicktime']) ? ++$calcArray['qtOK'] : ++$calcArray['qtKO'];
}
mysql_free_result($result);
if (!$calcArray['jsOK'])
return false;
$equip = array(
'Windows Media Player' => $calcArray['wmpOK'] / ($calcArray['wmpOK'] + $calcArray['wmpKO']),
'Real Player' => $calcArray['realOK'] / ($calcArray['realOK'] + $calcArray['realKO']),
'Apple Quicktime' => $calcArray['qtOK'] / ($calcArray['qtOK'] + $calcArray['qtKO']),
'Sun Java' => $calcArray['javaOK'] / ($calcArray['javaOK'] + $calcArray['javaKO']),
'Adobe Flash' => $calcArray['flashOK'] / ($calcArray['flashOK'] + $calcArray['flashKO']),
'Adobe Shockwave' => $calcArray['directorOK'] / ($calcArray['directorOK'] + $calcArray['directorKO'])
);
arsort($equip);
return $equip;
}
public function hookAdminStatsModules($params)
{
$equipment = $this->getEquipment();
$this->_html = '
';
return $this->_html;
}
public function setOption($option, $layers = 1)
{
switch($option)
{
case 'wb':
$this->_titles['main'] = $this->l('Web browser use');
$this->_query = '
SELECT wb.`name`, COUNT(g.`id_web_browser`) AS total
FROM `'._DB_PREFIX_.'web_browser` wb
LEFT JOIN `'._DB_PREFIX_.'guest` g ON g.`id_web_browser` = wb.`id_web_browser`
LEFT JOIN `'._DB_PREFIX_.'connections` c ON g.`id_guest` = c.`id_guest`
WHERE c.`date_add` BETWEEN ';
$this->_query2 = ' GROUP BY g.`id_web_browser`';
break;
case 'os':
$this->_titles['main'] = $this->l('Operating systems use');
$this->_query = '
SELECT os.`name`, COUNT(g.`id_operating_system`) AS total
FROM `'._DB_PREFIX_.'operating_system` os
LEFT JOIN `'._DB_PREFIX_.'guest` g ON g.`id_operating_system` = os.`id_operating_system`
LEFT JOIN `'._DB_PREFIX_.'connections` c ON g.`id_guest` = c.`id_guest`
WHERE c.`date_add` BETWEEN ';
$this->_query2 = ' GROUP BY g.`id_operating_system`';
break;
}
}
protected function getData($layers)
{
$result = Db::getInstance()->ExecuteS($this->_query.$this->getDate().$this->_query2);
$this->_values = array();
$i = 0;
foreach ($result as $row)
{
$this->_values[$i] = $row['total'];
$this->_legend[$i++] = $row['name'];
}
}
}
?>