diff --git a/library/Director/Web/Table/ObjectsTable.php b/library/Director/Web/Table/ObjectsTable.php index 5d683b52..511e727d 100644 --- a/library/Director/Web/Table/ObjectsTable.php +++ b/library/Director/Web/Table/ObjectsTable.php @@ -14,11 +14,12 @@ use gipfl\IcingaWeb2\Link; use gipfl\IcingaWeb2\Table\ZfQueryBasedTable; use gipfl\IcingaWeb2\Url; use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\UuidInterface; use Zend_Db_Select as ZfSelect; class ObjectsTable extends ZfQueryBasedTable { + use TableWithBranchSupport; + /** @var ObjectRestriction[] */ protected $objectRestrictions; @@ -37,9 +38,6 @@ class ObjectsTable extends ZfQueryBasedTable protected $type; - /** @var UuidInterface|null */ - protected $branchUuid; - protected $baseObjectUrl; /** @var IcingaObject */ @@ -112,13 +110,6 @@ class ObjectsTable extends ZfQueryBasedTable return $this; } - public function setBranchUuid(UuidInterface $uuid = null) - { - $this->branchUuid = $uuid; - - return $this; - } - public function getColumns() { return $this->columns; @@ -256,36 +247,6 @@ class ObjectsTable extends ZfQueryBasedTable return $this->dummyObject; } - protected function branchifyColumns($columns) - { - $result = [ - 'uuid' => 'COALESCE(o.uuid, bo.uuid)' - ]; - $ignore = ['o.id']; - foreach ($columns as $alias => $column) { - if (substr($column, 0, 2) === 'o.' && ! in_array($column, $ignore)) { - // bo.column, o.column - $column = "COALESCE(b$column, $column)"; - } - - // Used in Service Tables: - if ($column === 'h.object_name' && $alias = 'host') { - $column = "COALESCE(bo.host, $column)"; - } - - $result[$alias] = $column; - } - - return $result; - } - - protected function stripSearchColumnAliases() - { - foreach ($this->searchColumns as &$column) { - $column = preg_replace('/^[a-z]+\./', '', $column); - } - } - protected function prepareQuery() { $table = $this->getDummyObject()->getTableName(); diff --git a/library/Director/Web/Table/TableWithBranchSupport.php b/library/Director/Web/Table/TableWithBranchSupport.php new file mode 100644 index 00000000..bcf5a151 --- /dev/null +++ b/library/Director/Web/Table/TableWithBranchSupport.php @@ -0,0 +1,49 @@ +branchUuid = $uuid; + + return $this; + } + + protected function branchifyColumns($columns) + { + $result = [ + 'uuid' => 'COALESCE(o.uuid, bo.uuid)' + ]; + $ignore = ['o.id']; + foreach ($columns as $alias => $column) { + if (substr($column, 0, 2) === 'o.' && ! in_array($column, $ignore)) { + // bo.column, o.column + $column = "COALESCE(b$column, $column)"; + } + + // Used in Service Tables: + if ($column === 'h.object_name' && $alias = 'host') { + $column = "COALESCE(bo.host, $column)"; + } + + $result[$alias] = $column; + } + + return $result; + } + + protected function stripSearchColumnAliases() + { + foreach ($this->searchColumns as &$column) { + $column = preg_replace('/^[a-z]+\./', '', $column); + } + } +}