* @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\CommandHandler; use PrestaShop\PrestaShop\Adapter\File\RobotsTextFileGenerator; use PrestaShop\PrestaShop\Core\Domain\Language\Command\DeleteLanguageCommand; use PrestaShop\PrestaShop\Core\Domain\Language\CommandHandler\DeleteLanguageHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Language\Exception\DefaultLanguageException; use PrestaShop\PrestaShop\Core\Domain\Language\Exception\LanguageException; use Shop; /** * Deletes language using legacy object model * * @internal */ final class DeleteLanguageHandler extends AbstractLanguageHandler implements DeleteLanguageHandlerInterface { /** * @var RobotsTextFileGenerator */ private $robotsTextFileGenerator; /** * @param RobotsTextFileGenerator $robotsTextFileGenerator */ public function __construct(RobotsTextFileGenerator $robotsTextFileGenerator) { $this->robotsTextFileGenerator = $robotsTextFileGenerator; } /** * {@inheritdoc} */ public function handle(DeleteLanguageCommand $command) { $language = $this->getLegacyLanguageObject($command->getLanguageId()); try { $this->assertLanguageIsNotDefault($language); } catch (DefaultLanguageException $e) { throw new DefaultLanguageException( sprintf( 'Default language "%s" cannot be deleted', $language->iso_code ), DefaultLanguageException::CANNOT_DELETE_DEFAULT_ERROR ); } $this->assertLanguageIsNotInUse($language); // language must be deleted in "ALL SHOPS" context Shop::setContext(Shop::CONTEXT_ALL); if (false === $language->delete()) { throw new LanguageException(sprintf('Failed to delete language "%s"', $language->iso_code)); } $this->robotsTextFileGenerator->generateFile(); } }