2014-09-17 18:30:15 +02:00
|
|
|
<?php
|
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
|
|
|
|
namespace Icinga\Module\Monitoring\Form;
|
|
|
|
|
|
|
|
use \Zend_Form;
|
|
|
|
use Icinga\Web\Form;
|
|
|
|
use Icinga\Data\Filter\Filter;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Configure the filter for the statehistorysummary
|
|
|
|
*/
|
|
|
|
class StatehistoryForm extends Form
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Return the corresponding filter-object
|
|
|
|
*
|
|
|
|
* @returns Filter
|
|
|
|
*/
|
|
|
|
public function getFilter()
|
|
|
|
{
|
|
|
|
$baseFilter = Filter::matchAny(
|
|
|
|
Filter::expression('type', '=', 'hard_state')
|
|
|
|
);
|
|
|
|
|
|
|
|
if ($this->getValue('objecttype', 'hosts') === 'hosts') {
|
|
|
|
$objectTypeFilter = Filter::expression('object_type', '=', 'host');
|
|
|
|
} else {
|
|
|
|
$objectTypeFilter = Filter::expression('object_type', '=', 'service');
|
|
|
|
}
|
|
|
|
|
|
|
|
$states = array(
|
|
|
|
'cnt_down_hard' => Filter::expression('state', '=', '1'),
|
|
|
|
'cnt_unreachable_hard' => Filter::expression('state', '=', '2'),
|
|
|
|
'cnt_up' => Filter::expression('state', '=', '0'),
|
|
|
|
'cnt_critical_hard' => Filter::expression('state', '=', '2'),
|
|
|
|
'cnt_warning_hard' => Filter::expression('state', '=', '1'),
|
|
|
|
'cnt_unknown_hard' => Filter::expression('state', '=', '3'),
|
|
|
|
'cnt_ok' => Filter::expression('state', '=', '0')
|
|
|
|
);
|
2014-09-18 09:24:50 +02:00
|
|
|
$state = $this->getValue('state', 'cnt_critical_hard');
|
|
|
|
$stateFilter = $states[$state];
|
|
|
|
if (in_array($state, array('cnt_ok', 'cnt_up'))) {
|
|
|
|
return Filter::matchAll($objectTypeFilter, $stateFilter);
|
|
|
|
}
|
2014-09-17 18:30:15 +02:00
|
|
|
return Filter::matchAll($baseFilter, $objectTypeFilter, $stateFilter);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-09-30 11:34:04 +02:00
|
|
|
* @see Form::createElements()
|
2014-09-17 18:30:15 +02:00
|
|
|
*/
|
2014-09-30 11:34:04 +02:00
|
|
|
public function createElements(array $formData)
|
2014-09-17 18:30:15 +02:00
|
|
|
{
|
|
|
|
$this->addElement(
|
|
|
|
'select',
|
|
|
|
'from',
|
|
|
|
array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'From'),
|
2014-09-17 18:30:15 +02:00
|
|
|
'value' => $this->getRequest()->getParam('from', strtotime('3 months ago')),
|
|
|
|
'multiOptions' => array(
|
2014-10-21 17:22:16 +02:00
|
|
|
strtotime('midnight 3 months ago') => mt('monitoring', '3 Months'),
|
|
|
|
strtotime('midnight 4 months ago') => mt('monitoring', '4 Months'),
|
|
|
|
strtotime('midnight 8 months ago') => mt('monitoring', '8 Months'),
|
|
|
|
strtotime('midnight 12 months ago') => mt('monitoring', '1 Year'),
|
|
|
|
strtotime('midnight 24 months ago') => mt('monitoring', '2 Years')
|
2014-09-17 18:30:15 +02:00
|
|
|
),
|
|
|
|
'class' => 'autosubmit'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
$this->addElement(
|
|
|
|
'select',
|
|
|
|
'to',
|
|
|
|
array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'To'),
|
2014-09-17 18:30:15 +02:00
|
|
|
'value' => $this->getRequest()->getParam('to', time()),
|
|
|
|
'multiOptions' => array(
|
2014-10-21 17:22:16 +02:00
|
|
|
time() => mt('monitoring', 'Today')
|
2014-09-17 18:30:15 +02:00
|
|
|
),
|
|
|
|
'class' => 'autosubmit'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
$objectType = $this->getRequest()->getParam('objecttype', 'services');
|
|
|
|
$this->addElement(
|
|
|
|
'select',
|
|
|
|
'objecttype',
|
|
|
|
array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'Object type'),
|
2014-09-17 18:30:15 +02:00
|
|
|
'value' => $objectType,
|
|
|
|
'multiOptions' => array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'services' => mt('monitoring', 'Services'),
|
|
|
|
'hosts' => mt('monitoring', 'Hosts')
|
2014-09-17 18:30:15 +02:00
|
|
|
),
|
|
|
|
'class' => 'autosubmit'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
if ($objectType === 'services') {
|
|
|
|
$serviceState = $this->getRequest()->getParam('state', 'cnt_critical_hard');
|
2014-09-18 09:24:50 +02:00
|
|
|
if (in_array($serviceState, array('cnt_down_hard', 'cnt_unreachable_hard', 'cnt_up'))) {
|
2014-09-17 18:30:15 +02:00
|
|
|
$serviceState = 'cnt_critical_hard';
|
|
|
|
}
|
|
|
|
$this->addElement(
|
|
|
|
'select',
|
|
|
|
'state',
|
|
|
|
array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'State'),
|
2014-09-17 18:30:15 +02:00
|
|
|
'value' => $serviceState,
|
|
|
|
'multiOptions' => array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'cnt_critical_hard' => mt('monitoring', 'Critical'),
|
|
|
|
'cnt_warning_hard' => mt('monitoring', 'Warning'),
|
|
|
|
'cnt_unknown_hard' => mt('monitoring', 'Unknown'),
|
|
|
|
'cnt_ok' => mt('monitoring', 'Ok')
|
2014-09-17 18:30:15 +02:00
|
|
|
),
|
|
|
|
'class' => 'autosubmit'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
$hostState = $this->getRequest()->getParam('state', 'cnt_down_hard');
|
|
|
|
if (in_array($hostState, array('cnt_ok', 'cnt_critical_hard', 'cnt_warning', 'cnt_unknown'))) {
|
|
|
|
$hostState = 'cnt_down_hard';
|
|
|
|
}
|
|
|
|
$this->addElement(
|
|
|
|
'select',
|
|
|
|
'state',
|
|
|
|
array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'State'),
|
2014-09-17 18:30:15 +02:00
|
|
|
'value' => $hostState,
|
|
|
|
'multiOptions' => array(
|
2014-10-21 17:22:16 +02:00
|
|
|
'cnt_up' => mt('monitoring', 'Up'),
|
|
|
|
'cnt_down_hard' => mt('monitoring', 'Down'),
|
|
|
|
'cnt_unreachable_hard' => mt('monitoring', 'Unreachable')
|
2014-09-17 18:30:15 +02:00
|
|
|
),
|
|
|
|
'class' => 'autosubmit'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
$this->addElement(
|
|
|
|
'button',
|
|
|
|
'btn_submit',
|
|
|
|
array(
|
|
|
|
'type' => 'submit',
|
|
|
|
'escape' => false,
|
|
|
|
'value' => '1',
|
|
|
|
'class' => 'btn btn-cta btn-common',
|
2014-10-21 17:22:16 +02:00
|
|
|
'label' => mt('monitoring', 'Apply')
|
2014-09-17 18:30:15 +02:00
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|