public publishContentTypeDraft ( eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft $contentTypeDraft ) | ||
$contentTypeDraft | eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft |
public function publishContentTypeDraft(APIContentTypeDraft $contentTypeDraft)
{
if ($this->repository->hasAccess('class', 'update') !== true) {
throw new UnauthorizedException('ContentType', 'update');
}
try {
$loadedContentTypeDraft = $this->loadContentTypeDraft($contentTypeDraft->id);
} catch (APINotFoundException $e) {
throw new BadStateException('$contentTypeDraft', 'The content type does not have a draft.', $e);
}
if (count($loadedContentTypeDraft->getFieldDefinitions()) === 0) {
throw new InvalidArgumentException('$contentTypeDraft', 'The content type draft should have at least one field definition.');
}
$this->repository->beginTransaction();
try {
if (empty($loadedContentTypeDraft->nameSchema)) {
$fieldDefinitions = $loadedContentTypeDraft->getFieldDefinitions();
$this->contentTypeHandler->update($contentTypeDraft->id, $contentTypeDraft->status, $this->contentTypeDomainMapper->buildSPIContentTypeUpdateStruct($loadedContentTypeDraft, new ContentTypeUpdateStruct(array('nameSchema' => '<' . $fieldDefinitions[0]->identifier . '>')), $this->repository->getCurrentUserReference()));
}
$this->contentTypeHandler->publish($loadedContentTypeDraft->id);
$this->repository->commit();
} catch (Exception $e) {
$this->repository->rollback();
throw $e;
}
}