diff --git a/apps/user_ldap/ajax/deleteConfiguration.php b/apps/user_ldap/ajax/deleteConfiguration.php index f4f6eaf267d4d..61a3e8b673ade 100644 --- a/apps/user_ldap/ajax/deleteConfiguration.php +++ b/apps/user_ldap/ajax/deleteConfiguration.php @@ -32,7 +32,7 @@ \OC_JSON::callCheck(); $prefix = (string)$_POST['ldap_serverconfig_chooser']; -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); if ($helper->deleteServerConfiguration($prefix)) { \OC_JSON::success(); } else { diff --git a/apps/user_ldap/ajax/getNewServerConfigPrefix.php b/apps/user_ldap/ajax/getNewServerConfigPrefix.php index 4e95d6e02b507..ec38fbb8ff0bb 100644 --- a/apps/user_ldap/ajax/getNewServerConfigPrefix.php +++ b/apps/user_ldap/ajax/getNewServerConfigPrefix.php @@ -29,7 +29,7 @@ \OC_JSON::checkAppEnabled('user_ldap'); \OC_JSON::callCheck(); -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $serverConnections = $helper->getServerConfigurationPrefixes(); sort($serverConnections); $lk = array_pop($serverConnections); diff --git a/apps/user_ldap/ajax/wizard.php b/apps/user_ldap/ajax/wizard.php index 9c7b26b54ac90..360e121766d0d 100644 --- a/apps/user_ldap/ajax/wizard.php +++ b/apps/user_ldap/ajax/wizard.php @@ -70,7 +70,7 @@ $con, $ldapWrapper, $userManager, - new \OCA\User_LDAP\Helper(\OC::$server->getConfig()), + new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()), \OC::$server->getConfig(), \OC::$server->getUserManager() ); diff --git a/apps/user_ldap/appinfo/install.php b/apps/user_ldap/appinfo/install.php index 7dec03ffab0d8..731630000defe 100644 --- a/apps/user_ldap/appinfo/install.php +++ b/apps/user_ldap/appinfo/install.php @@ -29,5 +29,5 @@ \OC::$server->getConfig()->setSystemValue('ldapIgnoreNamingRules', false); } -$helper = new \OCA\User_LDAP\Helper($config); +$helper = new \OCA\User_LDAP\Helper($config, \OC::$server->getDatabaseConnection()); $helper->setLDAPProvider(); diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index 035fecba1f89b..8fed298809649 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -23,5 +23,5 @@ * */ -$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); +$helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $helper->setLDAPProvider(); diff --git a/apps/user_ldap/lib/Command/Search.php b/apps/user_ldap/lib/Command/Search.php index 2ee83e0f22b8d..5d2e72483ba2b 100644 --- a/apps/user_ldap/lib/Command/Search.php +++ b/apps/user_ldap/lib/Command/Search.php @@ -109,7 +109,7 @@ protected function validateOffsetAndLimit($offset, $limit) { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper($this->ocConfig); + $helper = new Helper($this->ocConfig, \OC::$server->getDatabaseConnection()); $configPrefixes = $helper->getServerConfigurationPrefixes(true); $ldapWrapper = new LDAP(); diff --git a/apps/user_ldap/lib/Command/SetConfig.php b/apps/user_ldap/lib/Command/SetConfig.php index 2b2fdfe5c8b9b..4b20ad65e9f24 100644 --- a/apps/user_ldap/lib/Command/SetConfig.php +++ b/apps/user_ldap/lib/Command/SetConfig.php @@ -60,7 +60,7 @@ protected function configure() { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $availableConfigs = $helper->getServerConfigurationPrefixes(); $configID = $input->getArgument('configID'); if (!in_array($configID, $availableConfigs)) { diff --git a/apps/user_ldap/lib/Command/TestConfig.php b/apps/user_ldap/lib/Command/TestConfig.php index b588a8380d01d..e83befe6f304a 100644 --- a/apps/user_ldap/lib/Command/TestConfig.php +++ b/apps/user_ldap/lib/Command/TestConfig.php @@ -48,7 +48,7 @@ protected function configure() { } protected function execute(InputInterface $input, OutputInterface $output): int { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $availableConfigs = $helper->getServerConfigurationPrefixes(); $configID = $input->getArgument('configID'); if (!in_array($configID, $availableConfigs)) { diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php index 6af2fd700e4df..9a99b94689fe1 100644 --- a/apps/user_ldap/lib/Connection.php +++ b/apps/user_ldap/lib/Connection.php @@ -120,7 +120,7 @@ public function __construct(ILDAPWrapper $ldap, $configPrefix = '', $configID = if ($memcache->isAvailable()) { $this->cache = $memcache->createDistributed(); } - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $this->doNotValidate = !in_array($this->configPrefix, $helper->getServerConfigurationPrefixes()); } diff --git a/apps/user_ldap/lib/Helper.php b/apps/user_ldap/lib/Helper.php index 86712534f40be..dce67a76c41a4 100644 --- a/apps/user_ldap/lib/Helper.php +++ b/apps/user_ldap/lib/Helper.php @@ -35,23 +35,25 @@ namespace OCA\User_LDAP; use OC\Cache\CappedMemoryCache; +use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; +use OCP\IDBConnection; class Helper { /** @var IConfig */ private $config; + /** @var IDBConnection */ + private $connection; + /** @var CappedMemoryCache */ protected $sanitizeDnCache; - /** - * Helper constructor. - * - * @param IConfig $config - */ - public function __construct(IConfig $config) { + public function __construct(IConfig $config, + IDBConnection $connection) { $this->config = $config; + $this->connection = $connection; $this->sanitizeDnCache = new CappedMemoryCache(10000); } @@ -160,30 +162,23 @@ public function deleteServerConfiguration($prefix) { return false; } - $saveOtherConfigurations = ''; - if (empty($prefix)) { - $saveOtherConfigurations = 'AND `configkey` NOT LIKE \'s%\''; - } + $query = $this->connection->getQueryBuilder(); + $query->delete('appconfig') + ->where($query->expr()->eq('appid', $query->createNamedParameter('user_ldap'))) + ->andWhere($query->expr()->like('configkey', $query->createNamedParameter((string)$prefix . '%'))) + ->andWhere($query->expr()->notIn('configkey', $query->createNamedParameter([ + 'enabled', + 'installed_version', + 'types', + 'bgjUpdateGroupsLastRun', + ], IQueryBuilder::PARAM_STR_ARRAY))); - $query = \OC_DB::prepare(' - DELETE - FROM `*PREFIX*appconfig` - WHERE `configkey` LIKE ? - ' . $saveOtherConfigurations . ' - AND `appid` = \'user_ldap\' - AND `configkey` NOT IN (\'enabled\', \'installed_version\', \'types\', \'bgjUpdateGroupsLastRun\') - '); - $delRows = $query->execute([$prefix . '%']); - - if ($delRows === null) { - return false; - } - - if ($delRows === 0) { - return false; + if (empty($prefix)) { + $query->andWhere($query->expr()->notLike('configkey', $query->createNamedParameter('s%'))); } - return true; + $deletedRows = $query->execute(); + return $deletedRows !== 0; } /** diff --git a/apps/user_ldap/lib/Jobs/CleanUp.php b/apps/user_ldap/lib/Jobs/CleanUp.php index 8470c4793bb6c..3c4f483d67791 100644 --- a/apps/user_ldap/lib/Jobs/CleanUp.php +++ b/apps/user_ldap/lib/Jobs/CleanUp.php @@ -88,7 +88,7 @@ public function setArguments($arguments) { if (isset($arguments['helper'])) { $this->ldapHelper = $arguments['helper']; } else { - $this->ldapHelper = new Helper(\OC::$server->getConfig()); + $this->ldapHelper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); } if (isset($arguments['ocConfig'])) { diff --git a/apps/user_ldap/lib/Jobs/Sync.php b/apps/user_ldap/lib/Jobs/Sync.php index 483c21386eb58..5c70c0c23b7c9 100644 --- a/apps/user_ldap/lib/Jobs/Sync.php +++ b/apps/user_ldap/lib/Jobs/Sync.php @@ -308,7 +308,7 @@ public function setArgument($argument) { if (isset($argument['helper'])) { $this->ldapHelper = $argument['helper']; } else { - $this->ldapHelper = new Helper($this->config); + $this->ldapHelper = new Helper($this->config, \OC::$server->getDatabaseConnection()); } if (isset($argument['ldapWrapper'])) { diff --git a/apps/user_ldap/lib/Jobs/UpdateGroups.php b/apps/user_ldap/lib/Jobs/UpdateGroups.php index 0ecd43480c45c..ce45d90af3e83 100644 --- a/apps/user_ldap/lib/Jobs/UpdateGroups.php +++ b/apps/user_ldap/lib/Jobs/UpdateGroups.php @@ -201,17 +201,20 @@ private function handleKnownGroups(array $groups) { */ private function handleCreatedGroups($createdGroups) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with created Groups.', ILogger::DEBUG); - $query = \OC_DB::prepare(' - INSERT - INTO `*PREFIX*ldap_group_members` (`owncloudname`, `owncloudusers`) - VALUES (?, ?) - '); + + $query = $this->dbc->getQueryBuilder(); + $query->insert('ldap_group_members') + ->setValue('owncloudname', $query->createParameter('owncloudname')) + ->setValue('owncloudusers', $query->createParameter('owncloudusers')); foreach ($createdGroups as $createdGroup) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – new group "' . $createdGroup . '" found.', ILogger::INFO); $users = serialize($this->groupBackend->usersInGroup($createdGroup)); - $query->execute([$createdGroup, $users]); + + $query->setParameter('owncloudname', $createdGroup) + ->setParameter('owncloudusers', $users); + $query->execute(); } \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with created Groups.', @@ -223,16 +226,17 @@ private function handleCreatedGroups($createdGroups) { */ private function handleRemovedGroups($removedGroups) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with removed groups.', ILogger::DEBUG); - $query = \OC_DB::prepare(' - DELETE - FROM `*PREFIX*ldap_group_members` - WHERE `owncloudname` = ? - '); + + $query = $this->dbc->getQueryBuilder(); + $query->delete('ldap_group_members') + ->where($query->expr()->eq('owncloudname', $query->createParameter('owncloudname'))); + foreach ($removedGroups as $removedGroup) { \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.', ILogger::INFO); - $query->execute([$removedGroup]); + $query->setParameter('owncloudname', $removedGroup); + $query->execute(); } \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with removed groups.', diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php index 46cb2e6b9a06c..e723c4e3abfa7 100644 --- a/apps/user_ldap/lib/Proxy.php +++ b/apps/user_ldap/lib/Proxy.php @@ -87,7 +87,7 @@ private function addAccess($configPrefix) { new Manager($ocConfig, $fs, $log, $avatarM, new \OCP\Image(), $coreUserManager, $coreNotificationManager, $shareManager); $connector = new Connection($this->ldap, $configPrefix); - $access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig), $ocConfig, $coreUserManager); + $access = new Access($connector, $this->ldap, $userManager, new Helper($ocConfig, \OC::$server->getDatabaseConnection()), $ocConfig, $coreUserManager); $access->setUserMapper($userMap); $access->setGroupMapper($groupMap); self::$accesses[$configPrefix] = $access; diff --git a/apps/user_ldap/lib/Settings/Admin.php b/apps/user_ldap/lib/Settings/Admin.php index bea4813a23f3e..bf10a661edb75 100644 --- a/apps/user_ldap/lib/Settings/Admin.php +++ b/apps/user_ldap/lib/Settings/Admin.php @@ -48,7 +48,7 @@ public function __construct(IL10N $l) { * @return TemplateResponse */ public function getForm() { - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $prefixes = $helper->getServerConfigurationPrefixes(); if (count($prefixes) === 0) { $newPrefix = $helper->getNextServerConfigurationPrefix(); diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index 0d614f5b1fbae..eb0b775345bd8 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -739,7 +739,7 @@ public function guessBaseDN() { //this did not help :( //Let's see whether we can parse the Host URL and convert the domain to //a base DN - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $domain = $helper->getDomainFromURL($this->configuration->ldapHost); if (!$domain) { return false; diff --git a/apps/user_ldap/tests/AccessTest.php b/apps/user_ldap/tests/AccessTest.php index 4f89fc51568ef..b9055d3282492 100644 --- a/apps/user_ldap/tests/AccessTest.php +++ b/apps/user_ldap/tests/AccessTest.php @@ -118,7 +118,7 @@ private function getConnectorAndLdapMock() { $this->createMock(INotificationManager::class), $this->shareManager]) ->getMock(); - $helper = new Helper(\OC::$server->getConfig()); + $helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); return [$lw, $connector, $um, $helper]; } diff --git a/apps/user_ldap/tests/HelperTest.php b/apps/user_ldap/tests/HelperTest.php index 1822c27a1cdd8..97d7be48a0e74 100644 --- a/apps/user_ldap/tests/HelperTest.php +++ b/apps/user_ldap/tests/HelperTest.php @@ -28,6 +28,9 @@ use OCA\User_LDAP\Helper; use OCP\IConfig; +/** + * @group DB + */ class HelperTest extends \Test\TestCase { /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ @@ -40,7 +43,7 @@ protected function setUp(): void { parent::setUp(); $this->config = $this->createMock(IConfig::class); - $this->helper = new Helper($this->config); + $this->helper = new Helper($this->config, \OC::$server->getDatabaseConnection()); } public function testGetServerConfigurationPrefixes() { diff --git a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php index 095c61544b0fc..d0f2e8d4a958c 100644 --- a/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php +++ b/apps/user_ldap/tests/Integration/AbstractIntegrationTest.php @@ -137,7 +137,7 @@ protected function initUserManager() { * initializes the test Helper */ protected function initHelper() { - $this->helper = new Helper(\OC::$server->getConfig()); + $this->helper = new Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); } /** diff --git a/apps/user_ldap/tests/LDAPProviderTest.php b/apps/user_ldap/tests/LDAPProviderTest.php index 3e9d0515892b1..eec5f73273882 100644 --- a/apps/user_ldap/tests/LDAPProviderTest.php +++ b/apps/user_ldap/tests/LDAPProviderTest.php @@ -224,7 +224,7 @@ public function testDNasBaseParameter() { $server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock()); - $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); + $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $ldapProvider = $this->getLDAPProvider($server); $this->assertEquals( @@ -240,7 +240,7 @@ public function testSanitizeDN() { $server = $this->getServerMock($userBackend, $this->getDefaultGroupBackendMock()); - $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig()); + $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()); $ldapProvider = $this->getLDAPProvider($server); $this->assertEquals(