/** * Update 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 the given identifier (if set) already exists * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup the content type group to be updated * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct */ public function updateContentTypeGroup(APIContentTypeGroup $contentTypeGroup, ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct) { if ($this->repository->hasAccess('class', 'update') !== true) { throw new UnauthorizedException('ContentType', 'update'); } $loadedContentTypeGroup = $this->loadContentTypeGroup($contentTypeGroup->id); if ($contentTypeGroupUpdateStruct->identifier !== null && $contentTypeGroupUpdateStruct->identifier !== $loadedContentTypeGroup->identifier) { try { $this->loadContentTypeGroupByIdentifier($contentTypeGroupUpdateStruct->identifier); throw new InvalidArgumentException('$contentTypeGroupUpdateStruct->identifier', "given identifier already exists"); } catch (APINotFoundException $e) { // Do nothing } } if ($contentTypeGroupUpdateStruct->modificationDate !== null) { $modifiedTimestamp = $contentTypeGroupUpdateStruct->modificationDate->getTimestamp(); } else { $modifiedTimestamp = time(); } $spiGroupUpdateStruct = new SPIContentTypeGroupUpdateStruct(array("id" => $loadedContentTypeGroup->id, "identifier" => $contentTypeGroupUpdateStruct->identifier === null ? $loadedContentTypeGroup->identifier : $contentTypeGroupUpdateStruct->identifier, "modified" => $modifiedTimestamp, "modifierId" => $contentTypeGroupUpdateStruct->modifierId === null ? $this->repository->getCurrentUser()->id : $contentTypeGroupUpdateStruct->modifierId)); $this->repository->beginTransaction(); try { $this->contentTypeHandler->updateGroup($spiGroupUpdateStruct); $this->repository->commit(); } catch (Exception $e) { $this->repository->rollback(); throw $e; } }
/** * @param \eZ\Publish\SPI\Persistence\Content\Type\Group\UpdateStruct $struct * @return \eZ\Publish\SPI\Persistence\Content\Type\Group */ public function updateGroup(GroupUpdateStruct $struct) { $this->clearCache(); return $this->innerHandler->updateGroup($struct); }