| | <?php |
| |
|
| | namespace Kanboard\Formatter; |
| |
|
| | use Kanboard\Core\Filter\FormatterInterface; |
| | use Kanboard\Model\ProjectModel; |
| | use Kanboard\Model\SwimlaneModel; |
| | use Kanboard\Model\TaskModel; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class BoardFormatter extends BaseFormatter implements FormatterInterface |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected $projectId; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public function withProjectId($projectId) |
| | { |
| | $this->projectId = $projectId; |
| | return $this; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | public function format() |
| | { |
| | $project = $this->projectModel->getById($this->projectId); |
| | $swimlanes = $this->swimlaneModel->getAllByStatus($this->projectId, SwimlaneModel::ACTIVE); |
| | if ($project['per_swimlane_task_limits']) { |
| | $columns = array(); |
| | foreach ($swimlanes as $swimlane) { |
| | $columns = array_merge($columns, $this->columnModel->getAllWithPerSwimlaneTaskCount($this->projectId, $swimlane['id'])); |
| | } |
| | } else { |
| | $columns = $this->columnModel->getAllWithTaskCount($this->projectId); |
| | } |
| |
|
| | if (empty($swimlanes) || empty($columns)) { |
| | return array(); |
| | } |
| |
|
| | $this->hook->reference('formatter:board:query', $this->query); |
| |
|
| | $tasks = $this->query |
| | ->eq(TaskModel::TABLE.'.project_id', $this->projectId) |
| | ->asc(TaskModel::TABLE.'.position') |
| | ->findAll(); |
| |
|
| | $task_ids = array_column($tasks, 'id'); |
| | $tags = $this->taskTagModel->getTagsByTaskIds($task_ids); |
| |
|
| | return $this->boardSwimlaneFormatter |
| | ->withSwimlanes($swimlanes) |
| | ->withColumns($columns) |
| | ->withTasks($tasks) |
| | ->withTags($tags) |
| | ->format(); |
| | } |
| | } |
| |
|