From 54d60edb993c0e92e360fbf862ab514f351de79a Mon Sep 17 00:00:00 2001 From: tobiasadolph <mail@tobiasadolph.de> Date: Wed, 10 Aug 2016 14:57:20 +0200 Subject: [PATCH] [TASK] Doctrine: Migrate FileListIsStartModuleUpdate Resolves: #77470 Releases: master Change-Id: I29a9a36802fab1803817505b3faee3201a397193 Reviewed-on: https://review.typo3.org/49439 Tested-by: Bamboo TYPO3com <info@typo3.com> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Frank Naegler <frank.naegler@typo3.org> Tested-by: Frank Naegler <frank.naegler@typo3.org> --- .../Updates/BackendUserStartModuleUpdate.php | 4 +- .../Updates/FileListIsStartModuleUpdate.php | 58 ++++++++++++------- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdate.php b/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdate.php index 3cef0d613091..29cd903a3dc0 100644 --- a/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdate.php +++ b/typo3/sysext/install/Classes/Updates/BackendUserStartModuleUpdate.php @@ -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' ) { diff --git a/typo3/sysext/install/Classes/Updates/FileListIsStartModuleUpdate.php b/typo3/sysext/install/Classes/Updates/FileListIsStartModuleUpdate.php index 3480cae9cf5b..4a13b5280b03 100644 --- a/typo3/sysext/install/Classes/Updates/FileListIsStartModuleUpdate.php +++ b/typo3/sysext/install/Classes/Updates/FileListIsStartModuleUpdate.php @@ -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; } -- GitLab