* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Language\QueryHandler; use Language; use PrestaShop\PrestaShop\Core\Domain\Language\Exception\LanguageNotFoundException; use PrestaShop\PrestaShop\Core\Domain\Language\Query\GetLanguageForEditing; use PrestaShop\PrestaShop\Core\Domain\Language\QueryHandler\GetLanguageForEditingHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Language\QueryResult\EditableLanguage; use PrestaShop\PrestaShop\Core\Domain\Language\ValueObject\IsoCode; use PrestaShop\PrestaShop\Core\Domain\Language\ValueObject\LanguageId; use PrestaShop\PrestaShop\Core\Domain\Language\ValueObject\TagIETF; /** * Gets language for editing * * @internal */ final class GetLanguageForEditingHandler implements GetLanguageForEditingHandlerInterface { /** * {@inheritdoc} */ public function handle(GetLanguageForEditing $query) { $language = $this->getLegacyLanguageObject($query->getLanguageId()); return new EditableLanguage( $query->getLanguageId(), $language->name, new IsoCode($language->iso_code), new TagIETF($language->language_code), $language->date_format_lite, $language->date_format_full, (bool) $language->is_rtl, (bool) $language->active, array_map(function ($shopId) { return (int) $shopId; }, $language->getAssociatedShops()) ); } /** * @param LanguageId $languageId * * @return Language */ private function getLegacyLanguageObject(LanguageId $languageId): Language { $language = new Language($languageId->getValue()); if ($languageId->getValue() !== (int) $language->id) { throw new LanguageNotFoundException($languageId, sprintf('Language with id "%s" was not found', $languageId->getValue())); } return $language; } }