Add task and project API formatters

This commit is contained in:
Frederic Guillot
2017-05-22 15:33:16 -04:00
parent f16ac8cd66
commit 54a751820f
14 changed files with 186 additions and 57 deletions

View File

@@ -0,0 +1,39 @@
<?php
namespace Kanboard\Formatter;
use Kanboard\Core\Filter\FormatterInterface;
/**
* Class ProjectApiFormatter
*
* @package Kanboard\Formatter
*/
class ProjectApiFormatter extends BaseFormatter implements FormatterInterface
{
protected $project = null;
public function withProject($project)
{
$this->project = $project;
return $this;
}
/**
* Apply formatter
*
* @access public
* @return mixed
*/
public function format()
{
if (! empty($this->project)) {
$this->project['url'] = array(
'board' => $this->helper->url->to('BoardViewController', 'show', array('project_id' => $this->project['id']), '', true),
'list' => $this->helper->url->to('TaskListController', 'show', array('project_id' => $this->project['id']), '', true),
);
}
return $this->project;
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Kanboard\Formatter;
use Kanboard\Core\Filter\FormatterInterface;
/**
* Class ProjectsApiFormatter
*
* @package Kanboard\Formatter
*/
class ProjectsApiFormatter extends BaseFormatter implements FormatterInterface
{
protected $projects = array();
public function withProjects($projects)
{
$this->projects = $projects;
return $this;
}
/**
* Apply formatter
*
* @access public
* @return mixed
*/
public function format()
{
if (! empty($this->projects)) {
foreach ($this->projects as &$project) {
$project = $this->projectApiFormatter->withProject($project)->format();
}
}
return $this->projects;
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace Kanboard\Formatter;
use Kanboard\Core\Filter\FormatterInterface;
/**
* Class TaskApiFormatter
*
* @package Kanboard\Formatter
*/
class TaskApiFormatter extends BaseFormatter implements FormatterInterface
{
protected $task = null;
public function withTask($task)
{
$this->task = $task;
return $this;
}
/**
* Apply formatter
*
* @access public
* @return mixed
*/
public function format()
{
if (! empty($this->task)) {
$this->task['url'] = $this->helper->url->to('TaskViewController', 'show', array('task_id' => $this->task['id'], 'project_id' => $this->task['project_id']), '', true);
$this->task['color'] = $this->colorModel->getColorProperties($this->task['color_id']);
}
return $this->task;
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Kanboard\Formatter;
use Kanboard\Core\Filter\FormatterInterface;
/**
* Class TasksApiFormatter
*
* @package Kanboard\Formatter
*/
class TasksApiFormatter extends BaseFormatter implements FormatterInterface
{
protected $tasks = array();
public function withTasks($tasks)
{
$this->tasks = $tasks;
return $this;
}
/**
* Apply formatter
*
* @access public
* @return mixed
*/
public function format()
{
if (! empty($this->tasks)) {
foreach ($this->tasks as &$task) {
$task = $this->taskApiFormatter->withTask($task)->format();
}
}
return $this->tasks;
}
}

View File

@@ -2,13 +2,15 @@
namespace Kanboard\Formatter;
use Kanboard\Core\Filter\FormatterInterface;
/**
* Class UserMentionFormatter
*
* @package Kanboard\Formatter
* @author Frederic Guillot
*/
class UserMentionFormatter extends BaseFormatter
class UserMentionFormatter extends BaseFormatter implements FormatterInterface
{
protected $users = array();