summaryrefslogtreecommitdiffstats
path: root/library/Director/Objects/IcingaUser.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--library/Director/Objects/IcingaUser.php92
1 files changed, 92 insertions, 0 deletions
diff --git a/library/Director/Objects/IcingaUser.php b/library/Director/Objects/IcingaUser.php
new file mode 100644
index 0000000..394e849
--- /dev/null
+++ b/library/Director/Objects/IcingaUser.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace Icinga\Module\Director\Objects;
+
+use Icinga\Module\Director\Db;
+use Icinga\Module\Director\DirectorObject\Automation\ExportInterface;
+use Icinga\Module\Director\Exception\DuplicateKeyException;
+
+class IcingaUser extends IcingaObject implements ExportInterface
+{
+ protected $table = 'icinga_user';
+
+ protected $defaultProperties = array(
+ 'id' => null,
+ 'uuid' => null,
+ 'object_name' => null,
+ 'object_type' => null,
+ 'disabled' => 'n',
+ 'display_name' => null,
+ 'email' => null,
+ 'pager' => null,
+ 'enable_notifications' => null,
+ 'period_id' => null,
+ 'zone_id' => null,
+ );
+
+ protected $uuidColumn = 'uuid';
+
+ protected $supportsGroups = true;
+
+ protected $supportsCustomVars = true;
+
+ protected $supportsFields = true;
+
+ protected $supportsImports = true;
+
+ protected $booleans = array(
+ 'enable_notifications' => 'enable_notifications'
+ );
+
+ protected $relatedSets = array(
+ 'states' => 'StateFilterSet',
+ 'types' => 'TypeFilterSet',
+ );
+
+ protected $relations = array(
+ 'period' => 'IcingaTimePeriod',
+ 'zone' => 'IcingaZone',
+ );
+
+ public function export()
+ {
+ return ImportExportHelper::simpleExport($this);
+ }
+
+ /**
+ * @param $plain
+ * @param Db $db
+ * @param bool $replace
+ * @return IcingaUser
+ * @throws DuplicateKeyException
+ * @throws \Icinga\Exception\NotFoundError
+ */
+ public static function import($plain, Db $db, $replace = false)
+ {
+ $properties = (array) $plain;
+ $key = $properties['object_name'];
+
+ if ($replace && static::exists($key, $db)) {
+ $object = static::load($key, $db);
+ } elseif (static::exists($key, $db)) {
+ throw new DuplicateKeyException(
+ 'Cannot import, %s "%s" already exists',
+ static::create([])->getShortTableName(),
+ $key
+ );
+ } else {
+ $object = static::create([], $db);
+ }
+
+ // $object->newFields = $properties['fields'];
+ unset($properties['fields']);
+ $object->setProperties($properties);
+
+ return $object;
+ }
+
+ public function getUniqueIdentifier()
+ {
+ return $this->getObjectName();
+ }
+}