示例#1
0
 /**
  * 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;
 }