/** * @param mixed $groupId * @return Group * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If type group with $groupId is not found */ public function loadGroup($groupId) { if (isset($this->groups[$groupId])) { return $this->groups[$groupId]; } return $this->groups[$groupId] = $this->innerHandler->loadGroup($groupId); }
/** * Get a Content Type Group object by id * * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If group can not be found * * @param mixed $contentTypeGroupId * * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup */ public function loadContentTypeGroup( $contentTypeGroupId ) { $spiGroup = $this->contentTypeHandler->loadGroup( $contentTypeGroupId ); return $this->buildContentTypeGroupDomainObject( $spiGroup ); }
/** * Creates a draft from an existing content type. * * This is a complete copy of the content * type which has the state STATUS_DRAFT. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to edit a content type * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException If there is already a draft assigned to another user * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft */ public function createContentTypeDraft(APIContentType $contentType) { if ($this->repository->hasAccess('class', 'create') !== true) { throw new UnauthorizedException('ContentType', 'create'); } try { $this->contentTypeHandler->load($contentType->id, SPIContentType::STATUS_DRAFT); throw new BadStateException('$contentType', 'Draft of the ContentType already exists'); } catch (APINotFoundException $e) { $this->repository->beginTransaction(); try { $spiContentType = $this->contentTypeHandler->createDraft($this->repository->getCurrentUserReference()->getUserId(), $contentType->id); $this->repository->commit(); } catch (Exception $e) { $this->repository->rollback(); throw $e; } } return $this->contentTypeDomainMapper->buildContentTypeDraftDomainObject($spiContentType, array_map(function ($id) { return $this->contentTypeHandler->loadGroup($id); }, $spiContentType->groupIds)); }