NerdsAndCompany\Schematic\Services\UserGroups::import PHP Method

import() public method

Import usergroups.
public import ( array $groupDefinitions, boolean $force = false ) : Result
$groupDefinitions array
$force boolean if set to true items not in the import will be deleted
return Result
    public function import(array $groupDefinitions, $force = false)
    {
        Craft::log(Craft::t('Importing User Groups'));
        $this->sectionsByHandle = $this->getSectionsService()->getAllSections('handle');
        $this->assetSourceByHandle = $this->getAssetSourcesService()->getAllSources('handle');
        $this->globalSetsByHandle = $this->getGlobalsService()->getAllSets('handle');
        $userGroups = $this->getUserGroupsService()->getAllGroups('handle');
        foreach ($groupDefinitions as $groupHandle => $groupDefinition) {
            $group = array_key_exists($groupHandle, $userGroups) ? $userGroups[$groupHandle] : new UserGroupModel();
            unset($userGroups[$groupHandle]);
            $group->name = $groupDefinition['name'];
            $group->handle = $groupHandle;
            if (!$this->getUserGroupsService()->saveGroup($group)) {
                $this->addErrors($group->getAllErrors());
                continue;
            }
            $permissions = $this->getPermissions($groupDefinition['permissions']);
            $this->getUserPermissionsService()->saveGroupPermissions($group->id, $permissions);
        }
        if ($force) {
            foreach ($userGroups as $group) {
                $this->getUserGroupsService()->deleteGroupById($group->id);
            }
        }
        return $this->getResultModel();
    }

Usage Example

Example #1
0
 /**
  * @covers ::import
  * @dataProvider provideValidUserGroupDefinitions
  *
  * @param array $groupDefinitions
  */
 public function testImportWithForceOption(array $groupDefinitions)
 {
     $this->setMockUserGroupsService();
     $this->setMockUserPermissionsService();
     $this->setMockSectionsService('handle');
     $this->setMockAssetSourcesService('handle');
     $this->setMockGlobalsService('handle');
     $schematicUserGroupsService = new UserGroups();
     $import = $schematicUserGroupsService->import($groupDefinitions, true);
     $this->assertTrue($import instanceof Result);
     $this->assertFalse($import->hasErrors());
 }