public function createLanguage(LanguageCreateStruct $languageCreateStruct)
{
if (!is_string($languageCreateStruct->name) || empty($languageCreateStruct->name)) {
throw new InvalidArgumentValue('name', $languageCreateStruct->name, 'LanguageCreateStruct');
}
if (!is_string($languageCreateStruct->languageCode) || empty($languageCreateStruct->languageCode)) {
throw new InvalidArgumentValue('languageCode', $languageCreateStruct->languageCode, 'LanguageCreateStruct');
}
if (!is_bool($languageCreateStruct->enabled)) {
throw new InvalidArgumentValue('enabled', $languageCreateStruct->enabled, 'LanguageCreateStruct');
}
if ($this->repository->hasAccess('content', 'translations') !== true) {
throw new UnauthorizedException('content', 'translations');
}
try {
if ($this->loadLanguage($languageCreateStruct->languageCode) !== null) {
throw new InvalidArgumentException('languageCreateStruct', 'language with specified language code already exists');
}
} catch (APINotFoundException $e) {
// Do nothing
}
$createStruct = new CreateStruct(array('languageCode' => $languageCreateStruct->languageCode, 'name' => $languageCreateStruct->name, 'isEnabled' => $languageCreateStruct->enabled));
$this->repository->beginTransaction();
try {
$createdLanguage = $this->languageHandler->create($createStruct);
$this->repository->commit();
} catch (Exception $e) {
$this->repository->rollback();
throw $e;
}
return $this->buildDomainObject($createdLanguage);
}