/** * Create a Content Type Group object * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to create a content type group * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If a group with the same identifier already exists * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroupCreateStruct $contentTypeGroupCreateStruct * * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup */ public function createContentTypeGroup(ContentTypeGroupCreateStruct $contentTypeGroupCreateStruct) { if ($this->repository->hasAccess('class', 'create') !== true) { throw new UnauthorizedException('ContentType', 'create'); } try { $this->loadContentTypeGroupByIdentifier($contentTypeGroupCreateStruct->identifier); throw new InvalidArgumentException("\$contentTypeGroupCreateStruct", "A group with the identifier '{$contentTypeGroupCreateStruct->identifier}' already exists"); } catch (APINotFoundException $e) { // Do nothing } if ($contentTypeGroupCreateStruct->creationDate === null) { $timestamp = time(); } else { $timestamp = $contentTypeGroupCreateStruct->creationDate->getTimestamp(); } if ($contentTypeGroupCreateStruct->creatorId === null) { $userId = $this->repository->getCurrentUser()->id; } else { $userId = $contentTypeGroupCreateStruct->creatorId; } $spiGroupCreateStruct = new SPIContentTypeGroupCreateStruct(array("identifier" => $contentTypeGroupCreateStruct->identifier, "created" => $timestamp, "modified" => $timestamp, "creatorId" => $userId, "modifierId" => $userId)); $this->repository->beginTransaction(); try { $spiContentTypeGroup = $this->contentTypeHandler->createGroup($spiGroupCreateStruct); $this->repository->commit(); } catch (Exception $e) { $this->repository->rollback(); throw $e; } return $this->buildContentTypeGroupDomainObject($spiContentTypeGroup); }
/** * @param \eZ\Publish\SPI\Persistence\Content\Type\Group\CreateStruct $createStruct * @return Group */ public function createGroup(GroupCreateStruct $createStruct) { $this->clearCache(); return $this->innerHandler->createGroup($createStruct); }