예제 #1
0
 /**
  * @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();
 }
예제 #2
0
 /**
  * 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;
 }