IcingaObjectGroups: simplify setting groups
This commit is contained in:
parent
67d9d8aa5f
commit
092bb8c3f6
|
@ -222,11 +222,7 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
|
|
||||||
public function set($key, $value)
|
public function set($key, $value)
|
||||||
{
|
{
|
||||||
if ($key === 'groups') {
|
if ($key === 'imports') {
|
||||||
$this->groups()->set($value);
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
} elseif ($key === 'imports') {
|
|
||||||
$this->imports()->set($value);
|
$this->imports()->set($value);
|
||||||
return $this;
|
return $this;
|
||||||
|
|
||||||
|
@ -488,6 +484,17 @@ abstract class IcingaObject extends DbObject implements IcingaConfigRenderer
|
||||||
return $vars;
|
return $vars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getGroups()
|
||||||
|
{
|
||||||
|
return $this->groups()->listGroupNames();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setGroups($groups)
|
||||||
|
{
|
||||||
|
$this->groups()->set($groups);
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
protected function getResolved($what)
|
protected function getResolved($what)
|
||||||
{
|
{
|
||||||
$func = 'resolve' . $what;
|
$func = 'resolve' . $what;
|
||||||
|
|
|
@ -77,17 +77,33 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
||||||
|
|
||||||
public function set($group)
|
public function set($group)
|
||||||
{
|
{
|
||||||
|
if (! is_array($group)) {
|
||||||
|
$group = array($group);
|
||||||
|
}
|
||||||
|
|
||||||
$existing = array_keys($this->groups);
|
$existing = array_keys($this->groups);
|
||||||
$new = array();
|
$new = array();
|
||||||
$class = $this->getGroupClass();
|
$class = $this->getGroupClass();
|
||||||
foreach ($group as $g) {
|
$unset = array();
|
||||||
|
|
||||||
|
foreach ($group as $k => $g) {
|
||||||
|
|
||||||
if ($g instanceof $class) {
|
if ($g instanceof $class) {
|
||||||
$new[] = $g->object_name;
|
$new[] = $g->object_name;
|
||||||
} else {
|
} else {
|
||||||
|
if (empty($g)) {
|
||||||
|
$unset[] = $k;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$new[] = $g;
|
$new[] = $g;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach ($unset as $k) {
|
||||||
|
unset($group[$k]);
|
||||||
|
}
|
||||||
|
|
||||||
sort($existing);
|
sort($existing);
|
||||||
sort($new);
|
sort($new);
|
||||||
if ($existing === $new) {
|
if ($existing === $new) {
|
||||||
|
@ -95,6 +111,12 @@ class IcingaObjectGroups implements Iterator, Countable, IcingaConfigRenderer
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->groups = array();
|
$this->groups = array();
|
||||||
|
if (empty($group)) {
|
||||||
|
$this->modified = true;
|
||||||
|
$this->refreshIndex();
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->add($group);
|
return $this->add($group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue