Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2022-02-07 14:54:50 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2022-02-10 21:48:33 +0300
commitef11c61f19dc4491983705100af2819247d4c256 (patch)
tree7af0ad64a42f6a89adb10698071906c3c5c9e506 /apps
parent91578d0e5a931c36ea73d3c58e2b54d03d962303 (diff)
Fix ldap:update-uuid
Generators cannot be iterated with while or returned by an other generator, using foreach instead. And a few other problems. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/lib/Access.php2
-rw-r--r--apps/user_ldap/lib/Command/UpdateUUID.php45
-rw-r--r--apps/user_ldap/lib/Mapping/AbstractMapping.php4
3 files changed, 30 insertions, 21 deletions
diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php
index 852a271f5b7..bcec7d3a759 100644
--- a/apps/user_ldap/lib/Access.php
+++ b/apps/user_ldap/lib/Access.php
@@ -1792,7 +1792,7 @@ class Access extends LDAPUtility {
* @param string $dn
* @param bool $isUser
* @param null $ldapRecord
- * @return bool|string
+ * @return false|string
* @throws ServerNotAvailableException
*/
public function getUUID($dn, $isUser = true, $ldapRecord = null) {
diff --git a/apps/user_ldap/lib/Command/UpdateUUID.php b/apps/user_ldap/lib/Command/UpdateUUID.php
index b655fe21ed5..716bc2d0563 100644
--- a/apps/user_ldap/lib/Command/UpdateUUID.php
+++ b/apps/user_ldap/lib/Command/UpdateUUID.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2021 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
*
* @license GNU AGPL version 3 or any later version
*
@@ -55,7 +56,7 @@ class UuidUpdateReport {
public $oldUuid = '';
public $newUuid = '';
- public function __construct(string $id, string $dn, bool $isUser, int $state, $oldUuid = '', $newUuid = '') {
+ public function __construct(string $id, string $dn, bool $isUser, int $state, string $oldUuid = '', string $newUuid = '') {
$this->id = $id;
$this->dn = $dn;
$this->isUser = $isUser;
@@ -74,7 +75,7 @@ class UpdateUUID extends Command {
private $userProxy;
/** @var Group_Proxy */
private $groupProxy;
- /** @var array<UuidUpdateReport> */
+ /** @var array<UuidUpdateReport[]> */
protected $reports = [];
/** @var LoggerInterface */
private $logger;
@@ -136,10 +137,14 @@ class UpdateUUID extends Command {
protected function execute(InputInterface $input, OutputInterface $output): int {
$this->dryRun = $input->getOption('dry-run');
- $entriesToUpdates = $this->estimateNumberOfUpdates($input);
- $progressBar = new ProgressBar($output);
- $progressBar->iterate($this->handleUpdates($input), $entriesToUpdates);
- $this->printReport($input, $output);
+ $entriesToUpdate = $this->estimateNumberOfUpdates($input);
+ $progress = new ProgressBar($output);
+ $progress->start($entriesToUpdate);
+ foreach($this->handleUpdates($input) as $_) {
+ $progress->advance();
+ }
+ $progress->finish();
+ $output->writeln('');
$this->printReport($output);
return count($this->reports[UuidUpdateReport::UNMAPPED]) === 0
&& count($this->reports[UuidUpdateReport::UNREADABLE]) === 0
@@ -148,7 +153,7 @@ class UpdateUUID extends Command {
: 1;
}
- protected function printReport(OutputInterface $output) {
+ protected function printReport(OutputInterface $output): void {
if ($output->isQuiet()) {
return;
}
@@ -214,33 +219,37 @@ class UpdateUUID extends Command {
protected function handleUpdates(InputInterface $input): \Generator {
if ($input->getOption('all')) {
- return $this->handleMappingBasedUpdates(false);
+ foreach($this->handleMappingBasedUpdates(false) as $_) {
+ yield;
+ }
} else if ($input->getOption('userId')
|| $input->getOption('groupId')
|| $input->getOption('dn')
) {
- while($this->handleUpdatesByUserId($input->getOption('userId'))) {
+ foreach($this->handleUpdatesByUserId($input->getOption('userId')) as $_) {
yield;
}
- while($this->handleUpdatesByUserId($input->getOption('groupId'))) {
+ foreach($this->handleUpdatesByGroupId($input->getOption('groupId')) as $_) {
yield;
}
- while($this->handleUpdatesByDN($input->getOption('dn'))) {
+ foreach($this->handleUpdatesByDN($input->getOption('dn')) as $_) {
yield;
}
} else {
- return $this->handleMappingBasedUpdates(true);
+ foreach($this->handleMappingBasedUpdates(true) as $_) {
+ yield;
+ }
}
}
protected function handleUpdatesByUserId(array $userIds): \Generator {
- while($this->handleUpdatesByEntryId($userIds, $this->userMapping)) {
+ foreach($this->handleUpdatesByEntryId($userIds, $this->userMapping) as $_) {
yield;
}
}
protected function handleUpdatesByGroupId(array $groupIds): \Generator {
- while($this->handleUpdatesByEntryId($groupIds, $this->groupMapping)) {
+ foreach($this->handleUpdatesByEntryId($groupIds, $this->groupMapping) as $_) {
yield;
}
}
@@ -263,10 +272,10 @@ class UpdateUUID extends Command {
$this->reports[UuidUpdateReport::UNMAPPED][] = new UuidUpdateReport('', $dn, true, UuidUpdateReport::UNMAPPED);
yield;
}
- while($this->handleUpdatesByList($this->userMapping, $userList)) {
+ foreach($this->handleUpdatesByList($this->userMapping, $userList) as $_) {
yield;
}
- while($this->handleUpdatesByList($this->groupMapping, $groupList)) {
+ foreach($this->handleUpdatesByList($this->groupMapping, $groupList) as $_) {
yield;
}
}
@@ -284,7 +293,7 @@ class UpdateUUID extends Command {
$uuid = $mapping->getUUIDByDN($dn);
$list[] = ['name' => $id, 'uuid' => $uuid];
}
- while($this->handleUpdatesByList($mapping, $list)) {
+ foreach($this->handleUpdatesByList($mapping, $list) as $_) {
yield;
}
}
@@ -347,7 +356,7 @@ class UpdateUUID extends Command {
}
}
- protected function estimateNumberOfUpdates(InputInterface $input) {
+ protected function estimateNumberOfUpdates(InputInterface $input): int {
if ($input->getOption('all')) {
return $this->userMapping->count() + $this->groupMapping->count();
} else if ($input->getOption('userId')
diff --git a/apps/user_ldap/lib/Mapping/AbstractMapping.php b/apps/user_ldap/lib/Mapping/AbstractMapping.php
index 653d0e5fbc4..16973f76ff4 100644
--- a/apps/user_ldap/lib/Mapping/AbstractMapping.php
+++ b/apps/user_ldap/lib/Mapping/AbstractMapping.php
@@ -329,12 +329,12 @@ abstract class AbstractMapping {
return $this->getXbyY('directory_uuid', 'ldap_dn_hash', $this->getDNHash($dn));
}
- public function getList(int $offset = null, int $limit = null, $invalidatedOnly = false): array {
+ public function getList(int $offset = 0, int $limit = null, bool $invalidatedOnly = false): array {
$select = $this->dbc->getQueryBuilder();
$select->selectAlias('ldap_dn', 'dn')
->selectAlias('owncloud_name', 'name')
->selectAlias('directory_uuid', 'uuid')
- ->from($this->getTableName(false))
+ ->from($this->getTableName())
->setMaxResults($limit)
->setFirstResult($offset);