[!!!][-FEATURE] Remove page hit statistics
authorMario Rimann <mario.rimann@typo3.org>
Sat, 28 Jul 2012 15:37:21 +0000 (17:37 +0200)
committerSteffen Ritter <info@rs-websystems.de>
Sat, 4 Aug 2012 06:25:56 +0000 (08:25 +0200)
The feature of logging each page request either to a database
table or to an "apache-style"-logfile is rarely used these days
and the functionality can be replaced by the well-known tools
that act on client side (e.g. Google Analytics or Piwik).

Change-Id: Idd69bb485a968ba136b456577a3a5a086dbd3dfa
Resolves: #39347
Releases: 6.0
Reviewed-on: http://review.typo3.org/13229
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Philipp Gampe
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
NEWS.txt
t3lib/class.t3lib_tstemplate.php
typo3/sysext/cms/layout/class.tx_cms_layout.php
typo3/sysext/cms/tests/tslib/class.tslib_feTest.php
typo3/sysext/cms/tslib/class.tslib_fe.php
typo3/sysext/cms/tslib/index_ts.php
typo3/sysext/cms/web_info/class.tx_cms_webinfo.php
typo3/sysext/em/classes/index.php
typo3/sysext/install/mod/class.tx_install.php
typo3/sysext/t3editor/res/jslib/parse_typoscript/tokenizetyposcript.js
typo3/sysext/t3editor/res/tsref/tsref.xml

index 27d7909..fa3a510 100644 (file)
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -127,6 +127,13 @@ resource field from table sys_template during upgrading, fix the using
 TypoScript to refer to resources located in fileadmin or similar directly,
 and afterwards to finally delete the resource field in the install tool.
 
+* Removed page hit logging functionality
+
+Writing log entries to some logfile during frontend page hit was removed.
+There are tons of solutions on the net and on server basis that can do a
+better job than the core implementation ever did. Therefor the complete
+code was dropped and all TypoScript config.stat* options are obsolete.
+
 ===============================================================================
 Changes and Improvements
 ===============================================================================
index bf69296..3da6850 100644 (file)
@@ -93,8 +93,6 @@ class t3lib_TStemplate {
                ),
                'config.' => array(
                        'extTarget' => '_top',
-                       'stat' => 1,
-                       'stat_typeNumList' => '0,1',
                        'uniqueLinkVars' => 1
                )
        );
@@ -1489,4 +1487,4 @@ class t3lib_TStemplate {
                }
        }
 }
-?>
+?>
\ No newline at end of file
index 421c30d..72a8aef 100755 (executable)
  */
 class tx_cms_layout extends recordList {
 
-               // External, static: For page statistics:
-               // fieldname from sys_stat to select on.
-       var $stat_select_field = 'page_id';
-               // eg.  "HITS_days:-1"
-       var $stat_codes = array();
-
                // External, static: Flags of various kinds:
                // If TRUE, users/groups are shown in the page info box.
        var $pI_showUser = 0;
-               // If TRUE, hit statistics are shown in the page info box.
-       var $pI_showStat = 1;
                // The number of successive records to edit when showing content elements.
        var $nextThree = 3;
                // If TRUE, disables the edit-column icon for tt_content elements
@@ -193,11 +185,8 @@ class tx_cms_layout extends recordList {
                if (is_array($row)) {
 
                                // Select which fields to show:
-                       $pKey = $GLOBALS['SOBE']->MOD_SETTINGS['function'] == 'tx_cms_webinfo_hits' ? 'hits' : $GLOBALS['SOBE']->MOD_SETTINGS['pages'];
+                       $pKey = $GLOBALS['SOBE']->MOD_SETTINGS['pages'];
                        switch ($pKey) {
-                               case 'hits':
-                                       $this->fieldArray = explode(',', 'title,' . implode(',', $this->stat_codes));
-                                       break;
                                case 1:
                                        $this->cleanTableNames();
                                        $tableNames = $this->allowedTableNames;
@@ -282,17 +271,6 @@ class tx_cms_layout extends recordList {
                                                                        array('title' => $GLOBALS['LANG']->sL($GLOBALS['TCA'][$f2]['ctrl']['title'], 1))
                                                                );
                                                        }
-                                               } elseif (substr($field, 0, 5) == 'HITS_') {
-                                                       $fParts = explode(':', substr($field, 5));
-                                                       switch ($fParts[0]) {
-                                                               case 'days':
-                                                                       $timespan = mktime(0, 0, 0) + intval($fParts[1]) * 3600 * 24;
-                                                                       $theData[$field] = '&nbsp;' . date('d', $timespan);
-                                                                       break;
-                                                               default:
-                                                                       $theData[$field] = '';
-                                                                       break;
-                                                       }
                                                } else {
                                                        $theData[$field] = '&nbsp;&nbsp;<strong>' .
                                                                $GLOBALS['LANG']->sL($GLOBALS['TCA']['pages']['columns'][$field]['label'], 1) .
@@ -1105,43 +1083,6 @@ class tx_cms_layout extends recordList {
                                                        $c = $this->numberOfRecords($f2, $row['uid']);
                                                        $theData[$field] = '&nbsp;&nbsp;' . ($c ? $c : '');
                                                }
-                                       } elseif (substr($field, 0, 5) == 'HITS_') {
-                                               if (t3lib_extMgm::isLoaded('sys_stat')) {
-                                                       $fParts = explode(':', substr($field, 5));
-                                                       switch ($fParts[0]) {
-                                                               case 'days':
-                                                                       $timespan = mktime(0, 0, 0) + intval($fParts[1]) * 3600 * 24;
-                                                                               // Page hits
-                                                                       $number = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows(
-                                                                               '*',
-                                                                               'sys_stat',
-                                                                                       $this->stat_select_field . '=' . intval($row['uid']) .
-                                                                                                       ' AND tstamp >=' . intval($timespan) .
-                                                                                                       ' AND tstamp <' . intval($timespan + 3600 * 24)
-                                                                       );
-                                                                       if ($number) {
-                                                                                       // Sessions
-                                                                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
-                                                                                       'count(*)',
-                                                                                       'sys_stat',
-                                                                                               $this->stat_select_field . '=' . intval($row['uid']) . '
-                                                                                                                       AND tstamp>=' . intval($timespan) . '
-                                                                                                                       AND tstamp<' . intval($timespan + 3600 * 24) . '
-                                                                                                                       AND surecookie<>\'\'',
-                                                                                       'surecookie'
-                                                                               );
-                                                                               $scnumber = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
-
-                                                                               $number .= '/' . $scnumber;
-                                                                       } else {
-                                                                               $number = '';
-                                                                       }
-                                                                       break;
-                                                       }
-                                                       $theData[$field] = '&nbsp;' . $number;
-                                               } else {
-                                                       $theData[$field] = '&nbsp;';
-                                               }
                                        } else {
                                                $theData[$field] = '&nbsp;&nbsp;' . htmlspecialchars(t3lib_BEfunc::getProcessedValue('pages', $field, $row[$field]));
                                        }
@@ -2043,77 +1984,6 @@ class tx_cms_layout extends recordList {
                        }
                }
 
