class SensorCoreRequirements in Monitoring 7
Monitors a specific module hook_requirements.
@todo Shorten sensor message and add improved verbose output.
Hierarchy
- class \Drupal\monitoring\Sensor\Sensor implements SensorInterface
- class \Drupal\monitoring\Sensor\Sensors\SensorCoreRequirements
Expanded class hierarchy of SensorCoreRequirements
File
- lib/
Drupal/ monitoring/ Sensor/ Sensors/ SensorCoreRequirements.php, line 17 - Contains \Drupal\monitoring\Sensor\Sensors\SensorCoreRequirements.
Namespace
Drupal\monitoring\Sensor\SensorsView source
class SensorCoreRequirements extends Sensor {
/**
* Requirements from hook_requirements.
*
* @var array
*/
protected $requirements;
/**
* {@inheritdoc}
*/
public function runSensor(SensorResultInterface $result) {
$requirements = $this
->getRequirements($this->info
->getSetting('module'));
// Ignore requirements that were explicitly excluded.
foreach ($this->info
->getSetting('exclude keys', array()) as $exclude_key) {
if (isset($requirements[$exclude_key])) {
unset($requirements[$exclude_key]);
}
}
$this
->processRequirements($result, $requirements);
}
/**
* Extracts the highest severity from the requirements array.
*
* Replacement for drupal_requirements_severity(), which ignores
* the INFO severity, which results in those messages not being displayed.
*
* @param $requirements
* An array of requirements, in the same format as is returned by
* hook_requirements().
*
* @return
* The highest severity in the array.
*/
protected function getHighestSeverity(&$requirements) {
$severity = REQUIREMENT_INFO;
foreach ($requirements as $requirement) {
if (isset($requirement['severity'])) {
$severity = max($severity, $requirement['severity']);
}
}
return $severity;
}
/**
* Executes the requirements hook of a module and returns the results.
*
* @param string $module
* Name of the module to return requirements for.
*
* @return array
* Array of requirements
*
* @throws \RuntimeException
* Thrown when the given module does not provide a requirements hook.
*/
protected function getRequirements($module) {
module_load_include('install', $module);
$function = $module . '_requirements';
if (!function_exists($function)) {
throw new \RuntimeException(format_string('Requirement function @function not found', array(
'@function' => $function,
)));
}
return (array) $function('runtime');
}
/**
* Sets sensor result status and status messages for the given requirements.
*
* @param SensorResultInterface $result
* The result object to update.
* @param array $requirements
* Array of requirements to process.
*/
protected function processRequirements(SensorResultInterface $result, $requirements) {
$severity = $this
->getHighestSeverity($requirements);
if ($severity == REQUIREMENT_ERROR) {
$result
->setStatus(SensorResultInterface::STATUS_CRITICAL);
}
elseif ($severity == REQUIREMENT_WARNING) {
$result
->setStatus(SensorResultInterface::STATUS_WARNING);
}
else {
$result
->setStatus(SensorResultInterface::STATUS_OK);
}
if (!empty($requirements)) {
foreach ($requirements as $requirement) {
// Skip if we do not have the highest requirements severity.
if (!isset($requirement['severity']) || $requirement['severity'] != $severity) {
continue;
}
if (!empty($requirement['title'])) {
$result
->addStatusMessage($requirement['title']);
}
if (!empty($requirement['description'])) {
$result
->addStatusMessage($requirement['description']);
}
if (!empty($requirement['value'])) {
$result
->addStatusMessage($requirement['value']);
}
}
}
else {
$result
->addStatusMessage('Requirements check OK');
}
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Sensor:: |
protected | property | Current sensor info object. | |
Sensor:: |
public | function |
Gets sensor name (not the label). Overrides SensorInterface:: |
|
Sensor:: |
public | function |
Determines if sensor is enabled. Overrides SensorInterface:: |
|
Sensor:: |
function | Instantiates a sensor object. | 1 | |
SensorCoreRequirements:: |
protected | property | Requirements from hook_requirements. | |
SensorCoreRequirements:: |
protected | function | Extracts the highest severity from the requirements array. | |
SensorCoreRequirements:: |
protected | function | Executes the requirements hook of a module and returns the results. | |
SensorCoreRequirements:: |
protected | function | Sets sensor result status and status messages for the given requirements. | |
SensorCoreRequirements:: |
public | function |
Runs the sensor, updating $sensor_result. Overrides SensorInterface:: |