|
|
<?php |
|
|
|
|
|
namespace Kanboard\Export; |
|
|
|
|
|
use Kanboard\Core\Base; |
|
|
use Kanboard\Model\TaskModel; |
|
|
use Kanboard\Model\SubtaskModel; |
|
|
use Kanboard\Model\UserModel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SubtaskExport extends Base |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private $subtask_status = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function export($project_id, $from, $to) |
|
|
{ |
|
|
$this->subtask_status = $this->subtaskModel->getStatusList(); |
|
|
$subtasks = $this->getSubtasks($project_id, $from, $to); |
|
|
$results = array($this->getColumns()); |
|
|
|
|
|
foreach ($subtasks as $subtask) { |
|
|
$results[] = $this->format($subtask); |
|
|
} |
|
|
|
|
|
return $results; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getColumns() |
|
|
{ |
|
|
return array( |
|
|
e('Subtask Id'), |
|
|
e('Title'), |
|
|
e('Status'), |
|
|
e('Assignee'), |
|
|
e('Time estimated'), |
|
|
e('Time spent'), |
|
|
e('Task Id'), |
|
|
e('Task Title'), |
|
|
); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function format(array $subtask) |
|
|
{ |
|
|
$values = array(); |
|
|
$values[] = $subtask['id']; |
|
|
$values[] = $subtask['title']; |
|
|
$values[] = t($this->subtask_status[$subtask['status']]); |
|
|
$values[] = $subtask['assignee_name'] ?: $subtask['assignee_username']; |
|
|
$values[] = $subtask['time_estimated']; |
|
|
$values[] = $subtask['time_spent']; |
|
|
$values[] = $subtask['task_id']; |
|
|
$values[] = $subtask['task_title']; |
|
|
|
|
|
return $values; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function getSubtasks($project_id, $from, $to) |
|
|
{ |
|
|
if (! is_numeric($from)) { |
|
|
$from = $this->dateParser->removeTimeFromTimestamp($this->dateParser->getTimestamp($from)); |
|
|
} |
|
|
|
|
|
if (! is_numeric($to)) { |
|
|
$to = $this->dateParser->removeTimeFromTimestamp(strtotime('+1 day', $this->dateParser->getTimestamp($to))); |
|
|
} |
|
|
|
|
|
return $this->db->table(SubtaskModel::TABLE) |
|
|
->eq('project_id', $project_id) |
|
|
->columns( |
|
|
SubtaskModel::TABLE.'.*', |
|
|
UserModel::TABLE.'.username AS assignee_username', |
|
|
UserModel::TABLE.'.name AS assignee_name', |
|
|
TaskModel::TABLE.'.title AS task_title' |
|
|
) |
|
|
->gte('date_creation', $from) |
|
|
->lte('date_creation', $to) |
|
|
->join(TaskModel::TABLE, 'id', 'task_id') |
|
|
->join(UserModel::TABLE, 'id', 'user_id') |
|
|
->asc(SubtaskModel::TABLE.'.id') |
|
|
->findAll(); |
|
|
} |
|
|
} |
|
|
|