diff --git a/application/modules/default/models/Views.php b/application/modules/default/models/Views.php index 0bf9700d7..ac86d34ca 100644 --- a/application/modules/default/models/Views.php +++ b/application/modules/default/models/Views.php @@ -1,110 +1,110 @@ . * */ class Default_Model_Views { const OBJECT_TYPE_PRODUCT = 10; const OBJECT_TYPE_MEMBERPAGE = 20; const OBJECT_TYPE_LOGIN = 30; const OBJECT_TYPE_LOGOUT = 32; const OBJECT_TYPE_DOWNLOAD = 40; const OBJECT_TYPE_COLLECTION = 50; public static function saveViewProduct($product_id) { self::saveViewObject(self::OBJECT_TYPE_PRODUCT, $product_id); } public static function saveViewObject($object_type, $object_id) { $sql = ("INSERT IGNORE INTO `stat_page_impression` (`seen_at`, `ip_inet`, `object_type`, `object_id`, `ipv4`, `ipv6`, `fingerprint`, `user_agent`, `member_id_viewer`) VALUES (:seen, :ip_inet, :object_type, :product_id, :ipv4, :ipv6, :fp, :ua, :member)"); $session = new Zend_Session_Namespace(); - $view_member_id = Zend_Auth::getInstance()->getIdentity()->member_id ? Zend_Auth::getInstance()->getIdentity()->member_id : null; + $view_member_id = Zend_Auth::getInstance()->hasIdentity() ? Zend_Auth::getInstance()->getIdentity()->member_id : null; $ipClient = Zend_Controller_Front::getInstance()->getRequest()->getClientIp(); $remoteAddress = self::getRemoteAddress($ipClient); $ipClientv6 = filter_var($remoteAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) ? $remoteAddress : null; $ipClientv4 = filter_var($remoteAddress, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? $remoteAddress : null; $session_ipv6 = isset($session->stat_ipv6) ? inet_pton($session->stat_ipv6) : null; $session_ipv4 = isset($session->stat_ipv4) ? inet_pton($session->stat_ipv4) : null; $session_remote = isset($remoteAddress) ? inet_pton($remoteAddress) : null; $ip_inet = isset($session_ipv6) ? $session_ipv6 : (isset($session_ipv4) ? $session_ipv4 : $session_remote); try { Zend_Db_Table::getDefaultAdapter()->query($sql, array( 'seen' => round(time() / 300), 'ip_inet' => $ip_inet, 'object_type' => $object_type, 'product_id' => $object_id, 'ipv6' => $session->stat_ipv6 ? $session->stat_ipv6 : $ipClientv6, 'ipv4' => $session->stat_ipv4 ? $session->stat_ipv4 : $ipClientv4, 'fp' => $session->stat_fp ? $session->stat_fp : null, 'ua' => $_SERVER['HTTP_USER_AGENT'] ? $_SERVER['HTTP_USER_AGENT'] : null, 'member' => $view_member_id )); } catch (Exception $e) { Zend_Registry::get('logger')->err(__METHOD__ . ' - ERROR write - ' . print_r($e, true)); } } public static function getRemoteAddress($ipClient) { $iplist = explode(',', $ipClient); foreach ($iplist as $ip) { if (self::validate_ip($ip)) { return $ip; } } return null; } public static function validate_ip($ip) { $filter = FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE; if (APPLICATION_ENV == 'development') { $filter = FILTER_FLAG_NO_RES_RANGE; } if (filter_var($ip, FILTER_VALIDATE_IP, $filter) === false) { return false; } return true; } public static function saveViewMemberpage($member_id) { self::saveViewObject(self::OBJECT_TYPE_MEMBERPAGE, $member_id); } public static function saveViewDownload($file_id) { self::saveViewObject(self::OBJECT_TYPE_DOWNLOAD, $file_id); } public static function saveViewCollection($_projectId) { self::saveViewObject(self::OBJECT_TYPE_COLLECTION, $_projectId); } } \ No newline at end of file