|
<?php |
|
|
|
namespace Kanboard\Formatter; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TaskListSubtaskAssigneeFormatter extends TaskListFormatter |
|
{ |
|
protected $userId = 0; |
|
protected $withoutEmptyTasks = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function withUserId($userId) |
|
{ |
|
$this->userId = $userId; |
|
return $this; |
|
} |
|
|
|
public function withoutEmptyTasks() |
|
{ |
|
$this->withoutEmptyTasks = true; |
|
return $this; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |
|
} |
|
} |
|
|