From f42c82274f6dd77e098701f58d64fbbe30a570e3 Mon Sep 17 00:00:00 2001 From: Sergey Shliakhov Date: Thu, 21 May 2020 15:17:31 +0200 Subject: [PATCH] Add deck:transfer-ownership command Signed-off-by: Sergey Shliakhov --- appinfo/info.xml | 1 + lib/Command/TransferOwnership.php | 63 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 lib/Command/TransferOwnership.php diff --git a/appinfo/info.xml b/appinfo/info.xml index bdfe87d41..c4f6ca736 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -44,6 +44,7 @@ OCA\Deck\Command\UserExport + OCA\Deck\Command\TransferOwnership diff --git a/lib/Command/TransferOwnership.php b/lib/Command/TransferOwnership.php new file mode 100644 index 000000000..e7b242efb --- /dev/null +++ b/lib/Command/TransferOwnership.php @@ -0,0 +1,63 @@ +setName('deck:transfer-ownership') + ->setDescription('Change owner of deck entities') + ->addArgument( + 'owner', + InputArgument::REQUIRED, + 'Owner uid' + ) + ->addArgument( + 'newOwner', + InputArgument::REQUIRED, + 'New owner uid' + ); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $owner = $input->getArgument('owner'); + $newOwner = $input->getArgument('newOwner'); + $db = \OC::$server->getDatabaseConnection(); + + $output->writeln("Transfer deck entities from $owner to $newOwner"); + $params = [ + 'owner' => $owner, + 'newOwner' => $newOwner + ]; + + $output->writeln('update oc_deck_assigned_users'); + $stmt = $db->prepare('UPDATE `oc_deck_assigned_users` SET `participant` = :newOwner WHERE `participant` = :owner'); + $stmt->execute($params); + + $output->writeln('update oc_deck_attachment'); + $stmt = $db->prepare('UPDATE `oc_deck_attachment` SET `created_by` = :newOwner WHERE `created_by` = :owner'); + $stmt->execute($params); + + $output->writeln('update oc_deck_boards'); + $stmt = $db->prepare('UPDATE `oc_deck_boards` SET `owner` = :newOwner WHERE `owner` = :owner'); + $stmt->execute($params); + + $output->writeln('update oc_deck_board_acl'); + $stmt = $db->prepare('UPDATE `oc_deck_board_acl` SET `participant` = :newOwner WHERE `participant` = :owner'); + $stmt->execute($params); + + $output->writeln('update oc_deck_cards'); + $stmt = $db->prepare('UPDATE `oc_deck_cards` SET `owner` = :newOwner WHERE `owner` = :owner'); + $stmt->execute($params); + + $output->writeln("Transfer deck entities from $owner to $newOwner completed"); + } + +}