RequirementsController.php in Nagios Monitoring 8
File
src/Controller/RequirementsController.php
View source
<?php
namespace Drupal\nagios\Controller;
use Drupal;
use Drupal\Core\Config\Config;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\update\UpdateFetcherInterface;
class RequirementsController {
use StringTranslationTrait;
private $severity = REQUIREMENT_OK;
private $config;
private $reqs = [];
public function __construct(Config $config) {
$this->config = $config;
}
public function collectRequirements(array $enabled_modules, array $data, $project_data) {
$module_data = [];
$moduleHandler = Drupal::service('module_handler');
foreach ($enabled_modules as $module_name) {
$requirements_data = $moduleHandler
->invoke($module_name, 'requirements', [
'runtime',
]);
if ($requirements_data && is_array($requirements_data)) {
if ($module_name == 'update' && !empty($data)) {
unset($requirements_data['update_contrib']);
foreach ($enabled_modules as $inner_module_name) {
if (!array_key_exists($inner_module_name, $project_data['drupal']['includes']) && isset($data[$inner_module_name]['status']) && is_numeric($data[$inner_module_name]['status'])) {
$contrib_req = _update_requirement_check($data[$inner_module_name], 'contrib');
$contrib_req['name'] = $inner_module_name;
if (!isset($contrib_req['severity'])) {
$contrib_req['severity'] = -1;
}
if ($contrib_req) {
$module_data[] = $contrib_req;
}
}
}
if (!empty($module_data)) {
usort($module_data, '_nagios_updates_sort_by_severity');
$requirements_data['update_contrib'] = array_pop($module_data);
}
}
$this->reqs += $requirements_data;
}
}
}
public function findMostSevereProblem() : array {
$descriptions = [];
$min_severity = $this->config
->get('nagios.min_report_severity');
foreach ($this->reqs as $key => $requirement) {
if (isset($requirement['severity'])) {
if (($key == 'update_core' || $key == 'update_contrib') && $requirement['severity'] == REQUIREMENT_ERROR && $requirement['reason'] == UpdateFetcherInterface::FETCH_PENDING) {
continue;
}
if ($requirement['severity'] >= $min_severity) {
if ($requirement['severity'] > $this->severity) {
$this->severity = $requirement['severity'];
}
$descriptions[] = $requirement['title'];
}
}
}
if (empty($descriptions)) {
$desc = $this
->t('No information.');
}
else {
$desc = implode(', ', $descriptions);
}
return [
$this->severity,
$desc,
];
}
}
Classes
Name |
Description |
RequirementsController |
Get the run-time requirements and status information.
module_invoke_all('requirements', 'runtime') returns an array that isn't
keyed by the module name, eg we might get a key 'ctools_css_cache'.
We have no way of… |