summaryrefslogtreecommitdiff
path: root/app/Schema/Migration.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2017-02-18 09:42:01 -0500
committerFrederic Guillot <fred@kanboard.net>2017-02-18 09:42:01 -0500
commitde128dbad860478496a0d655b5eb5c1005ebbabe (patch)
tree7fee510e901273472731e8e843981268c593ec40 /app/Schema/Migration.php
parent0430a09c069134622c0161dc2fb9ba3718a73c0d (diff)
Remove default swimlane
Diffstat (limited to 'app/Schema/Migration.php')
-rw-r--r--app/Schema/Migration.php63
1 files changed, 63 insertions, 0 deletions
diff --git a/app/Schema/Migration.php b/app/Schema/Migration.php
new file mode 100644
index 00000000..395ac1ad
--- /dev/null
+++ b/app/Schema/Migration.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Schema;
+
+use PDO;
+
+function migrate_default_swimlane(PDO $pdo)
+{
+ $projects = get_all_projects($pdo);
+
+ foreach ($projects as $project) {
+
+ // Create new default swimlane
+ $rq = $pdo->prepare('INSERT INTO swimlanes (project_id, name, is_active, position) VALUES (?, ?, ?, ?)');
+ $rq->execute(array(
+ $project['id'],
+ $project['default_swimlane'],
+ (int) $project['show_default_swimlane'],
+ $project['show_default_swimlane'] == 1 ? 1 : 0,
+ ));
+
+ $swimlaneId = get_last_insert_id($pdo);
+
+ // Reorder swimlanes if the default one was active
+ if ($project['show_default_swimlane']) {
+ $rq = $pdo->prepare("UPDATE swimlanes SET position=position+1 WHERE project_id=? AND is_active='1' AND id!=?");
+ $rq->execute(array(
+ $project['id'],
+ $swimlaneId,
+ ));
+ }
+
+ // Move all tasks to new swimlane
+ $rq = $pdo->prepare("UPDATE tasks SET swimlane_id=? WHERE swimlane_id='0' AND project_id=?");
+ $rq->execute(array(
+ $swimlaneId,
+ $project['id'],
+ ));
+
+ // Migrate automatic actions
+ $rq = $pdo->prepare("UPDATE action_has_params SET value=? WHERE id IN (SELECT action_has_params.id FROM action_has_params LEFT JOIN actions ON actions.id=action_has_params.action_id WHERE project_id=? AND name='swimlane_id' AND value='0')");
+ $rq->execute(array($swimlaneId, $project['id']));
+ }
+}
+
+function get_all_projects(PDO $pdo)
+{
+ $rq = $pdo->prepare('SELECT * FROM projects');
+ $rq->execute();
+ return $rq->fetchAll(PDO::FETCH_ASSOC);
+}
+
+function get_last_insert_id(PDO $pdo)
+{
+ if (DB_DRIVER === 'postgres') {
+ $rq = $pdo->prepare('SELECT LASTVAL()');
+ $rq->execute();
+ return $rq->fetchColumn();
+ }
+
+ return $pdo->lastInsertId();
+}
+