Feature #24009 ยป 16337.diff
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###">
|