eZ\Publish\Core\REST\Server\Controller\ContentType::linkContentTypeToGroup PHP Method

linkContentTypeToGroup() public method

Links a content type group to the content type and returns the updated group list.
public linkContentTypeToGroup ( mixed $contentTypeId, Request $request ) : ContentTypeGroupRefList
$contentTypeId mixed
$request Symfony\Component\HttpFoundation\Request
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);
    }