// Some fix on objectModel children classes (fields not valid, etc.)
This commit is contained in:
+26
-21
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
@@ -26,10 +26,10 @@
|
||||
*/
|
||||
|
||||
class ConnectionCore extends ObjectModel
|
||||
{
|
||||
{
|
||||
/** @var integer */
|
||||
public $id_guest;
|
||||
|
||||
|
||||
/** @var integer */
|
||||
public $id_page;
|
||||
|
||||
@@ -38,26 +38,31 @@ class ConnectionCore extends ObjectModel
|
||||
|
||||
/** @var string */
|
||||
public $http_referer;
|
||||
|
||||
|
||||
/** @var int */
|
||||
public $id_shop;
|
||||
|
||||
|
||||
/** @var int */
|
||||
public $id_group_shop;
|
||||
|
||||
/** @var string */
|
||||
/** @var string */
|
||||
public $date_add;
|
||||
|
||||
protected $fieldsRequired = array ('id_guest', 'id_page', 'id_shop', 'id_group_shop');
|
||||
protected $fieldsRequired = array ('id_guest', 'id_page', 'id_shop', 'id_group_shop');
|
||||
protected $fieldsValidate = array ('id_guest' => 'isUnsignedId', 'id_page' => 'isUnsignedId',
|
||||
'ip_address' => 'isInt', 'http_referer' => 'isAbsoluteUrl');
|
||||
|
||||
/* MySQL does not allow 'connection' for a table name */
|
||||
/* MySQL does not allow 'connection' for a table name */
|
||||
protected $table = 'connections';
|
||||
protected $identifier = 'id_connections';
|
||||
|
||||
|
||||
public function getFields()
|
||||
{
|
||||
if (!$this->id_shop)
|
||||
$this->id_shop = Context::getContext()->shop->getId(true);
|
||||
if (!$this->id_group_shop)
|
||||
$this->id_group_shop = Context::getContext()->shop->getGroupID();
|
||||
|
||||
$this->validateFields();
|
||||
$fields['id_guest'] = (int)($this->id_guest);
|
||||
$fields['id_page'] = (int)($this->id_page);
|
||||
@@ -69,33 +74,33 @@ class ConnectionCore extends ObjectModel
|
||||
$fields['id_group_shop'] = (int)$this->id_group_shop;
|
||||
return $fields;
|
||||
}
|
||||
|
||||
|
||||
public static function setPageConnection($cookie, $full = true)
|
||||
{
|
||||
// The connection is created if it does not exist yet and we get the current page id
|
||||
if (!isset($cookie->id_connections) OR !strstr(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', Tools::getHttpHost(false, false)))
|
||||
if (!isset($cookie->id_connections) OR !strstr(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', Tools::getHttpHost(false, false)))
|
||||
$id_page = Connection::setNewConnection($cookie);
|
||||
if (!isset($id_page) OR !$id_page)
|
||||
$id_page = Page::getCurrentId();
|
||||
if (!Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
||||
return array('id_page' => $id_page);
|
||||
|
||||
|
||||
// The ending time will be updated by an ajax request when the guest will close the page
|
||||
$time_start = date('Y-m-d H:i:s');
|
||||
Db::getInstance()->AutoExecute(_DB_PREFIX_.'connections_page', array('id_connections' => (int)($cookie->id_connections), 'id_page' => (int)($id_page), 'time_start' => $time_start), 'INSERT');
|
||||
|
||||
|
||||
// This array is serialized and used by the ajax request to identify the page
|
||||
return array(
|
||||
'id_connections' => (int)($cookie->id_connections),
|
||||
'id_page' => (int)($id_page),
|
||||
'time_start' => $time_start);
|
||||
}
|
||||
|
||||
|
||||
public static function setNewConnection($cookie, Shop $shop = null)
|
||||
{
|
||||
if (!$shop)
|
||||
$shop = Context::getContext()->shop;
|
||||
|
||||
|
||||
if (isset($_SERVER['HTTP_USER_AGENT'])
|
||||
AND preg_match('/BotLink|ahoy|AlkalineBOT|anthill|appie|arale|araneo|AraybOt|ariadne|arks|ATN_Worldwide|Atomz|bbot|Bjaaland|Ukonline|borg\-bot\/0\.9|boxseabot|bspider|calif|christcrawler|CMC\/0\.01|combine|confuzzledbot|CoolBot|cosmos|Internet Cruiser Robot|cusco|cyberspyder|cydralspider|desertrealm, desert realm|digger|DIIbot|grabber|downloadexpress|DragonBot|dwcp|ecollector|ebiness|elfinbot|esculapio|esther|fastcrawler|FDSE|FELIX IDE|ESI|fido|H�m�h�kki|KIT\-Fireball|fouineur|Freecrawl|gammaSpider|gazz|gcreep|golem|googlebot|griffon|Gromit|gulliver|gulper|hambot|havIndex|hotwired|htdig|iajabot|INGRID\/0\.1|Informant|InfoSpiders|inspectorwww|irobot|Iron33|JBot|jcrawler|Teoma|Jeeves|jobo|image\.kapsi\.net|KDD\-Explorer|ko_yappo_robot|label\-grabber|larbin|legs|Linkidator|linkwalker|Lockon|logo_gif_crawler|marvin|mattie|mediafox|MerzScope|NEC\-MeshExplorer|MindCrawler|udmsearch|moget|Motor|msnbot|muncher|muninn|MuscatFerret|MwdSearch|sharp\-info\-agent|WebMechanic|NetScoop|newscan\-online|ObjectsSearch|Occam|Orbsearch\/1\.0|packrat|pageboy|ParaSite|patric|pegasus|perlcrawler|phpdig|piltdownman|Pimptrain|pjspider|PlumtreeWebAccessor|PortalBSpider|psbot|Getterrobo\-Plus|Raven|RHCS|RixBot|roadrunner|Robbie|robi|RoboCrawl|robofox|Scooter|Search\-AU|searchprocess|Senrigan|Shagseeker|sift|SimBot|Site Valet|skymob|SLCrawler\/2\.0|slurp|ESI|snooper|solbot|speedy|spider_monkey|SpiderBot\/1\.0|spiderline|nil|suke|http:\/\/www\.sygol\.com|tach_bw|TechBOT|templeton|titin|topiclink|UdmSearch|urlck|Valkyrie libwww\-perl|verticrawl|Victoria|void\-bot|Voyager|VWbot_K|crawlpaper|wapspider|WebBandit\/1\.0|webcatcher|T\-H\-U\-N\-D\-E\-R\-S\-T\-O\-N\-E|WebMoose|webquest|webreaper|webs|webspider|WebWalker|wget|winona|whowhere|wlm|WOLP|WWWC|none|XGET|Nederland\.zoek/i', $_SERVER['HTTP_USER_AGENT']))
|
||||
{
|
||||
@@ -111,7 +116,7 @@ class ConnectionCore extends ObjectModel
|
||||
return Page::getCurrentId();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// A new connection is created if the guest made no actions during 30 minutes
|
||||
$sql = 'SELECT `id_guest`
|
||||
FROM `'._DB_PREFIX_.'connections`
|
||||
@@ -124,7 +129,7 @@ class ConnectionCore extends ObjectModel
|
||||
{
|
||||
// The old connections details are removed from the database in order to spare some memory
|
||||
Connection::cleanConnectionsPages();
|
||||
|
||||
|
||||
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
|
||||
$arrayUrl = parse_url($referer);
|
||||
if (!isset($arrayUrl['host']) OR preg_replace('/^www./', '', $arrayUrl['host']) == preg_replace('/^www./', '', Tools::getHttpHost(false, false)))
|
||||
@@ -142,14 +147,14 @@ class ConnectionCore extends ObjectModel
|
||||
return $connection->id_page;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static function setPageTime($id_connections, $id_page, $time_start, $time)
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_connections)
|
||||
OR !Validate::isUnsignedId($id_page)
|
||||
OR !Validate::isDate($time_start))
|
||||
return;
|
||||
|
||||
|
||||
// Limited to 5 minutes because more than 5 minutes is considered as an error
|
||||
if ($time > 300000)
|
||||
$time = 300000;
|
||||
@@ -160,7 +165,7 @@ class ConnectionCore extends ObjectModel
|
||||
AND `id_page` = '.(int)($id_page).'
|
||||
AND `time_start` = \''.pSQL($time_start).'\'');
|
||||
}
|
||||
|
||||
|
||||
public static function cleanConnectionsPages()
|
||||
{
|
||||
$period = Configuration::get('PS_STATS_OLD_CONNECT_AUTO_CLEAN');
|
||||
@@ -173,7 +178,7 @@ class ConnectionCore extends ObjectModel
|
||||
$interval = '1 YEAR';
|
||||
else
|
||||
return;
|
||||
|
||||
|
||||
if ($interval != null)
|
||||
{
|
||||
// Records of connections details older than the beginning of the specified interval are deleted
|
||||
|
||||
Reference in New Issue
Block a user