summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Api/Procedure/TaskProcedure.php6
-rw-r--r--app/Controller/ConfigController.php28
-rw-r--r--app/Model/ConfigModel.php13
-rw-r--r--app/Model/SubtaskModel.php2
-rw-r--r--app/Template/config/about.php3
-rw-r--r--app/Template/config/upload_db.php18
6 files changed, 68 insertions, 2 deletions
diff --git a/app/Api/Procedure/TaskProcedure.php b/app/Api/Procedure/TaskProcedure.php
index af67f3de..c43e5876 100644
--- a/app/Api/Procedure/TaskProcedure.php
+++ b/app/Api/Procedure/TaskProcedure.php
@@ -89,7 +89,7 @@ class TaskProcedure extends BaseProcedure
public function createTask($title, $project_id, $color_id = '', $column_id = 0, $owner_id = 0, $creator_id = 0,
$date_due = '', $description = '', $category_id = 0, $score = 0, $swimlane_id = 0, $priority = 0,
$recurrence_status = 0, $recurrence_trigger = 0, $recurrence_factor = 0, $recurrence_timeframe = 0,
- $recurrence_basedate = 0, $reference = '', array $tags = array())
+ $recurrence_basedate = 0, $reference = '', array $tags = array(), $date_started = '')
{
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'createTask', $project_id);
@@ -121,6 +121,7 @@ class TaskProcedure extends BaseProcedure
'reference' => $reference,
'priority' => $priority,
'tags' => $tags,
+ 'date_started' => $date_started,
);
list($valid, ) = $this->taskValidator->validateCreation($values);
@@ -131,7 +132,7 @@ class TaskProcedure extends BaseProcedure
public function updateTask($id, $title = null, $color_id = null, $owner_id = null,
$date_due = null, $description = null, $category_id = null, $score = null, $priority = null,
$recurrence_status = null, $recurrence_trigger = null, $recurrence_factor = null,
- $recurrence_timeframe = null, $recurrence_basedate = null, $reference = null, $tags = null)
+ $recurrence_timeframe = null, $recurrence_basedate = null, $reference = null, $tags = null, $date_started = null)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateTask', $id);
$project_id = $this->taskFinderModel->getProjectId($id);
@@ -161,6 +162,7 @@ class TaskProcedure extends BaseProcedure
'reference' => $reference,
'priority' => $priority,
'tags' => $tags,
+ 'date_started' => $date_started,
));
list($valid) = $this->taskValidator->validateApiModification($values);
diff --git a/app/Controller/ConfigController.php b/app/Controller/ConfigController.php
index 8572316e..62ae8201 100644
--- a/app/Controller/ConfigController.php
+++ b/app/Controller/ConfigController.php
@@ -201,6 +201,34 @@ class ConfigController extends BaseController
}
/**
+ * Display the Sqlite database upload page
+ *
+ * @access public
+ */
+ public function uploadDb()
+ {
+ $this->response->html($this->template->render('config/upload_db'));
+ }
+
+ /**
+ * Replace current Sqlite db with uploaded file
+ *
+ * @access public
+ */
+ public function saveUploadedDb()
+ {
+ $filename = $this->request->getFilePath('file');
+
+ if (!file_exists($filename) || !$this->configModel->uploadDatabase($filename)) {
+ $this->flash->failure(t('Unable to read uploaded file.'));
+ } else {
+ $this->flash->success(t('Database upload done.'));
+ }
+
+ $this->response->redirect($this->helper->url->to('ConfigController', 'index'));
+ }
+
+ /**
* Regenerate webhook token
*
* @access public
diff --git a/app/Model/ConfigModel.php b/app/Model/ConfigModel.php
index 945c5e6f..7f48f34f 100644
--- a/app/Model/ConfigModel.php
+++ b/app/Model/ConfigModel.php
@@ -49,6 +49,19 @@ class ConfigModel extends SettingModel
}
/**
+ * Replace database file with uploaded one
+ *
+ * @access public
+ * @param string $file
+ * @return bool
+ */
+ public function uploadDatabase($file)
+ {
+ $this->db->closeConnection();
+ return file_put_contents(DB_FILENAME, gzdecode(file_get_contents($file))) !== false;
+ }
+
+ /**
* Get the Sqlite database size in bytes
*
* @access public
diff --git a/app/Model/SubtaskModel.php b/app/Model/SubtaskModel.php
index 737a933d..ca2c8488 100644
--- a/app/Model/SubtaskModel.php
+++ b/app/Model/SubtaskModel.php
@@ -90,9 +90,11 @@ class SubtaskModel extends Base
->subquery($this->subtaskTimeTrackingModel->getTimerQuery($user_id), 'timer_start_date')
->eq('user_id', $user_id)
->eq(ProjectModel::TABLE.'.is_active', ProjectModel::ACTIVE)
+ ->eq(ColumnModel::TABLE.'.hide_in_dashboard', 0)
->in(SubtaskModel::TABLE.'.status', $status)
->join(TaskModel::TABLE, 'id', 'task_id')
->join(ProjectModel::TABLE, 'id', 'project_id', TaskModel::TABLE)
+ ->join(ColumnModel::TABLE, 'id', 'column_id', TaskModel::TABLE)
->callback(array($this, 'addStatusName'));
}
diff --git a/app/Template/config/about.php b/app/Template/config/about.php
index 3f078c3d..23a3e6c0 100644
--- a/app/Template/config/about.php
+++ b/app/Template/config/about.php
@@ -69,6 +69,9 @@
<?= t('(Gzip compressed Sqlite file)') ?>
</li>
<li>
+ <?= $this->url->link(t('Upload the database'), 'ConfigController', 'uploadDb', array(), false, 'js-modal-medium') ?>
+ </li>
+ <li>
<?= $this->url->link(t('Optimize the database'), 'ConfigController', 'optimizeDb', array(), true) ?>&nbsp;
<?= t('(VACUUM command)') ?>
</li>
diff --git a/app/Template/config/upload_db.php b/app/Template/config/upload_db.php
new file mode 100644
index 00000000..d7aaac86
--- /dev/null
+++ b/app/Template/config/upload_db.php
@@ -0,0 +1,18 @@
+<div class="page-header">
+ <h2><?= t('Upload the Sqlite database') ?></h2>
+</div>
+
+<div class="alert">
+ <p>
+ <?= t('You can upload the Gzip compressed Sqlite database previously downloaded.') ?>
+ </p>
+</div>
+
+<form action="<?= $this->url->href('ConfigController', 'saveUploadedDb') ?>" method="post" enctype="multipart/form-data">
+ <?= $this->form->csrf() ?>
+
+ <?= $this->form->label(t('Database file'), 'file') ?>
+ <?= $this->form->file('file') ?>
+
+ <?= $this->modal->submitButtons(array('submitLabel' => t('Upload'))) ?>
+</form>