public unlinkContentTypeFromGroup ( $contentTypeId, $contentTypeGroupId ) : |
||
$contentTypeId | ||
$contentTypeGroupId | ||
return |
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());
}