/** * Links a content type group to the content type and returns the updated group list * * @param mixed $contentTypeId * * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException * @throws \eZ\Publish\Core\REST\Server\Exceptions\BadRequestException * @return \eZ\Publish\Core\REST\Server\Values\ContentTypeGroupRefList */ public function linkContentTypeToGroup($contentTypeId, Request $request) { $contentType = $this->contentTypeService->loadContentType($contentTypeId); try { $contentTypeGroupId = $this->requestParser->parseHref($request->query->get('group'), 'contentTypeGroupId'); } catch (Exceptions\InvalidArgumentException $e) { // Group URI does not match the required value throw new BadRequestException($e->getMessage()); } $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($contentTypeGroupId); $existingContentTypeGroups = $contentType->getContentTypeGroups(); $contentTypeInGroup = false; foreach ($existingContentTypeGroups as $existingGroup) { if ($existingGroup->id == $contentTypeGroup->id) { $contentTypeInGroup = true; break; } } if ($contentTypeInGroup) { throw new ForbiddenException('Content type is already linked to provided group'); } $this->contentTypeService->assignContentTypeGroup($contentType, $contentTypeGroup); $existingContentTypeGroups[] = $contentTypeGroup; return new Values\ContentTypeGroupRefList($contentType, $existingContentTypeGroups); }
/** * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup */ protected function assignContentGroupTypeToContentType($contentType, $contentTypeGroup) { try { $this->contentTypeService->assignContentTypeGroup($contentType, $contentTypeGroup); } catch (ApiExceptions\InvalidArgumentException $exception) { //do nothing } }
/** * Assigns a content type to a content type group. * * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to unlink a content type * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If the content type is already assigned the given group * * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup */ public function assignContentTypeGroup(ContentType $contentType, ContentTypeGroup $contentTypeGroup) { $returnValue = $this->service->assignContentTypeGroup($contentType, $contentTypeGroup); $this->signalDispatcher->emit(new AssignContentTypeGroupSignal(array('contentTypeId' => $contentType->id, 'contentTypeGroupId' => $contentTypeGroup->id))); return $returnValue; }