/***************************************************************
* 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.
*
*/
public function getStatus() {
$statuses = array(
- 'emptyReferenceIndex' => $this->getReferenceIndexStatus(),
+ 'emptyReferenceIndex' => $this->getReferenceIndexStatus(),
+ 'deprecationLog' => $this->getDeprecationLogStatus(),
+ 'safeModeEnabled' => $this->getPhpSafeModeStatus(),
+ 'magicQuotesGpcEnabled' => $this->getPhpMagicQuotesGpcStatus(),
);
if ($this->isMemcachedUsed()) {
$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');
);
}
+ /**
+ * 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;
}
}
$memcachedConnection = @memcache_connect($host, $port);
- if ($memcachedConnection != null) {
+ if ($memcachedConnection != NULL) {
memcache_close($memcachedConnection);
} else {
$failedConnections[] = $configuredServer;
);
}
+ /**
+ * 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