[TASK] Missing report for deprecated setting magic_quotes_gpc
[Packages/TYPO3.CMS.git] / typo3 / sysext / reports / reports / status / class.tx_reports_reports_status_configurationstatus.php
index c022b4a..d91a42e 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2009 Ingo Renner <ingo@typo3.org>
+*  (c) 2009-2011 Ingo Renner <ingo@typo3.org>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
  * @author             Ingo Renner <ingo@typo3.org>
  * @package            TYPO3
  * @subpackage reports
- *
- * $Id$
  */
 class tx_reports_reports_status_ConfigurationStatus implements tx_reports_StatusProvider {
 
+               // 10 MB
+       protected $deprecationLogFileSizeWarningThreshold = 10485760;
+               // 100 MB
+       protected $deprecationLogFileSizeErrorThreshold   = 104857600;
+
+       /**
+        * Backpath to the typo3 main directory
+        *
+        * @var string
+        */
+       protected $backPath = '../';
+
        /**
         * Determines the Install Tool's status, mainly concerning its protection.
         *
@@ -42,7 +52,10 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
         */
        public function getStatus() {
                $statuses = array(
-                       'emptyReferenceIndex' => $this->getReferenceIndexStatus(),
+                       'emptyReferenceIndex'   => $this->getReferenceIndexStatus(),
+                       'deprecationLog'        => $this->getDeprecationLogStatus(),
+                       'safeModeEnabled'       => $this->getPhpSafeModeStatus(),
+                       'magicQuotesGpcEnabled' => $this->getPhpMagicQuotesGpcStatus(),
                );
 
                if ($this->isMemcachedUsed()) {
@@ -64,7 +77,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');
@@ -83,10 +96,52 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
                );
        }
 
+       /**
+        * Checks if PHP safe_mode is enabled.
+        *
+        * @return      tx_reports_reports_status_Status        A tx_reports_reports_status_Status object representing whether the safe_mode is enabled or not
+        */
+       protected function getPhpSafeModeStatus() {
+               $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:disabled');
+               $message  = '';
+               $severity = tx_reports_reports_status_Status::OK;
+
+               if (t3lib_utility_PhpOptions::isSafeModeEnabled()) {
+                       $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:enabled');
+                       $severity = tx_reports_reports_status_Status::WARNING;
+                       $message  = $GLOBALS['LANG']->getLL('status_configuration_PhpSafeModeEnabled');
+               }
+
+               return t3lib_div::makeInstance('tx_reports_reports_status_Status',
+                       $GLOBALS['LANG']->getLL('status_PhpSafeMode'), $value, $message, $severity
+               );
+       }
+
+       /**
+        * Checks if PHP magic_quotes_gpc is enabled.
+        *
+        * @return      tx_reports_reports_status_Status        A tx_reports_reports_status_Status object representing whether the magic_quote_gpc is enabled or not
+        */
+       protected function getPhpMagicQuotesGpcStatus() {
+               $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:disabled');
+               $message  = '';
+               $severity = tx_reports_reports_status_Status::OK;
+
+               if (t3lib_utility_PhpOptions::isMagicQuotesGpcEnabled()) {
+                       $value    = $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_common.xml:enabled');
+                       $severity = tx_reports_reports_status_Status::WARNING;
+                       $message  = $GLOBALS['LANG']->getLL('status_configuration_PhpMagicQuotesGpcEnabled');
+               }
+
+               return t3lib_div::makeInstance('tx_reports_reports_status_Status',
+                       $GLOBALS['LANG']->getLL('status_PhpMagicQuotesGpc'), $value, $message, $severity
+               );
+       }
+
        /**
         * Checks whether memcached is configured, if that's the case we asume it's also used.
         *
-        * @return      boolean True if memcached is used, false otherwise.
+        * @return      boolean TRUE if memcached is used, FALSE otherwise.
         */
        protected function isMemcachedUsed() {
                $memcachedUsed = FALSE;
@@ -155,7 +210,7 @@ class tx_reports_reports_status_ConfigurationStatus implements tx_reports_Status
                                        }
                                }
                                $memcachedConnection = @memcache_connect($host, $port);
-                               if ($memcachedConnection != null) {
+                               if ($memcachedConnection != NULL) {
                                        memcache_close($memcachedConnection);
                                } else {
                                        $failedConnections[] = $configuredServer;
@@ -179,11 +234,76 @@ 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();
+               $relativePath = t3lib_div::resolveBackPath(
+                       $this->backPath . substr($logFile, strlen(PATH_site))
+               );
+               $link = '<a href="' . $relativePath . '">' . $logFile . '</a>';
+
+               return $link;
+       }
 }
 
 
-if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_installtoolstatus.php'])       {
-       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_installtoolstatus.php']);
+if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_configurationstatus.php'])) {
+       include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_configurationstatus.php']);
 }
 
-?>
+?>
\ No newline at end of file