diff options
author | Robin Appelman <robin@icewind.nl> | 2022-09-29 13:40:04 +0200 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2022-11-08 17:13:33 +0100 |
commit | 3d68a526e7ede5e2db13ffa69177a933a278b806 (patch) | |
tree | f356d0d67a378dd931e204ab6076deb92806110c /lib | |
parent | 610e963567f6e748465ba663bd1b3c79432fa79c (diff) | |
download | nextcloud-server-3d68a526e7ede5e2db13ffa69177a933a278b806.tar.gz nextcloud-server-3d68a526e7ede5e2db13ffa69177a933a278b806.zip |
move share owner repair to occ command
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Repair.php | 1 | ||||
-rw-r--r-- | lib/private/Repair/RepairShareOwnership.php | 94 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 4 |
3 files changed, 4 insertions, 95 deletions
diff --git a/lib/private/Repair.php b/lib/private/Repair.php index b8875f19945..d8476338486 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -210,7 +210,6 @@ class Repair implements IOutput { \OCP\Server::get(LookupServerSendCheck::class), \OCP\Server::get(AddTokenCleanupJob::class), \OCP\Server::get(CleanUpAbandonedApps::class), - \OCP\Server::get(RepairShareOwnership::class), ]; } diff --git a/lib/private/Repair/RepairShareOwnership.php b/lib/private/Repair/RepairShareOwnership.php deleted file mode 100644 index b7ff476d5f4..00000000000 --- a/lib/private/Repair/RepairShareOwnership.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * @copyright Copyright (c) 2020 Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -namespace OC\Repair; - -use OCP\IDBConnection; -use OCP\Share\IManager; -use OCP\Migration\IOutput; -use OCP\Migration\IRepairStep; - -class RepairShareOwnership implements IRepairStep { - private IDBConnection $dbConnection; - private IManager $shareManager; - - public function __construct( - IDBConnection $dbConnection, - IManager $shareManager - ) { - $this->dbConnection = $dbConnection; - $this->shareManager = $shareManager; - } - - /** - * @inheritDoc - */ - public function getName() { - return 'Repair shares ownership'; - } - - protected function repairWrongShareOwnership(IOutput $output, bool $dryRun = true) { - $qb = $this->dbConnection->getQueryBuilder(); - $brokenShare = $qb - ->select('s.id', 'm.user_id', 's.uid_owner', 's.uid_initiator', 's.share_with') - ->from('share', 's') - ->join('s', 'filecache', 'f', $qb->expr()->eq('s.item_source', 'f.fileid')) - ->join('s', 'mounts', 'm', $qb->expr()->eq('f.storage', 'm.storage_id')) - ->where($qb->expr()->neq('m.user_id', 's.uid_owner')) - ->andWhere($qb->expr()->eq($qb->func()->concat($qb->expr()->literal('/'), 'm.user_id', $qb->expr()->literal('/')), 'm.mount_point')) - ->executeQuery() - ->fetchAll(); - - foreach ($brokenShare as $queryResult) { - $shareId = $queryResult['id']; - $initiator = $queryResult['uid_initiator']; - $receiver = $queryResult['share_with']; - $owner = $queryResult['uid_owner']; - $mountOwner = $queryResult['user_id']; - - $output->info("Found share from $initiator to $receiver, owned by $owner, that should be owned by $mountOwner"); - - if ($dryRun) { - continue; - } - - $share = $this->shareManager->getShareById($shareId); - - if ($share->getShareOwner() === $share->getSharedBy()) { - $share->setSharedBy($mountOwner); - } - $share->setShareOwner($mountOwner); - - $this->shareManager->updateShare($share); - } - } - - /** - * @inheritDoc - */ - public function run(IOutput $output) { - $this->repairWrongShareOwnership($output); - } -} diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index ffd779707df..9e6a867cf1b 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -2088,4 +2088,8 @@ class Manager implements IManager { yield from $provider->getAllShares(); } } + + public function getProviderForType(int $shareType): IShareProvider { + return $this->factory->getProviderForType($shareType); + } } |