diff options
Diffstat (limited to 'app/Export/TransitionExport.php')
-rw-r--r-- | app/Export/TransitionExport.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/app/Export/TransitionExport.php b/app/Export/TransitionExport.php new file mode 100644 index 00000000..97dc28a7 --- /dev/null +++ b/app/Export/TransitionExport.php @@ -0,0 +1,77 @@ +<?php + +namespace Kanboard\Export; + +use Kanboard\Core\Base; +use Kanboard\Core\DateParser; + +/** + * Transition Export + * + * @package export + * @author Frederic Guillot + */ +class TransitionExport extends Base +{ + /** + * Get project export + * + * @access public + * @param integer $project_id Project id + * @param mixed $from Start date (timestamp or user formatted date) + * @param mixed $to End date (timestamp or user formatted date) + * @return array + */ + public function export($project_id, $from, $to) + { + $results = array($this->getColumns()); + $transitions = $this->transition->getAllByProjectAndDate($project_id, $from, $to); + + foreach ($transitions as $transition) { + $results[] = $this->format($transition); + } + + return $results; + } + + /** + * Get column titles + * + * @access protected + * @return string[] + */ + protected function getColumns() + { + return array( + e('Id'), + e('Task Title'), + e('Source column'), + e('Destination column'), + e('Executer'), + e('Date'), + e('Time spent'), + ); + } + + /** + * Format the output of a transition array + * + * @access protected + * @param array $transition + * @return array + */ + protected function format(array $transition) + { + $values = array( + (int) $transition['id'], + $transition['title'], + $transition['src_column'], + $transition['dst_column'], + $transition['name'] ?: $transition['username'], + date($this->config->get('application_datetime_format', DateParser::DATE_TIME_FORMAT), $transition['date']), + round($transition['time_spent'] / 3600, 2) + ); + + return $values; + } +} |