Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move code to BoardService
Signed-off-by: Sergey Shliakhov <[email protected]>
  • Loading branch information
matchish committed Jun 4, 2020
commit bdc50a7cb3f380ff1d915733675eb993ab742405
52 changes: 19 additions & 33 deletions lib/Command/TransferOwnership.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
<?php
declare(strict_types=1);

namespace OCA\Deck\Command;

use OCA\Deck\Service\BoardService;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

final class TransferOwnership extends Command {

protected $boardService;

public function __construct(BoardService $boardService)
{
parent::__construct();

$this->boardService = $boardService;
}

protected function configure() {
$this
->setName('deck:transfer-ownership')
Expand All @@ -19,45 +28,22 @@ protected function configure() {
InputArgument::REQUIRED,
'Owner uid'
)
->addArgument(
'newOwner',
InputArgument::REQUIRED,
'New 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("Transfer deck entities from $owner to $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);
$this->boardService->transferOwnership($owner, $newOwner);

$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");
}
$output->writeln("Transfer deck entities from $owner to $newOwner completed");
}

}
17 changes: 17 additions & 0 deletions lib/Db/AclMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,21 @@ public function findByParticipant($type, $participant) {
$sql = 'SELECT * from *PREFIX*deck_board_acl WHERE type = ? AND participant = ?';
return $this->findEntities($sql, [$type, $participant]);
}

/**
* @param $ownerId
* @param $newOwnerId
* @return void
*/
public function transferOwnership($ownerId, $newOwnerId)
{
$params = [
'owner' => $ownerId,
'newOwner' => $newOwnerId,
'type' => Acl::PERMISSION_TYPE_USER
];
$sql = "UPDATE `{$this->tableName}` SET `participant` = :newOwner WHERE `participant` = :owner AND `type` = :type";
$stmt = $this->execute($sql, $params);
$stmt->closeCursor();
}
}
16 changes: 16 additions & 0 deletions lib/Db/AssignedUsersMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,20 @@ private function getOrigin(AssignedUsers $assignment) {
}
return null;
}

/**
* @param $ownerId
* @param $newOwnerId
* @return void
*/
public function transferOwnership($ownerId, $newOwnerId)
{
$params = [
'owner' => $ownerId,
'newOwner' => $newOwnerId
];
$sql = "UPDATE `{$this->tableName}` SET `participant` = :newOwner WHERE `participant` = :owner";
$stmt = $this->execute($sql, $params);
$stmt->closeCursor();
}
}
16 changes: 16 additions & 0 deletions lib/Db/BoardMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -261,4 +261,20 @@ public function mapOwner(Board &$board) {
return null;
});
}

/**
* @param $ownerId
* @param $newOwnerId
* @return void
*/
public function transferOwnership($ownerId, $newOwnerId)
{
$params = [
'owner' => $ownerId,
'newOwner' => $newOwnerId
];
$sql = "UPDATE `{$this->tableName}` SET `owner` = :newOwner WHERE `owner` = :owner";
$stmt = $this->execute($sql, $params);
$stmt->closeCursor();
}
}
16 changes: 16 additions & 0 deletions lib/Db/CardMapper.php
Original file line number Diff line number Diff line change
Expand Up @@ -205,4 +205,20 @@ public function mapOwner(Card &$card) {
return null;
});
}

/**
* @param $ownerId
* @param $newOwnerId
* @return void
*/
public function transferOwnership($ownerId, $newOwnerId)
{
$params = [
'owner' => $ownerId,
'newOwner' => $newOwnerId
];
$sql = "UPDATE `{$this->tableName}` SET `owner` = :newOwner WHERE `owner` = :owner";
$stmt = $this->execute($sql, $params);
$stmt->closeCursor();
}
}
17 changes: 17 additions & 0 deletions lib/Service/BoardService.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\AssignedUsersMapper;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\IPermissionMapper;
use OCA\Deck\Db\Label;
Expand Down Expand Up @@ -63,6 +64,7 @@ class BoardService {
/** @var EventDispatcherInterface */
private $eventDispatcher;
private $changeHelper;
private $cardMapper;

public function __construct(
BoardMapper $boardMapper,
Expand All @@ -73,6 +75,7 @@ public function __construct(
PermissionService $permissionService,
NotificationHelper $notificationHelper,
AssignedUsersMapper $assignedUsersMapper,
CardMapper $cardMapper,
IUserManager $userManager,
IGroupManager $groupManager,
ActivityManager $activityManager,
Expand All @@ -94,6 +97,7 @@ public function __construct(
$this->eventDispatcher = $eventDispatcher;
$this->changeHelper = $changeHelper;
$this->userId = $userId;
$this->cardMapper = $cardMapper;
}

/**
Expand Down Expand Up @@ -669,6 +673,19 @@ public function clone($id, $userId) {
return $newBoard;
}

/**
* @param $ownerId
* @param $newOwnerId
* @return void
*/
public function transferOwnership($owner, $newOwner)
{
$this->boardMapper->transferOwnership($owner, $newOwner);
$this->assignedUsersMapper->transferOwnership($owner, $newOwner);
$this->aclMapper->transferOwnership($owner, $newOwner);
$this->cardMapper->transferOwnership($owner, $newOwner);
}

private function enrichWithStacks($board, $since = -1) {
$stacks = $this->stackMapper->findAll($board->getId(), null, null, $since);

Expand Down