Project

General

Profile

Feature #24009 ยป 16337.diff

Administrator Admin, 2010-11-10 20:48

View differences:

typo3/sysext/reports/reports/status/class.tx_reports_reports_status_warningmessagepostprocessor.php (revision 0)
<?php
/***************************************************************
* Copyright notice
*
* (c) 2010 Ingo Renner <ingo@typo3.org>
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Post processes the warning messages found in about modules.
*
* @author Ingo Renner <ingo@typo3.org>
* @package TYPO3
* @subpackage reports
*/
class tx_reports_reports_status_WarningMessagePostProcessor {
/**
* Tries to get the highest severity of the system's status first, if
* something is found it is asumed that the status update task is set up
* properly or the status report has been checked manually and we take over
* control over the system warning messages.
*
* @param array An array of messages related to already found issues.
* @return void
*/
public function displayWarningMessages_postProcess(array &$warningMesasges) {
// get highest severity
$registry = t3lib_div::makeInstance('t3lib_Registry');
$highestSeverity = $registry->get(
'tx_reports',
'status.highestSeverity',
null
);
if (!is_null($highestSeverity)) {
// status update has run, so taking over control over the core messages
unset(
$warningMesasges['install_password'],
$warningMesasges['backend_admin'],
$warningMesasges['install_enabled'],
$warningMesasges['install_encryption'],
$warningMesasges['file_deny_pattern'],
$warningMesasges['file_deny_htaccess'],
$warningMesasges['install_update'],
$warningMesasges['backend_reference'],
$warningMesasges['memcached']
);
if ($highestSeverity > tx_reports_reports_status_Status::OK) {
// display a message that there's something wrong and that
// the admin should take a look at the detailed status report
$GLOBALS['LANG']->includeLLFile('EXT:reports/reports/locallang.xml');
$warningMesasges['tx_reports_status_notification'] = sprintf(
$GLOBALS['LANG']->getLL('status_problemNotification'),
'<a href="mod.php?M=tools_txreportsM1&SET[function]=tx_reports.status">',
'</a>'
);
}
}
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_warningmessagepostprocessor.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/reports/reports/status/class.tx_reports_reports_status_warningmessagepostprocessor.php']);
}
?>
typo3/sysext/reports/reports/locallang.xml (working copy)
<label index="status_connectionFailed">Connection Failed</label>
<label index="status_updateComplete">Update Complete</label>
<label index="status_updateIncomplete">Update Incomplete</label>
<label index="status_problemNotification">One or more problems were detected with your TYPO3 installation. Check the %sstatus report%s for more information.</label>
<label index="status_typo3">TYPO3 System</label>
<label index="status_system">System</label>
<label index="status_security">Security</label>
typo3/sysext/reports/reports/class.tx_reports_reports_status.php (working copy)
* @return string The status report as HTML
*/
public function getReport() {
$status = array();
$content = '';
foreach ($this->statusProviders as $statusProviderId => $statusProvidersList) {
......
}
}
$status = $this->getSystemStatus();
$highestSeverity = $this->getHighestSeverity($status);
// updating the registry
$registry = t3lib_div::makeInstance('t3lib_Registry');
$registry->set('tx_reports', 'status.highestSeverity', $highestSeverity);
$content .= '<p class="help">'
. $GLOBALS['LANG']->getLL('status_report_explanation')
. '</p>';
......
protected function getStatusProviders() {
foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['reports']['tx_reports']['status']['providers'] as $key => $statusProvidersList) {
$this->statusProviders[$key] = array();
foreach ($statusProvidersList as $statusProvider) {
$statusProviderInstance = t3lib_div::makeInstance($statusProvider);
if ($statusProviderInstance instanceof tx_reports_StatusProvider) {
$this->statusProviders[$key][] = $statusProviderInstance;
}
......
}
/**
* Runs through all status providers and returns all statuses collected.
*
* @return array An array of tx_reports_reports_status_Status objects
*/
public function getSystemStatus() {
$status = array();
foreach ($this->statusProviders as $statusProviderId => $statusProviderList) {
$status[$statusProviderId] = array();
foreach ($statusProviderList as $statusProvider) {
$statuses = $statusProvider->getStatus();
$status[$statusProviderId] = array_merge($status[$statusProviderId], $statuses);
}
}
return $status;
}
/**
* Determines the highest severity from the given statuses.
*
* @param array An array of tx_reports_reports_status_Status objects.
* @return integer The highest severity found from the statuses.
*/
public function getHighestSeverity(array $statusCollection) {
$highestSeverity = tx_reports_reports_status_Status::NOTICE;
foreach ($statusCollection as $statusProvider => $providerStatuses) {
foreach ($providerStatuses as $status) {
if ($status->getSeverity() > $highestSeverity) {
$highestSeverity = $status->getSeverity();
}
// reached the highest severity level, no need to go on
if ($highestSeverity == tx_reports_reports_status_Status::ERROR) {
break;
}
}
}
return $highestSeverity;
}
/**
* Renders the system's status
*
* @param array An array of statuses as returned by the available status providers
* @return string The system status as an HTML table
*/
protected function renderStatus(array $statusCollection) {
// TODO refactor into separate methods, status list and single status
$content = '';
$template = '
<div class="typo3-message message-###CLASS###">
    (1-1/1)