File size: 1,255 Bytes
e4f4821 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<?php
namespace Kanboard\Formatter;
/**
* Class TaskListSubtaskAssigneeFormatter
*
* @package Kanboard\Formatter
* @author Frederic Guillot
*/
class TaskListSubtaskAssigneeFormatter extends TaskListFormatter
{
protected $userId = 0;
protected $withoutEmptyTasks = false;
/**
* Set assignee
*
* @param integer $userId
* @return $this
*/
public function withUserId($userId)
{
$this->userId = $userId;
return $this;
}
public function withoutEmptyTasks()
{
$this->withoutEmptyTasks = true;
return $this;
}
/**
* Apply formatter
*
* @access public
* @return array
*/
public function format()
{
$tasks = parent::format();
$taskIds = array_column($tasks, 'id');
$subtasks = $this->subtaskModel->getAllByTaskIdsAndAssignee($taskIds, $this->userId);
$subtasks = array_column_index($subtasks, 'task_id');
array_merge_relation($tasks, $subtasks, 'subtasks', 'id');
if ($this->withoutEmptyTasks) {
$tasks = array_filter($tasks, function (array $task) {
return count($task['subtasks']) > 0;
});
}
return $tasks;
}
}
|