예제 #1
0
 /**
  * Removes the given group from the content type and returns the updated group list
  *
  * @param $contentTypeId
  * @param $contentTypeGroupId
  *
  * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException
  * @throws \eZ\Publish\Core\REST\Common\Exceptions\NotFoundException
  * @return \eZ\Publish\Core\REST\Server\Values\ContentTypeGroupRefList
  */
 public function unlinkContentTypeFromGroup($contentTypeId, $contentTypeGroupId)
 {
     $contentType = $this->contentTypeService->loadContentType($contentTypeId);
     $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 Exceptions\NotFoundException('Content type is not in the given group');
     }
     if (count($existingContentTypeGroups) == 1) {
         throw new ForbiddenException('Content type cannot be unlinked from the only remaining group');
     }
     $this->contentTypeService->unassignContentTypeGroup($contentType, $contentTypeGroup);
     $contentType = $this->contentTypeService->loadContentType($contentTypeId);
     return new Values\ContentTypeGroupRefList($contentType, $contentType->getContentTypeGroups());
 }
 /**
  * Unassign a content type from a group.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to link a content type
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException If the content type is not assigned this the given group.
  * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException If $contentTypeGroup is the last group assigned to the content type
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup
  */
 public function unassignContentTypeGroup(ContentType $contentType, ContentTypeGroup $contentTypeGroup)
 {
     $returnValue = $this->service->unassignContentTypeGroup($contentType, $contentTypeGroup);
     $this->signalDispatcher->emit(new UnassignContentTypeGroupSignal(array('contentTypeId' => $contentType->id, 'contentTypeGroupId' => $contentTypeGroup->id)));
     return $returnValue;
 }