r60 - in phpOpenTracker/tags: . phpOpenTracker-1.5.2 phpOpenTracker-1.5.2/phpOpenTracker/DB phpOpenTracker-1.5.2/phpOpenTracker/docs phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts
Sebastian Bergmann at BerliOS <[email protected]> Wed, 14 Sep 2005 08:01:03 +0200
| Newsgroups | gmane.comp.web.phpopentracker.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: s_bergmann Date: 2005-09-14 08:00:33 +0200 (Wed, 14 Sep 2005) New Revision: 60 Added: phpOpenTracker/tags/phpOpenTracker-1.5.2/ phpOpenTracker/tags/phpOpenTracker-1.5.2/package.xml phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/DB/mysql_merge.php phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/NEWS phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts/image.php Removed: phpOpenTracker/tags/phpOpenTracker-1.5.2/package.xml phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/DB/mysql_merge.php phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/NEWS phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts/image.php Log: Tag release. Copied: phpOpenTracker/tags/phpOpenTracker-1.5.2 (from rev 56, phpOpenTracker/branches/phpOpenTracker-1.5) Deleted: phpOpenTracker/tags/phpOpenTracker-1.5.2/package.xml =================================================================== --- phpOpenTracker/branches/phpOpenTracker-1.5/package.xml 2005-07-30 10:42:44 UTC (rev 56) +++ phpOpenTracker/tags/phpOpenTracker-1.5.2/package.xml 2005-09-14 06:00:33 UTC (rev 60) @@ -1,151 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<!DOCTYPE package SYSTEM "http://pear.php.net/dtd/package-1.0"> -<package version="1.0"> - <name>phpOpenTracker</name> - <summary>Framework solution for the analysis of website traffic and visitor behaviour.</summary> - <description>phpOpenTracker is a framework solution for the analysis of website traffic and visitor behaviour. It features a logging engine that, either invoked as a web-bug by a HTML image tag or embedded with two lines of code into your PHP application, logs each request to a website into a database. One installation of phpOpenTracker can track an arbitrary number of web-sites. Through the phpOpenTracker API you can easily access the gathered data and perform complex operations on it, like for instance the analysis of your visitors' clickpaths.</description> - <maintainers> - <maintainer> - <user>bergmann</user> - <role>lead</role> - <name>Sebastian Bergmann</name> - <email>[email protected]</email> - </maintainer> - </maintainers> - <license>Apache License 2.0</license> - <release> - <version>1.5.1</version> - <state>stable</state> - <date>2005-06-30</date> - <filelist> - <dir name="/"> - <file role="php" name="phpOpenTracker.php"/> - - <dir name="phpOpenTracker"> - <dir name="API"> - <dir name="plugins"> - <file role="php" name="access_statistics.php"/> - <file role="php" name="clickpath_analysis.php"/> - <file role="php" name="plot_access_statistics.php"/> - <file role="php" name="plot_top.php"/> - <file role="php" name="returning_visitors.php"/> - <file role="php" name="top.php"/> - <file role="php" name="visitors_online.php"/> - </dir> - - <file role="php" name="Clickpath.php"/> - <file role="php" name="Plugin.php"/> - </dir> - - <dir name="DB"> - <file role="php" name="mssql.php"/> - <file role="php" name="mysql.php"/> - <file role="php" name="mysql_merge.php"/> - <file role="php" name="oci8.php"/> - <file role="php" name="pgsql.php"/> - </dir> - - <dir name="conf"> - <file role="php" name="hosts.ini"/> - <file role="php" name="lock.ini.dist"/> - <file role="php" name="operating_systems.ini"/> - <file role="php" name="phpOpenTracker.php.dist"/> - <file role="php" name="user_agents.ini"/> - </dir> - - <dir name="docs"> - <dir name="examples"> - <dir name="simple_report"> - <dir name="images"> - <file role="doc" name="88x31.jpg"/> - <file role="doc" name="bg_left.jpg"/> - <file role="doc" name="bg_top.jpg"/> - <file role="doc" name="line_left.jpg"/> - <file role="doc" name="line_top.jpg"/> - <file role="doc" name="logo_left_bottom.jpg"/> - <file role="doc" name="logo_left_top.jpg"/> - <file role="doc" name="logo_right_bottom.jpg"/> - <file role="doc" name="logo_right_top.jpg"/> - <file role="doc" name="space.gif"/> - <file role="doc" name="top_btn.jpg"/> - </dir> - - <dir name="templates"> - <file role="doc" name="client.htm"/> - <file role="doc" name="client_list.htm"/> - <file role="doc" name="current_activity.htm"/> - <file role="doc" name="day.htm"/> - <file role="doc" name="item.htm"/> - <file role="doc" name="daily_statistics.htm"/> - <file role="doc" name="hourly_statistics.htm"/> - <file role="doc" name="monthly_statistics.htm"/> - <file role="doc" name="visitor.htm"/> - <file role="doc" name="layout.htm"/> - <file role="doc" name="month.htm"/> - <file role="doc" name="total.htm"/> - </dir> - - <file role="doc" name="graph.php"/> - <file role="doc" name="index.php"/> - <file role="doc" name="MyTemplate.php"/> - <file role="doc" name="style.css"/> - </dir> - - <dir name="webbug"> - <file role="doc" name="index.htm"/> - <file role="doc" name="webbug.js"/> - </dir> - </dir> - - <dir name="scripts"> - <file role="doc" name="benchmark.php"/> - <file role="doc" name="exit.php"/> - <file role="doc" name="image.php"/> - </dir> - - <dir name="sql"> - <dir name="mysql"> - <dir name="update"> - <file role="doc" name="1_1_X_to_1_2_0.sql"/> - <file role="doc" name="1_2_X_to_1_3_0.sql"/> - </dir> - - <file role="doc" name="innodb.sql"/> - <file role="doc" name="myisam.sql"/> - <file role="doc" name="myisam_merge.sql"/> - </dir> - - <dir name="oracle"> - <file role="doc" name="oracle.sql"/> - <file role="doc" name="pot_oracle.sh"/> - <file role="doc" name="README"/> - </dir> - - <file role="doc" name="mssql.sql"/> - <file role="doc" name="postgresql.sql"/> - </dir> - - <file role="doc" name="LICENSE"/> - <file role="doc" name="NEWS"/> - <file role="doc" name="README"/> - </dir> - - <file role="php" name="API.php"/> - <file role="php" name="Config.php"/> - <file role="php" name="Container.php"/> - <file role="php" name="DB.php"/> - <file role="php" name="LoggingEngine.php"/> - <file role="php" name="Parser.php"/> - <file role="php" name="Version.php"> - <replace type="package-info" from="@version@" to="version"/> - </file> - - <dir name="LoggingEngine"> - <file role="php" name="Plugin.php"/> - </dir> - </dir> - </dir> - </filelist> - <notes>See http://www.phpOpenTracker.de/.</notes> - </release> -</package> Copied: phpOpenTracker/tags/phpOpenTracker-1.5.2/package.xml (from rev 59, phpOpenTracker/branches/phpOpenTracker-1.5/package.xml) Deleted: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/DB/mysql_merge.php =================================================================== --- phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/DB/mysql_merge.php 2005-07-30 10:42:44 UTC (rev 56) +++ phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/DB/mysql_merge.php 2005-09-14 06:00:33 UTC (rev 60) @@ -1,647 +0,0 @@ -<?php -// -// phpOpenTracker - The Website Traffic and Visitor Analysis Solution -// -// Copyright 2000 - 2005 Sebastian Bergmann. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -require POT_INCLUDE_PATH . 'DB/mysql.php'; - -/** - * phpOpenTracker MySQL Database Handler (using Merge Tables) - * - * @author Sebastian Bergmann <[email protected]> - * @copyright Copyright © 2000-2005 Sebastian Bergmann <[email protected]> - * @license http://www.apache.org/licenses/LICENSE-2.0 The Apache License, Version 2.0 - * @category phpOpenTracker - * @package phpOpenTracker - * @since phpOpenTracker 1.2.0 - */ -class phpOpenTracker_DB_mysql_merge extends phpOpenTracker_DB_mysql { - /** - * Schema for the pot_accesslog table. - * - * @var string - * @access private - */ - var $_accesslogSchema = - "CREATE %s TABLE %s %s ( - accesslog_id INT(11) NOT NULL, - timestamp INT(10) UNSIGNED NOT NULL, - weekday TINYINT(1) UNSIGNED NOT NULL, - `hour` TINYINT(2) UNSIGNED NOT NULL, - document_id INT(11) NOT NULL, - exit_target_id INT(11) DEFAULT '0' NOT NULL, - entry_document TINYINT(1) UNSIGNED NOT NULL, - - KEY accesslog_id (accesslog_id), - KEY timestamp (timestamp), - KEY document_id (document_id), - KEY exit_target_id (exit_target_id) - ) %s;"; - - /** - * Schema for the pot_visitors table. - * - * @var string - * @access private - */ - var $_visitorsSchema = - "CREATE %s TABLE %s %s ( - accesslog_id INT(11) NOT NULL, - visitor_id INT(11) NOT NULL, - client_id INT(10) UNSIGNED NOT NULL, - operating_system_id INT(11) NOT NULL, - user_agent_id INT(11) NOT NULL, - host_id INT(11) NOT NULL, - referer_id INT(11) NOT NULL, - timestamp INT(10) UNSIGNED NOT NULL, - weekday TINYINT(1) UNSIGNED NOT NULL, - `hour` TINYINT(2) UNSIGNED NOT NULL, - returning_visitor TINYINT(1) UNSIGNED NOT NULL, - - PRIMARY KEY (accesslog_id), - KEY client_time (client_id, timestamp) - ) %s;"; - - /** - * Performs an SQL query. - * - * @param string $query - * @param mixed $limit - * @param boolean $warnOnFailure - * @param boolean $tablesAlreadyCreated - * @access public - */ - function query($query, $limit = false, $warnOnFailure = true, $tablesAlreadyCreated = false) { - if ($this->isManip($query)) { - if (!$tablesAlreadyCreated) { - $query = $this->_replaceTableNames($query); - } - - if (isset($this->result) && is_resource($this->result)) { - @mysql_free_result($this->result); - } - - if ($this->config['debug_level'] > 1) { - $this->debugQuery($query); - } - - $this->result = @mysql_query($query, $this->connection); - - if (!$this->result) { - $throwError = $warnOnFailure ? true : false; - - if (!$tablesAlreadyCreated && - mysql_errno($this->connection) == 1146) { - $this->_createNewTables(); - $this->query($query, $limit, $warnOnFailure, true); - $throwError = false; - } - - if ($throwError) { - phpOpenTracker::handleError( - @mysql_error($this->connection), - E_USER_ERROR - ); - } - } - } else { - $query = $this->_rewriteSelectQuery($query); - - if ($limit != false) { - $query .= ' LIMIT ' . $limit; - } - - parent::query($query); - } - } - - /** - * Alters an existing merge table. - * - * @param string $name - * @access private - */ - function _alterMergeTable($name) { - parent::query( - sprintf( - 'ALTER TABLE %s UNION=(%s)', - - $name, - $this->_getMergeTables($name) - ) - ); - } - - /** - * Creates a merge table. - * - * @param string $name - * @param string $type - * @param array $tables - * @param boolean $mayExist - * @param boolean $temporary - * @access private - */ - function _createMergeTable($name, $type, $tables, $mayExist = true, $temporary = false) { - if ($mayExist && $this->_tableExists($name)) { - $this->_alterMergeTable($name); - return; - } - - if ($temporary) { - parent::query( - sprintf( - 'DROP TABLE IF EXISTS %s', - - $name - ) - ); - } - - parent::query( - sprintf( - ($type == 'accesslog') ? $this->_accesslogSchema : $this->_visitorsSchema, - $temporary ? 'TEMPORARY' : '', - !$temporary ? 'IF NOT EXISTS' : '', - $name, - 'TYPE=MRG_MyISAM UNION=(' . implode(',', $tables) . ')' - ) - ); - } - - /** - * Creates new pot_accesslog and pot_visitors tables - * to accomodate INSERTs for the current month - * (when in "day" mode) or the current year (when running - * in "month" mode). - * - * @access private - */ - function _createNewTables() { - $accesslogTables = array(); - $visitorsTables = array(); - - $currentMonth = date('n'); - $currentYear = date('Y'); - - switch ($this->config['merge_tables_mode']) { - case 'day': { - $numDaysInCurrentMonth = $this->_numDaysInMonth($currentMonth, $currentYear); - - for ($day = 1; $day <= $numDaysInCurrentMonth; $day++) { - $newAccesslogTable = $this->_getMergeTableName( - 'accesslog', - $currentYear, - $currentMonth, - $day - ); - - $accesslogTables[] = $newAccesslogTable; - - $this->_createNewTable( - 'accesslog', - $newAccesslogTable - ); - - $newVisitorsTable = $this->_getMergeTableName( - 'visitors', - $currentYear, - $currentMonth, - $day - ); - - $visitorsTables[] = $newVisitorsTable; - - $this->_createNewTable( - 'visitors', - $newVisitorsTable - ); - } - - // Create merge tables for current month. - $this->_createMergeTable( - $this->_getMergeTableName( - 'accesslog', - $currentYear, - $currentMonth - ), - 'accesslog', - $accesslogTables, - false - ); - - $this->_createMergeTable( - $this->_getMergeTableName( - 'visitors', - $currentYear, - $currentMonth - ), - 'visitors', - $visitorsTables, - false - ); - } - break; - - case 'month': { - for ($month = $currentMonth; $month <= 12; $month++) { - $newAccesslogTable = $this->_getMergeTableName( - 'accesslog', - $currentYear, - $month - ); - - $accesslogTables[] = $newAccesslogTable; - - $this->_createNewTable( - 'accesslog', - $newAccesslogTable - ); - - $newVisitorsTable = $this->_getMergeTableName( - 'visitors', - $currentYear, - $month - ); - - $visitorsTables[] = $newVisitorsTable; - - $this->_createNewTable( - 'visitors', - $newVisitorsTable - ); - } - } - break; - } - - $this->_createMergeTable( - $this->config['accesslog_table'], - 'accesslog', - $accesslogTables - ); - - $this->_createMergeTable( - $this->config['visitors_table'], - 'visitors', - $visitorsTables - ); - } - - /** - * Helper method for _createNewTables(). - * - * @param string $type - * @param string $name - * @access private - * @see _createNewTables() - */ - function _createNewTable($type, $name) { - parent::query( - sprintf( - ($type == 'accesslog') ? $this->_accesslogSchema : $this->_visitorsSchema, - '', - 'IF NOT EXISTS', - $name, - ($type == 'accesslog') ? 'TYPE=MyISAM DELAY_KEY_WRITE=1 PACK_KEYS=1' : 'TYPE=MyISAM DELAY_KEY_WRITE=1' - ) - ); - } - - /** - * Returns the first field of the next row. - * - * @return string - * @access private - */ - function _fetchFirstField() { - if (is_resource($this->result)) { - $row = @mysql_fetch_row($this->result); - - if (is_array($row)) { - return $row[0]; - } - } - - return false; - } - - /** - * Returns the name of a merge table. - * - * @param string $type - * @param integer $year - * @param integer $month - * @param integer $day - * @return string - * @access private - */ - function _getMergeTableName($type, $year, $month = false, $day = false) { - $name = sprintf( - '%s_%d', - - ($type == 'accesslog') ? $this->config['accesslog_table'] : $this->config['visitors_table'], - $year - ); - - if ($month !== false) { - $name .= sprintf( - '%02d', - - $month - ); - } - - if ($day !== false) { - $name .= sprintf( - '%02d', - - $day - ); - } - - return $name; - } - - /** - * Returns a comma-separated list of existing merge tables. - * - * @param string $name - * @return string - * @access private - */ - function _getMergeTables($name) { - $tables = array(); - - switch ($this->config['merge_tables_mode']) { - case 'day': { - $tableNameLength = strlen($name) + 9; - } - break; - - case 'month': { - $tableNameLength = strlen($name) + 7; - } - break; - } - - parent::query('SHOW TABLES'); - - while ($field = $this->_fetchFirstField()) { - if (strstr($field, $name) && - strlen($field) == $tableNameLength) { - $tables[] = $field; - } - } - - sort($tables); - - return implode(',', $tables); - } - - /** - * Returns the number of days in a given month. - * - * @param integer $month - * @param integer $year - * @return integer - * @access private - */ - function _numDaysInMonth($month, $year) { - return date( - 't', - mktime(0, 0, 0, $month, 1, $year) - ); - } - - /** - * Replaces the names of the pot_accesslog and pot_visitors - * merge tables with the ones for a given day or month. - * - * @param string $query - * @param string $suffix - * @return string - * @access private - */ - function _replaceTableNames($query, $suffix = '') { - if ($suffix == '') { - switch ($this->config['merge_tables_mode']) { - case 'day': { - $suffix = date('Y') . date('m') . date('d'); - } - break; - - case 'month': { - $suffix = date('Y') . date('m'); - } - break; - } - } - - return str_replace( - array( - $this->config['accesslog_table'], - $this->config['visitors_table'] - ), - - array( - $this->config['accesslog_table'] . '_' . $suffix, - $this->config['visitors_table'] . '_' . $suffix - ), - - $query - ); - } - - /** - * Rewrites an SQL SELECT query. - * - * @param string $query - * @return string - * @access private - */ - function _rewriteSelectQuery($query) { - $parsedQuery = explode(' ', $query); - $between = array_search('BETWEEN', $parsedQuery); - - if ($between == false) { - return $query; - } - - $accesslogTables = array(); - $visitorsTables = array(); - - $startDay = $day = date('d', $parsedQuery[$between + 1]); - $startMonth = $month = date('m', $parsedQuery[$between + 1]); - $startYear = $year = date('Y', $parsedQuery[$between + 1]); - $endDay = date('d', $parsedQuery[$between + 3]); - $endMonth = date('m', $parsedQuery[$between + 3]); - $endYear = date('Y', $parsedQuery[$between + 3]); - - $done = false; - $numDaysInCurrentMonth = $this->_numDaysInMonth($month, $year); - - switch ($this->config['merge_tables_mode']) { - case 'day': { - // start/end on the same day: use single day table - if ($startDay == $endDay && - $startMonth == $endMonth && - $startYear == $endYear) { - return $this->_replaceTableNames( - $query, - $startYear . $startMonth . $startDay - ); - } - - // month range: use single month table - if ($startDay == 1 && - $endDay >= 28 && - $startMonth == $endMonth && - $startYear == $endYear) { - return $this->_replaceTableNames( - $query, - $startYear . $startMonth - ); - } - - while (!$done) { - $accesslogTables[] = $this->_getMergeTableName( - 'accesslog', - $year, - $month, - $day - ); - - $visitorsTables[] = $this->_getMergeTableName( - 'visitors', - $year, - $month, - $day - ); - - if ($day == $endDay && - $month == $endMonth && - $year == $endYear) { - $done = true; - } - - else if ($day == $numDaysInCurrentMonth) { - $day = 1; - - if ($month < 12) { - $month++; - } else { - $month = 1; - $year++; - } - - $numDaysInCurrentMonth = $this->_numDaysInMonth($month, $year); - } - - else { - $day++; - } - } - } - break; - - case 'month': { - // start/end in same month: use single month table - if ($startMonth == $endMonth && - $startYear == $endYear) { - return $this->_replaceTableNames( - $query, - $startYear . $startMonth - ); - } - - while (!$done) { - $accesslogTables[] = $this->_getMergeTableName( - 'accesslog', - $year, - $month - ); - - $visitorsTables[] = $this->_getMergeTableName( - 'visitors', - $year, - $month - ); - - if ($month == $endMonth && - $year == $endYear) { - $done = true; - } - - else if ($month < 12) { - $month++; - } else { - $month = 1; - $year++; - } - } - } - break; - } - - $this->_createMergeTable( - $this->config['accesslog_table'] . '_temporary', - 'accesslog', - $accesslogTables, - true, - true - ); - - $this->_createMergeTable( - $this->config['visitors_table'] . '_temporary', - 'visitors', - $visitorsTables, - true, - true - ); - - return $this->_replaceTableNames( - $query, - 'temporary' - ); - } - - /** - * Checks whether a table exists. - * - * @param string $name - * @return boolean - * @access private - */ - function _tableExists($name) { - parent::query('SHOW TABLES'); - - while ($field = $this->_fetchFirstField()) { - if ($field == $name) { - return true; - } - } - - return false; - } -} - -// -// "phpOpenTracker essenya, gul meletya; -// Sebastian carneron PHP." -// -?> Copied: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/DB/mysql_merge.php (from rev 57, phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/DB/mysql_merge.php) Deleted: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/NEWS =================================================================== --- phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/docs/NEWS 2005-07-30 10:42:44 UTC (rev 56) +++ phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/NEWS 2005-09-14 06:00:33 UTC (rev 60) @@ -1,1009 +0,0 @@ -(+ Added, * Changed, - Removed, ! Note) - - * Fixed bug #4624. - -30-Jun-2005, Version 1.5.1 - - * Fixed bug #3578. - - * Changed JPGraph default font from FF_VERDANA to FF_FONT1 to solve a problem with certain GD / PHP versions. - - * Moved printf() call directly after the header() calls in image.php. - - (Patch by Ian Holsman <[email protected]>) - -10-Apr-2005, Version 1.5.0 - - ! For over a year now I have neither worked on or worked with - phpOpenTracker because I lacked the time. Although I could not - test this phpOpenTracker 1.5.0 release myself I am releasing - it as "stable" now because I got enough positive feedback during - its long testing phase. - - phpOpenTracker 1.5 will be the last release series (with bugfixes - in phpOpenTracker 1.5.X releases) of phpOpenTracker 1. The little - time I can invest into the phpOpenTracker project I will spend on - the development of phpOpenTracker 2. - -31-Dec-2004, Version 1.5.0 (Release Candidate 2) - - + Added 'plugin_data' array to the phpOpenTracker Session Container. - - This array can be used by phpOpenTracker Logging Engine plugins to - store arbitrary data between requests. - - The array elements should be namespace-protected by using a - sub-array with the name of the corresponding plugin as its key: - - $container['plugin_data']['my_plugin_name']['my_data'] = $my_value; - - + Added 'logfile' configuration directive to configure path/filename - of the logfile phpOpenTracker optionally logs warning and error - messages to. - - * The 'visitors_online' API call now return additional data. - - (Contribution by Jean-Marc Fontaine <[email protected]>) - - * Changes to the MyISAM and MyISAM Merge table creation scripts: - - + Added the 'PACK_KEYS=1' option to the pot_accesslog table - to enable prefix compression for the 'accesslog_id' column. - - + Re-added the 'DELAY_KEY_WRITE=1' option to all tables. - - * Changes to the PostgreSQL table creation scripts to use the - correct INT4/INT8 column types instead of INTEGER. - - (Patch by Peter Adams <[email protected]>) - - - Deprecated the 'delay_key_write' configuration directive. - -26-Apr-2004, Version 1.5.0 (Release Candidate 1) - - + Added a new mode of operation to the MySQL Merge Tables handler - that maintains separate accesslog/visitors tables per day. - -12-Mar-2004, Version 1.4.1 - - + Added separate database creation scripts for InnoDB, MyISAM and - MyISAM Merge Tables for MySQL. - - * Renamed the $config variable in conf/phpOpenTracker.php.dist to - $PHPOPENTRACKER_CONFIGURATION to avoid conflicts between - phpOpenTracker's configuration container and the tracked web - application. - - - Deprecated the 'merge_tables_threshold' configuration directive. - -25-Jan-2004, Version 1.4.0 - - + Added a script to benchmark a phpOpenTracker installation. - - + Added client id to client name mapping configuration. - - * The MySQL database driver now explicitly creates a new - connection to the database server to prevent the reusal of - a connection to another database. - - * Optimized the database driver's fetchRow() and query() methods. - - * Refactored the configuration system. It now uses a PHP file - instead of an INI file. - - ! Changed license from the 'phpOpenTracker Software License' to - the 'Apache License 2.0', see LICENSE for details. - -11-Jan-2004, Version 1.3.3 - - * In addition to 'http://' the 'https://' protocol identifier - is now stripped, too, from refering URLs. - - * Fixed off-by-one-second bug in the phpOpenTracker API's - Access Statistics plugin's interval calculation routine. - -16-Dec-2003, Version 1.3.2 - - * Fixed a bug in the phpOpenTracker API plugin for Clickpath - Analysis that caused at least the 'all_paths' API call to - work incorrectly. - -16-Nov-2003, Version 1.3.1 - - * Removed the DELAY_KEY_WRITE=1 directive from the MySQL - table creation script. - - * Corrected a copy&paste error that prevented the - num_visitors_online and visitors_online API calls from - working correctly. - - * Fixed a bug in the MySQL Merge Tables handler. - - * Fixed a bug in CSV result format generation of the top - phpOpenTracker API call. - -02-Oct-2003, Version 1.3.0 - - + Several contributions made by Sven Weih <[email protected]> - - + Added average_clickpath_length phpOpenTracker API call - that returns the average clickpath length. - - + Added average_time_between_visits phpOpenTracker API call - that returns the average time between the visits of - returning visitors. - - + Added one_time_visitors phpOpenTracker API call that - returns the number of one-time visitors. - - + Added 'week', 'current_week' and 'previous_week' support - to the phpOpenTracker API's timerange calculation system. - - + Added average_visits phpOpenTracker API call that returns - the average number of times returning visitors visited the - website. - - + Added num_return_visits phpOpenTracker API call that - returns the number of return visits. - - + Added num_returning_visitors phpOpenTracker API call that - returns the number of returning visitors. - - + Added num_unique_visitors phpOpenTracker API call that - returns the number of unique visitors. - - + Added new constraints 'hour' and 'weekday'. - - + Added new result format 'sql' that returns the SQL query - executed by a phpOpenTracker API call without executing it. - - Currently only the 'top' API call implements this. - - * Added columns 'weekday' and 'hour' to tables pot_accesslog and - pot_visitors. - - * Changed pot_accesslog.entry_document and pot_visitors.returning_visitor - from TINYINT(3) to TINYINT(1). - - * Renamed 'visitors' API call to 'visits'. - - * Merged the phpOpenTracker_API_num_visitors_online API plugin - into the phpOpenTracker_API_visitors_online API plugin. - - * Merged the phpOpenTracker_API_individual_clickpath API plugin - into the phpOpenTracker_API_clickpath_analysis API plugin. - - * The MySQL database handlers now show the execution time - of SQL queries when the configuration directive - 'debug_level' is set to '2'. - - * Added rules to recognize GNOME Epiphany and Mozilla Firebird - browsers. - - * Renamed singleton() methods to getInstance(). - -15-Sep-2003, Version 1.2.2 - - * The setting of the DELAY_KEY_WRITE table option can now be - turned off when using the MySQL Merge Tables handler. - - * Changed the phpOpenTracker API plugin loader to ignore - temporary files with leading "#" and trailing "~" - characters. - - (Patch by Tim Wood <[email protected]>) - - * Added compatibility hack for current PHP 5 development - versions. - -30-Aug-2003, Version 1.2.1 - - * The phpOpenTracker::log() method may no longer be called more - than once per request. The previously available possibility - to do so suggested functionality that is not intended. - - * Unified quoting of SQL values for compatibility with non-MySQL - database systems. - - * Fixed several issues with the Web Bug. - - * Fixed PostgreSQL table creation script. - - (Patch by Jean-Christian Imbeault <[email protected]>) - - * Fixed warnings in phpOpenTracker_Container and - phpOpenTracker_API_returning_visitors. - - - Removed the split_tables.php and webservice.php scripts - (that never really worked). - -09-Jul-2003, Version 1.2.0 - - + Added support for MySQL Merge Tables. - - * The client_id can now be changed during a visitor's session. - - * Merged phpOpenTracker API plugins 'page_impressions' and - 'visitors' into one plugin, called 'access_statistics'. - - * Several changes to the database schema: - - * Changed ENUM('0','1') columns to TINYINT(3) UNSIGNED. - - * Rearranged the indexes. - - - Dropped the 'client_id' column from the pot_accesslog table. - - ! If you're upgrading from a previous phpOpenTracker version you - need to update the database schema. - - An update script for MySQL can be found in the - the docs/sql/mysql/update/ directory. - - * Several changes to the configuration container: - - + Added support for built-in default values. - - + Added API to dynamically change configuration directives. - - * The parsed representation of the phpOpenTracker.ini configuration - file is now cached in the session. - - * Several changes to the Web Bug: - - + Added additional parameter document_url. - - * Fixed situation where false data was logged due to missing data. - - * Added triggers to the PostgreSQL database schema to prevent - duplicate key errors. - - (Patch by Jean-Christian Imbeault <[email protected]>) - - * Plugins for the phpOpenTracker Logging Engine now have access to - the Logging Engine's current parameters through $this->paramaters. - - * Changed the phpOpenTracker_Parser class code to accept rule files - even more similar to the original ModLogAn ones. - - * Replaced unnecessary 'require_once' calls with 'require', thus - avoiding the overhead incurred by 'require_once'. - -19-Apr-2003, Version 1.1.5 - - * Improved performance of the 'visitors' phpOpenTracker API call. - - * Fixed an off-by-one bug in the phpOpenTracker API plugin for - Clickpath Analysis. - - * Fixed a warning in the phpOpenTracker API plugin for Clickpath - Analysis that occured in situations where no clickpath is found. - - * Removed obsolete code from phpOpenTracker API plugin - infrastructure. - -26-Mar-2003, Version 1.1.4 - - + Added missing implementation of 'document' constraint. - - * Changed generation of the accesslog_id to circumvent the behaviour - of PHP's session extension where a Session ID that is associated - with an existing, but expired session is used to start a new - session. - -16-Mar-2003, Version 1.1.3 - - * The phpOpenTracker API 'top' API call was broken in the - previous release due to a merge-from-head (MFH) gone bad. - - * Fixed a bug in the simple_report example. - -13-Mar-2003, Version 1.1.2 - - * Fixed a bug in the 'top' API call. - -12-Mar-2003, Version 1.1.1 - - * Fixed the passing of the client_id parameter to internal - phpOpenTracker API calls for the 'page_impressions', 'visitors' and - 'visitors_online' API calls. - - * Fixed a bug in the Oracle database driver. - - Patch by Joerg Behrens <[email protected]>. - -27-Feb-2003, Version 1.1.0 - - + Added a generic system to constrain phpOpenTracker API queries to - visitor groups. - - * Removed 'document' parameter from the 'page_impressions', - 'plot_access_statistics', 'plot_top' and 'num_visitors_online' API - calls in favour of the new, more generic constraints system. - - * Fixed a warning in phpOpenTracker_Parser::userAgent() that occured - when HTTP_USER_AGENT contains no braces. - - (Reported by Arpad Tamas <[email protected]>) - - * Fixed a parse error in the MSSQL database driver. - - ! The removal of the 'document' parameter from the 'page_impressions', - 'plot_access_statistics', 'plot_top' and 'num_visitors_online' API - calls breaks backwards compatibility. - - If you used the 'document' parameter with the above mentioned - API calls replace it with - - 'constraints' => array( - 'document' => 'name or url of document' - ) - -08-Jan-2003, Version 1.0.6 - - * Refactored the phpOpenTracker Logging Engine plugin system. - - * The client_id is now added to the name of the cookie that is used to - track returning visitors. - - This ensures unique cookie names for multiple sites tracked by one - installation of phpOpenTracker. - - * Fixed a bug in the phpOpenTracker API Query Cache that caused queries - without a timerange limitation to be cached. - - * Fixed a bug in the 'returning_visitors' API call that occured when - no returning visitors where found for the given timerange, for - instance when track_returning_visitors is disabled. - - * Changed the GraphViz markup generation so that individual clickpaths - like "A -> B -> A -> B" get rendered correctly. - - * Improved the performance of the match() and readRules() methods of - the phpOpenTracker_Parser class. - -20-Dec-2002, Version 1.0.5 - - + Added 'returning_visitors' API call that returns information on - returning visitors. - - (Feature Request #652693 by Jens S. Benecke <[email protected]>) - - * Several fixes to the 'plot_top' phpOpenTracker API plugin: - - * Synched with the underlying 'top' phpOpenTracker API plugin. - - * Synched with recent JPGraph API changes. - - The phpOpenTracker API calls provided by 'plot_top' were broken - in previous versions. - - * Refactored the phpOpenTracker API plugin for Clickpath Analysis. - - * Renamed 'visits' API call to 'visitors', keeping 'visits' as an alias for - backwards compatibility. - - * Removed stray comma from phpOpenTracker/conf/hosts.ini that was added - by accident before the previous release and caused a PHP warning. - - * Improved PHPDoc tag based documentation of the source code. - - Source code documentation generated with Doxygen can be found at - http://www.phpOpenTracker.de/apidoc/. - -11-Dec-2002, Version 1.0.4 - - + Added a parameter 'font_size' to the API calls wrapped by - phpOpenTracker::plot(). - - The default font settings for JPGraph are now FF_VERDANA (font), - FS_NORMAL (font_style), 10 (font_size). - - + Added two parameters, 'exit_targets' and 'referers', to the - 'all_paths' API call. - - When set to true, exit target and referers are included in the - analysis respectively. - - + Added three parameters, 'document_color', 'exit_target_color' and - 'referer_color' to the 'all_paths' API call. - - They respectively set the color to be used for the three types of - nodes in GraphViz markup. - - * Improved Cache ID generation for the phpOpenTracker API Query Cache. - - * Fixed a bug in the 'plot_access_statistics' API call. - - * Fixed a bug in the 'all_paths' API call. - - * Changed the webbug.js and image.php scripts to use BASE64 encoding - for the transport of the refering URL. This allows for the correct - handling of HTTP GET parameters in the refering URL. - - - Dropped support for XML result formats from phpOpenTracker API calls - 'all_paths', 'longest_paths', 'shortest_paths', 'top_paths'. - - If you need to generate XML markup for the results of this API calls - use the 'array' result format which returns an array of - objects of the phpOpenTracker_Clickpath class that provides the - appropriate toXML() method. - - ! Version 1.0.1 of PEAR package Image_GraphViz is now required for - clickpath visualization using AT&T's GraphViz software. - -06-Dec-2002, Version 1.0.3 - - + Added two parameters to the phpOpenTracker API to ease the definition - of arbitrary timeranges to which a query shall be limited to. - - * Fixed a bug in the phpOpenTracker API's Query Cache code. - - * Fixed some leftovers in the phpOpenTracker API plugin for Clickpath - Analysis regarding the switch to version 0.4 of the Image_GraphViz - PEAR package. - - * Renamed 'restrain_field' and 'restrain_value' parameters to - 'constraint_field' and 'constraint_value'. - -04-Dec-2002, Version 1.0.2 - - * Fixed a bug in the phpOpenTracker API plugin for Clickpath Analysis - that prevented correct operation of clickpath queries limited to - given start and/or end documents. - - * A phpOpenTracker installation can now be configured separately - for each site tracked by it by setting the POT_CONFIG_PATH - constant to the directory that contains the configuration files - to be used. - - (Patch by Christian Stocker <[email protected]>) - - * Changed the phpOpenTracker API's Query Cache to use PEAR's - Cache_Lite package instead of the Cache package. - - * Synched phpOpenTracker_Clickpath with API changes in PEAR's - Image_GraphViz package. - - ! Version 1.0.1 of PEAR package Cache_Lite is now required in - order to use the phpOpenTracker API's Query Cache. - - ! Version 0.4 of PEAR package Image_GraphViz is now required - for clickpath visualization using AT&T's GraphViz software. - -23-Nov-2002, Version 1.0.1 - - * Fixed a bug that prevented correct operation of plugins. - - * Fixed a bug in the PostgreSQL database schema. - - * Fixed a bug in the phpOpenTracker WebService. - - (Patch by Philip Olson <[email protected]>) - -03-Nov-2002, Version 1.0.0 - - * Fixed a bug in the logging of outgoing links. - - * Refactored Logging Engine. - - * Reorganized directory structure. - - * Changed location of error.log logfile. - - - Deprecated 'session_lifetime' configuration directive as it - was no longer used. - - ! First "final" release. - -01-Sep-2002, Version 0.9.12 - - * Logging Engine "post" plugins are now called before the data is - stored into the pot_visitors table. - - * Fixed handling of "document_url" handling, when Logging Engine - invoked by web-bug. - - * Fixed a bug in phpOpenTracker_Parser::match(). - -01-Sep-2002, Version 0.9.11 - - + Added configuration directive to turn off user_agent - grouping / parsing. - - * The MySQL handler now uses mysql_real_escape_string(), if it is - available, instead of mysql_escape_string(). - - * Moved configuration file(s) to new directory conf/. - - * Fixed a bug in Clickpath::toGraph() that caused the GraphViz - markup of a clickpath to contain only one item. - - (Patch by Felix Richter <[email protected]>) - - * Removed PRIMARY KEY constraint on accesslog_id column in pot_add_data - table to allow for multiple data sets to be stored. - - * Added rules to recognize more operating systems and user agents. - - * Added rules to block more robots and spiders. - -30-Jun-2002, Version 0.9.10 - - + The $_SERVER['HTTP_USER_AGENT'] string is now parsed for - Operating System and User Agent information that is stored - separately in order to allow for separate statistical analysis - of the data. - - The database schema needed to be changed yet again to allow - for this improvement. - - Much thanks is due to Jan Kneschke <[email protected]> for - explaining the ModLogAn way of doing the parsing. - - + Added support for MS SQL Server 2000. - - (Patch by Christopher Hughes <[email protected]>) - - + Added apiPluginLoaded() method to phpOpenTracker class. - - * $container['document_url'] and $container['referer_orig'] are - now urldecode()d. - - * Removed truncate_hostname mechanism in favour of hostname grouping, - which can be controlled through the 'group_hostnames' configuration - directive. - - * Removed trailing ';' from all SQL queries. - - * Fixed a copy&paste bug in the Oracle database layer. - - (Reported by Lars Pohlmann <[email protected]>) - - * Fixed a bug in the visitors_online phpOpenTracker API plugin. - - * Fixed a bug in the plot_access_statistics phpOpenTracker API plugin. - - * Several changes to the simple_report example: - - + Added 'Top Search Engines' and 'Top Search Keywords' statistics. - - This only works if the phpOpenTracker Search Engines Plugin is - installed and enabled. - - + Added 'Current Activity' page based on the 'visitors_online' - phpOpenTracker API call. - - + Added anchors to ease the navigation between different - statistics. - - (Requested by Jörg Behrens <[email protected]>) - - * Fixed a bug that prevented correct operation when - register_globals is disabled. - - ! The release cycle for phpOpenTracker 1.0.0 has been suspended - due to the number of changes since the previous release - candidate. - -03-May-2002, Version 1.0.0-RC2 - - * Fixed PostgreSQL database schema. - - * Bail out if database handler cannot be loaded. - - * phpOpenTracker now requires PHP 4.2.1 (or higher). - This is because of a bug in the session extension that was - not fixed in PHP 4.2.0. - -20-Apr-2002, Version 1.0.0-RC1 - - + phpOpenTracker releases are now packaged using the PEAR Packager and - can be installed using the PEAR Installer. - - + Added optional parameter 'document' to the 'plot_access_statistics' API - call. - - + Added result format 'graphviz_object' to API calls that already - supported 'graphviz'. - - + The PHPOPENTRACKER_VERSION constant, which is now registered on - startup, contains detailed information on the phpOpenTracker version - installed. - - * The phpOpenTracker plot_* API calls now use the JPGraph library, - instead of VAGRANT. - - If you want to use this functionality, you need to download - (http://www.aditus.nu/jpgraph/) and install JPGraph 1.6.2 - (or later). - - * Rewrote the handling of entry and exit documents, as well as exit - targets. - - It is now possible to use the log/exit.php script with exit targets - that are opened in a new browser window. Furthermore, an arbitrary - number of exit document / exit target combinations is now tracked - for each visitor. - - In order to accomplish this the database schema had to be changed. - - * Changed the configuration parser to throw an error when the - configuration file cannot be loaded. - - * Rewrote the 'simple_report' example. - - * Made the logging of error and warning messages to a logfile - optional. - - * Fixed a bug in the exit.php script. - - * Fixed a bug in the 'all_paths' API call. - - (Reported by Joerg Linder <[email protected]>) - - * Events in the error.log are now timestamped. - - * Synched german translation of the manual with the english version. - - * phpOpenTracker now requires PHP 4.2.0 (or higher). This is mainly - due to a bug in PHP 4.1.X. - - For details on the bug, see - http://sourceforge.net/tracker/?func=detail&atid=101716&aid=508726&group_id=1716 - - - Removed the custom session handler. - - This feature has never performed as expected. - - - Removed bundled PEAR packages. - - As of the PHP 4.2.0 release, the PEAR Installer ships in a working - version with each release of PHP, so it makes no longer sense to - ship these packages together with phpOpenTracker. - -07-Feb-2002, Version 0.9.9-pl1 - - + Added 'exit_on_fatal_errors' configuration directive. - - + Implemented XML Result Format in 'visitors_online' phpOpenTracker - API call. - - * Changed the error handler to log error and warning messages to a - logfile, named 'error.log', when the configuration directive - 'debug_level' is set to '0'. - - * Fixed a bug in the phpOpenTracker API that prevented API calls to - work that did not supply a timerange by either $parameters['range'] - or $parameters['start'] and $parameters['end']. - - * Fixed the phpOpenTracker API's Query Cache. - - * Fixed log/image.php. - - (Reported by [email protected]) - - * Fixed simple_report example. - - * Fixed bundled PEAR XML_Tree package. - - * Changed the plugin loader to issue a warning when a plugin could - be loaded. - - * Removed some old cruft from the codebase. - -31-Jan-2002, Version 0.9.9 - - + Added a means to pass arbitrary, additional user data to the - phpOpenTracker Logging Engine that will be stored in a separate - database table. - - You can either use the web-bug to pass this data or write a plugin - for the phpOpenTracker Logging Engine. Examples for both methods - are provided. - - + Both the phpOpenTracker Logging Engine and the phpOpenTracker API - can now be extended through a plugin interface. - - + Added a plugin for the phpOpenTracker Logging Engine to interface - with Jan Kneschke's localizer. - - Localizer enables phpOpenTracker to retrieve information on a - visitor's city and ISP from his IP address. Information on - localizer can be found at http://jan.kneschke.de/projects/localizer/. - - + Added a plugin for the phpOpenTracker Logging Engine to parse - the HTTP_REFERER string for search engine information. - - The plugin stores information about what search engine was queried - for which keywords into a separate table. The corresponding - phpOpenTracker API plugin provides statistical analysis on the - most commonly used search engine and / or the most commonly used - keywords to find the site tracked by phpOpenTracker. - - + Added pie chart plotting for top 'document', 'entry_document', - 'exit_document', 'exit_target', 'host', 'referer' and 'user_agent' - result sets. - - + phpOpenTracker API calls 'page_impressions', 'longest_paths', - 'shortest_paths', 'top_paths', 'top', 'visits' and 'visitors_online' - can now optionally return their result in XML markup or as an XML - tree object. - - + phpOpenTracker API calls 'page_impressions', 'top' and 'visits' can - now optionally return their result as Comma Separated Values (CSV). - - + Resolving of data identifiers (data_id) to the actual string values - can now be optionally turned off for 'individual_clickpath', - 'longest_paths', 'shortest_paths', 'top_paths' and 'top' API calls. - - + Added HTTP GET parameter filter as an alternative to the - clean_query_string operation. While setting clean_query_string=On - cleans the document's URL of any HTTP GET parameters, you can - use the get_parameter_filter to define a list of HTTP GET - parameters that you would like to be stripped from the URL. - - + Added 'document_url' column to pot_documents table. - - + Added 'longest_paths' API call. - - + Added german translation of the manual. - - * Renamed $parameters['mode'] to $parameters['api_call'] in calls to - phpOpenTracker::get() and phpOpenTracker::plot(). - - While this is more intuitive, it also breaks backwards - compatibility. - - * Redesigned configuration system. - - * phpOpenTracker API call 'visitors_online' now returns clickpaths - information for each visitor currently online. - - * Renamed 'no_returning_visitors' parameter to 'returning_visitors' - in 'visits' API call. - - * Renamed 'no_subpaths' parameter to 'subpaths' in clickpath - analysis API calls. Per default, the analysis of subpaths is now - disabled. - - * Removed POT_DEBUG configuration directive in favour of - debug_level to allow for several levels of debug output. - - * The simple_report example now uses PEAR/HTML/TINX as its - template engine. - - * Fixed a bug that caused the wrong client_id to be used in some - phpOpenTracker API Calls. - - * Fixed the PostgreSQL database schema. - - * Fixed the custom session handling. - - * The database user no longer requires 'CREATE TABLE' privileges. - - * phpOpenTracker no longer requires privileges to execute PHP's - ini_set() function, which is disabled by some ISPs. - - * Optimized database indexing. - - - Removed MySQL Tuning Mode. - - The MySQL Tuning Mode used 'INSERT DELAYED' and 'UPDATE - LOW_PRIORITY' to avoid blocking of database queries unrelated to - phpOpenTracker and to increase overall performance of the - phpOpenTracker Logging Engine. - - A better performance increase is achieved by using the - 'DELAY_KEY_WRITE=1' option when creating the tables. This is also - safer than using INSERT DELAYED and UPDATE LOW_PRIORITY. - - ! phpOpenTracker now requires PHP 4.1.0 (or higher). - -15-Oct-2001, Version 0.9.8 - - + Added phpOpenTracker::get() and phpOpenTracker::plot() methods. - - These two can be called instead of phpOpenTracker_API->get() and - phpOpenTracker->plot() and don't require an object instance of - phpOpenTracker_API. - - + Added regular expression based locking locking mechanism. - - If a request is initiated by/from one of a list of hostnames, - referers and user agents that you don't want to be tracked, the - logging engine ignores the request. With this feature you can - easily lock out search engine crawlers and other robots. - - This new locking mechanism uses a configuration file, which saves - one database query per request. - - + Added custom session handler. - - With its own session handling enabled, phpOpenTracker only - performs two database queries per session and updates its database - when the garbage collection is run. - - + Added a means to invoke phpOpenTracker through a HTML <img> tag, a - so called "web-bug". - - This allows for the tracking of static pages and the installation - of phpOpenTracker on a dedicated server. - - + Added POT_RESOLVE_HOSTNAME configuration directive to turn on/off - the resolving of hostnames. - - + Added POT_CLEAN_REFERER_STRING configuration directive to turn - on/off the stripping of HTTP GET parameters from the referer's URL. - - + Added logging of returning visitors. - - * Large parts of the code have been rewritten and the database - schema had to be changed to allow for the huge performance gain - introduced with this version of phpOpenTracker and for future - feature additions. - - The clickpath analysis now works solely on the pot_accesslog - table, the time-expensive build-up of a separate table for the - clickpath information is no longer needed. - - * phpOpenTracker now uses the $_COOKIE, $_GET and $_SERVER arrays, - that were introduced with PHP 4.0.7, to access the respective - variables. This allows for the use of phpOpenTracker in PHP - environments where register_globals is turned off. - - In this release of phpOpenTracker, backwards compatibility to PHP - 4.0.5 is maintained through a 'hack' that results in a small - performance hit. - - The next phpOpenTracker release will require PHP 4.0.7 (or - higher). - - * Renamed 'hits' to 'page impressions'. - - - Removed phpOpenTracker_Clickpath_Analysis and phpOpenTracker_Graph - classes. Their functionality has been merged into the - phpOpenTracker_API class. - - ! This version of phpOpenTracker requires PHP 4.0.5 (or higher). If - you want to use it with a PostgreSQL database, you'll need PHP 4.0.7 - (or higher). - - ! Changed license from the 'GNU Lesser Public License (LGPL)' to the - 'phpOpenTracker Software License', see LICENSE for details. - -29-Jul-2001, Version 0.9.7-pl1 - - * Automatically cache phpOpenTracker_API->get() results if it's sure - that they're not going to change. This feature is highly - experimental and turned off by default in config.php. - - * Fixed a misbehaviour that caused PEAR/Cache to be loaded when not - needed or wanted. - - - Dropped support for PEAR/DB. - - phpOpenTracker is now beeing developed and tested with MySQL, - Oracle/OCI8 and PostgreSQL. - - - Dropped support for databases that don't support - 'COUNT(DISTINCT())' queries. - - - Removed phpOpenTracker_Report class, it had no place in the - upcoming LOGML- based reporting framework. - -05-Jul-2001, Version 0.9.7 (LinuxTag Release) - - * The creational design patterns 'factory' and 'singleton' are now - used to create instances of phpOpenTracker's classes. - - * Made phpOpenTracker->get() method cacheable using PEAR/Cache. - - * Released at LinuxTag, www.linuxtag.org. - -16-Jun-2001, Version 0.9.7-dev-pl2 - - * The distribution archive was put together incorrectly. - - * Prefix table names per default with 'pot_'. - -15-Jun-2001, Version 0.9.7-dev-pl1 - - + Added 'POT_DB_PORT' configuration directive. - - * Fixed include_path handling. You can now pass the absolute path to - phpOpenTracker's include directories to the phpOpenTracker() - function. - - (Reported by Mark Kronsbein) - - * Fixed a bug which caused SQL queries to be put together in a - syntactically incorrect way in rare cases. - - (Reported by Michael Wihsboeck) - -14-Jun-2001, Version 0.9.7-dev - - + Added 'Top Entry Pages' query to phpOpenTracker_API. A new table - 'entry_pages' was added due to this. The 'exits' table was renamed - to 'exit_pages' for consistency reasons. - - + Added 'exit_document', 'exit_target' modes to 'top' API call. - - The 'exit_pages' table needed to be expanded to allow for these - operations. - - + Added optimized database layer for MySQL and PostgreSQL. - - PEAR/DB is no longer needed in order to use phpOpenTracker with - either MySQL or PostgreSQL. - - + Added 'Simple Report' example. - - * Several bug fixes. - -26-May-2001, Version 0.9.6 - - + Added phpOpenTracker_Report class. - - This class contains the functionality to perform batch queries to - the gathered data through phpOpenTracker_API and returns the - result as XML (either as a xml_tree object or as text) or as an - array. - - + Added phpOpenTracker_Graph class. - - This class visualizes a report array, generated by - phpOpenTracker_Report using the VAGRANT - (http://vagrant.sourceforge.net/) package. - - * Several bug fixes. - -19-May-2001, Version 0.9.6-dev - - * phpOpenTracker is now multi-client enabled. - - * Database Abstraction is now handled by either PEAR/DB or ext/dbx. - - * Rewrote large parts of phpOpenTracker_Core and - phpOpenTracker_Logger. Rearranged interfacing between the various - phpOpenTracker classes. - -26-Feb-2001, Version 0.9.5 - - + Added MYSQL_TUNING mode. - - * Startup code streamlined. Less SQL queries needed. - -31-Jan-2001, Version 0.9.4 - - * Minor fixes and improvements here and there. - -14-Jan-2001, Version 0.9.3pl1 - - * Fixed a bug in the database structure for MySQL. - -23-Dec-2000, Version 0.9.3 - - + Added access_data(). - - * Transition from PHPLIB/DB_Sql to PEAR/DB. - - * setup_access_data() is now called only once, the result of this - call is cached for later usage. - -30-Nov-2000, Version 0.9.2 - - * Fixed two minor bugs that slipped into 0.9.1. - -27-Nov-2000, Version 0.9.1 - - * phpOpenTracker_Clickpath_Analysis class rewritten - - * Reorganised the directory structure. - - * phpOpenTracker is now compatible with Oracle. - -09-Oct-2000, Version 0.9.0 - - * First preview release. Copied: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/NEWS (from rev 58, phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/docs/NEWS) Deleted: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts/image.php =================================================================== --- phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/docs/scripts/image.php 2005-07-30 10:42:44 UTC (rev 56) +++ phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts/image.php 2005-09-14 06:00:33 UTC (rev 60) @@ -1,68 +0,0 @@ -<?php -// -// phpOpenTracker - The Website Traffic and Visitor Analysis Solution -// -// Copyright 2000 - 2005 Sebastian Bergmann. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -header('Content-type: image/gif'); -header('P3P: CP="NOI NID ADMa OUR IND UNI COM NAV"'); -header('Expires: Sat, 22 Apr 1978 02:19:00 GMT'); -header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -printf( - '%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%', - 71,73,70,56,57,97,1,0,1,0,128,255,0,192,192,192,0,0,0,33,249,4,1,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59 -); - -require 'phpOpenTracker.php'; - -if ( isset($_GET['document_url']) && - !empty($_GET['document_url'])) { - $parameters['document_url'] = base64_decode($_GET['document_url']); -} - -else if (isset($_SERVER['HTTP_REFERER'])) { - $parameters['document_url'] = $_SERVER['HTTP_REFERER']; -} - -if (!isset($parameters['document_url'])) { - exit; -} - -if ( isset($_GET['document']) && - !empty($_GET['document'])) { - $parameters['document'] = $_GET['document']; -} else { - $parameters['document'] = $parameters['document_url']; -} - -$parameters['client_id'] = isset($_GET['client_id']) ? $_GET['client_id'] : 1; -$parameters['referer'] = isset($_GET['referer']) ? base64_decode($_GET['referer']) : ''; - -if ( isset($_GET['add_data']) && - is_array($_GET['add_data'])) { - foreach ($_GET['add_data'] as $data) { - list($field, $value) = explode('::', $data); - - $parameters['add_data'][$field] = $value; - } -} - -phpOpenTracker::log($parameters); -?> Copied: phpOpenTracker/tags/phpOpenTracker-1.5.2/phpOpenTracker/docs/scripts/image.php (from rev 58, phpOpenTracker/branches/phpOpenTracker-1.5/phpOpenTracker/docs/scripts/image.php)