/**
  * Test for the number of maximum language that can be created.
  *
  * @see \eZ\Publish\API\Repository\LanguageService::createLanguage()
  *
  * @depends eZ\Publish\API\Repository\Tests\LanguageServiceTest::testNewLanguageCreateStruct
  *
  * @expectedException \RuntimeException
  * @expectedExceptionMessage Maximum number of languages reached!
  */
 public function testCreateMaximumLanguageLimit()
 {
     $languageCreate = $this->languageService->newLanguageCreateStruct();
     $languageCreate->enabled = true;
     $languageCreate->name = "Bad Language";
     $languageCreate->languageCode = "lan-ER";
     $this->languageService->createLanguage($languageCreate);
 }
 /**
  * @inheritdoc
  */
 public function visit(TreeNodeInterface $node, &$data)
 {
     $languages = $this->languageService->loadLanguages();
     $existingLanguageCodes = [];
     foreach ($languages as $language) {
         $existingLanguageCodes[] = $language->languageCode;
     }
     // If language already exists, skip it
     if (in_array($data['language_code'], $existingLanguageCodes)) {
         return;
     }
     $struct = $this->languageService->newLanguageCreateStruct();
     $this->fillValueObject($struct, $data);
     $this->languageService->createLanguage($struct);
 }
 public function processUpdate(FormActionEvent $event)
 {
     /** @var \EzSystems\RepositoryForms\Data\Language\LanguageUpdateData|\EzSystems\RepositoryForms\Data\Language\LanguageCreateData $languageData */
     $languageData = $event->getData();
     if ($languageData->isNew()) {
         $language = $this->languageService->createLanguage($languageData);
     } else {
         // As there is no update struct for language service, we first update name if it has changed
         $language = $languageData->language;
         if ($languageData->name !== $language->name) {
             $language = $this->languageService->updateLanguageName($language, $languageData->name);
         }
         // check if we should enable / disable language
         if ($languageData->enabled !== $language->enabled) {
             if ($languageData->enabled) {
                 $language = $this->languageService->enableLanguage($language);
             } else {
                 $language = $this->languageService->disableLanguage($language);
             }
         }
     }
     $languageData->setLanguage($language);
 }
 /**
  * Creates the a new Language in the content repository
  *
  * @throws \eZ\Publish\API\Repository\Exceptions\UnauthorizedException If user does not have access to content translations
  * @throws \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException if the languageCode already exists
  *
  * @param \eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct $languageCreateStruct
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Language
  */
 public function createLanguage(LanguageCreateStruct $languageCreateStruct)
 {
     $returnValue = $this->service->createLanguage($languageCreateStruct);
     $this->signalDispatcher->emit(new CreateLanguageSignal(array('languageId' => $returnValue->id)));
     return $returnValue;
 }