summaryrefslogtreecommitdiffstats
path: root/library/Director/Objects/Extension/PriorityColumn.php
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:17:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-14 13:17:31 +0000
commitf66ab8dae2f3d0418759f81a3a64dc9517a62449 (patch)
treefbff2135e7013f196b891bbde54618eb050e4aaf /library/Director/Objects/Extension/PriorityColumn.php
parentInitial commit. (diff)
downloadicingaweb2-module-director-f66ab8dae2f3d0418759f81a3a64dc9517a62449.tar.xz
icingaweb2-module-director-f66ab8dae2f3d0418759f81a3a64dc9517a62449.zip
Adding upstream version 1.10.2.upstream/1.10.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--library/Director/Objects/Extension/PriorityColumn.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/library/Director/Objects/Extension/PriorityColumn.php b/library/Director/Objects/Extension/PriorityColumn.php
new file mode 100644
index 0000000..638bdc6
--- /dev/null
+++ b/library/Director/Objects/Extension/PriorityColumn.php
@@ -0,0 +1,40 @@
+<?php
+
+namespace Icinga\Module\Director\Objects\Extension;
+
+use Zend_Db_Expr as Expr;
+
+trait PriorityColumn
+{
+ public function setNextPriority($prioSetColumn = null, $prioColumn = 'priority')
+ {
+ /** @var \Zend_Db_Adapter_Abstract $db */
+ $db = $this->getDb();
+ $prioValue = '(CASE WHEN MAX(priosub.priority) IS NULL THEN 1'
+ . ' ELSE MAX(priosub.priority) + 1 END)';
+ $query = $db->select()
+ ->from(
+ ['priosub' => $this->getTableName()],
+ "$prioValue"
+ );
+
+ if ($prioSetColumn !== null) {
+ $query->where("priosub.$prioSetColumn = ?", $this->get($prioSetColumn));
+ }
+
+ $this->set($prioColumn, new Expr('(' . $query . ')'));
+
+ return $this;
+ }
+
+ protected function refreshPriortyProperty($prioColumn = 'priority')
+ {
+ /** @var \Zend_Db_Adapter_Abstract $db */
+ $db = $this->getDb();
+ $idCol = $this->getAutoincKeyName();
+ $query = $db->select()
+ ->from($this->getTableName(), $prioColumn)
+ ->where("$idCol = ?", $this->get($idCol));
+ $this->reallySet($prioColumn, $db->fetchOne($query));
+ }
+}