-                       // Page hits (depends on "sys_stat" extension)
-               if ($this->pI_showStat && t3lib_extMgm::isLoaded('sys_stat')) {
-
-                               // Counting total hits:
-                       $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('*', 'sys_stat', 'page_id=' . intval($rec['uid']));
-                       if ($count) {
-
-                                       // Get min/max
-                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('min(tstamp) AS min,max(tstamp) AS max', 'sys_stat', 'page_id=' . intval($rec['uid']));
-                               $rrow2 = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
-
-                               $lines[] = '';
-                               $lines[] = array($GLOBALS['LANG']->getLL('pI_hitsPeriod') . ':', t3lib_BEfunc::date($rrow2[0]) . ' - ' .
-                                       t3lib_BEfunc::date($rrow2[1]) . ' (' . t3lib_BEfunc::calcAge($rrow2[1] - $rrow2[0], $this->agePrefixes) . ')');
-                               $lines[] = array($GLOBALS['LANG']->getLL('pI_hitsTotal') . ':', $rrow2[0]);
-
-                                       // Last 10 days
-                               $nextMidNight = mktime(0, 0, 0) + 1 * 3600 * 24;
-
-                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*), FLOOR((' . $nextMidNight . '-tstamp)/(24*3600)) AS day', 'sys_stat', 'page_id=' . intval($rec['uid']) . ' AND tstamp>' . ($nextMidNight - 10 * 24 * 3600), 'day');
-                               $days = array();
-                               while ($rrow = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
-                                       $days[$rrow[1]] = $rrow[0];
-                               }
-
-                               $headerH = array();
-                               $contentH = array();
-                               for ($a = 9; $a >= 0; $a--) {
-                                       $headerH[] = '
-                                                       <td class="bgColor5" nowrap="nowrap">&nbsp;' . date('d', $nextMidNight - ($a + 1) * 24 * 3600) . '&nbsp;</td>';
-                                       $contentH[] = '
-                                                       <td align="center">' . ($days[$a] ? intval($days[$a]) : '-') . '</td>';
-                               }
-
-                                       // Compile first hit-table (last 10 days)
-                               $hitTable = '
-                                       <table border="0" cellpadding="0" cellspacing="1" class="typo3-page-hits">
-                                               <tr>' . implode('', $headerH) . '</tr>
-                                               <tr>' . implode('', $contentH) . '</tr>
-                                       </table>';
-                               $lines[] = array($GLOBALS['LANG']->getLL('pI_hits10days') . ':', $hitTable, 1);
-
-                                       // Last 24 hours
-                               $nextHour = mktime(date('H'), 0, 0) + 3600;
-                               $hours = 16;
-
-                               $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*), FLOOR((' . $nextHour . '-tstamp)/3600) AS hours', 'sys_stat', 'page_id=' . intval($rec['uid']) . ' AND tstamp>' . ($nextHour - $hours * 3600), 'hours');
-                               $days = array();
-                               while ($rrow = $GLOBALS['TYPO3_DB']->sql_fetch_row($res)) {
-                                       $days[$rrow[1]] = $rrow[0];
-                               }
-
-                               $headerH = array();
-                               $contentH = array();
-                               for ($a = ($hours - 1); $a >= 0; $a--) {
-                                       $headerH[] = '
-                                                       <td class="bgColor5" nowrap="nowrap">&nbsp;' . intval(date('H', $nextHour - ($a + 1) * 3600)) . '&nbsp;</td>';
-                                       $contentH[] = '
-                                                       <td align="center">' . ($days[$a] ? intval($days[$a]) : '-') . '</td>';
-                               }
-
-                                       // Compile second hit-table (last 24 hours)
-                               $hitTable = '
-                                       <table border="0" cellpadding="0" cellspacing="1" class="typo3-page-stat">
-                                               <tr>' . implode('', $headerH) . '</tr>
-                                               <tr>' . implode('', $contentH) . '</tr>
-                                       </table>';
-                               $lines[] = array($GLOBALS['LANG']->getLL('pI_hits24hours') . ':', $hitTable, 1);
-                       }
-               }
-
                        // Finally, wrap the elements in the $lines array in table cells/rows
                foreach ($lines as $fV) {
                        if (is_array($fV)) {
@@ -2240,4 +2110,4 @@ class tx_cms_layout extends recordList {
                return strip_tags($content);
        }
 }
-?>
+?>
\ No newline at end of file
index 979c9c2..e6d14dc 100644 (file)
@@ -62,15 +62,6 @@ class tslib_feTest extends tx_phpunit_testcase {
                        'public function roundTripCryptString($string) {' .
                        'return parent::roundTripCryptString($string);' .
                        '}' .
-
-                       'public function stripIPv4($strIP) {' .
-                       'return parent::stripIPv4($strIP);' .
-                       '}' .
-
-                       'public function stripIPv6($strIP) {' .
-                       'return parent::stripIPv6($strIP);' .
-                       '}' .
-
                        '}'
                );
 
@@ -222,87 +213,5 @@ class tslib_feTest extends tx_phpunit_testcase {
                        )
                );
        }
