60 lines
1.5 KiB
PHP
60 lines
1.5 KiB
PHP
<?php
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
/**
|
|
* Class Zend_View_Helper_MonitoringFlags
|
|
*
|
|
* Rendering helper for flags depending on objects
|
|
*/
|
|
class Zend_View_Helper_MonitoringFlags extends Zend_View_Helper_Abstract
|
|
{
|
|
/**
|
|
* Key of flags without prefix (e.g. host or service)
|
|
* @var string[]
|
|
*/
|
|
private static $keys = array(
|
|
'passive_checks_enabled' => 'Passive checks',
|
|
'active_checks_enabled' => 'Active checks',
|
|
'obsess_over_host' => 'Obsessing',
|
|
'notifications_enabled' => 'Notifications',
|
|
'event_handler_enabled' => 'Event handler',
|
|
'flap_detection_enabled' => 'Flap detection',
|
|
);
|
|
|
|
/**
|
|
* Type prefix
|
|
* @param array $vars
|
|
* @return string
|
|
*/
|
|
private function getObjectType(array $vars)
|
|
{
|
|
$keys = array_keys($vars);
|
|
$firstKey = array_shift($keys);
|
|
$keyParts = explode('_', $firstKey, 2);
|
|
|
|
return array_shift($keyParts);
|
|
}
|
|
|
|
/**
|
|
* Build all existing flags to a readable array
|
|
* @param stdClass $object
|
|
* @return array
|
|
*/
|
|
public function monitoringFlags(\stdClass $object)
|
|
{
|
|
$vars = (array)$object;
|
|
$type = $this->getObjectType($vars);
|
|
$out = array();
|
|
|
|
foreach (self::$keys as $key => $name) {
|
|
$value = false;
|
|
if (array_key_exists(($realKey = $type. '_'. $key), $vars)) {
|
|
$value = $vars[$realKey] === '1' ? true : false;
|
|
}
|
|
$out[$name] = $value;
|
|
}
|
|
|
|
return $out;
|
|
}
|
|
} |