mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-30 17:24:18 +02:00
parent
58a64cee78
commit
7c6a10013f
@ -160,7 +160,12 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement
|
||||
$type = 'host';
|
||||
$filter = clone($filter);
|
||||
|
||||
$filter->setExpression(json_decode($filter->getExpression()));
|
||||
if ($this->columnIsJson($filter)) {
|
||||
$filter->setExpression(json_decode($filter->getColumn()));
|
||||
} else {
|
||||
$filter->setExpression(json_decode($filter->getExpression()));
|
||||
}
|
||||
|
||||
$dummy = IcingaObject::createByType($type);
|
||||
$col = $filter->getColumn();
|
||||
if ($dummy->hasProperty($col)) {
|
||||
@ -204,6 +209,12 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement
|
||||
return $el;
|
||||
}
|
||||
|
||||
protected function columnIsJson(FilterExpression $filter)
|
||||
{
|
||||
$col = $filter->getColumn();
|
||||
return strlen($col) && $col[0] === '"';
|
||||
}
|
||||
|
||||
protected function text(Filter $filter = null)
|
||||
{
|
||||
$value = $filter === null ? '' : $filter->getExpression();
|
||||
@ -275,7 +286,7 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement
|
||||
);
|
||||
}
|
||||
|
||||
protected function selectSign(Filter $filter = null)
|
||||
protected function selectSign(FilterExpression $filter = null)
|
||||
{
|
||||
$signs = array(
|
||||
'=' => '=',
|
||||
@ -285,19 +296,24 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement
|
||||
'>=' => '>=',
|
||||
'<=' => '<=',
|
||||
'in' => 'in',
|
||||
'contains' => 'contains',
|
||||
// 'true' => 'is true (or set)',
|
||||
);
|
||||
|
||||
if ($filter === null) {
|
||||
$sign = null;
|
||||
} else {
|
||||
$expression = json_decode($filter->getExpression());
|
||||
if ($expression === true) {
|
||||
$sign = 'true';
|
||||
} elseif (is_array($expression)) {
|
||||
$sign = 'in';
|
||||
if ($this->columnIsJson($filter)) {
|
||||
$sign = 'contains';
|
||||
} else {
|
||||
$sign = $filter->getSign();
|
||||
$expression = json_decode($filter->getExpression());
|
||||
if ($expression === true) {
|
||||
$sign = 'true';
|
||||
} elseif (is_array($expression)) {
|
||||
$sign = 'in';
|
||||
} else {
|
||||
$sign = $filter->getSign();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -320,9 +336,12 @@ class Zend_View_Helper_FormDataFilter extends Zend_View_Helper_FormElement
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function selectColumn(Filter $filter = null)
|
||||
protected function selectColumn(FilterExpression $filter = null)
|
||||
{
|
||||
$active = $filter === null ? null : $filter->getColumn();
|
||||
if ($filter && $this->columnIsJson($filter)) {
|
||||
$active = $filter->getExpression();
|
||||
}
|
||||
|
||||
if (! $this->hasColumnList()) {
|
||||
return $this->view->formText(
|
||||
|
@ -60,7 +60,14 @@ class AssignRenderer
|
||||
|
||||
protected function renderEquals($column, $expression)
|
||||
{
|
||||
if (substr($column, -7) === '.groups') {
|
||||
if ($column[0] === '"') {
|
||||
// "me"=vars.users -> "me" in vars.users
|
||||
return sprintf(
|
||||
'%s in %s',
|
||||
$column,
|
||||
$expression
|
||||
);
|
||||
} else if (substr($column, -7) === '.groups') {
|
||||
return sprintf(
|
||||
'%s in %s',
|
||||
$expression,
|
||||
|
@ -275,6 +275,14 @@ class DataFilter extends FormElement
|
||||
'=',
|
||||
json_encode($value)
|
||||
);
|
||||
} elseif ($entry['sign'] === 'contains') {
|
||||
$value = array_key_exists('value', $entry) ? $entry['value'] : null;
|
||||
|
||||
return Filter::expression(
|
||||
json_encode($value),
|
||||
'=',
|
||||
$entry['column']
|
||||
);
|
||||
} else {
|
||||
$value = array_key_exists('value', $entry) ? $entry['value'] : null;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user