/** * 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( APIContentType $contentType, APIContentTypeGroup $contentTypeGroup ) { if ( $this->repository->hasAccess( 'class', 'update' ) !== true ) throw new UnauthorizedException( 'ContentType', 'update' ); $spiContentType = $this->contentTypeHandler->load( $contentType->id, $contentType->status ); if ( !in_array( $contentTypeGroup->id, $spiContentType->groupIds ) ) { throw new InvalidArgumentException( "\$contentTypeGroup", "The given ContentType is not assigned the ContentTypeGroup" ); } $this->repository->beginTransaction(); try { $this->contentTypeHandler->unlink( $contentTypeGroup->id, $contentType->id, $contentType->status ); $this->repository->commit(); } catch ( APIBadStateException $e ) { $this->repository->rollback(); throw new BadStateException( "\$contentType", "The given ContentTypeGroup is the last group assigned to the ContentType", $e ); } catch ( Exception $e ) { $this->repository->rollback(); throw $e; } }
/** * Unlink a content type group from a content type * * @param mixed $groupId * @param mixed $contentTypeId * @param int $status * @throws \eZ\Publish\API\Repository\Exceptions\NotFoundException If group or type with provided status is not found * @throws \eZ\Publish\API\Repository\Exceptions\BadStateException If $groupId is last group on $contentTypeId or * not a group assigned to type * @todo Add throws for NotFound and BadState when group is not assigned to type */ public function unlink($groupId, $contentTypeId, $status) { $this->clearCache(); return $this->innerHandler->unlink($groupId, $contentTypeId, $status); }