diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fae367b..eb1831bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ ### 4.0.18 +### Added +- Delete empty field and site groups on import with force ### Fixed - Fixed user field sources not being exported +- Fixed import of multiple sites in same sitegroup ### 4.0.17 - 2018-09-24 ### Fixed diff --git a/src/Converters/Models/Site.php b/src/Converters/Models/Site.php index 0044cad3..6e0354ed 100644 --- a/src/Converters/Models/Site.php +++ b/src/Converters/Models/Site.php @@ -70,6 +70,8 @@ public function deleteRecord(Model $record): bool public function getGroupIdByName($name) { if (!isset($this->groups)) { + $this->resetCraftSitesServiceGroupsCache(); + $this->groups = []; foreach (Craft::$app->sites->getAllGroups() as $group) { $this->groups[$group->name] = $group->id; @@ -88,4 +90,18 @@ public function getGroupIdByName($name) return $this->groups[$name]; } + + /** + * Reset craft site service groups cache using reflection. + */ + private function resetCraftSitesServiceGroupsCache() + { + $obj = Craft::$app->sites; + $refObject = new \ReflectionObject($obj); + if ($refObject->hasProperty('_fetchedAllGroups')) { + $refProperty = $refObject->getProperty('_fetchedAllGroups'); + $refProperty->setAccessible(true); + $refProperty->setValue($obj, false); + } + } } diff --git a/src/DataTypes/FieldDataType.php b/src/DataTypes/FieldDataType.php index 9490c533..7f4ee4b3 100644 --- a/src/DataTypes/FieldDataType.php +++ b/src/DataTypes/FieldDataType.php @@ -40,5 +40,20 @@ public function getRecords(): array public function afterImport() { Craft::$app->fields->updateFieldVersion(); + if (Schematic::$force) { + $this->clearEmptyGroups(); + } + } + + /** + * Clear empty field groups + */ + private function clearEmptyGroups() + { + foreach (Craft::$app->fields->getAllGroups() as $group) { + if (count($group->getFields()) == 0) { + Craft::$app->fields->deleteGroup($group); + } + } } } diff --git a/src/DataTypes/SiteDataType.php b/src/DataTypes/SiteDataType.php index f733c962..953b67b5 100644 --- a/src/DataTypes/SiteDataType.php +++ b/src/DataTypes/SiteDataType.php @@ -35,9 +35,20 @@ public function getRecords(): array } /** - * Reset craft site service sites cache using reflection. + * {@inheritdoc} */ public function afterImport() + { + $this->clearSiteCaches(); + if (Schematic::$force) { + $this->clearEmptyGroups(); + } + } + + /** + * Reset craft site service sites cache using reflection. + */ + private function clearSiteCaches() { $obj = Craft::$app->sites; $refObject = new \ReflectionObject($obj); @@ -53,4 +64,16 @@ public function afterImport() } $obj->init(); // reload sites } + + /** + * Clear empty sute groups + */ + private function clearEmptyGroups() + { + foreach (Craft::$app->sites->getAllGroups() as $group) { + if (count($group->getSites()) == 0) { + Craft::$app->sites->deleteGroup($group); + } + } + } }