eZ\Publish\Core\Repository\ContentTypeService::publishContentTypeDraft PHP Method

publishContentTypeDraft() public method

This method updates content objects, depending on the changed field definitions.
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;
        }
    }