-
-       //////////////////////////////////////
-       // Tests concerning stat-anonymization
-       //////////////////////////////////////
-
-       /**
-        * Data provider for stripIPv6Correct
-        *
-        * @return array Data sets
-        */
-       public static function stripIPv4DataProviderCorrect() {
-               return array(
-                       'empty address, prefix-length 24' => array('0.0.0.0', '24', '0.0.0.0'),
-                       'normal address 1, prefix-length 1' => array('1.2.3.4', '1', '0.0.0.0'),
-                       'normal address 2, prefix-length 24' => array('192.168.5.79', '24', '192.168.5.0'),
-                       'normal address 2, prefix-length 30' => array('192.168.5.79', '30', '192.168.5.76'),
-                               // test for no anonymization; full prefix-length
-                       'normal address 2, prefix-length 32' => array('192.168.5.79', '32', '192.168.5.79'),
-                               // test for full anonymization; full prefix-length
-                       'normal address 2, prefix-length 0' => array('192.168.5.79', '0', '0.0.0.0'),
-               );
-       }
-
-       /**
-        * @test
-        * @dataProvider stripIPv4DataProviderCorrect
-        */
-       public function stripIPv4Correct($address, $prefixLength, $anonymized) {
-               $oldConfig = $this->fixture->config;
-
-               $this->fixture->config = array('config' =>
-                       array('stat_IP_anonymize' => '1',
-                               'stat_IP_anonymize_mask_ipv4' => $prefixLength
-                       )
-               );
-
-               $this->assertEquals(
-                       $this->fixture->stripIPv4($address),
-                       $anonymized
-               );
-               $this->fixture->config = $oldConfig;
-       }
-
-       /**
-        * Data provider for stripIPv6Correct
-        *
-        * @return array Data sets
-        */
-       public static function stripIPv6DataProviderCorrect() {
-               return array(
-                       'empty address, prefix-length 96' => array('::', '96', '::'),
-                       'normal address 1, prefix-length 1' => array('1:2:3::4', '1', '::'),
-                       'normal address 2, prefix-length 4' => array('ffff::9876', '4', 'f000::'),
-                       'normal address 2, prefix-length 1' => array('ffff::9876', '1', '8000::'),
-                       'normal address 3, prefix-length 96' => array('abc:def::9876', '96', 'abc:def::'),
-                       'normal address 3, prefix-length 120' => array('abc:def::9876', '120', 'abc:def::9800'),
-                               // test for no anonymization; full prefix-length
-                       'normal address 3, prefix-length 128' => array('abc:def::9876', '128', 'abc:def::9876'),
-                               // test for full anonymization
-                       'normal address 3, prefix-length 0' => array('abc:def::9876', '0', '::'),
-               );
-       }
-
-       /**
-        * @test
-        * @dataProvider stripIPv6DataProviderCorrect
-        */
-       public function stripIPv6Correct($address, $prefixLength, $anonymized) {
-               $oldConfig = $this->fixture->config;
-
-               $this->fixture->config = array('config' =>
-                       array('stat_IP_anonymize' => '1',
-                               'stat_IP_anonymize_mask_ipv6' => $prefixLength
-                       )
-               );
-
-               $this->assertEquals(
-                       $this->fixture->stripIPv6($address),
-                       $anonymized
-               );
-               $this->fixture->config = $oldConfig;
-       }
 }
 ?>
