icingaweb2/modules/monitoring/library/Monitoring/Web/Menu/BackendAvailabilityMenuItemRenderer.php
Matthias Jentsch 44271471e3 Allow declarative definitions of badge renderers and improve interface
Allow the data backend, columns and generated tooltips to be defined in the configuration instead of providing subclasses for every new configuration. Provide an abstract BadgeMenuItemRenderer that allows creating Badges with less boilerplate.

fixes #9694
2015-08-20 18:16:33 +02:00

66 lines
1.5 KiB
PHP

<?php
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
namespace Icinga\Module\Monitoring\Web\Menu;
use Icinga\Web\Menu;
use Icinga\Web\Menu\BadgeMenuItemRenderer;
use Icinga\Module\Monitoring\Backend\MonitoringBackend;
class BackendAvailabilityMenuItemRenderer extends BadgeMenuItemRenderer
{
/**
* Get whether or not the monitoring backend is currently running
*
* @return bool
*/
protected function isCurrentlyRunning()
{
$programStatus = MonitoringBackend::instance()
->select()
->from(
'programstatus',
array('is_currently_running')
)
->fetchOne();
return $programStatus !== false ? (bool) $programStatus : false;
}
/**
* The css class of the badge
*
* @return string
*/
public function getState()
{
return self::STATE_CRITICAL;
}
/**
* The amount of items to display in the badge
*
* @return int
*/
public function getCount()
{
if (! $this->isCurrentlyRunning()) {
return 1;
}
return 0;
}
/**
* The tooltip title
*
* @return string
* @throws \Icinga\Exception\ConfigurationError
*/
public function getTitle()
{
return sprintf(
mt('monitoring', 'Monitoring backend %s is not running'),
MonitoringBackend::instance()->getName()
);
}
}