Scrutinizer Auto-Fixes

This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com
This commit is contained in:
Scrutinizer Auto-Fixer
2017-01-31 13:01:52 +00:00
parent 239ac2020b
commit c01bfb5e44
17 changed files with 447 additions and 444 deletions

View File

@@ -22,46 +22,46 @@
*/ */
return [ return [
'routes' => [ 'routes' => [
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
// share // share
['name' => 'share#searchUser', 'url' => '/share/search/{search}', 'verb' => 'GET'], ['name' => 'share#searchUser', 'url' => '/share/search/{search}', 'verb' => 'GET'],
// boards // boards
['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'], ['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'],
['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'], ['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'],
['name' => 'board#read', 'url' => '/boards/{boardId}', 'verb' => 'GET'], ['name' => 'board#read', 'url' => '/boards/{boardId}', 'verb' => 'GET'],
['name' => 'board#update', 'url' => '/boards/{boardId}', 'verb' => 'PUT'], ['name' => 'board#update', 'url' => '/boards/{boardId}', 'verb' => 'PUT'],
['name' => 'board#delete', 'url' => '/boards/{boardId}', 'verb' => 'DELETE'], ['name' => 'board#delete', 'url' => '/boards/{boardId}', 'verb' => 'DELETE'],
['name' => 'board#getUserPermissions', 'url' => '/boards/{boardId}/permissions', 'verb' => 'GET'], ['name' => 'board#getUserPermissions', 'url' => '/boards/{boardId}/permissions', 'verb' => 'GET'],
['name' => 'board#addAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'POST'], ['name' => 'board#addAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'POST'],
['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'PUT'], ['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'PUT'],
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'], ['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
// stacks // stacks
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'], ['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
['name' => 'stack#create', 'url' => '/stacks', 'verb' => 'POST'], ['name' => 'stack#create', 'url' => '/stacks', 'verb' => 'POST'],
['name' => 'stack#update', 'url' => '/stacks/{stackId}', 'verb' => 'PUT'], ['name' => 'stack#update', 'url' => '/stacks/{stackId}', 'verb' => 'PUT'],
['name' => 'stack#delete', 'url' => '/stacks/{stackId}', 'verb' => 'DELETE'], ['name' => 'stack#delete', 'url' => '/stacks/{stackId}', 'verb' => 'DELETE'],
['name' => 'stack#archived', 'url' => '/stacks/{boardId}/archived', 'verb' => 'GET'], ['name' => 'stack#archived', 'url' => '/stacks/{boardId}/archived', 'verb' => 'GET'],
// cards // cards
['name' => 'card#read', 'url' => '/cards/{cardId}', 'verb' => 'GET'], ['name' => 'card#read', 'url' => '/cards/{cardId}', 'verb' => 'GET'],
['name' => 'card#create', 'url' => '/cards', 'verb' => 'POST'], ['name' => 'card#create', 'url' => '/cards', 'verb' => 'POST'],
['name' => 'card#update', 'url' => '/cards/{cardId}', 'verb' => 'PUT'], ['name' => 'card#update', 'url' => '/cards/{cardId}', 'verb' => 'PUT'],
['name' => 'card#delete', 'url' => '/cards/{cardId}', 'verb' => 'DELETE'], ['name' => 'card#delete', 'url' => '/cards/{cardId}', 'verb' => 'DELETE'],
['name' => 'card#rename', 'url' => '/cards/{cardId}/rename', 'verb' => 'PUT'], ['name' => 'card#rename', 'url' => '/cards/{cardId}/rename', 'verb' => 'PUT'],
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'], ['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'], ['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'], ['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'], ['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'], ['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
// labels // labels
['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'], ['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'],
['name' => 'label#update', 'url' => '/labels/{labelId}', 'verb' => 'PUT'], ['name' => 'label#update', 'url' => '/labels/{labelId}', 'verb' => 'PUT'],
['name' => 'label#delete', 'url' => '/labels/{labelId}', 'verb' => 'DELETE'], ['name' => 'label#delete', 'url' => '/labels/{labelId}', 'verb' => 'DELETE'],
] ]
]; ];

View File

@@ -49,10 +49,10 @@ class BoardController extends Controller {
$this->userInfo = $this->getBoardPrerequisites(); $this->userInfo = $this->getBoardPrerequisites();
} }
/** /**
* TODO: move to boardservice * TODO: move to boardservice
* @return array * @return array
*/ */
private function getBoardPrerequisites() { private function getBoardPrerequisites() {
$groups = $this->groupManager->getUserGroupIds( $groups = $this->groupManager->getUserGroupIds(
$this->userManager->get($this->userId) $this->userManager->get($this->userId)

View File

@@ -29,23 +29,23 @@ use OCP\AppFramework\Controller;
class CardController extends Controller { class CardController extends Controller {
private $userId; private $userId;
private $cardService; private $cardService;
public function __construct($appName, IRequest $request, CardService $cardService, $userId) { public function __construct($appName, IRequest $request, CardService $cardService, $userId) {
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->userId = $userId; $this->userId = $userId;
$this->cardService = $cardService; $this->cardService = $cardService;
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function read($cardId) { public function read($cardId) {
return $this->cardService->find($cardId); return $this->cardService->find($cardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -54,9 +54,9 @@ class CardController extends Controller {
* @param $order * @param $order
* @return array * @return array
*/ */
public function reorder($cardId, $stackId, $order) { public function reorder($cardId, $stackId, $order) {
return $this->cardService->reorder($cardId, $stackId, $order); return $this->cardService->reorder($cardId, $stackId, $order);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -64,9 +64,9 @@ class CardController extends Controller {
* @param $title * @param $title
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function rename($cardId, $title) { public function rename($cardId, $title) {
return $this->cardService->rename($cardId, $title); return $this->cardService->rename($cardId, $title);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -76,9 +76,9 @@ class CardController extends Controller {
* @param int $order * @param int $order
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function create($title, $stackId, $type, $order = 999) { public function create($title, $stackId, $type, $order = 999) {
return $this->cardService->create($title, $stackId, $type, $order, $this->userId); return $this->cardService->create($title, $stackId, $type, $order, $this->userId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -90,53 +90,53 @@ class CardController extends Controller {
* @param $description * @param $description
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function update($id, $title, $stackId, $type, $order, $description) { public function update($id, $title, $stackId, $type, $order, $description) {
return $this->cardService->update($id, $title, $stackId, $type, $order, $description, $this->userId); return $this->cardService->update($id, $title, $stackId, $type, $order, $description, $this->userId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function delete($cardId) { public function delete($cardId) {
return $this->cardService->delete($cardId); return $this->cardService->delete($cardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function archive($cardId) { public function archive($cardId) {
return $this->cardService->archive($cardId); return $this->cardService->archive($cardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function unarchive($cardId) { public function unarchive($cardId) {
return $this->cardService->unarchive($cardId); return $this->cardService->unarchive($cardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @param $labelId * @param $labelId
*/ */
public function assignLabel($cardId, $labelId) { public function assignLabel($cardId, $labelId) {
$this->cardService->assignLabel($cardId, $labelId); $this->cardService->assignLabel($cardId, $labelId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $cardId * @param $cardId
* @param $labelId * @param $labelId
*/ */
public function removeLabel($cardId, $labelId) { public function removeLabel($cardId, $labelId) {
$this->cardService->removeLabel($cardId, $labelId); $this->cardService->removeLabel($cardId, $labelId);
} }
} }

View File

@@ -30,12 +30,12 @@ use OCP\AppFramework\Controller;
class LabelController extends Controller { class LabelController extends Controller {
private $labelService; private $labelService;
public function __construct($appName, IRequest $request, LabelService $labelService) { public function __construct($appName, IRequest $request, LabelService $labelService) {
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->labelService = $labelService; $this->labelService = $labelService;
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -44,9 +44,9 @@ class LabelController extends Controller {
* @param $boardId * @param $boardId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function create($title, $color, $boardId) { public function create($title, $color, $boardId) {
return $this->labelService->create($title, $color, $boardId); return $this->labelService->create($title, $color, $boardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -55,17 +55,17 @@ class LabelController extends Controller {
* @param $color * @param $color
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function update($id, $title, $color) { public function update($id, $title, $color) {
return $this->labelService->update($id, $title, $color); return $this->labelService->update($id, $title, $color);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $labelId * @param $labelId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function delete($labelId) { public function delete($labelId) {
return $this->labelService->delete($labelId); return $this->labelService->delete($labelId);
} }
} }

View File

@@ -31,31 +31,31 @@ use OCP\AppFramework\Controller;
class StackController extends Controller { class StackController extends Controller {
private $userId; private $userId;
private $stackService; private $stackService;
public function __construct($appName, IRequest $request, StackService $cardService, $userId) { public function __construct($appName, IRequest $request, StackService $cardService, $userId) {
parent::__construct($appName, $request); parent::__construct($appName, $request);
$this->userId = $userId; $this->userId = $userId;
$this->stackService = $cardService; $this->stackService = $cardService;
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $boardId * @param $boardId
* @return array * @return array
*/ */
public function index($boardId) { public function index($boardId) {
return $this->stackService->findAll($boardId); return $this->stackService->findAll($boardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $boardId * @param $boardId
* @return array * @return array
*/ */
public function archived($boardId) { public function archived($boardId) {
return $this->stackService->findAllArchived($boardId); return $this->stackService->findAllArchived($boardId);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -64,9 +64,9 @@ class StackController extends Controller {
* @param int $order * @param int $order
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function create($title, $boardId, $order = 999) { public function create($title, $boardId, $order = 999) {
return $this->stackService->create($title, $boardId, $order); return $this->stackService->create($title, $boardId, $order);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
@@ -76,16 +76,16 @@ class StackController extends Controller {
* @param $order * @param $order
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function update($id, $title, $boardId, $order) { public function update($id, $title, $boardId, $order) {
return $this->stackService->update($id, $title, $boardId, $order); return $this->stackService->update($id, $title, $boardId, $order);
} }
/** /**
* @NoAdminRequired * @NoAdminRequired
* @param $stackId * @param $stackId
* @return \OCP\AppFramework\Db\Entity * @return \OCP\AppFramework\Db\Entity
*/ */
public function delete($stackId) { public function delete($stackId) {
return $this->stackService->delete($stackId); return $this->stackService->delete($stackId);
} }
} }

View File

@@ -28,25 +28,25 @@ use OCP\IDBConnection;
class AclMapper extends DeckMapper implements IPermissionMapper { class AclMapper extends DeckMapper implements IPermissionMapper {
public function __construct(IDBConnection $db) { public function __construct(IDBConnection $db) {
parent::__construct($db, 'deck_board_acl', '\OCA\Deck\Db\Acl'); parent::__construct($db, 'deck_board_acl', '\OCA\Deck\Db\Acl');
} }
public function findAll($boardId, $limit = null, $offset = null) { public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT id, board_id, type, participant, permission_edit, permission_share, permission_manage FROM `*PREFIX*deck_board_acl` WHERE `board_id` = ? '; $sql = 'SELECT id, board_id, type, participant, permission_edit, permission_share, permission_manage FROM `*PREFIX*deck_board_acl` WHERE `board_id` = ? ';
return $this->findEntities($sql, [$boardId], $limit, $offset); return $this->findEntities($sql, [$boardId], $limit, $offset);
} }
public function isOwner($userId, $aclId) { public function isOwner($userId, $aclId) {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_board_acl` WHERE id = ?)'; $sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_board_acl` WHERE id = ?)';
$stmt = $this->execute($sql, [$aclId]); $stmt = $this->execute($sql, [$aclId]);
$row = $stmt->fetch(); $row = $stmt->fetch();
return ($row['owner'] === $userId); return ($row['owner'] === $userId);
} }
public function findBoardId($aclId) { public function findBoardId($aclId) {
$entity = $this->find($aclId); $entity = $this->find($aclId);
return $entity->getBoardId(); return $entity->getBoardId();
} }
} }

View File

@@ -27,49 +27,49 @@ use JsonSerializable;
class Board extends RelationalEntity implements JsonSerializable { class Board extends RelationalEntity implements JsonSerializable {
public $id; public $id;
protected $title; protected $title;
protected $owner; protected $owner;
protected $color; protected $color;
protected $archived = false; protected $archived = false;
protected $labels; protected $labels;
protected $acl; protected $acl;
protected $shared; protected $shared;
public function __construct() { public function __construct() {
$this->addType('id', 'integer'); $this->addType('id', 'integer');
$this->addType('shared', 'integer'); $this->addType('shared', 'integer');
$this->addType('archived', 'boolean'); $this->addType('archived', 'boolean');
$this->addRelation('labels'); $this->addRelation('labels');
$this->addRelation('acl'); $this->addRelation('acl');
$this->addRelation('shared'); $this->addRelation('shared');
$this->shared = -1; $this->shared = -1;
} }
public function jsonSerialize() { public function jsonSerialize() {
$result = [ $result = [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'owner' => $this->owner, 'owner' => $this->owner,
'color' => $this->color, 'color' => $this->color,
'labels' => $this->labels, 'labels' => $this->labels,
'acl' => $this->acl, 'acl' => $this->acl,
]; ];
if ($this->shared !== -1) { if ($this->shared !== -1) {
$result['shared'] = $this->shared; $result['shared'] = $this->shared;
} }
return $result; return $result;
} }
public function setLabels($labels) { public function setLabels($labels) {
foreach ($labels as $l) { foreach ($labels as $l) {
$this->labels[] = $l; $this->labels[] = $l;
} }
} }
public function setAcl($acl) { public function setAcl($acl) {
foreach ($acl as $a) { foreach ($acl as $a) {
$this->acl[$a->id] = $a; $this->acl[$a->id] = $a;
} }
} }
} }

View File

@@ -28,41 +28,41 @@ use JsonSerializable;
class Card extends RelationalEntity implements JsonSerializable { class Card extends RelationalEntity implements JsonSerializable {
public $id; public $id;
protected $title; protected $title;
protected $description; protected $description;
protected $stackId; protected $stackId;
protected $type; protected $type;
protected $lastModified; protected $lastModified;
protected $createdAt; protected $createdAt;
protected $labels; protected $labels;
protected $owner; protected $owner;
protected $order; protected $order;
protected $archived = false; protected $archived = false;
public function __construct() { public function __construct() {
$this->addType('id', 'integer'); $this->addType('id', 'integer');
$this->addType('stackId', 'integer'); $this->addType('stackId', 'integer');
$this->addType('order', 'integer'); $this->addType('order', 'integer');
$this->addType('lastModified', 'integer'); $this->addType('lastModified', 'integer');
$this->addType('createdAt', 'integer'); $this->addType('createdAt', 'integer');
$this->addType('archived', 'boolean'); $this->addType('archived', 'boolean');
$this->addRelation('labels'); $this->addRelation('labels');
} }
public function jsonSerialize() { public function jsonSerialize() {
return [ return [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'description' => $this->description, 'description' => $this->description,
'type' => $this->type, 'type' => $this->type,
'lastModified' => $this->lastModified, 'lastModified' => $this->lastModified,
'createdAt' => $this->createdAt, 'createdAt' => $this->createdAt,
'owner' => $this->owner, 'owner' => $this->owner,
'order' => $this->order, 'order' => $this->order,
'stackId' => $this->stackId, 'stackId' => $this->stackId,
'labels' => $this->labels, 'labels' => $this->labels,
'archived' => $this->archived, 'archived' => $this->archived,
]; ];
} }
} }

View File

@@ -28,21 +28,21 @@ use JsonSerializable;
class Label extends RelationalEntity implements JsonSerializable { class Label extends RelationalEntity implements JsonSerializable {
public $id; public $id;
protected $title; protected $title;
protected $color; protected $color;
protected $boardId; protected $boardId;
protected $cardId; protected $cardId;
public function __construct() { public function __construct() {
$this->addType('id', 'integer'); $this->addType('id', 'integer');
} }
public function jsonSerialize() { public function jsonSerialize() {
return [ return [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'boardId' => $this->boardId, 'boardId' => $this->boardId,
'cardId' => $this->cardId, 'cardId' => $this->cardId,
'color' => $this->color, 'color' => $this->color,
]; ];
} }
} }

View File

@@ -28,44 +28,44 @@ use OCP\IDBConnection;
class LabelMapper extends DeckMapper implements IPermissionMapper { class LabelMapper extends DeckMapper implements IPermissionMapper {
public function __construct(IDBConnection $db) { public function __construct(IDBConnection $db) {
parent::__construct($db, 'deck_labels', '\OCA\Deck\Db\Label'); parent::__construct($db, 'deck_labels', '\OCA\Deck\Db\Label');
} }
public function findAll($boardId, $limit = null, $offset = null) { public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT * FROM `*PREFIX*deck_labels` WHERE `board_id` = ? ORDER BY `id`'; $sql = 'SELECT * FROM `*PREFIX*deck_labels` WHERE `board_id` = ? ORDER BY `id`';
return $this->findEntities($sql, [$boardId], $limit, $offset); return $this->findEntities($sql, [$boardId], $limit, $offset);
} }
public function delete(\OCP\AppFramework\Db\Entity $entity) { public function delete(\OCP\AppFramework\Db\Entity $entity) {
// delete assigned labels // delete assigned labels
$this->deleteLabelAssignments($entity->getId()); $this->deleteLabelAssignments($entity->getId());
// delete label // delete label
return parent::delete($entity); return parent::delete($entity);
} }
public function findAssignedLabelsForCard($cardId, $limit = null, $offset = null) { public function findAssignedLabelsForCard($cardId, $limit = null, $offset = null) {
$sql = 'SELECT l.* FROM `*PREFIX*deck_assigned_labels` as al INNER JOIN *PREFIX*deck_labels as l ON l.id = al.label_id WHERE `card_id` = ? ORDER BY l.id'; $sql = 'SELECT l.* FROM `*PREFIX*deck_assigned_labels` as al INNER JOIN *PREFIX*deck_labels as l ON l.id = al.label_id WHERE `card_id` = ? ORDER BY l.id';
return $this->findEntities($sql, [$cardId], $limit, $offset); return $this->findEntities($sql, [$cardId], $limit, $offset);
} }
public function findAssignedLabelsForBoard($boardId, $limit = null, $offset = null) { public function findAssignedLabelsForBoard($boardId, $limit = null, $offset = null) {
$sql = "SELECT c.id as card_id, l.id as id, l.title as title, l.color as color FROM oc_deck_cards as c " . $sql = "SELECT c.id as card_id, l.id as id, l.title as title, l.color as color FROM oc_deck_cards as c " .
" INNER JOIN oc_deck_assigned_labels as al ON al.card_id = c.id INNER JOIN oc_deck_labels as l ON al.label_id = l.id WHERE board_id=? ORDER BY l.id"; " INNER JOIN oc_deck_assigned_labels as al ON al.card_id = c.id INNER JOIN oc_deck_labels as l ON al.label_id = l.id WHERE board_id=? ORDER BY l.id";
$entities = $this->findEntities($sql, [$boardId], $limit, $offset); $entities = $this->findEntities($sql, [$boardId], $limit, $offset);
return $entities; return $entities;
} }
public function getAssignedLabelsForBoard($boardId) { public function getAssignedLabelsForBoard($boardId) {
$labels = $this->findAssignedLabelsForBoard($boardId); $labels = $this->findAssignedLabelsForBoard($boardId);
$result = array(); $result = array();
foreach ($labels as $label) { foreach ($labels as $label) {
if (!array_key_exists($label->getCardId(), $result)) { if (!array_key_exists($label->getCardId(), $result)) {
$result[$label->getCardId()] = array(); $result[$label->getCardId()] = array();
} }
$result[$label->getCardId()][] = $label; $result[$label->getCardId()][] = $label;
} }
return $result; return $result;
} }
public function deleteLabelAssignments($labelId) { public function deleteLabelAssignments($labelId) {
$sql = 'DELETE FROM `*PREFIX*deck_assigned_labels` WHERE label_id = ?'; $sql = 'DELETE FROM `*PREFIX*deck_assigned_labels` WHERE label_id = ?';
@@ -81,15 +81,15 @@ class LabelMapper extends DeckMapper implements IPermissionMapper {
$stmt->execute(); $stmt->execute();
} }
public function isOwner($userId, $labelId) { public function isOwner($userId, $labelId) {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_labels` WHERE id = ?)'; $sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_labels` WHERE id = ?)';
$stmt = $this->execute($sql, [$labelId]); $stmt = $this->execute($sql, [$labelId]);
$row = $stmt->fetch(); $row = $stmt->fetch();
return ($row['owner'] === $userId); return ($row['owner'] === $userId);
} }
public function findBoardId($labelId) { public function findBoardId($labelId) {
$entity = $this->find($labelId); $entity = $this->find($labelId);
return $entity->getBoardId(); return $entity->getBoardId();
} }
} }

View File

@@ -28,37 +28,37 @@ use JsonSerializable;
class Stack extends RelationalEntity implements JsonSerializable { class Stack extends RelationalEntity implements JsonSerializable {
public $id; public $id;
protected $title; protected $title;
protected $boardId; protected $boardId;
protected $cards = array(); protected $cards = array();
protected $order; protected $order;
public function __construct() { public function __construct() {
$this->addType('id', 'integer'); $this->addType('id', 'integer');
$this->addType('boardId', 'integer'); $this->addType('boardId', 'integer');
$this->addType('order', 'integer'); $this->addType('order', 'integer');
} }
public function setCards($cards) { public function setCards($cards) {
$this->cards = $cards; $this->cards = $cards;
} }
public function jsonSerialize() { public function jsonSerialize() {
if (!empty($this->cards)) { if (!empty($this->cards)) {
return [ return [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'order' => $this->order, 'order' => $this->order,
'boardId' => $this->boardId, 'boardId' => $this->boardId,
'cards' => $this->cards 'cards' => $this->cards
]; ];
} }
return [ return [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'order' => $this->order, 'order' => $this->order,
'boardId' => $this->boardId 'boardId' => $this->boardId
]; ];
} }
} }

View File

@@ -29,46 +29,46 @@ use OCP\IDBConnection;
class StackMapper extends DeckMapper implements IPermissionMapper { class StackMapper extends DeckMapper implements IPermissionMapper {
private $cardMapper; private $cardMapper;
public function __construct(IDBConnection $db, CardMapper $cardMapper) { public function __construct(IDBConnection $db, CardMapper $cardMapper) {
parent::__construct($db, 'deck_stacks', '\OCA\Deck\Db\Stack'); parent::__construct($db, 'deck_stacks', '\OCA\Deck\Db\Stack');
$this->cardMapper = $cardMapper; $this->cardMapper = $cardMapper;
} }
/** /**
* @param $id * @param $id
* @return \OCP\AppFramework\Db\Entity if not found * @return \OCP\AppFramework\Db\Entity if not found
*/ */
public function find($id) { public function find($id) {
$sql = 'SELECT * FROM `*PREFIX*deck_stacks` ' . $sql = 'SELECT * FROM `*PREFIX*deck_stacks` ' .
'WHERE `id` = ?'; 'WHERE `id` = ?';
return $this->findEntity($sql, [$id]); return $this->findEntity($sql, [$id]);
} }
public function findAll($boardId, $limit = null, $offset = null) { public function findAll($boardId, $limit = null, $offset = null) {
$sql = 'SELECT * FROM `*PREFIX*deck_stacks` WHERE `board_id` = ? ORDER BY `order`'; $sql = 'SELECT * FROM `*PREFIX*deck_stacks` WHERE `board_id` = ? ORDER BY `order`';
return $this->findEntities($sql, [$boardId], $limit, $offset); return $this->findEntities($sql, [$boardId], $limit, $offset);
} }
public function delete(Entity $entity) { public function delete(Entity $entity) {
// delete cards on stack // delete cards on stack
$this->cardMapper->deleteByStack($entity->getId()); $this->cardMapper->deleteByStack($entity->getId());
return parent::delete($entity); return parent::delete($entity);
} }
public function isOwner($userId, $stackId) { public function isOwner($userId, $stackId) {
$sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id = ?)'; $sql = 'SELECT owner FROM `*PREFIX*deck_boards` WHERE `id` IN (SELECT board_id FROM `*PREFIX*deck_stacks` WHERE id = ?)';
$stmt = $this->execute($sql, [$stackId]); $stmt = $this->execute($sql, [$stackId]);
$row = $stmt->fetch(); $row = $stmt->fetch();
return ($row['owner'] === $userId); return ($row['owner'] === $userId);
} }
public function findBoardId($stackId) { public function findBoardId($stackId) {
$entity = $this->find($stackId); $entity = $this->find($stackId);
return $entity->getBoardId(); return $entity->getBoardId();
} }
} }

View File

@@ -39,7 +39,7 @@ class BoardService {
private $boardMapper; private $boardMapper;
private $labelMapper; private $labelMapper;
private $aclMapper; private $aclMapper;
private $l10n; private $l10n;
private $permissionService; private $permissionService;
@@ -59,7 +59,7 @@ class BoardService {
} }
public function find($boardId) { public function find($boardId) {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ); $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
return $this->boardMapper->find($boardId, true, true); return $this->boardMapper->find($boardId, true, true);
} }
@@ -72,11 +72,11 @@ class BoardService {
// create new labels // create new labels
$default_labels = [ $default_labels = [
'31CC7C' => $this->l10n->t('Finished'), '31CC7C' => $this->l10n->t('Finished'),
'317CCC' => $this->l10n->t('To review'), '317CCC' => $this->l10n->t('To review'),
'FF7A66' => $this->l10n->t('Action needed'), 'FF7A66' => $this->l10n->t('Action needed'),
'F1DB50' => $this->l10n->t('Later') 'F1DB50' => $this->l10n->t('Later')
]; ];
$labels = []; $labels = [];
foreach ($default_labels as $color => $title) { foreach ($default_labels as $color => $title) {
$label = new Label(); $label = new Label();
@@ -91,12 +91,12 @@ class BoardService {
} }
public function delete($id) { public function delete($id) {
$this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ); $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ);
return $this->boardMapper->delete($this->find($id)); return $this->boardMapper->delete($this->find($id));
} }
public function update($id, $title, $color) { public function update($id, $title, $color) {
$this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_MANAGE);
$board = $this->find($id); $board = $this->find($id);
$board->setTitle($title); $board->setTitle($title);
$board->setColor($color); $board->setColor($color);
@@ -105,7 +105,7 @@ class BoardService {
public function addAcl($boardId, $type, $participant, $edit, $share, $manage) { public function addAcl($boardId, $type, $participant, $edit, $share, $manage) {
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_SHARE); $this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_SHARE);
$acl = new Acl(); $acl = new Acl();
$acl->setBoardId($boardId); $acl->setBoardId($boardId);
$acl->setType($type); $acl->setType($type);
@@ -117,7 +117,7 @@ class BoardService {
} }
public function updateAcl($id, $edit, $share, $manage) { public function updateAcl($id, $edit, $share, $manage) {
$this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_SHARE); $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_SHARE);
$acl = $this->aclMapper->find($id); $acl = $this->aclMapper->find($id);
$acl->setPermissionEdit($edit); $acl->setPermissionEdit($edit);
$acl->setPermissionShare($share); $acl->setPermissionShare($share);
@@ -126,7 +126,7 @@ class BoardService {
} }
public function deleteAcl($id) { public function deleteAcl($id) {
$this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_SHARE); $this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_SHARE);
$acl = $this->aclMapper->find($id); $acl = $this->aclMapper->find($id);
return $this->aclMapper->delete($acl); return $this->aclMapper->delete($acl);
} }

View File

@@ -45,6 +45,9 @@ class CardService {
return $this->cardMapper->find($cardId); return $this->cardMapper->find($cardId);
} }
/**
* @param integer $order
*/
public function create($title, $stackId, $type, $order, $owner) { public function create($title, $stackId, $type, $order, $owner) {
$this->permissionService->checkPermission($this->stackMapper, $stackId, Acl::PERMISSION_EDIT); $this->permissionService->checkPermission($this->stackMapper, $stackId, Acl::PERMISSION_EDIT);
$card = new Card(); $card = new Card();

View File

@@ -30,38 +30,38 @@ use OCA\Deck\Db\LabelMapper;
class LabelService { class LabelService {
private $labelMapper; private $labelMapper;
public function __construct(LabelMapper $labelMapper, PermissionService $permissionService) { public function __construct(LabelMapper $labelMapper, PermissionService $permissionService) {
$this->labelMapper = $labelMapper; $this->labelMapper = $labelMapper;
$this->permissionService = $permissionService; $this->permissionService = $permissionService;
} }
public function find($labelId) { public function find($labelId) {
$this->permissionService->checkPermission($this->labelMapper, $labelId, Acl::PERMISSION_READ); $this->permissionService->checkPermission($this->labelMapper, $labelId, Acl::PERMISSION_READ);
return $this->labelMapper->find($labelId); return $this->labelMapper->find($labelId);
} }
public function create($title, $color, $boardId) { public function create($title, $color, $boardId) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE);
$label = new Label(); $label = new Label();
$label->setTitle($title); $label->setTitle($title);
$label->setColor($color); $label->setColor($color);
$label->setBoardId($boardId); $label->setBoardId($boardId);
return $this->labelMapper->insert($label); return $this->labelMapper->insert($label);
} }
public function delete($id) { public function delete($id) {
$this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE);
return $this->labelMapper->delete($this->find($id)); return $this->labelMapper->delete($this->find($id));
} }
public function update($id, $title, $color) { public function update($id, $title, $color) {
$this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE);
$label = $this->find($id); $label = $this->find($id);
$label->setTitle($title); $label->setTitle($title);
$label->setColor($color); $label->setColor($color);
return $this->labelMapper->update($label); return $this->labelMapper->update($label);
} }
} }

View File

@@ -75,35 +75,35 @@ class PermissionService {
* @return bool * @return bool
* @throws NoPermissionException * @throws NoPermissionException
*/ */
public function checkPermission($mapper, $id, $permission) { public function checkPermission($mapper, $id, $permission) {
try { try {
if ($mapper instanceof IPermissionMapper) { if ($mapper instanceof IPermissionMapper) {
$boardId = $mapper->findBoardId($id); $boardId = $mapper->findBoardId($id);
} else { } else {
$boardId = $id; $boardId = $id;
} }
if ($boardId === null) { if ($boardId === null) {
// Throw NoPermission to not leak information about existing entries // Throw NoPermission to not leak information about existing entries
throw new NoPermissionException('Permission denied'); throw new NoPermissionException('Permission denied');
} }
if ($this->userIsBoardOwner($boardId)) { if ($this->userIsBoardOwner($boardId)) {
return true; return true;
} }
$acls = $this->aclMapper->findAll($boardId); $acls = $this->aclMapper->findAll($boardId);
$result = $this->userCan($acls, $permission); $result = $this->userCan($acls, $permission);
if ($result) { if ($result) {
return true; return true;
} }
} catch (DoesNotExistException $exception) { } catch (DoesNotExistException $exception) {
// Throw NoPermission to not leak information about existing entries // Throw NoPermission to not leak information about existing entries
throw new NoPermissionException('Permission denied'); throw new NoPermissionException('Permission denied');
} }
throw new NoPermissionException('Permission denied.'); throw new NoPermissionException('Permission denied.');
} }
/** /**
* @param $boardId * @param $boardId
@@ -114,7 +114,7 @@ class PermissionService {
if ($board && $this->userId === $board->getOwner()) { if ($board && $this->userId === $board->getOwner()) {
return true; return true;
} }
return false; return false;
} }
/** /**

View File

@@ -35,71 +35,71 @@ use OCA\Deck\Db\StackMapper;
class StackService { class StackService {
private $stackMapper; private $stackMapper;
private $cardMapper; private $cardMapper;
private $labelMapper; private $labelMapper;
private $permissionService; private $permissionService;
public function __construct(StackMapper $stackMapper, CardMapper $cardMapper, LabelMapper $labelMapper, PermissionService $permissionService) { public function __construct(StackMapper $stackMapper, CardMapper $cardMapper, LabelMapper $labelMapper, PermissionService $permissionService) {
$this->stackMapper = $stackMapper; $this->stackMapper = $stackMapper;
$this->cardMapper = $cardMapper; $this->cardMapper = $cardMapper;
$this->labelMapper = $labelMapper; $this->labelMapper = $labelMapper;
$this->permissionService = $permissionService; $this->permissionService = $permissionService;
} }
public function findAll($boardId) { public function findAll($boardId) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ); $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ);
$stacks = $this->stackMapper->findAll($boardId); $stacks = $this->stackMapper->findAll($boardId);
$labels = $this->labelMapper->getAssignedLabelsForBoard($boardId); $labels = $this->labelMapper->getAssignedLabelsForBoard($boardId);
foreach ($stacks as $stackIndex => $stack) { foreach ($stacks as $stackIndex => $stack) {
$cards = $this->cardMapper->findAll($stack->id); $cards = $this->cardMapper->findAll($stack->id);
foreach ($cards as $cardIndex => $card) { foreach ($cards as $cardIndex => $card) {
if (array_key_exists($card->id, $labels)) { if (array_key_exists($card->id, $labels)) {
$cards[$cardIndex]->setLabels($labels[$card->id]);
}
}
$stacks[$stackIndex]->setCards($cards);
}
return $stacks;
}
public function findAllArchived($boardId) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ);
$stacks = $this->stackMapper->findAll($boardId);
$labels = $this->labelMapper->getAssignedLabelsForBoard($boardId);
foreach ($stacks as $stackIndex => $stack) {
$cards = $this->cardMapper->findAllArchived($stack->id);
foreach ($cards as $cardIndex => $card) {
if (array_key_exists($card->id, $labels)) {
$cards[$cardIndex]->setLabels($labels[$card->id]); $cards[$cardIndex]->setLabels($labels[$card->id]);
} }
} }
$stacks[$stackIndex]->setCards($cards); $stacks[$stackIndex]->setCards($cards);
} }
return $stacks; return $stacks;
} }
public function create($title, $boardId, $order) { public function findAllArchived($boardId) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_READ);
$stack = new Stack(); $stacks = $this->stackMapper->findAll($boardId);
$stack->setTitle($title); $labels = $this->labelMapper->getAssignedLabelsForBoard($boardId);
$stack->setBoardId($boardId); foreach ($stacks as $stackIndex => $stack) {
$stack->setOrder($order); $cards = $this->cardMapper->findAllArchived($stack->id);
return $this->stackMapper->insert($stack); foreach ($cards as $cardIndex => $card) {
if (array_key_exists($card->id, $labels)) {
$cards[$cardIndex]->setLabels($labels[$card->id]);
}
}
$stacks[$stackIndex]->setCards($cards);
}
return $stacks;
}
} public function create($title, $boardId, $order) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE);
$stack = new Stack();
$stack->setTitle($title);
$stack->setBoardId($boardId);
$stack->setOrder($order);
return $this->stackMapper->insert($stack);
public function delete($id) { }
$this->permissionService->checkPermission($this->stackMapper, $id, Acl::PERMISSION_MANAGE);
return $this->stackMapper->delete($this->stackMapper->find($id));
}
public function update($id, $title, $boardId, $order) { public function delete($id) {
$this->permissionService->checkPermission($this->stackMapper, $id, Acl::PERMISSION_MANAGE); $this->permissionService->checkPermission($this->stackMapper, $id, Acl::PERMISSION_MANAGE);
$stack = $this->stackMapper->find($id); return $this->stackMapper->delete($this->stackMapper->find($id));
$stack->setTitle($title); }
$stack->setBoardId($boardId);
$stack->setOrder($order); public function update($id, $title, $boardId, $order) {
return $this->stackMapper->update($stack); $this->permissionService->checkPermission($this->stackMapper, $id, Acl::PERMISSION_MANAGE);
} $stack = $this->stackMapper->find($id);
$stack->setTitle($title);
$stack->setBoardId($boardId);
$stack->setOrder($order);
return $this->stackMapper->update($stack);
}
} }