From 95730fb0aa120b0911ca1441965bc40e3681aa9f Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Wed, 9 Feb 2022 14:46:42 +0100 Subject: [PATCH] BranchActivity: require connection when creating... ...new objects --- library/Director/Db/Branch/BranchActivity.php | 11 +++++++++-- library/Director/Db/Branch/BranchMerger.php | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/library/Director/Db/Branch/BranchActivity.php b/library/Director/Db/Branch/BranchActivity.php index 35940086..19b8391c 100644 --- a/library/Director/Db/Branch/BranchActivity.php +++ b/library/Director/Db/Branch/BranchActivity.php @@ -133,14 +133,21 @@ class BranchActivity return $object; } - public function createDbObject() + /** + * Hint: $connection is required, because setting groups triggered loading them. + * Should be investigated, as in theory $hostWithoutConnection->groups = 'group' + * is expected to work + * @param Db $connection + * @return DbObject|string + */ + public function createDbObject(Db $connection) { if (!$this->isActionCreate()) { throw new RuntimeException('Only BranchActivity instances with action=create can create objects'); } $class = DbObjectTypeRegistry::classByType($this->getObjectTable()); - $object = $class::create(); + $object = $class::create([], $connection); $object->setUniqueId($this->getObjectUuid()); foreach ($this->getModifiedProperties()->jsonSerialize() as $key => $value) { $object->set($key, $value); diff --git a/library/Director/Db/Branch/BranchMerger.php b/library/Director/Db/Branch/BranchMerger.php index 1ae6eb05..886610e8 100644 --- a/library/Director/Db/Branch/BranchMerger.php +++ b/library/Director/Db/Branch/BranchMerger.php @@ -130,7 +130,7 @@ class BranchMerger throw new MergeErrorRecreateOnMerge($activity); } } else { - $activity->createDbObject()->store($this->connection); + $activity->createDbObject($this->connection)->store($this->connection); } } elseif ($activity->isActionDelete()) { if ($exists) {