public function createContentType(ContentTypeCreateStruct $struct)
 {
     if (!isset($struct->mainLanguageCode)) {
         $struct->mainLanguageCode = 'eng-GB';
     }
     if (!isset($struct->names)) {
         $struct->names = ['eng-GB' => $struct->identifier];
     }
     $this->contentTypeService->publishContentTypeDraft($this->contentTypeService->createContentType($struct, [$this->contentTypeService->loadContentTypeGroupByIdentifier('Content')]));
     $this->currentContentType = $this->contentTypeService->loadContentTypeByIdentifier($struct->identifier);
 }
 /**
  * Create new content type draft
  *
  * @param array $data
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft
  */
 private function getNewDraft(array &$data)
 {
     $struct = $this->contentTypeService->newContentTypeCreateStruct($data['identifier']);
     $this->fillValueObject($struct, $data);
     $struct->mainLanguageCode = $this->getContentDataMainLanguage($data);
     $groups = $this->getContentTypeGroups($data);
     return $this->contentTypeService->createContentType($struct, $groups);
 }
 public function createContentTypeAction(Request $request, $contentTypeGroupId, $languageCode = null)
 {
     $createForm = $this->createForm(new ContentTypeCreateType($this->contentTypeService), ['contentTypeGroupId' => $contentTypeGroupId]);
     $createForm->handleRequest($request);
     if ($createForm->isValid()) {
         $languageCode = $languageCode ?: $this->prioritizedLanguages[0];
         $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($createForm->getData()['contentTypeGroupId']);
         $contentTypeCreateStruct = new ContentTypeCreateStruct(['identifier' => '__new__' . md5(microtime(true)), 'mainLanguageCode' => $languageCode, 'names' => [$languageCode => 'New ContentType']]);
         $contentTypeDraft = $this->contentTypeService->createContentType($contentTypeCreateStruct, [$contentTypeGroup]);
         return $this->redirectToRouteAfterFormPost('admin_contenttypeUpdate', ['contentTypeId' => $contentTypeDraft->id, 'languageCode' => $languageCode]);
     }
     // Form validation failed. Send errors as notifications.
     foreach ($createForm->getErrors(true) as $error) {
         $this->notifyErrorPlural($error->getMessageTemplate(), $error->getMessagePluralization(), $error->getMessageParameters(), 'ezrepoforms_content_type');
     }
     return $this->redirectToRouteAfterFormPost('admin_contenttypeGroupView', ['contentTypeGroupId' => $contentTypeGroupId]);
 }
 /**
  * Creates a new content type draft in the given content type group
  *
  * @param $contentTypeGroupId
  *
  * @throws \eZ\Publish\Core\REST\Server\Exceptions\ForbiddenException
  * @throws \eZ\Publish\Core\REST\Server\Exceptions\BadRequestException
  * @return \eZ\Publish\Core\REST\Server\Values\CreatedContentType
  */
 public function createContentType($contentTypeGroupId, Request $request)
 {
     $contentTypeGroup = $this->contentTypeService->loadContentTypeGroup($contentTypeGroupId);
     $publish = $request->query->has('publish') && $request->query->get('publish') === 'true';
     try {
         $contentTypeDraft = $this->contentTypeService->createContentType($this->inputDispatcher->parse(new Message(array('Content-Type' => $request->headers->get('Content-Type'), '__publish' => $publish), $request->getContent())), array($contentTypeGroup));
     } catch (InvalidArgumentException $e) {
         throw new ForbiddenException($e->getMessage());
     } catch (ContentTypeValidationException $e) {
         throw new BadRequestException($e->getMessage());
     } catch (ContentTypeFieldDefinitionValidationException $e) {
         throw new BadRequestException($e->getMessage());
     } catch (Exceptions\Parser $e) {
         throw new BadRequestException($e->getMessage());
     }
     if ($publish) {
         $this->contentTypeService->publishContentTypeDraft($contentTypeDraft);
         $contentType = $this->contentTypeService->loadContentType($contentTypeDraft->id);
         return new Values\CreatedContentType(array('contentType' => new Values\RestContentType($contentType, $contentType->getFieldDefinitions())));
     }
     return new Values\CreatedContentType(array('contentType' => new Values\RestContentType($contentTypeDraft, $contentTypeDraft->getFieldDefinitions())));
 }
 /**
  * Create a Content Type object.
  *
  * The content type is created in the state STATUS_DRAFT.
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException if the user is not allowed to create a content type
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException In case when
  *         - array of content type groups does not contain at least one content type group
  *         - identifier or remoteId in the content type create struct already exists
  *         - there is a duplicate field identifier in the content type create struct
  *         - content type create struct does not contain at least one field definition create struct
  * @throws \eZ\Publish\API\Repository\Exceptions\ContentTypeFieldDefinitionValidationException
  *         if a field definition in the $contentTypeCreateStruct is not valid
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeCreateStruct $contentTypeCreateStruct
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup[] $contentTypeGroups Required array of
  *        {@link ContentTypeGroup} to link type with (must contain one)
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft
  */
 public function createContentType(ContentTypeCreateStruct $contentTypeCreateStruct, array $contentTypeGroups)
 {
     $returnValue = $this->service->createContentType($contentTypeCreateStruct, $contentTypeGroups);
     $this->signalDispatcher->emit(new CreateContentTypeSignal(array('contentTypeId' => $returnValue->id)));
     return $returnValue;
 }