What does not work with 1.3.8? Do not collect data? Try this:
Code:<?php
/**
* user_tracking functions
*
* @package user_tracking
* @copyright Copyright 2004-2009 Andrew Berezin eCommerce-Service.com
* @copyright Portions Copyright 2005 Petter Norrman
* @copyright Copyright 2003-2007 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: user_tracking.php 1.4 13.02.2008 4:18 Andrew Berezin $
*/
function net_match($network, $ip) {
if (($ip_long = ip2long($ip)) === false) return false;
// determines if a network in the form of 192.168.17.1/16 or
// 127.0.0.1/255.255.255.255 or 10.0.0.1 matches a given ip
$ip_arr = explode('/', $network);
if (($network_long = ip2long($ip_arr[0])) === false) return false;
if (!isset($ip_arr[1])) $ip_arr[1] = '255.255.255.255';
$x = ip2long($ip_arr[1]);
$mask = long2ip($x) == $ip_arr[1] ? $x : 0xffffffff << (32 - $ip_arr[1]);
return ($ip_long & $mask) == ($network_long & $mask);
}
function zen_update_user_tracking() {
global $db;
$wo_ip_address = (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'Unknown');
foreach (explode(",", CONFIG_USER_TRACKING_EXCLUDED) as $skip_ip) {
if ($skip_this_ip = net_match(trim($skip_ip), $wo_ip_address)) {
break;
}
}
if ($skip_this_ip == true) return;
if (isset($_SESSION['customer_id']) && (int)$_SESSION['customer_id'] > 0) {
$wo_customer_id = (int)$_SESSION['customer_id'];
$customer = $db->Execute("SELECT customers_firstname, customers_lastname
FROM " . TABLE_CUSTOMERS . "
WHERE customers_id = '" . (int)$_SESSION['customer_id'] . "'");
$wo_full_name = $customer->fields['customers_firstname'] . ' ' . $customer->fields['customers_lastname'];
} else {
$wo_customer_id = 0;
$wo_full_name = '¥' . 'Guest';
}
if (!isset($spider_flag)) {
$user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
$spider_flag = false;
if (zen_not_null($user_agent)) {
$spiders = file(DIR_WS_INCLUDES . 'spiders.txt');
for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {
if (zen_not_null($spiders[$i])) {
if (is_integer(strpos($user_agent, trim($spiders[$i])))) {
$spider_flag = true;
break;
}
}
}
}
}
if ($spider_flag) {
$wo_full_name = 'BOT ' . trim($spiders[$i]);
}
$wo_session_id = zen_session_id();
if ($wo_session_id == '') {
$wo_session_id = gethostbyaddr($wo_ip_address);
}
$wo_last_page_url = $_SERVER['REQUEST_URI'];
$referer_url = (isset($_SERVER['HTTP_REFERER'])) ? $wo_last_page_url : $_SERVER['HTTP_REFERER'];
global $breadcrumb;
$page_desc = $breadcrumb->trail(BREAD_CRUMBS_SEPARATOR);
$page_desc = strip_tags($page_desc);
$page_desc = str_replace(BREAD_CRUMBS_SEPARATOR . "\n" . 'NAVBAR_TITLE', '', $page_desc); // Fix for TPP
$page_desc = str_replace(array("\n", ' ', ' '), array(' '), $page_desc);
$page_desc = trim($page_desc);
$current_time = time();
// $db->Execute("ALTER TABLE " . TABLE_USER_TRACKING . " CHANGE page_desc page_desc VARCHAR(254)");
$sql = "INSERT INTO " . TABLE_USER_TRACKING . " (customer_id, full_name, session_id, ip_address, time_entry, time_last_click, last_page_url, referer_url, page_desc) VALUES (:customer_id:, :wo_full_name:, :wo_session_id:, :wo_ip_address:, :current_time:, :current_time:, :wo_last_page_url:, :referer_url:, :page_desc:)";
$sql = $db->bindVars($sql, ':customer_id:', $wo_customer_id, 'integer');
$sql = $db->bindVars($sql, ':wo_full_name:', $wo_full_name, 'string');
$sql = $db->bindVars($sql, ':wo_session_id:', $wo_session_id, 'string');
$sql = $db->bindVars($sql, ':wo_ip_address:', $wo_ip_address, 'string');
$sql = $db->bindVars($sql, ':current_time:', $current_time, 'integer');
$sql = $db->bindVars($sql, ':wo_last_page_url:', $wo_last_page_url, 'string');
$sql = $db->bindVars($sql, ':referer_url:', $referer_url, 'string');
$sql = $db->bindVars($sql, ':page_desc:', $page_desc, 'string');
$db->Execute($sql);
}