コード例 #1
0
 /**
  * Constructor.
  *
  * @param  array $parameters
  * @access public
  */
 function phpOpenTracker_LoggingEngine_Plugin($parameters)
 {
     $this->config =& phpOpenTracker_Config::singleton(true);
     $this->container =& phpOpenTracker_Container::singleton();
     $this->db =& phpOpenTracker_DB::singleton();
     $this->parameters = $parameters;
 }
コード例 #2
0
 /**
  * Constructor.
  *
  * @param  optional array $parameters
  * @access public
  */
 function phpOpenTracker_LoggingEngine($parameters = array())
 {
     $parameters['init'] = true;
     $this->config =& phpOpenTracker_Config::singleton(true);
     $this->container =& phpOpenTracker_Container::singleton($parameters);
     $this->db =& phpOpenTracker_DB::singleton();
     $this->_loadPlugins($parameters);
 }
コード例 #3
0
ファイル: API.php プロジェクト: BackupTheBerlios/nxwcms-svn
 /**
  * Constructor.
  *
  * @access public
  */
 function phpOpenTracker_API()
 {
     $this->config =& phpOpenTracker_Config::singleton();
     if ($this->config['query_cache']) {
         @(include_once 'Cache/Lite.php');
         if (class_exists('Cache_Lite')) {
             $this->cache = new Cache_Lite(array('cacheDir' => $this->config['query_cache_dir'], 'lifeTime' => $this->config['query_cache_lifetime']));
         } else {
             phpOpenTracker::handleError('Could not find PEAR Cache_Lite package, Query Cache disabled.');
         }
     }
     $this->_loadPlugins();
 }
コード例 #4
0
ファイル: DB.php プロジェクト: BackupTheBerlios/nxwcms-svn
 /**
  * Singleton.
  *
  * @access public
  * @return object
  * @static
  */
 function &singleton()
 {
     static $db;
     if (!isset($db)) {
         $config =& phpOpenTracker_Config::singleton();
         $dbClass = 'phpOpenTracker_DB_' . $config['db_type'];
         if (!@(include POT_INCLUDE_PATH . 'DB/' . $config['db_type'] . '.php')) {
             phpOpenTracker::handleError(sprintf('Unknown database handler "%s".', $config['db_type']), E_USER_ERROR);
         }
         $db = new $dbClass();
     }
     return $db;
 }
コード例 #5
0
 /**
  * Handles an error according to the debug_level setting.
  *
  * @param           string  $errorMessage
  * @param  optional integer $errorType
  * @return boolean
  * @access public
  * @static
  */
 function handleError($errorMessage, $errorType = E_USER_WARNING)
 {
     $config =& phpOpenTracker_Config::singleton();
     $prefix = 'phpOpenTracker ' . ($errorType == E_USER_ERROR ? 'Error' : 'Warning') . ': ';
     if ($config['debug_level'] > 0) {
         echo $prefix . $errorMessage;
     }
     if ($config['log_errors']) {
         @error_log(sprintf("%s: %s\n", date('d-m-Y H:i:s', time()), $errorMessage), 3, dirname(__FILE__) . '/' . 'error.log');
     }
     if ($config['exit_on_fatal_errors'] && $errorType == E_USER_ERROR) {
         exit;
     }
     return false;
 }
コード例 #6
0
ファイル: exit.php プロジェクト: BackupTheBerlios/nxwcms-svn
<?php

