/** * Parse input structure * * @param array $data * @param \eZ\Publish\Core\REST\Common\Input\ParsingDispatcher $parsingDispatcher * * @return \eZ\Publish\API\Repository\Values\User\UserGroupCreateStruct */ public function parse(array $data, ParsingDispatcher $parsingDispatcher) { $contentType = null; if (array_key_exists('ContentType', $data) && is_array($data['ContentType'])) { if (!array_key_exists('_href', $data['ContentType'])) { throw new Exceptions\Parser("Missing '_href' attribute for ContentType element in UserGroupCreate."); } $contentType = $this->contentTypeService->loadContentType($this->requestParser->parseHref($data['ContentType']['_href'], 'contentTypeId')); } if (!array_key_exists('mainLanguageCode', $data)) { throw new Exceptions\Parser("Missing 'mainLanguageCode' element for UserGroupCreate."); } $userGroupCreateStruct = $this->userService->newUserGroupCreateStruct($data['mainLanguageCode'], $contentType); if (array_key_exists('Section', $data) && is_array($data['Section'])) { if (!array_key_exists('_href', $data['Section'])) { throw new Exceptions\Parser("Missing '_href' attribute for Section element in UserGroupCreate."); } $userGroupCreateStruct->sectionId = $this->requestParser->parseHref($data['Section']['_href'], 'sectionId'); } if (array_key_exists('remoteId', $data)) { $userGroupCreateStruct->remoteId = $data['remoteId']; } if (!array_key_exists('fields', $data) || !is_array($data['fields']) || !is_array($data['fields']['field'])) { throw new Exceptions\Parser("Missing or invalid 'fields' element for UserGroupCreate."); } foreach ($data['fields']['field'] as $fieldData) { if (!array_key_exists('fieldDefinitionIdentifier', $fieldData)) { throw new Exceptions\Parser("Missing 'fieldDefinitionIdentifier' element in field data for UserGroupCreate."); } $fieldDefinition = $userGroupCreateStruct->contentType->getFieldDefinition($fieldData['fieldDefinitionIdentifier']); if (!$fieldDefinition) { throw new Exceptions\Parser("'{$fieldData['fieldDefinitionIdentifier']}' is invalid field definition identifier for '{$userGroupCreateStruct->contentType->identifier}' content type in UserGroupCreate."); } if (!array_key_exists('fieldValue', $fieldData)) { throw new Exceptions\Parser("Missing 'fieldValue' element for '{$fieldData['fieldDefinitionIdentifier']}' identifier in UserGroupCreate."); } $fieldValue = $this->fieldTypeParser->parseValue($fieldDefinition->fieldTypeIdentifier, $fieldData['fieldValue']); $languageCode = null; if (array_key_exists('languageCode', $fieldData)) { $languageCode = $fieldData['languageCode']; } $userGroupCreateStruct->setField($fieldData['fieldDefinitionIdentifier'], $fieldValue, $languageCode); } return $userGroupCreateStruct; }
/** * Create new User Group inside existing parent User Group. * * @param string $name User Group name * @param \eZ\Publish\API\Repository\Values\User\UserGroup $parentGroup (optional) parent user group, defaults to UserGroup "/Users" * * @return \eZ\Publish\API\Repository\Values\User\UserGroup */ public function createUserGroup($name, $parentGroup = null) { if (!$parentGroup) { $parentGroup = $this->userService->loadUserGroup(self::USERGROUP_ROOT_CONTENT_ID); } $userGroupCreateStruct = $this->userService->newUserGroupCreateStruct('eng-GB'); $userGroupCreateStruct->setField('name', $name); return $this->userService->createUserGroup($userGroupCreateStruct, $parentGroup); }
/** * @inheritdoc */ public function visit(TreeNodeInterface $node, &$data) { if (!is_array($data)) { return null; } $struct = $this->userService->newUserGroupCreateStruct(''); $this->fillValueObject($struct, $data, ['content_type']); $defaultUserGroup = $this->userService->loadUserGroup(self::DEFAULT_USER_GROUP_ID); // @todo: process parent user group $userGroup = $this->userService->createUserGroup($struct, $defaultUserGroup); $this->saveUserGroupDataToCollection($node, $userGroup); if (isset($data['roles'])) { foreach ($data['roles'] as $roleId) { $role = $this->repository->getRoleService()->loadRoleByIdentifier($roleId); // @doc: parameter RoleLimitation is not supported. // Not possible to assign role to user or group with limitation $this->repository->getRoleService()->assignRoleToUserGroup($role, $userGroup); } } return $userGroup; }
/** * Instantiate a user group create class * * @param string $mainLanguageCode The main language for the underlying content object * @param null|\eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType 5.x the content type for the underlying content object. In 4.x it is ignored and taken from the configuration * * @return \eZ\Publish\API\Repository\Values\User\UserGroupCreateStruct */ public function newUserGroupCreateStruct($mainLanguageCode, $contentType = null) { return $this->service->newUserGroupCreateStruct($mainLanguageCode, $contentType); }