Upgrade to TYPO3 9.5 LTS

This commit is contained in:
Björn Fromme
2019-06-06 17:20:29 +02:00
parent adab7fb39a
commit 3c472eb973
989 changed files with 4924 additions and 3674 deletions
@@ -0,0 +1,121 @@
<?php
namespace EP\EpEvents\Updates;
use GeorgRinger\News\Service\Transliterator\Transliterator;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
class ActivitySlugUpdater implements UpgradeWizardInterface
{
/**
* @return string
*/
public function getTitle(): string
{
return 'Updates slug field "path_segment" of EXT:ep_events activity records';
}
/**
* @return string
*/
public function getDescription(): string
{
return 'Fills empty slug field "path_segment" of EXT:ep_events records with urlized name.';
}
/**
* @return string
*/
public function getIdentifier(): string
{
return 'activitySlug';
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$elementCount = $this->countRequiredUpdates();
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$queryBuilder = $this->getQueryBuilder();
$statement = $queryBuilder->select('uid', 'name')
->from('tx_epevents_domain_model_activity')
->where(
$queryBuilder->expr()->orX(
$queryBuilder->expr()->eq(
'path_segment',
$queryBuilder->createNamedParameter('')
),
$queryBuilder->expr()->isNull('path_segment')
)
)
->execute();
while ($record = $statement->fetch()) {
$slug = Transliterator::urlize($record['name']);
$queryBuilder = $this->getQueryBuilder();
$queryBuilder->update('tx_epevents_domain_model_activity')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('path_segment', $slug);
$queryBuilder->execute();
}
return true;
}
protected function countRequiredUpdates(): int
{
$queryBuilder = $this->getQueryBuilder();
return $queryBuilder->count('uid')
->from('tx_epevents_domain_model_activity')
->where(
$queryBuilder->expr()->orX(
$queryBuilder->expr()->eq(
'path_segment',
$queryBuilder->createNamedParameter('')
),
$queryBuilder->expr()->isNull('path_segment')
)
)
->execute()->fetchColumn();
}
protected function getQueryBuilder(): QueryBuilder
{
/** @var QueryBuilder $queryBuilder */
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('tx_epevents_domain_model_activity');
$queryBuilder->getRestrictions()->removeAll();
return $queryBuilder;
}
/**
* @return string[]
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class,
];
}
}