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