Skip to content
Snippets Groups Projects
Commit 54d60edb authored by tobiasadolph's avatar tobiasadolph Committed by Frank Naegler
Browse files

[TASK] Doctrine: Migrate FileListIsStartModuleUpdate

Resolves: #77470
Releases: master
Change-Id: I29a9a36802fab1803817505b3faee3201a397193
Reviewed-on: https://review.typo3.org/49439


Tested-by: default avatarBamboo TYPO3com <info@typo3.com>
Reviewed-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
Tested-by: default avatarChristian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: default avatarFrank Naegler <frank.naegler@typo3.org>
Tested-by: default avatarFrank Naegler <frank.naegler@typo3.org>
parent cff4c3c2
No related merge requests found
......@@ -41,7 +41,7 @@ class BackendUserStartModuleUpdate extends AbstractUpdate
$needsExecution = false;
while ($backendUser = $statement->fetch()) {
if ($backendUser['uc'] !== null) {
$userConfig = unserialize($backendUser['uc']);
$userConfig = unserialize($backendUser['uc'], ['allowed_classes' => false]);
if ($userConfig['startModule'] === 'help_aboutmodules'
|| $userConfig['startModule'] === 'help_AboutmodulesAboutmodules'
) {
......@@ -71,7 +71,7 @@ class BackendUserStartModuleUpdate extends AbstractUpdate
$statement = $queryBuilder->select('uid', 'uc')->from('be_users')->execute();
while ($backendUser = $statement->fetch()) {
if ($backendUser['uc'] !== null) {
$userConfig = unserialize($backendUser['uc']);
$userConfig = unserialize($backendUser['uc'], ['allowed_classes' => false]);
if ($userConfig['startModule'] === 'help_aboutmodules'
|| $userConfig['startModule'] === 'help_AboutmodulesAboutmodules'
) {
......
......@@ -14,6 +14,9 @@
namespace TYPO3\CMS\Install\Updates;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* Update backend user setting startModule if set to "file_list"
*/
......@@ -36,13 +39,27 @@ class FileListIsStartModuleUpdate extends AbstractUpdate
return false;
}
if ($this->getDatabaseConnection()->exec_SELECTcountRows('uid', 'be_users') === 0) {
return false;
$needsExecution = false;
$statement = GeneralUtility::makeInstance(ConnectionPool::class)
->getConnectionForTable('be_users')
->select(['uid', 'uc'], 'be_users');
while ($backendUser = $statement->fetch()) {
if ($backendUser['uc'] !== null) {
$userConfig = unserialize($backendUser['uc'], ['allowed_classes' => false]);
if ($userConfig['startModule'] === 'file_list') {
$needsExecution = true;
break;
}
}
}
$description = 'The backend user setting startModule is changed for the extension filelist. Update all backend users that use ext:filelist as startModule.';
if ($needsExecution) {
$description = 'The backend user setting startModule is changed for the extension filelist.'
. ' Update all backend users that use ext:filelist as startModule.';
}
return true;
return $needsExecution;
}
/**
......@@ -54,27 +71,24 @@ class FileListIsStartModuleUpdate extends AbstractUpdate
*/
public function performUpdate(array &$databaseQueries, &$customMessages)
{
$db = $this->getDatabaseConnection();
$backendUsers = $db->exec_SELECTgetRows('uid,uc', 'be_users', '1=1');
if (!empty($backendUsers)) {
foreach ($backendUsers as $backendUser) {
if ($backendUser['uc'] !== null) {
$userConfig = unserialize($backendUser['uc']);
if ($userConfig['startModule'] === 'file_list') {
$userConfig['startModule'] = 'file_FilelistList';
$db->exec_UPDATEquery(
'be_users',
'uid=' . (int)$backendUser['uid'],
array(
'uc' => serialize($userConfig),
)
);
$databaseQueries[] = $db->debug_lastBuiltQuery;
}
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('be_users');
$statement = $queryBuilder->select('uid', 'uc')->from('be_users')->execute();
while ($backendUser = $statement->fetch()) {
if ($backendUser['uc'] !== null) {
$userConfig = unserialize($backendUser['uc'], ['allowed_classes' => false]);
if ($userConfig['startModule'] === 'file_list') {
$userConfig['startModule'] = 'file_FilelistList';
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable('be_users');
$queryBuilder->update('be_users')
->where($queryBuilder->expr()->eq('uid', (int)$backendUser['uid']))
->set('uc', $queryBuilder->quote(serialize($userConfig)), false);
$databaseQueries[] = $queryBuilder->getSQL();
$queryBuilder->execute();
}
}
}
$this->markWizardAsDone();
return true;
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment