Fixed issue #14729: Backwards compatibility broken by disabled deprecation log
authorIngo Renner <ingo.renner@typo3.org>
Thu, 17 Jun 2010 14:07:33 +0000 (14:07 +0000)
committerIngo Renner <ingo.renner@typo3.org>
Thu, 17 Jun 2010 14:07:33 +0000 (14:07 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@7953 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_div.php
t3lib/config_default.php
typo3/sysext/lang/locallang_common.xml
typo3/sysext/reports/mod/mod_styles.css
typo3/sysext/reports/reports/locallang.xml
typo3/sysext/reports/reports/status/class.tx_reports_reports_status_configurationstatus.php

index 69c7770..1c6e010 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-06-17  Ingo Renner  <ingo@typo3.org>
+
+       * Fixed issue #14729: Backwards compatibility broken by disabled deprecation log
+
 2010-06-17  Benjamin Mack  <benni@typo3.org>
 
        * Release of TYPO3 4.4.0RC1
@@ -55,7 +59,7 @@
 
        * Fixed bug #14716: Version module don't display Title
        * Fixed bug #14236: logging into the Install Tool gives an alert (Thanks to Steffen Gebert)
-       * Added missing flags #11461: Serbian flag in sys_language selector 
+       * Added missing flags #11461: Serbian flag in sys_language selector
        * Added missing flags #11807: Flags for belgium is missing
        * Fixed bug #14708: Version selector looks cryptic
        * Fixed bug #14354: Bug: fix percentage of changes in Workspace Manager -> "Show differences inline" (Thanks to Marco Huber)
index 4a5a45a..11ca279 100644 (file)
@@ -3626,7 +3626,7 @@ final class t3lib_div {
                        } else {
                                $tabHeader = 'Debug';
                        }
-                       
+
                        if (is_object($var)) {
                                $debug = str_replace(
                                        array('"', '/', '<', "\n", "\r"),
@@ -3653,7 +3653,7 @@ final class t3lib_div {
                                        }
 
                                        if (top && typeof Ext !== "object") {
-                                               Ext = top.Ext;  
+                                               Ext = top.Ext;
                                        }
 
                                        Ext.onReady(function() {
@@ -5756,8 +5756,8 @@ final class t3lib_div {
                }
 
                if (stripos($log, 'file') !== FALSE) {
-                       // write a longer message to the deprecation log
-                       $destination = PATH_typo3conf . '/deprecation_' . self::shortMD5(PATH_site . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']) . '.log';
+                               // write a longer message to the deprecation log
+                       $destination = self::getDeprecationLogFileName();
                        $file = @fopen($destination, 'a');
                        if ($file) {
                                flock($file, LOCK_EX);  // try locking, but ignore if not available (eg. on NFS and FAT)
@@ -5768,7 +5768,7 @@ final class t3lib_div {
                }
 
                if (stripos($log, 'devlog') !== FALSE) {
-                       // copy message also to the developer log
+                               // copy message also to the developer log
                        self::devLog($msg, 'Core', self::SYSLOG_SEVERITY_WARNING);
                }
 
@@ -5778,6 +5778,20 @@ final class t3lib_div {
        }
 
        /**
+        * Gets the absolute path to the deprecation log file.
+        *
+        * @return      string  absolute path to the deprecation log file
+        */
+       public static function getDeprecationLogFileName() {
+               return PATH_typo3conf .
+                       'deprecation_' .
+                       self::shortMD5(
+                               PATH_site . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']
+                       ) .
+                       '.log';
+       }
+
+       /**
         * Logs a call to a deprecated function.
         * The log message will be taken from the annotation.
         * @return      void
index dbcf42a..1c173e5 100644 (file)
@@ -96,7 +96,7 @@ $TYPO3_CONF_VARS = array(
                'phpTimeZone' => '',                                    // String: timezone to force for all date() and mktime() functions. A list of supported values can be found at http://php.net/manual/en/timezones.php. If this is not set, a valid fallback will be searched for by PHP (php.ini's date.timezone setting, server defaults, etc); and if no fallback is found, the value of "UTC" is used instead.
                'systemLog' => '',                                              // String, semi-colon separated list: Defines one or more logging methods. Possible methods: file,<abs-path-to-file>[,<level>];mail,<to>[/<from>][,<level>];syslog,<facility>,[,<level>];error_log[,,<level>]. "file" logs to a file, "mail" sends the log entries via mail, "syslog" uses the operating system's log, "error_log" uses the PHP error log. The level is the individual logging level (see [SYS][systemLogLevel]. Facility may be one of LOCAL0..LOCAL7, USER (on Windows USER is the only valid type).
                'systemLogLevel' => 0,                                  // Integer: Only messages with same or higher severity are logged; 0 is info, 1 is notice, 2 is warning, 3 is error, 4 is fatal error.
-               'enableDeprecationLog' => '',                   // Commalist: Enables the logging of deprecated methods and functions. Default is empty for no logging. The following options are allowed: 'file': The log file will be written to typo3conf/deprecation_[hash-value].log  'devlog': The log file will be written to dev log  'console': The log will be displayed in the Backend's Debug Console. The logging options can be combined by comma-separating them.
+               'enableDeprecationLog' => 'file',               // Commalist: Enables the logging of deprecated methods and functions. Default is 'file'. The following options are allowed: 'file': The log file will be written to typo3conf/deprecation_[hash-value].log  'devlog': The log will be written to the development log  'console': The log will be displayed in the Backend's Debug Console. The logging options can be combined by comma-separating them.
                'maxFileNameLength' => 60,                              // Integer, This is the maximum file name length. The value will be taken into account by basic file operations like renaming or creation of files and folders.
                'UTF8filesystem' => FALSE,                              // Boolean: If true and [BE][forceCharset] is set to utf-8, then TYPO3 uses utf-8 to store file names. This allows for accented Latin letters as well as any other non-latin characters like Cyrillic and Chinese.
                'lockingMode' => 'simple',                                      // String: Define which locking mode is used to control requests to pages being generated. Can be one of either "disable" (no locking), "simple" (checks for file existance), "flock" (using PHPs flock() function), "semaphore" (using PHPs sem_acquire() function). Default is "disable".
index 87ac44b..ddf6d2b 100644 (file)
                        <label index="descending">Descending</label>
                        <label index="details">Details</label>
                        <label index="disable">Disable</label>
+                       <label index="disabled">Disabled</label>
                        <label index="down">Down</label>
                        <label index="download">Download</label>
                        <label index="edit">Edit</label>
                        <label index="editField">Edit field</label>
                        <label index="editFile">Edit file</label>
                        <label index="enable">Enable</label>
+                       <label index="enabled">Enabled</label>
                        <label index="file">File</label>
                        <label index="files">Files</label>
                        <label index="first">First</label>
index 1caedd5..ffa3254 100644 (file)
@@ -25,7 +25,7 @@ body#ext-reports-mod-index-php {
 
 .report-list dd {
        margin: 2px 0 15px 20px;
-       padding-left: 22px; 
+       padding-left: 22px;
 }
 
 /* ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- */
@@ -55,6 +55,10 @@ body#ext-reports-mod-index-php {
        clear: left;
 }
 
+#ext-reports-mod-index-php .message-body p {
+       padding: 5px 0;
+}
+
 #ext-reports-mod-index-php .message-left {
        float: left;
        width: 400px;
index e47f971..33be669 100644 (file)
                        <label index="status_phpRegisterGlobalsPHPManual">The PHP manual has instructions for %s.</label>
                        <label index="status_webServer">Web Server</label>
                        <label index="status_installEnabledTemporarily">The Install Tool is temporarily enabled. Delete the file &quot;%s&quot; when you have finished setting up TYPO3. If not used the Install Tool will be disabled automatically in %s minutes.</label>
+                       <label index="status_configuration_DeprecationLog">Deprecation Log</label>
+                       <label index="status_configuration_DeprecationLogEnabled">The deprecation log tracks whether old APIs are being used in extensions. Depending on the extensions you use and whether they use deprecated APIs it can happen that the log takes up quite some space over time. The more space it takes up, the more it may affect your installation's performance. It is recommended to disable deprecation log in production environments.</label>
+                       <label index="status_configuration_DeprecationLogFile">You can find the deprecation log file at %s.</label>
+                       <label index="status_configuration_DeprecationLogSize">Your deprecation log file currently takes up %s.</label>
                </languageKey>
        </data>
 </T3locallang>
\ No newline at end of file
index 979197d..9c08010 100644 (file)
  */
 class tx_reports_reports_status_ConfigurationStatus implements tx_reports_StatusProvider {
 
+               // 10 MB
+       protected $deprecationLogFileSizeWarningThreshold = 10485760;
+               // 100 MB
+       protected $deprecationLogFileSizeErrorThreshold   = 104857600;
+
+
        /**
         * Determines the Install Tool's status, mainly concerning its protection.
         *
@@ -43,6 +49,7 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
        public function getStatus() {
                $statuses = array(
                        'emptyReferenceIndex' => $this->getReferenceIndexStatus(),
+                       'deprecationLog'      => $this->getDeprecationLogStatus()
                );
 
                if ($this->isMemcachedUsed()) {
@@ -64,7 +71,7 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
 
                $count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows('*', 'sys_refindex');
                $registry = t3lib_div::makeInstance('t3lib_Registry');
-               $lastRefIndexUpdate = $registry->get('core', 'sys_refindex_lastUpdate'); 
+               $lastRefIndexUpdate = $registry->get('core', 'sys_refindex_lastUpdate');
 
                if (!$count && $lastRefIndexUpdate) {
                        $value    = $GLOBALS['LANG']->getLL('status_empty');
@@ -179,6 +186,72 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
                );
        }
 
+       /**
+        * Provides status information on the deprecation log, whether it's enabled
+        * and if so whether certain limits in file size are reached.
+        *
+        * @return      tx_reports_reports_status_Status        The deprecation log status.
+        */
+       protected function getDeprecationLogStatus() {
+               $title    = $GLOBALS['LANG']->getLL('status_configuration_DeprecationLog');
+               $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:disabled');
+               $message  = '';
+               $severity = tx_reports_reports_status_Status::OK;
+
+               if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['enableDeprecationLog']) {
+                       $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:enabled');
+                       $message  = '<p>' . $GLOBALS['LANG']->getLL('status_configuration_DeprecationLogEnabled') . '</p>';
+                       $severity = tx_reports_reports_status_Status::NOTICE;
+
+                       $logFile     = t3lib_div::getDeprecationLogFileName();
+                       $logFileSize = 0;
+
+                       if (file_exists($logFile)) {
+                               $logFileSize = filesize($logFile);
+
+                               $message .= '<p> ' . sprintf(
+                                               $GLOBALS['LANG']->getLL('status_configuration_DeprecationLogFile'),
+                                               $this->getDeprecationLogFileLink()
+                                       ) . '</p>';
+                       }
+
+                       if ($logFileSize > $this->deprecationLogFileSizeWarningThreshold) {
+                               $severity = tx_reports_reports_status_Status::WARNING;
+                       }
+
+                       if ($logFileSize > $this->deprecationLogFileSizeErrorThreshold) {
+                               $severity = tx_reports_reports_status_Status::ERROR;
+                       }
+
+                       if ($severity > tx_reports_reports_status_Status::OK) {
+                               $message .= '<p> ' . sprintf(
+                                       $GLOBALS['LANG']->getLL('status_configuration_DeprecationLogSize'),
+                                       t3lib_div::formatSize($logFileSize)
+                               ) . '</p>';
+                       }
+               }
+
+               return t3lib_div::makeInstance('tx_reports_reports_status_Status',
+                       $title, $value, $message, $severity
+               );
+       }
+
+       /**
+        * Creates a link to the deprecation log file with the absolute path as the
+        * link text.
+        *
+        * @return      string  Link to the deprecation log file
+        */
+       protected function getDeprecationLogFileLink() {
+               $logFile      = t3lib_div::getDeprecationLogFileName();
+               $documentRoot = t3lib_div::getIndpEnv('TYPO3_DOCUMENT_ROOT');
+
+               $relativePath = substr($logFile, strlen($documentRoot));
+               $link = '<a href="..' . $relativePath . '">' . $logFile . '</a>';
+
+               return $link;
+       }
+
 }