summaryrefslogtreecommitdiff
path: root/app/Controller/ExportController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Controller/ExportController.php')
-rw-r--r--app/Controller/ExportController.php91
1 files changed, 91 insertions, 0 deletions
diff --git a/app/Controller/ExportController.php b/app/Controller/ExportController.php
new file mode 100644
index 00000000..b2fe0ebd
--- /dev/null
+++ b/app/Controller/ExportController.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Kanboard\Controller;
+
+/**
+ * Export Controller
+ *
+ * @package Kanboard\Controller
+ * @author Frederic Guillot
+ */
+class ExportController extends BaseController
+{
+ /**
+ * Common export method
+ *
+ * @access private
+ * @param string $model
+ * @param string $method
+ * @param string $filename
+ * @param string $action
+ * @param string $page_title
+ * @throws \Kanboard\Core\Controller\PageNotFoundException
+ */
+ private function common($model, $method, $filename, $action, $page_title)
+ {
+ $project = $this->getProject();
+ $from = $this->request->getStringParam('from');
+ $to = $this->request->getStringParam('to');
+
+ if ($from && $to) {
+ $data = $this->$model->$method($project['id'], $from, $to);
+ $this->response->withFileDownload($filename.'.csv');
+ $this->response->csv($data);
+ }
+
+ $this->response->html($this->helper->layout->project('export/'.$action, array(
+ 'values' => array(
+ 'controller' => 'ExportController',
+ 'action' => $action,
+ 'project_id' => $project['id'],
+ 'from' => $from,
+ 'to' => $to,
+ ),
+ 'errors' => array(),
+ 'date_format' => $this->configModel->get('application_date_format'),
+ 'date_formats' => $this->dateParser->getAvailableFormats($this->dateParser->getDateFormats()),
+ 'project' => $project,
+ 'title' => $page_title,
+ ), 'export/sidebar'));
+ }
+
+ /**
+ * Task export
+ *
+ * @access public
+ */
+ public function tasks()
+ {
+ $this->common('taskExport', 'export', t('Tasks'), 'tasks', t('Tasks Export'));
+ }
+
+ /**
+ * Subtask export
+ *
+ * @access public
+ */
+ public function subtasks()
+ {
+ $this->common('subtaskExport', 'export', t('Subtasks'), 'subtasks', t('Subtasks Export'));
+ }
+
+ /**
+ * Daily project summary export
+ *
+ * @access public
+ */
+ public function summary()
+ {
+ $this->common('projectDailyColumnStats', 'getAggregatedMetrics', t('Summary'), 'summary', t('Daily project summary export'));
+ }
+
+ /**
+ * Transition export
+ *
+ * @access public
+ */
+ public function transitions()
+ {
+ $this->common('transitionExport', 'export', t('Transitions'), 'transitions', t('Task transitions export'));
+ }
+}