summaryrefslogtreecommitdiff
path: root/app/Export/TransitionExport.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Export/TransitionExport.php')
-rw-r--r--app/Export/TransitionExport.php77
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;
+ }
+}