//
// +---------------------------------------------------------------------+
// | phpOpenTracker - The Website Traffic and Visitor Analysis Solution  |
// +---------------------------------------------------------------------+
// | Copyright (c) 2000-2003 Sebastian Bergmann. All rights reserved.    |
// +---------------------------------------------------------------------+
// | This source file is subject to the phpOpenTracker Software License, |
// | Version 1.0, that is bundled with this package in the file LICENSE. |
// | If you did not receive a copy of this file, you may either read the |
// | license online at http://phpOpenTracker.de/license/1_0.txt, or send |
// | a note to license@phpOpenTracker.de, so we can mail you a copy.     |
// +---------------------------------------------------------------------+
//
// $Id: exit.php,v 1.5 2004/10/11 18:29:15 sven_weih Exp $
//
require_once "../../cms/config.inc.php";
require_once $c["path"] . $cds->path . "modules/stats/phpOpenTracker.php";
if (isset($_GET['url'])) {
    $exitURL = str_replace('&amp;', '&', base64_decode($_GET['url']));
    $config =& phpOpenTracker_Config::singleton(true);
    $db =& phpOpenTracker_DB::singleton();
    $container =& phpOpenTracker_Container::singleton(array('initNoSetup' => true));
    $db->query(sprintf("UPDATE %s\r\n          SET exit_target_id = '%d'\r\n        WHERE accesslog_id   = '%d'\r\n          AND document_id    = '%d'\r\n          AND timestamp      = '%d'", $config['accesslog_table'], $db->storeIntoDataTable($config['exit_targets_table'], $exitURL), $container['accesslog_id'], $container['document_id'], $container['timestamp']));
    header('Location: http://' . $exitURL);
}
コード例 #7
0
 /**
  * Returns a reference to phpOpenTracker's session container.
  *
  * The first call to this method during a request triggers, if
  * $parameters['init'] is not set to false, the generation of
  * the session container array.
  *
  * @param  optional array $parameters
  * @return array
  * @access public
  * @static
  */
 function &singleton($parameters = array())
 {
     static $isInitialized;
     $init = isset($parameters['init']) ? $parameters['init'] : false;
     $initAPI = isset($parameters['initAPI']) ? $parameters['initAPI'] : false;
     $initNoSetup = isset($parameters['initNoSetup']) ? $parameters['initNoSetup'] : false;
     $isInitialized = isset($isInitialized) ? $isInitialized : false;
     if ($initAPI) {
         $init = true;
         $isInitialized = false;
     } else {
         if ($initNoSetup) {
             $init = true;
         }
     }
     if ($isInitialized && !$init) {
         return $_SESSION['_phpOpenTracker_Container'];
     }
     if ($init && !$initAPI) {
         session_register('_phpOpenTracker_Container');
         $container =& $_SESSION['_phpOpenTracker_Container'];
     }
     if ($init && !$isInitialized && !$initNoSetup) {
         $config =& phpOpenTracker_Config::singleton(true);
         $db =& phpOpenTracker_DB::singleton();
         $parameters['client_id'] = isset($parameters['client_id']) ? $parameters['client_id'] : 1;
         $container['first_request'] = isset($container['first_request']) ? false : true;
         if ($container['first_request']) {
             $client_id_switched = false;
         } else {
             if ($container['client_id'] != $parameters['client_id']) {
                 $container['first_request'] = true;
                 $client_id_switched = true;
             }
         }
         $container['client_id'] = $parameters['client_id'];
         if ($container['first_request']) {
             if (function_exists('posix_getpid')) {
                 $container['accesslog_id'] = crc32(microtime() . posix_getpid());
             } else {
                 $container['accesslog_id'] = crc32(microtime() . session_id());
             }
             if (!$client_id_switched) {
                 if (!isset($parameters['host']) && !isset($parameters['ip_address'])) {
                     if (isset($_SERVER['REMOTE_ADDR'])) {
                         $container['ip_address'] = $_SERVER['REMOTE_ADDR'];
                         if (isset($_SERVER['REMOTE_HOST'])) {
                             $container['host_orig'] = $_SERVER['REMOTE_HOST'];
                         } else {
                             if ($config['resolve_hostname']) {
                                 $container['host_orig'] = gethostbyaddr($container['ip_address']);
                             } else {
                                 $container['host_orig'] = $container['ip_address'];
                             }
                         }
                     } else {
                         $container['host_orig'] = '';
                         $container['ip_address'] = '';
                     }
                 } else {
                     $container['host_orig'] = isset($parameters['host']) ? $parameters['host'] : '';
                     $container['ip_address'] = isset($parameters['ip_address']) ? $parameters['ip_address'] : '';
                 }
                 $container['host'] = $container['host_orig'];
                 if ($config['group_hostnames']) {
                     $container['host'] = phpOpenTracker_Parser::hostname($container['host']);
                 }
                 if (isset($parameters['user_agent'])) {
                     $container['user_agent_orig'] = $parameters['user_agent'];
                 } else {
                     $container['user_agent_orig'] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
                 }
                 if ($config['group_user_agents']) {
                     $container = array_merge($container, phpOpenTracker_Parser::userAgent($container['user_agent_orig']));
                 } else {
                     $container['operating_system'] = 'Not identified';
                     $container['user_agent'] = $container['user_agent_orig'];
                 }
                 $container['host_id'] = $db->storeIntoDataTable($config['hostnames_table'], $container['host']);
                 $container['operating_system_id'] = $db->storeIntoDataTable($config['operating_systems_table'], $container['operating_system']);
                 $container['user_agent_id'] = $db->storeIntoDataTable($config['user_agents_table'], $container['user_agent']);
             }
             if (isset($parameters['referer'])) {
                 $container['referer_orig'] = $parameters['referer'];
             } else {
                 $container['referer_orig'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
             }
             $container['referer_orig'] = urldecode($container['referer_orig']);
             if ($config['clean_referer_string']) {
                 $container['referer'] = preg_replace('/(\\?.*)/', '', $container['referer_orig']);
             } else {
                 $container['referer'] = $container['referer_orig'];
             }
             if (!empty($container['referer'])) {
                 $container['referer'] = str_replace('http://', '', $container['referer']);
             }
             $container['referer_id'] = $db->storeIntoDataTable($config['referers_table'], $container['referer']);
         } else {
             $container['last_document'] = $container['document'];
         }
         $container['document_url'] = isset($parameters['document_url']) ? $parameters['document_url'] : urldecode($_SERVER[$config['document_env_var']]);
         if ($config['clean_query_string']) {
             $container['document_url'] = preg_replace('/(\\?.*)/', '', $container['document_url']);
         } else {
             $filters = array_merge($config['get_parameter_filter'], array(session_name()));
             foreach ($filters as $filter) {
                 $container['document_url'] = preg_replace('#\\?' . $filter . '=.*$|&' . $filter . '=.*$|' . $filter . '=.*&#msiU', '', $container['document_url']);
             }
         }
         $container['document'] = isset($parameters['document']) ? $parameters['document'] : $container['document_url'];
         $container['document_id'] = $db->storeIntoDataTable($config['documents_table'], $container['document'], $container['document_url']);
         $container['timestamp'] = isset($parameters['timestamp']) ? $parameters['timestamp'] : time();
         $isInitialized = true;
     }
     return $container;
 }
コード例 #8
0
 /**
  * Constructor.
  *
  * @access public
  */
 function phpOpenTracker_API_Plugin()
 {
     $this->config =& phpOpenTracker_Config::singleton();
     $this->container =& phpOpenTracker_Container::singleton();
     $this->db =& phpOpenTracker_DB::singleton();
 }
コード例 #9
0
 /**
  * Sets the value of a configuration directive.
  *
  * @param  string $directive
  * @param  mixed  $value
  * @access public
  * @static
  * @since  phpOpenTracker 1.2.0
  */
 function set($directive, $value)
 {
     $config =& phpOpenTracker_Config::singleton();
     $config[$directive] = $value;
 }