\ No newline at end of file
index afe0868..b7c5961 100644 (file)
@@ -2065,9 +2065,6 @@ class tslib_fe {
                                        $this->config['rootLine'] = $this->tmpl->rootLine;
                                        $this->config['mainScript'] = trim($this->config['config']['mainScript']) ? trim($this->config['config']['mainScript']) : 'index.php';
 
-                                               // Initialize statistics handling: Check filename and permissions
-                                       $setStatPageName = $this->statistics_init();
-
                                                // Class for render Header and Footer parts
                                        $template = '';
                                        if ($this->pSetup['pageHeaderFooterTemplateFile']) {
@@ -2093,11 +2090,6 @@ class tslib_fe {
                        // Initialize charset settings etc.
                $this->initLLvars();
 
-                       // We want nice names, so we need to handle the charset
-               if ($setStatPageName) {
-                       $this->statistics_init_pagename();
-               }
-
                        // No cache
                        // Set $this->no_cache TRUE if the config.no_cache value is set!
                if ($this->config['config']['no_cache']) {
@@ -2544,7 +2536,6 @@ class tslib_fe {
         * Will exit if a location header is sent (for instance if jumpUrl was triggered)
         *
         * "jumpUrl" is a concept where external links are redirected from the index_ts.php script, which first logs the URL.
-        * This feature is only interesting if config.sys_stat is used.
         *
         * @return void
         */
@@ -3550,118 +3541,14 @@ if (version == "n3") {
        }
 
        /**
-        * Initialize file-based statistics handling: Check filename and permissions, and create the logfile if it does not exist yet.
-        * This function should be called with care because it might overwrite existing settings otherwise.
-        *
-        * @return boolean TRUE if statistics are enabled (will require some more processing after charset handling is initialized)
-        * @access private
-        */
-       protected function statistics_init() {
-               $setStatPageName = FALSE;
-               $theLogFile = $this->TYPO3_CONF_VARS['FE']['logfile_dir'].strftime($this->config['config']['stat_apache_logfile']);
-
-                       // Add PATH_site left to $theLogFile if the path is not absolute yet
-               if (!t3lib_div::isAbsPath($theLogFile)) {
-                       $theLogFile = PATH_site.$theLogFile;
-               }
-
-               if ($this->config['config']['stat_apache'] && $this->config['config']['stat_apache_logfile'] && !strstr($this->config['config']['stat_apache_logfile'], '/')) {
-                       if (t3lib_div::isAllowedAbsPath($theLogFile)) {
-                               if (!@is_file($theLogFile)) {
-                                               // Try to create the logfile
-                                       touch($theLogFile);
-                                       t3lib_div::fixPermissions($theLogFile);
-                               }
-
-                               if (@is_file($theLogFile) && @is_writable($theLogFile)) {
-                                       $this->config['stat_vars']['logFile'] = $theLogFile;
-                                               // Set page name later on
-                                       $setStatPageName = TRUE;
-                               } else {
-                                       $GLOBALS['TT']->setTSlogMessage('Could not set logfile path. Check filepath and permissions.', 3);
-                               }
-                       }
-               }
-
-               return $setStatPageName;
-       }
-
-       /**
-        * Set the pagename for the logfile entry
-        *
-        * @return void
-        * @access private
-        */
-       protected function statistics_init_pagename() {
-                       // Make life easier and accept variants for utf-8
-               if (preg_match('/utf-?8/i', $this->config['config']['stat_apache_niceTitle'])) {
-                       $this->config['config']['stat_apache_niceTitle'] = 'utf-8';
-               }
-
-               if ($this->config['config']['stat_apache_niceTitle'] == 'utf-8') {
-                       $shortTitle = $this->csConvObj->utf8_encode($this->page['title'], $this->renderCharset);
-               } elseif ($this->config['config']['stat_apache_niceTitle']) {
-                       $shortTitle = $this->csConvObj->specCharsToASCII($this->renderCharset, $this->page['title']);
-               } else {
-                       $shortTitle = $this->page['title'];
-               }
-
-               $len = t3lib_utility_Math::forceIntegerInRange($this->config['config']['stat_apache_pageLen'], 1, 100, 30);
-               if ($this->config['config']['stat_apache_niceTitle'] == 'utf-8') {
-                       $shortTitle = rawurlencode($this->csConvObj->substr('utf-8', $shortTitle, 0, $len));
-               } else {
-                       $shortTitle = substr(preg_replace('/[^.[:alnum:]_-]/', '_', $shortTitle), 0, $len);
-               }
-
-               $pageName = $this->config['config']['stat_apache_pagenames'] ? $this->config['config']['stat_apache_pagenames'] : '[path][title]--[uid].html';
-               $pageName = str_replace('[title]', $shortTitle, $pageName);
-               $pageName = str_replace('[uid]', $this->page['uid'], $pageName);
-               $pageName = str_replace('[alias]', $this->page['alias'], $pageName);
-               $pageName = str_replace('[type]', $this->type, $pageName);
-               $pageName = str_replace('[request_uri]', t3lib_div::getIndpEnv('REQUEST_URI'), $pageName);
-
-               $temp = $this->config['rootLine'];
-                       // rootLine does not exist if this function is called at early stage (e.g. if DB connection failed)
-               if ($temp) {
-                       array_pop($temp);
-                       if ($this->config['config']['stat_apache_noRoot']) {
-                               array_shift($temp);
-                       }
-
-                       $len = t3lib_utility_Math::forceIntegerInRange($this->config['config']['stat_titleLen'], 1, 100, 20);
-                       if ($this->config['config']['stat_apache_niceTitle'] == 'utf-8') {
-                               $path = '';
-                               $c = count($temp);
-                               for ($i=0; $i<$c; $i++) {
-                                       if ($temp[$i]['uid']) {
-                                               $p = $this->csConvObj->crop('utf-8', $this->csConvObj->utf8_encode($temp[$i]['title'], $this->renderCharset), $len, "\xE2\x80\xA6");    // U+2026; HORIZONTAL ELLIPSIS
-                                               $path.= '/' . rawurlencode($p);
-                                       }
-                               }
-                       } elseif ($this->config['config']['stat_apache_niceTitle']) {
-                               $path = $this->csConvObj->specCharsToASCII($this->renderCharset, $this->sys_page->getPathFromRootline($temp, $len));
-                       } else {
-                               $path = $this->sys_page->getPathFromRootline($temp, $len);
-                       }
-               } else {
-                               // If rootLine is missing, we just drop the path...
-                       $path = '';
-               }
-
-               if ($this->config['config']['stat_apache_niceTitle'] == 'utf-8') {
-                       $this->config['stat_vars']['pageName'] = str_replace('[path]', $path.'/', $pageName);
-               } else {
-                       $this->config['stat_vars']['pageName'] = str_replace('[path]', preg_replace('/[^.[:alnum:]\/_-]/', '_', $path . '/'), $pageName);
-               }
-       }
-
-       /**
         * Get the (partially) anonymized IP address for the log file
-        *      configure: set set config.stat_IP_anonymize=1
+        * Configure: set set config.stat_IP_anonymize=1
         *
-        *  @return string the IP to log
+        * @return string the IP to log
+        * @deprecated since 6.0, will be removed with 6.2
         */
        public function getLogIPAddress() {
+               t3lib_div::logDeprecatedFunction();
                $result = t3lib_div::getIndpEnv('REMOTE_ADDR');
                if ($this->config['config']['stat_IP_anonymize']) {
                        if (strpos($result, ':')) {
@@ -3674,69 +3561,14 @@ if (version == "n3") {
        }
 
        /**
-        * Strip parts from a IPv6 address
-        *
-        * configure: set config.stat_IP_anonymize_mask_ipv6 to a prefix-length (0 to 128)
-        *                        defaults to 64  if not set
-        *
-        * @param string $strIP Raw IPv6 address
-        * @return string stripped address
-        */
-       protected function stripIPv6($strIP) {
-               if (isset($this->config['config']['stat_IP_anonymize_mask_ipv6'])) {
-                       $netPrefix = intval($this->config['config']['stat_IP_anonymize_mask_ipv6']);
-               } else {
-                       $netPrefix = 64;
-               }
-               $bytesIP = t3lib_div::IPv6Hex2Bin($strIP);
-
-               $bitsToStrip = (128 - $netPrefix);
-
-               for($counter = 15; $counter >= 0; $counter--)
-               {
-                       $bitsToStripPart = min($bitsToStrip, 8);
-                               // TODO find a nicer solution for bindec and chr/ord below - but it works :-)
-                       $mask = bindec(str_pad('', 8 - $bitsToStripPart, '1') . str_pad('', $bitsToStripPart, '0'));
-                       $bytesIP[$counter] = chr(ord($bytesIP[$counter]) & $mask);
-                       $bitsToStrip -= $bitsToStripPart;
-               }
-               $strIP = inet_ntop($bytesIP);
-               return $strIP;
-       }
-
-       /**
-        * Strip parts from IPv4 addresses
-        *
-        * configure: set config.stat_IP_anonymize_mask_ipv4 to a prefix-length (0 to 32)
-        *                        defaults to 24, if not set
-        *
-        * @param string $strIP IPv4 address
-        * @return string  stripped IP address
-        */
-       protected function stripIPv4($strIP) {
-               if (isset($this->config['config']['stat_IP_anonymize_mask_ipv4'])) {
-                       $netPrefix = intval($this->config['config']['stat_IP_anonymize_mask_ipv4']);
-               } else {
-                       $netPrefix = 24;
-               }
-
-               $bitsToStrip = (32 - $netPrefix);
-               $ip = ip2long($strIP);
-                       // Shift right
-               $ip = $ip >> $bitsToStrip;
-                       // Shift left; last bytes will be zero now
-               $ip = $ip << $bitsToStrip;
-               $strIP = long2ip($ip);
-               return $strIP;
-       }
-
-       /**
         * Get the (possibly) anonymized host name for the log file
-        *      configure: set config.stat_IP_anonymize=1
+        * Configure: set config.stat_IP_anonymize=1
         *
         * @return the host name to log
+        * @deprecated since 6.0, will be removed with 6.2
         */
        public function getLogHostName() {
+               t3lib_div::logDeprecatedFunction();
                if ($this->config['config']['stat_IP_anonymize']) {
                                // Ignore hostname if IP anonymized
                        $hostName = '<anonymized>';
@@ -3748,11 +3580,13 @@ if (version == "n3") {
 
        /**
         * Get the (possibly) anonymized username or user id for the log file
-        *      configure: set config.stat_IP_anonymize=1
+        * Configure: set config.stat_IP_anonymize=1
         *
         * @return string The user name /uid to log
+        * @deprecated since 6.0, will be removed with 6.2
         */
        public function getLogUserName() {
+               t3lib_div::logDeprecatedFunction();
                $logUser = (isset($this->config['config']['stat_logUser'])) ? $this->config['config']['stat_logUser'] : TRUE;
                if ($this->loginUser && $logUser) {
                        $userName =  $this->fe_user->user['username'];
@@ -3763,113 +3597,6 @@ if (version == "n3") {
        }
 
        /**
-        * Saves hit statistics
-        *
-        * @return void
-        */
-       function statistics() {
-               if (!empty($this->config['config']['stat']) &&
-                               (!strcmp('', $this->config['config']['stat_typeNumList']) || t3lib_div::inList(str_replace(' ', '', $this->config['config']['stat_typeNumList']), $this->type)) &&
-                               (empty($this->config['config']['stat_excludeBEuserHits']) || !$this->beUserLogin) &&
-                               (empty($this->config['config']['stat_excludeIPList']) || !t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), str_replace(' ', '', $this->config['config']['stat_excludeIPList'])))) {
-
-                       $GLOBALS['TT']->push('Stat');
-                               if (t3lib_extMgm::isLoaded('sys_stat') && !empty($this->config['config']['stat_mysql'])) {
-
-                                               // Jumpurl:
-                                       $sword = t3lib_div::_GP('sword');
-                                       if ($sword) {
-                                               $jumpurl_msg = 'sword:'.$sword;
-                                       } elseif ($this->jumpurl) {
-                                               $jumpurl_msg = 'jumpurl:'.$this->jumpurl;
-                                       } else {
-                                               $jumpurl_msg = '';
-                                       }
-
-                                               // Flags: bits: 0 = BE_user, 1=Cached page?
-                                       $flags=0;
-                                       if ($this->beUserLogin) {$flags|=1;}
-                                       if ($this->cacheContentFlag) {$flags|=2;}
-
-                                               // Ref url:
-                                       $refUrl = t3lib_div::getIndpEnv('HTTP_REFERER');
-                                       $thisUrl = t3lib_div::getIndpEnv('TYPO3_REQUEST_DIR');
-                                       if (t3lib_div::isFirstPartOfStr($refUrl, $thisUrl)) {
-                                               $refUrl='[LOCAL]';
-                                       }
-
-                                       $insertFields = array(
-                                               'page_id' => intval($this->id),                                                 // id
-                                               'page_type' => intval($this->type),                                             // type
-                                               'jumpurl' => $jumpurl_msg,                                                              // jumpurl message
-                                               'feuser_id' => $this->fe_user->user['uid'],                             // fe_user id, integer
-                                               'cookie' => $this->fe_user->id,                                                 // cookie as set or retrieve. If people has cookies disabled this will vary all the time...
-                                               'sureCookie' => hexdec(substr($this->fe_user->cookieId, 0, 8)), // This is the cookie value IF the cookie WAS actually set. However the first hit where the cookie is set will thus NOT be logged here. So this lets you select for a session of at least two clicks...
-                                               'rl0' => $this->config['rootLine'][0]['uid'],                   // RootLevel 0 uid
-                                               'rl1' => $this->config['rootLine'][1]['uid'],                   // RootLevel 1 uid
-                                               'client_browser' => $GLOBALS['CLIENT']['BROWSER'],              // Client browser (net, msie, opera)
-                                               'client_version' => $GLOBALS['CLIENT']['VERSION'],              // Client version (double value)
-                                               'client_os' => $GLOBALS['CLIENT']['SYSTEM'],                    // Client Operating system (win, mac, unix)
-                                               'parsetime' => intval($this->scriptParseTime),                  // Parsetime for the page.
-                                               'flags' => $flags,                                                                              // Flags: Is be user logged in? Is page cached?
-                                               'IP' => $this->getLogIPAddress(),                                               // Remote IP address
-                                               'host' => $this->getLogHostName(),                                              // Remote Host Address
-                                               'referer' => $refUrl,                                                                   // Referer URL
-                                               'browser' => t3lib_div::getIndpEnv('HTTP_USER_AGENT'),  // User Agent Info.
-                                               'tstamp' => $GLOBALS['EXEC_TIME']                                               // Time stamp
-                                       );
-
-                                               // Hook for preprocessing the list of fields to insert into sys_stat:
-                                       if (isset($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass']) && is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass'])) {
-                                               foreach ($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass'] as $_classRef)    {
-                                                       $_procObj = t3lib_div::getUserObj($_classRef);
-                                                       $insertFields = $_procObj->sysstat_preProcessFields($insertFields, $this);
-                                               }
-                                       }
-
-                                       $GLOBALS['TT']->push('Store SQL');
-                                       $GLOBALS['TYPO3_DB']->exec_INSERTquery('sys_stat', $insertFields);
-                                       $GLOBALS['TT']->pull();
-                               }
-
-                                       // Apache:
-                               if (!empty($this->config['config']['stat_apache']) && !empty($this->config['stat_vars']['pageName'])) {
-                                       if (@is_file($this->config['stat_vars']['logFile'])) {
-                                                       // Build a log line (format is derived from the NCSA extended/combined log format)
-                                                       // Log part 1: Remote hostname / address
-                                               $LogLine = (t3lib_div::getIndpEnv('REMOTE_HOST') && empty($this->config['config']['stat_apache_noHost'])) ? $this->getLogHostName() : $this->getLogIPAddress();
-                                                       // Log part 2: Fake the remote logname
-                                               $LogLine .= ' -';
-                                                       // Log part 3: Remote username
-                                               $LogLine .= ' ' . $this->getLogUserName();
-                                                       // Log part 4: Time
-                                               $LogLine .= ' ' . date('[d/M/Y:H:i:s +0000]', $GLOBALS['EXEC_TIME']);
-                                                       // Log part 5: First line of request (the request filename)
-                                               $LogLine .= ' "GET ' . $this->config['stat_vars']['pageName'].' HTTP/1.1"';
-                                                       // Log part 6: Status and content length (ignores special content like admin panel!)
-                                               $LogLine .= ' 200 ' . strlen($this->content);
-
-                                               if (empty($this->config['config']['stat_apache_notExtended'])) {
-                                                       $referer = t3lib_div::getIndpEnv('HTTP_REFERER');
-                                                       $LogLine .= ' "' . ($referer ? $referer : '-') . '" "' . t3lib_div::getIndpEnv('HTTP_USER_AGENT') . '"';
-                                               }
-
-                                               $GLOBALS['TT']->push('Write to log file (fputs)');
-                                                       $logfilehandle = fopen($this->config['stat_vars']['logFile'], 'a');
-                                                       fputs($logfilehandle, $LogLine.LF);
-                                                       @fclose($logfilehandle);
-                                               $GLOBALS['TT']->pull();
-
-                                               $GLOBALS['TT']->setTSlogMessage('Writing to logfile: OK', 0);
-                                       } else {
-                                               $GLOBALS['TT']->setTSlogMessage('Writing to logfile: Error - logFile did not exist!', 3);
-                                       }
-                               }
-                       $GLOBALS['TT']->pull();
-               }
-       }
-
-       /**
         * Outputs preview info.
         *
         * @return void
index 412a291..6623598 100644 (file)
@@ -279,8 +279,6 @@ $TSFE->setParseTime();
 if ($TSFE->isOutputting() && (!empty($TSFE->TYPO3_CONF_VARS['FE']['debug']) || !empty($TSFE->config['config']['debug']))) {
        $TSFE->content .=  LF . '<!-- Parsetime: ' . $TSFE->scriptParseTime . 'ms -->';
 }
-$TSFE->statistics();
-
        // Check JumpUrl
 $TSFE->jumpurl();
 
index 59df489..1331a63 100644 (file)
@@ -73,7 +73,7 @@ class tx_cms_webinfo_page extends t3lib_extobjbase {
        }
 
        /**
-        * MAIN function for page information display (including hit statistics)
+        * MAIN function for page information display
         *
         * @return string Output HTML for the module.
         */
@@ -90,94 +90,46 @@ class tx_cms_webinfo_page extends t3lib_extobjbase {
                $dblist->agePrefixes=$LANG->sL('LLL:EXT:lang/locallang_core.php:labels.minutesHoursDaysYears');
 
                $dblist->pI_showUser = 1;
-               $dblist->pI_showStat = 0;
 
                        // PAGES:
                $this->pObj->MOD_SETTINGS['pages_levels']=$this->pObj->MOD_SETTINGS['depth'];           // ONLY for the sake of dblist module which uses this value.
 
                $h_func = t3lib_BEfunc::getFuncMenu($this->pObj->id, 'SET[depth]', $this->pObj->MOD_SETTINGS['depth'], $this->pObj->MOD_MENU['depth'], 'index.php');
-               if ($this->pObj->MOD_SETTINGS['function']=='tx_cms_webinfo_hits') {
-                       $h_func.= t3lib_BEfunc::getFuncMenu($this->pObj->id, 'SET[stat_type]', $this->pObj->MOD_SETTINGS['stat_type'], $this->pObj->MOD_MENU['stat_type'], 'index.php');
-
-                       if ($this->pObj->MOD_SETTINGS['stat_type'] == 1) {
-                               $dblist->stat_select_field = 'rl0';
-                       }
-                       if ($this->pObj->MOD_SETTINGS['stat_type'] == 2) {
-                               $dblist->stat_select_field = 'rl1';
-                       }
-
-                               // Timespan
-                       for ($a = 0;$a < 30; $a++) {
-                               $dblist->stat_codes[]='HITS_days:'.(-$a);
-                       }
-                       $timespan_b = mktime (0, 0, 0);
-                       $timespan_e = mktime (0, 0, 0)-(30-1)*3600*24+1;
-                       $header = '<br />'.sprintf($LANG->getLL('stat_period'), t3lib_BEfunc::date($timespan_b), t3lib_BEfunc::date($timespan_e)).'<br />';
-
-                       $dblist->start($this->pObj->id, 'pages', 0);
-                       $dblist->pages_noEditColumns = 1;
-                       $dblist->generateList();
+               $h_func .= t3lib_BEfunc::getFuncMenu($this->pObj->id, 'SET[pages]', $this->pObj->MOD_SETTINGS['pages'], $this->pObj->MOD_MENU['pages'], 'index.php');
+               $dblist->start($this->pObj->id, 'pages', 0);
+               $dblist->generateList();
+
+                       // CSH
+               $theOutput .= $this->pObj->doc->header($LANG->getLL('page_title'));
+               $theOutput .= $this->pObj->doc->section('',
+                       t3lib_BEfunc::cshItem($dblist->descrTable, 'pagetree_overview', $GLOBALS['BACK_PATH'], '|<br />') . // CSH
+                               $h_func.
+                               $dblist->HTMLcode,
+                       0,
+                       1
+               );
 
-                       $theOutput .= $this->pObj->doc->header($LANG->getLL('hits_title'));
-                       $theOutput .= $this->pObj->doc->section('',
-                               t3lib_BEfunc::cshItem($dblist->descrTable, 'stat', $GLOBALS['BACK_PATH'], '|<br />') . // CSH
-                                       $h_func.
-                                       $header.
-                                       $dblist->HTMLcode,
-                               0,
-                               1
-                       );
-               } else {
-                       $h_func .= t3lib_BEfunc::getFuncMenu($this->pObj->id, 'SET[pages]', $this->pObj->MOD_SETTINGS['pages'], $this->pObj->MOD_MENU['pages'], 'index.php');
-                       $dblist->start($this->pObj->id, 'pages', 0);
+                       // SYS_NOTES:
+               if (t3lib_extMgm::isLoaded('sys_note')) {
+                       $dblist->start($this->pObj->id, 'sys_note', 0);
                        $dblist->generateList();
-
-                               // CSH
-                       $theOutput .= $this->pObj->doc->header($LANG->getLL('page_title'));
-                       $theOutput .= $this->pObj->doc->section('',
-                               t3lib_BEfunc::cshItem($dblist->descrTable, 'pagetree_overview', $GLOBALS['BACK_PATH'], '|<br />') . // CSH
-                                       $h_func.
+                       if ($dblist->HTMLcode) {
+                               $theOutput.=$this->pObj->doc->spacer(10);
+                               $theOutput.=$this->pObj->doc->section($LANG->getLL('page_sysnote'),
                                        $dblist->HTMLcode,
-                               0,
-                               1
-                       );
-
-                               // SYS_NOTES:
-                       if (t3lib_extMgm::isLoaded('sys_note')) {
-                               $dblist->start($this->pObj->id, 'sys_note', 0);
-                               $dblist->generateList();
-                               if ($dblist->HTMLcode) {
-                                       $theOutput.=$this->pObj->doc->spacer(10);
-                                       $theOutput.=$this->pObj->doc->section($LANG->getLL('page_sysnote'),
-                                               $dblist->HTMLcode,
-                                               0,
-                                               1
-                                       );
-                               }
+                                       0,
+                                       1
+                               );
                        }
+               }
 
-                               // PAGE INFORMATION
-                       if ($this->pObj->pageinfo['uid']) {
-                               $theOutput.=$this->pObj->doc->spacer(10);
-                               $theOutput.=$this->pObj->doc->section($LANG->getLL('pageInformation'), $dblist->getPageInfoBox($this->pObj->pageinfo, $this->pObj->CALC_PERMS&2), 0, 1);
-                       }
+                       // PAGE INFORMATION
+               if ($this->pObj->pageinfo['uid']) {
+                       $theOutput.=$this->pObj->doc->spacer(10);
+                       $theOutput.=$this->pObj->doc->section($LANG->getLL('pageInformation'), $dblist->getPageInfoBox($this->pObj->pageinfo, $this->pObj->CALC_PERMS&2), 0, 1);
                }
 
                return $theOutput;
        }
 }
-
-/**
- * Extension class for hits display, basically using tx_cms_webinfo_page (internally this is detected).
- * This construction is due to the old "pre-extensions" structure
- *
- * IMPORTANT: This class is used by the extension "sys_stat" and will be added to the Info module only when "sys_stat" is installed.
- * The display of statistics goes on in "tx_cms_webinfo_page" though
- *
- * @author Kasper Skårhøj <kasperYYYY@typo3.com>
- * @package TYPO3
- * @subpackage tx_cms
- */
-class tx_cms_webinfo_hits extends tx_cms_webinfo_page {
-}
 ?>
\ No newline at end of file
index 3df695e..7fc8ca3 100644 (file)
@@ -93,7 +93,7 @@ class SC_mod_tools_em_index extends t3lib_SCbase {
        var $privacyNotice; // Set in init()
        var $securityHint; // Set in init()
        var $editTextExtensions = 'html,htm,txt,css,tmpl,inc,php,sql,conf,cnf,pl,pm,sh,xml,ChangeLog';
-       var $nameSpaceExceptions = 'beuser_tracking,design_components,impexp,static_file_edit,cms,freesite,quickhelp,classic_welcome,indexed_search,sys_action,sys_workflows,sys_todos,sys_messages,direct_mail,sys_stat,tt_address,tt_board,tt_calender,tt_guest,tt_links,tt_news,tt_poll,tt_rating,tt_products,setup,taskcenter,tsconfig_help,context_help,sys_note,tstemplate,lowlevel,install,belog,beuser,phpmyadmin,aboutmodules,imagelist,setup,taskcenter,sys_notepad,viewpage,adodb';
+       var $nameSpaceExceptions = 'beuser_tracking,design_components,impexp,static_file_edit,cms,freesite,quickhelp,classic_welcome,indexed_search,sys_action,sys_workflows,sys_todos,sys_messages,direct_mail,tt_address,tt_board,tt_calender,tt_guest,tt_links,tt_news,tt_poll,tt_rating,tt_products,setup,taskcenter,tsconfig_help,context_help,sys_note,tstemplate,lowlevel,install,belog,beuser,phpmyadmin,aboutmodules,imagelist,setup,taskcenter,sys_notepad,viewpage,adodb';
 
 
        // Default variables for backend modules
index 8de36e0..2a8d195 100644 (file)
@@ -6336,8 +6336,7 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
                                        $tableListArr = explode(',', 'cache_pages,cache_pagesection,cache_hash,cache_imagesizes,--div--,sys_log,sys_history,--div--,be_sessions,fe_sessions,fe_session_data' .
                                                (t3lib_extMgm::isLoaded('indexed_search') ? ',--div--,index_words,index_rel,index_phash,index_grlist,index_section,index_fulltext' : '').
                                                (t3lib_extMgm::isLoaded('tt_products') ? ',--div--,sys_products_orders,sys_products_orders_mm_tt_products' : '').
-                                               (t3lib_extMgm::isLoaded('direct_mail') ? ',--div--,sys_dmail_maillog' : '').
-                                               (t3lib_extMgm::isLoaded('sys_stat') ? ',--div--,sys_stat' : '')
+                                               (t3lib_extMgm::isLoaded('direct_mail') ? ',--div--,sys_dmail_maillog' : '')
                                        );
 
                                        if (is_array($this->INSTALL['database_clearcache'])) {
@@ -6390,7 +6389,6 @@ REMOTE_ADDR was '".t3lib_div::getIndpEnv('REMOTE_ADDR')."' (".t3lib_div::getIndp
                                                'cache_hash' => 'Multipurpose md5-hash cache',
                                                'cache_imagesizes' => 'Cached image sizes',
                                                'sys_log' => 'Backend action logging',
-                                               'sys_stat' => 'Page hit statistics',
                                                'sys_history' => 'Addendum to the sys_log which tracks ALL changes to content through TCE. May become huge by time. Is used for rollback (undo) and the WorkFlow engine.',
                                                'be_sessions' => 'Backend User sessions',
                                                'fe_sessions' => 'Frontend User sessions',
index e8bd6ad..9fa22aa 100644 (file)
@@ -968,17 +968,6 @@ var typoscriptWords = {
        'select': 'keyword2',
        'setup': 'keyword2',
        'split': 'keyword2',
-       'stat': 'keyword2',
-       'stat_apache': 'keyword2',
-       'stat_apache_logfile': 'keyword2',
-       'stat_apache_noHost': 'keyword2',
-       'stat_apache_notExtended': 'keyword2',
-       'stat_apache_pagenames': 'keyword2',
-       'stat_excludeBEuserHits': 'keyword2',
-       'stat_excludeIPList': 'keyword2',
-       'stat_mysql': 'keyword2',
-       'stat_titleLen': 'keyword2',
-       'stat_typeNumList': 'keyword2',
        'stdWrap': 'keyword2',
        'subparts': 'keyword2',
        'system': 'keyword2',
@@ -2311,17 +2300,6 @@ var typoscriptWords = {
        'select': 'keyword2',
        'setup': 'keyword2',
        'split': 'keyword2',
-       'stat': 'keyword2',
-       'stat_apache': 'keyword2',
-       'stat_apache_logfile': 'keyword2',
-       'stat_apache_noHost': 'keyword2',
-       'stat_apache_notExtended': 'keyword2',
-       'stat_apache_pagenames': 'keyword2',
-       'stat_excludeBEuserHits': 'keyword2',
-       'stat_excludeIPList': 'keyword2',
-       'stat_mysql': 'keyword2',
-       'stat_titleLen': 'keyword2',
-       'stat_typeNumList': 'keyword2',
        'stdWrap': 'keyword2',
        'subparts': 'keyword2',
        'system': 'keyword2',
@@ -2683,4 +2661,4 @@ var tokenizeTypoScript = function() {
                        inValue: false
                };
        }
-} ();
+} ();
\ No newline at end of file
index 95fe0f5..e5cd168 100644 (file)
@@ -974,93 +974,6 @@ The big advantage of this method is that it doesn't need any JavaScript!]]></des
 Example: (dot)]]></description>
                        <default><![CDATA[Default: . ( <= just a simple dot)]]></default>
                </property>
-               <property name="stat" type="boolean">
-                       <description><![CDATA[Enable stat logging at all.]]></description>
-                       <default><![CDATA[true]]></default>
-               </property>
-               <property name="stat_apache" type="boolean">
-                       <description><![CDATA[Enable logging to the logfile "stat_apache_logfile"]]></description>
-                       <default><![CDATA[false]]></default>
-               </property>
-               <property name="stat_apache_logfile" type="string">
-                       <description><![CDATA[This defines the name of the logfile where TYPO3 writes an Apache-style logfile to. The location of the directory is defined by $TYPO3_CONF_VARS["FE"]["logfile_dir"]  which must exist and be writable. It can be relative (to PATH_site) or absolute, but in any case it must be within the regular allowed paths of TYPO3 (meaning for absolute paths that it must be within the "lockRootDir" set up in $TYPO3_CONF_VARS).
-
-It is also possible to use date markers in the filename as they are provided by the PHP function strftime(). This will enable a natural rotation of the logfiles.
-
-Example:
-config.stat_apache_logfile = typo3_%Y%m%d.log
-
-This will create daily log files (eg. typo3_20060321.log).]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_apache_niceTitle" type="string">
-                       <description><![CDATA[boolean / string
-                       If set, the URL will be transliterated from the renderCharset to ASCII (eg ä => ae, à => a, &#945; "alpha" => a), which yields nice and readable page titles in the log. All non-ASCII characters that cannot be converted will be changed to underscores.
-
-If set to "utf-8", the page title will be converted to UTF-8 which results
-in even more readable titles, if your log analyzing software supports it.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_apache_noHost" type="boolean">
-                       <description><![CDATA[If true the HTTP_HOST is - if available - NOT inserted instead of the IP-address]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_apache_noRoot" type="boolean">
-                       <description><![CDATA[If set, the root part (level 0) of the path will be removed from the path. This makes a shorter name in case you have only a redundant part like "home" or "my site".]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_apache_notExtended" type="boolean">
-                       <description><![CDATA[If true the logfile is NOT written in Apache extended format]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_apache_pagenames" type="string">
-                       <description><![CDATA[The "pagename" simulated for apache.
-Default:    "[path][title]--[uid].html"
-Codes:
-[title] = inserts title, no special characters and shortend to 30 chars.
-[uid] = the id
-[alias] = any alias
-[type] = the type (typeNum)
-[path] = the path of the page.]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_excludeBEuserHits" type="boolean">
-                       <description><![CDATA[If set a pagehit is not logged if a user is logged in into TYPO3.]]></description>
-                       <default><![CDATA[false]]></default>
-               </property>
-               <property name="stat_excludeIPList" type="string">
-                       <description><![CDATA[list of strings
-                       If the REMOTE_ADDR is in the list of IP-addresses, it's also not logged.
-Can use wildcard, eg. "192.168.1.*"]]></description>
-                       <default><![CDATA[
-]]></default>
-               </property>
-               <property name="stat_mysql" type="boolean">
-                       <description><![CDATA[Enable logging to the MySQL table sys_stat.]]></description>
-                       <default><![CDATA[false]]></default>
-               </property>
-               <property name="stat_pageLen" type="int">
-                       <description><![CDATA[int 1-100
-                       The length of the page name (at the end of the path) written to the logfile/database.]]></description>
-                       <default><![CDATA[30]]></default>
-               </property>
-               <property name="stat_titleLen" type="int">
-                       <description><![CDATA[int 1-100
-                       The length of the page names in the path written to logfile/database]]></description>
-                       <default><![CDATA[20]]></default>
-               </property>
-               <property name="stat_typeNumList" type="intList">
-                       <description><![CDATA[List of pagetypes that should be registered in the statistics table, sys_stat.
-If no types are listed, all types are logged.
-Default is "0,1" which normally logs all hits on framesets and hits on content keeping pages. Of course this depends on the template design.]]></description>
-                       <default><![CDATA[0,1]]></default>
-               </property>
                <property name="sword_noMixedCase" type="boolean">
                        <description><![CDATA[Used by the parseFunc-substitution of search Words (sword):
 If set, the words MUST be the exact same case as the search word was.]]></description>