first commit

This commit is contained in:
salam committed 2026-10-19 08:18:39 +02:00
commit 1218dd1517
12716 files changed
+989233

No files matched your search

@@ -0,0 +1,103 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* AccordionContentElementUpdate
*/
class AccordionContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate accordion content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_accordion', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_accordion', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('CType', 'accordion');
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,149 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* AccordionMediaOrientUpdate
*/
class AccordionMediaOrientUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tx_bootstrappackage_accordion_item';
/**
* @var string
*/
protected $field = 'mediaorient';
/**
* @var array
*/
protected $mapping = [
0 => 'left',
1 => 'right'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate media orientation of accordion content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
$this->field,
$this->mapValues($record[$this->field])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}
@@ -0,0 +1,180 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* BackendLayoutUpdate
*/
class BackendLayoutUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'pages';
/**
* @var string
*/
protected $field = 'backend_layout';
/**
* @var array
*/
protected $mapping = [
'pagets__clean' => 'pagets__simple',
'pagets__default_clean' => 'pagets__simple',
'pagets__default_2_columns' => 'pagets__2_columns',
'pagets__default_2_columns_25_75' => 'pagets__2_columns_25_75',
'pagets__default_2_columns_50_50' => 'pagets__2_columns_50_50',
'pagets__default_2_columns_offset_right' => 'pagets__2_columns_offset_right',
'pagets__default_3_columns' => 'pagets__3_columns',
'pagets__default_subnavigation_right' => 'pagets__subnavigation_right',
'pagets__default_subnavigation_right_2_columns' => 'pagets__subnavigation_right_2_columns',
'pagets__default_subnavigation_left' => 'pagets__subnavigation_left',
'pagets__default_subnavigation_left_2_columns' => 'pagets__subnavigation_left_2_columns'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate backend layouts';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
'backend_layout',
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->orWhere(
$queryBuilder->expr()->in(
'backend_layout_next_level',
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'backend_layout', 'backend_layout_next_level')
->from($this->table)
->where(
$queryBuilder->expr()->in(
'backend_layout',
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->orWhere(
$queryBuilder->expr()->in(
'backend_layout_next_level',
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
'backend_layout',
($this->mapValues($record['backend_layout']) ?: $record['backend_layout'])
)
->set(
'backend_layout_next_level',
($this->mapValues($record['backend_layout_next_level']) ?: $record['backend_layout_next_level'])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}
@@ -0,0 +1,121 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* BulletContentElementUpdate
*/
class BulletContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate bullet content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bullets', \PDO::PARAM_STR)),
$queryBuilder->expr()->in('layout', [100, 110, 120, 130])
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'layout')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bullets', \PDO::PARAM_STR)),
$queryBuilder->expr()->in('layout', [100, 110, 120, 130])
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('layout', 0, false)
->set('bullets_type', $this->mapValues($record['layout']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $layout
* @return int
*/
protected function mapValues($layout)
{
$mapping = [
110 => 1
];
if (array_key_exists($layout, $mapping)) {
return $mapping[$layout];
}
return 0;
}
}
@@ -0,0 +1,132 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* CarouselContentElementUpdate
*/
class CarouselContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate carousel content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_carousel', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'layout')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_carousel', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('layout', $this->resetLayout($record['layout']), false)
->set('CType', $this->mapValues($record['layout']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $layout
* @return string
*/
protected function resetLayout($layout)
{
if (in_array($layout, [100, 110, 120], true)) {
return '0';
}
return (string)$layout;
}
/**
* @param int $layout
* @return string
*/
protected function mapValues($layout)
{
$mapping = [
110 => 'carousel_small',
120 => 'carousel_fullscreen'
];
if (array_key_exists($layout, $mapping)) {
return $mapping[$layout];
}
return 'carousel';
}
}
@@ -0,0 +1,132 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* CarouselItemTypeUpdate
*/
class CarouselItemTypeUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate carousel item types';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_bootstrappackage_carousel_item');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tx_bootstrappackage_carousel_item')
->where(
$queryBuilder->expr()->in(
'item_type',
$queryBuilder->createNamedParameter(
['textandimage', 'backgroundimage'],
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_bootstrappackage_carousel_item');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'item_type')
->from('tx_bootstrappackage_carousel_item')
->where(
$queryBuilder->expr()->in(
'item_type',
$queryBuilder->createNamedParameter(
['textandimage', 'backgroundimage'],
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tx_bootstrappackage_carousel_item')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('item_type', $this->mapValues($record['item_type']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $type
* @return string
*/
protected function mapValues($type)
{
$mapping = [
'textandimage' => 'text_and_image',
'backgroundimage' => 'background_image'
];
if (array_key_exists($type, $mapping)) {
return $mapping[$type];
}
return 'header';
}
}
@@ -0,0 +1,103 @@
<?php
declare(strict_types = 1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* ExternalMediaContentElementUpdate
*/
class ExternalMediaContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate external media content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_external_media', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_external_media', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('CType', 'external_media');
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,153 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* FrameClassToBackgroundUpdate
*/
class FrameClassToBackgroundUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tt_content';
/**
* @var string
*/
protected $field = 'frame_class';
/**
* @var array
*/
protected $mapping = [
'well' => 'light',
'jumbotron' => 'primary'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate obsolete frame_class options to background color';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
$this->field,
'default'
)
->set(
'background_color_class',
$this->mapValues($record[$this->field])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param string|int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}
@@ -0,0 +1,133 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* FrameClassUpdate
*/
class FrameClassUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate the field "section_frame" for all content elements to "frame_class"';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$tableColumns = $connection->getSchemaManager()->listTableColumns('tt_content');
// Only proceed if section_frame field still exists
if (!isset($tableColumns['section_frame'])) {
return false;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll();
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->gt('section_frame', 0)
)
->execute()
->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll();
$statement = $queryBuilder->select('uid', 'section_frame')
->from('tt_content')
->where(
$queryBuilder->expr()->gt('section_frame', 0)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('section_frame', 0, false)
->set('frame_class', $this->mapSectionFrame($record['section_frame']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $sectionFrame
* @return string
*/
protected function mapSectionFrame($sectionFrame)
{
$mapping = [
0 => 'default',
5 => 'ruler-before',
6 => 'ruler-after',
10 => 'indent',
11 => 'indent-left',
12 => 'indent-right',
20 => 'well',
21 => 'jumbotron',
66 => 'none'
];
if (array_key_exists($sectionFrame, $mapping)) {
return $mapping[$sectionFrame];
}
return 'custom-' . (int) $sectionFrame;
}
}
@@ -0,0 +1,103 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* ListGroupContentElementUpdate
*/
class ListGroupContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate list group content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_listgroup', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_listgroup', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('CType', 'listgroup');
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,124 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* PanelContentElementUpdate
*/
class PanelContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate panel content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_panel', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'layout')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_panel', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('layout', 0, false)
->set('CType', 'panel')
->set('panel_class', $this->mapValues($record['layout']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $layout
* @return string
*/
protected function mapValues($layout)
{
$mapping = [
110 => 'primary',
120 => 'success',
130 => 'info',
140 => 'warning',
150 => 'danger',
];
if (array_key_exists($layout, $mapping)) {
return $mapping[$layout];
}
return 'default';
}
}
@@ -0,0 +1,103 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TabContentElementUpdate
*/
class TabContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate tab content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_tab', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_tab', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('CType', 'tab');
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,149 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TabMediaOrientUpdate
*/
class TabMediaOrientUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tx_bootstrappackage_tab_item';
/**
* @var string
*/
protected $field = 'mediaorient';
/**
* @var array
*/
protected $mapping = [
0 => 'left',
1 => 'right'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate media orientation of tab content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
$this->field,
$this->mapValues($record[$this->field])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}
@@ -0,0 +1,123 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TableContentElementUpdate
*/
class TableContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate table content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('table', \PDO::PARAM_STR)),
$queryBuilder->expr()->in('layout', [100, 110, 120, 130, 140, 150])
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', 'layout')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('table', \PDO::PARAM_STR)),
$queryBuilder->expr()->in('layout', [100, 110, 120, 130, 140, 150])
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('layout', 0, false)
->set('table_class', $this->mapValues($record['layout']));
$queryBuilder->execute();
}
return true;
}
/**
* @param int $layout
* @return string
*/
protected function mapValues($layout)
{
$mapping = [
100 => '',
110 => '',
120 => 'striped',
130 => 'bordered',
140 => 'hover',
150 => 'condensed',
];
return $mapping[$layout];
}
}
@@ -0,0 +1,103 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TexticonContentElementUpdate
*/
class TexticonContentElementUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate text and icon content element';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_content');
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_texticon', \PDO::PARAM_STR))
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tt_content');
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid')
->from('tt_content')
->where(
$queryBuilder->expr()->eq('CType', $queryBuilder->createNamedParameter('bootstrap_package_texticon', \PDO::PARAM_STR))
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update('tt_content')
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set('CType', 'texticon');
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,137 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TexticonIconUpdate
*/
class TexticonIconUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tt_content';
/**
* @var string
*/
protected $field = 'icon';
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate text and icon identifier and name';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->orWhere(
$queryBuilder->expr()->like(
$this->field,
$queryBuilder->expr()->literal('Glyphicons%')
),
$queryBuilder->expr()->like(
$this->field,
$queryBuilder->expr()->literal('Ionicons%')
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->orWhere(
$queryBuilder->expr()->like(
$this->field,
$queryBuilder->expr()->literal('Glyphicons%')
),
$queryBuilder->expr()->like(
$this->field,
$queryBuilder->expr()->literal('Ionicons%')
)
)
->execute();
while ($record = $statement->fetch()) {
$icon = explode('__', $record[$this->field]);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
'icon_set',
'EXT:bootstrap_package/Resources/Public/Images/Icons/' . $icon[0] . '/'
)
->set(
$this->field,
'EXT:bootstrap_package/Resources/Public/Images/Icons/' . $icon[0] . '/' . $icon[1] . '.svg'
);
$queryBuilder->execute();
}
return true;
}
}
@@ -0,0 +1,151 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TexticonSizeUpdate
*/
class TexticonSizeUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tt_content';
/**
* @var string
*/
protected $field = 'icon_size';
/**
* @var array
*/
protected $mapping = [
0 => 'default',
1 => 'medium',
2 => 'large',
3 => 'awesome'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate text and icon size options';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
$this->field,
$this->mapValues($record[$this->field])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}
@@ -0,0 +1,150 @@
<?php
declare(strict_types=1);
/*
* This file is part of the package bk2k/bootstrap-package.
*
* For the full copyright and license information, please read the
* LICENSE file that was distributed with this source code.
*/
namespace BK2K\BootstrapPackage\Updates;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Install\Updates\DatabaseUpdatedPrerequisite;
use TYPO3\CMS\Install\Updates\RepeatableInterface;
use TYPO3\CMS\Install\Updates\UpgradeWizardInterface;
/**
* TexticonTypeUpdate
*/
class TexticonTypeUpdate implements UpgradeWizardInterface, RepeatableInterface
{
/**
* @var string
*/
protected $table = 'tt_content';
/**
* @var string
*/
protected $field = 'icon_type';
/**
* @var array
*/
protected $mapping = [
0 => 'default',
1 => 'square',
2 => 'circle'
];
/**
* @return string
*/
public function getIdentifier(): string
{
return self::class;
}
/**
* @return string
*/
public function getTitle(): string
{
return '[Bootstrap Package] Migrate text and icon type options';
}
/**
* @return string
*/
public function getDescription(): string
{
return '';
}
/**
* @return array
*/
public function getPrerequisites(): array
{
return [
DatabaseUpdatedPrerequisite::class
];
}
/**
* @return bool
*/
public function updateNecessary(): bool
{
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->table);
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$elementCount = $queryBuilder->count('uid')
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute()->fetchColumn(0);
return (bool)$elementCount;
}
/**
* @return bool
*/
public function executeUpdate(): bool
{
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($this->table);
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));
$statement = $queryBuilder->select('uid', $this->field)
->from($this->table)
->where(
$queryBuilder->expr()->in(
$this->field,
$queryBuilder->createNamedParameter(
array_keys($this->mapping),
Connection::PARAM_STR_ARRAY
)
)
)
->execute();
while ($record = $statement->fetch()) {
$queryBuilder = $connection->createQueryBuilder();
$queryBuilder->update($this->table)
->where(
$queryBuilder->expr()->eq(
'uid',
$queryBuilder->createNamedParameter($record['uid'], \PDO::PARAM_INT)
)
)
->set(
$this->field,
$this->mapValues($record[$this->field])
);
$queryBuilder->execute();
}
return true;
}
/**
* @param int $value
* @return string|null
*/
protected function mapValues($value)
{
if (array_key_exists($value, $this->mapping)) {
return $this->mapping[$value];
}
return null;
}
}