<?php namespace SGalinski\SgMail\Updates; /*************************************************************** * Copyright notice * * (c) sgalinski Internet Services (https://www.sgalinski.de) * * All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite; use TYPO3\CMS\Install\Updates\UpgradeWizardInterface; /** * Makes german templates the default and former default as english templates */ class UpdateGermanAsDefault implements UpgradeWizardInterface { /** * The wizard identifier */ const IDENTIFIER = 'tx_sgmail_update_german_as_default'; /** * @var string */ protected $table = 'tx_sgmail_domain_model_template'; /** * @return string */ public function getIdentifier(): string { return self::IDENTIFIER; } /** * @return string */ public function getTitle(): string { return 'Makes german templates the default and former default as english templates. WARNING: ONLY EXECUTE THIS IF IT MAKES SENSE FOR YOUR TYPO3 INSTANCE'; } /** * @return string */ public function getDescription(): string { return ''; } /** * @return bool */ public function executeUpdate(): bool { $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table); $queryBuilder->getRestrictions()->removeAll(); $resultGerman = $queryBuilder->select('uid') ->from($this->table) ->where( $queryBuilder->expr()->eq('language', $queryBuilder->createNamedParameter('de')) ) ->execute()->fetchAll(); $resultDefault = $queryBuilder->select('uid') ->from($this->table) ->where( $queryBuilder->expr()->eq('language', $queryBuilder->createNamedParameter('default')) ) ->execute()->fetchAll(); /** @var array $resultGerman */ foreach ($resultGerman as $row) { $queryBuilder->update($this->table) ->where( $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($row[0], \PDO::PARAM_INT)) ) ->set('language', 'default', TRUE) ->execute(); } /** @var array $resultGerman */ foreach ($resultDefault as $row) { $queryBuilder->update($this->table) ->where( $queryBuilder->expr()->eq('uid', $queryBuilder->createNamedParameter($row[0], \PDO::PARAM_INT)) ) ->set('language', 'en', TRUE) ->execute(); } return TRUE; } /** * @return bool */ public function updateNecessary(): bool { $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table); $queryBuilder->getRestrictions()->removeAll(); $rowCount = $queryBuilder->select('*') ->from($this->table) ->where( $queryBuilder->expr()->eq('language', $queryBuilder->createNamedParameter('de')) ) ->execute()->rowCount(); return $rowCount > 0; } /** * @return array|string[] */ public function getPrerequisites(): array { return [ DatabaseUpdatedPrerequisite::class ]; } }