Bug du module de statistiques - Prestashop
| Administrator
Le module de statistique "Visiteurs en ligne" de Prestashop comporte une erreur au niveau de la requête SQL qui ne renvoi donc aucun résultats.
Pour corriger le problème remplacez les 2 fonctions du fichier modules/statslive/statslive.php :
private function getCustomersOnline()
{
return Db::getInstance()->ExecuteS('
SELECT u.id_customer, u.firstname, u.lastname, pt.name as page
FROM `'._DB_PREFIX_.'connections` c
LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
LEFT JOIN `'._DB_PREFIX_.'page` p ON p.id_page = cp.id_page
LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.id_page_type = pt.id_page_type
INNER JOIN `'._DB_PREFIX_.'guest` g ON c.id_guest = g.id_guest
INNER JOIN `'._DB_PREFIX_.'customer` u ON u.id_customer = g.id_customer
WHERE cp.`time_end` IS NULL
AND TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
GROUP BY c.id_connections
ORDER BY u.firstname, u.lastname');
}
private function getVisitorsOnline()
{
return Db::getInstance()->ExecuteS('
SELECT c.id_guest, c.ip_address, c.date_add, c.http_referer, pt.name as page
FROM `'._DB_PREFIX_.'connections` c
LEFT JOIN `'._DB_PREFIX_.'connections_page` cp ON c.id_connections = cp.id_connections
LEFT JOIN `'._DB_PREFIX_.'page` p ON p.id_page = cp.id_page
LEFT JOIN `'._DB_PREFIX_.'page_type` pt ON p.id_page_type = pt.id_page_type
INNER JOIN `'._DB_PREFIX_.'guest` g ON c.id_guest = g.id_guest
WHERE (g.id_customer IS NULL OR g.id_customer = 0)
AND cp.`time_end` IS NULL
AND TIME_TO_SEC(TIMEDIFF(NOW(), cp.`time_start`)) < 900
GROUP BY c.id_connections
ORDER BY c.date_add DESC');
}
Par :
private function getCustomersOnline()
{
$today = date('Y-m-d H:i:s');
return Db::getInstance()->ExecuteS("
SELECT u.id_customer, u.firstname, u.lastname, pt.name as page
FROM `"._DB_PREFIX_."connections` c
LEFT JOIN `"._DB_PREFIX_."connections_page` cp ON c.id_connections = cp.id_connections
LEFT JOIN `"._DB_PREFIX_."page` p ON p.id_page = cp.id_page
LEFT JOIN `"._DB_PREFIX_."page_type` pt ON p.id_page_type = pt.id_page_type
INNER JOIN `"._DB_PREFIX_."guest` g ON c.id_guest = g.id_guest
INNER JOIN `"._DB_PREFIX_."customer` u ON u.id_customer = g.id_customer
WHERE cp.`time_end` IS NULL
AND TIME_TO_SEC(TIMEDIFF('".$today."', cp.`time_start`)) < 900
GROUP BY c.id_connections
ORDER BY u.firstname, u.lastname");
}
private function getVisitorsOnline()
{
$today = date('Y-m-d H:i:s');
return Db::getInstance()->ExecuteS("
SELECT c.id_guest, c.ip_address, c.date_add, c.http_referer, pt.name as page
FROM `"._DB_PREFIX_."connections` c
LEFT JOIN `"._DB_PREFIX_."connections_page` cp ON c.id_connections = cp.id_connections
LEFT JOIN `"._DB_PREFIX_."page` p ON p.id_page = cp.id_page
LEFT JOIN `"._DB_PREFIX_."page_type` pt ON p.id_page_type = pt.id_page_type
INNER JOIN `"._DB_PREFIX_."guest` g ON c.id_guest = g.id_guest
WHERE (g.id_customer IS NULL OR g.id_customer = 0)
AND cp.`time_end` IS NULL
AND TIME_TO_SEC(TIMEDIFF('".$today."', cp.`time_start`)) < 900
GROUP BY c.id_connections
ORDER BY c.date_add DESC");
}