summaryrefslogtreecommitdiffstats
path: root/library/Director/Objects/DirectorDatalistEntry.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--library/Director/Objects/DirectorDatalistEntry.php112
1 files changed, 112 insertions, 0 deletions
diff --git a/library/Director/Objects/DirectorDatalistEntry.php b/library/Director/Objects/DirectorDatalistEntry.php
new file mode 100644
index 0000000..086686a
--- /dev/null
+++ b/library/Director/Objects/DirectorDatalistEntry.php
@@ -0,0 +1,112 @@
+<?php
+
+namespace Icinga\Module\Director\Objects;
+
+use Icinga\Module\Director\Data\Db\DbObject;
+use RuntimeException;
+
+class DirectorDatalistEntry extends DbObject
+{
+ protected $keyName = ['list_id', 'entry_name'];
+
+ protected $table = 'director_datalist_entry';
+
+ private $shouldBeRemoved = false;
+
+ protected $defaultProperties = [
+ 'list_id' => null,
+ 'entry_name' => null,
+ 'entry_value' => null,
+ 'format' => null,
+ 'allowed_roles' => null,
+ ];
+
+ /**
+ * @param DirectorDatalist $list
+ * @return static[]
+ */
+ public static function loadAllForList(DirectorDatalist $list)
+ {
+ $query = $list->getDb()
+ ->select()
+ ->from('director_datalist_entry')
+ ->where('list_id = ?', $list->get('id'))
+ ->order('entry_name ASC');
+
+ return static::loadAll($list->getConnection(), $query, 'entry_name');
+ }
+
+ /**
+ * @param $roles
+ * @codingStandardsIgnoreStart
+ */
+ public function setAllowed_roles($roles)
+ {
+ // @codingStandardsIgnoreEnd
+ $key = 'allowed_roles';
+ if (is_array($roles)) {
+ $this->reallySet($key, json_encode($roles));
+ } elseif (null === $roles) {
+ $this->reallySet($key, null);
+ } else {
+ throw new RuntimeException(
+ 'Expected array or null for allowed_roles, got %s',
+ var_export($roles, 1)
+ );
+ }
+ }
+
+ /**
+ * @return array|null
+ * @codingStandardsIgnoreStart
+ */
+ public function getAllowed_roles()
+ {
+ // @codingStandardsIgnoreEnd
+ $roles = $this->getProperty('allowed_roles');
+ if (is_string($roles)) {
+ return json_decode($roles);
+ } else {
+ return $roles;
+ }
+ }
+
+ public function replaceWith(DirectorDatalistEntry $object)
+ {
+ $this->set('entry_value', $object->get('entry_value'));
+ if ($object->get('format')) {
+ $this->set('format', $object->get('format'));
+ }
+
+ return $this;
+ }
+
+ public function merge(DirectorDatalistEntry $object)
+ {
+ return $this->replaceWith($object);
+ }
+
+ public function markForRemoval($remove = true)
+ {
+ $this->shouldBeRemoved = $remove;
+
+ return $this;
+ }
+
+ public function shouldBeRemoved()
+ {
+ return $this->shouldBeRemoved;
+ }
+
+ public function onInsert()
+ {
+ }
+
+ public function onUpdate()
+ {
+ }
+
+ public function onDelete()
+ {
+ }
+}