/** * @return array * @access public */ function post() { $referer = $this->container['referer_orig']; if ($this->container['first_request'] && !empty($referer)) { if (!($ignoreRules = @file(POT_CONFIG_PATH . 'search_engines.ignore.ini'))) { return phpOpenTracker::handleError(sprintf('Cannot open "%s".', POT_CONFIG_PATH . 'search_engines.ignore.ini'), E_USER_ERROR); } if (!($matchRules = @file(POT_CONFIG_PATH . 'search_engines.match.ini'))) { return phpOpenTracker::handleError(sprintf('Cannot open "%s".', POT_CONFIG_PATH . 'search_engines.match.ini'), E_USER_ERROR); } $ignore = false; foreach ($ignoreRules as $ignoreRule) { if (preg_match(trim($ignoreRule), $referer)) { $ignore = true; break; } } if (!$ignore) { foreach ($matchRules as $matchRule) { if (preg_match(trim($matchRule), $referer, $tmp)) { $keywords = $tmp[1]; } } $searchEngineName = phpOpenTracker_Parser::match($referer, phpOpenTracker_Parser::readRules(POT_CONFIG_PATH . 'search_engines.group.ini')); } if (isset($keywords) && isset($searchEngineName) && $searchEngineName != $referer) { $this->db->query(sprintf("INSERT INTO %s\n (accesslog_id,\n search_engine, keywords)\n VALUES ('%d',\n '%s', '%s')", $this->config['plugins']['search_engines']['table'], $this->container['accesslog_id'], $this->db->prepareString($searchEngineName), $this->db->prepareString($keywords))); $this->container['referer'] = ''; $this->container['referer_orig'] = ''; $this->container['referer_id'] = 0; } } return array(); }
/** * Parses a given string for Operating System and * User Agent information. * * @param string $string * @return array * @access public * @static */ function userAgent($string) { if (preg_match('#\\((.*?)\\)#', $string, $tmp)) { $elements = explode(';', $tmp[1]); $elements[] = $string; } else { $elements = array($string); } if ($elements[0] != 'compatible') { $elements[] = substr($string, 0, strpos($string, '(')); } $result['operating_system'] = phpOpenTracker_Parser::match($elements, phpOpenTracker_Parser::readRules(POT_CONFIG_PATH . 'operating_systems.ini')); $result['user_agent'] = phpOpenTracker_Parser::match($elements, phpOpenTracker_Parser::readRules(POT_CONFIG_PATH . 'user_agents.ini')); return $result; }