plugins/calendar plugins/libkolab plugins/tasklist

Aleksander Machniak machniak at kolabsys.com
Fri Jan 18 09:41:08 CET 2013


 plugins/calendar/README                                        |    2 
 plugins/calendar/UPGRADING                                     |   16 +
 plugins/calendar/drivers/database/SQL/mysql.initial.sql        |   82 +++++++
 plugins/calendar/drivers/database/SQL/mysql/2012080600.sql     |    3 
 plugins/calendar/drivers/database/SQL/mysql/2013011000.sql     |    1 
 plugins/calendar/drivers/database/SQL/postgres.initial.sql     |  106 ++++++++++
 plugins/calendar/drivers/database/SQL/postgres/2012080600.sql  |    3 
 plugins/calendar/drivers/database/SQL/postgres/2013011000.sql  |    1 
 plugins/calendar/drivers/database/SQL/sqlite.initial.sql       |   76 +++++++
 plugins/calendar/drivers/database/SQL/sqlite/2013011000.sql    |    1 
 plugins/calendar/drivers/database/sql/mysql.sql                |   80 -------
 plugins/calendar/drivers/database/sql/mysql.upgrade-0.7.sql    |    5 
 plugins/calendar/drivers/database/sql/postgres.upgrade-0.7.sql |    5 
 plugins/calendar/drivers/database/sql/postgresql.sql           |  104 ---------
 plugins/calendar/drivers/database/sql/sqlite.sql               |   75 -------
 plugins/calendar/drivers/kolab/SQL/mysql.initial.sql           |   32 +++
 plugins/calendar/drivers/kolab/SQL/mysql.sql                   |   31 --
 plugins/calendar/drivers/kolab/SQL/mysql.upgrade-0.7.sql       |   15 -
 plugins/calendar/drivers/kolab/SQL/mysql/2012080600.sql        |   11 +
 plugins/calendar/drivers/kolab/SQL/mysql/2013011000.sql        |    1 
 plugins/libkolab/README                                        |    6 
 plugins/libkolab/SQL/mysql.initial.sql                         |   27 ++
 plugins/libkolab/SQL/mysql.sql                                 |   25 --
 plugins/libkolab/SQL/mysql/2013011000.sql                      |    1 
 plugins/libkolab/UPGRADING                                     |    9 
 plugins/tasklist/UPGRADING                                     |   17 +
 plugins/tasklist/drivers/database/SQL/mysql.initial.sql        |   51 ++++
 plugins/tasklist/drivers/database/SQL/mysql.sql                |   49 ----
 plugins/tasklist/drivers/database/SQL/mysql/2013011000.sql     |    1 
 29 files changed, 436 insertions(+), 400 deletions(-)

New commits:
commit 7672e60ecb54f6170cb2d904007caa4b94f57ab5
Author: Aleksander Machniak <machniak at kolabsys.com>
Date:   Fri Jan 18 09:40:48 2013 +0100

    Update SQL scripts to match Roundcube format for schema upgrades, update/add UPGRADING instructions

diff --git a/plugins/calendar/README b/plugins/calendar/README
index 7abf8e3..c10f389 100644
--- a/plugins/calendar/README
+++ b/plugins/calendar/README
@@ -4,7 +4,7 @@ A calendar module for Roundcube
 This plugin currently supports a local database as well as a Kolab groupware
 server as backends for calendar and event storage. For both drivers, some
 initialization of the local database is necessary. To do so, execute the
-SQL commands in drivers/<yourchoice>/SQL/<yourdatabase>.sql
+SQL commands in drivers/<yourchoice>/SQL/<yourdatabase>.initial.sql
 
 The client-side calendar UI relies on the "fullcalendar" project by Adam Arshaw
 with extensions made for the use in Roundcube. All changes are published in
diff --git a/plugins/calendar/UPGRADING b/plugins/calendar/UPGRADING
index 3038233..524c2ac 100644
--- a/plugins/calendar/UPGRADING
+++ b/plugins/calendar/UPGRADING
@@ -1,11 +1,17 @@
 UPGRADING instructions
 ======================
 
-From version 0.7 and 0.8
-------------------------
+To update database schema, depending on the driver you're using,
+please run in Roundcube bin/ directory:
 
-The schemas of the backend databases have changed. Depending on the driver
-you're using, please execute all statements from divers/<driver>/sql/<db>.upgrade-0.7.sql
-on your local database.
+updatedb.sh --package=calendar-<driver> --version=<version> \
+  --dir=../plugins/calendar/drivers/<driver>/SQL
 
+[*] Replace <driver> with "database" or "kolab" (without quotes)
+[*] Replace <version> with Roundcube version e.g. 0.7.3
+[*] Roundcube should be upgraded before plugin upgrades
 
+Example:
+
+updatedb.sh --package=calendar-kolab --version=0.8.0 \
+  --dir=../plugins/calendar/drivers/kolab/SQL
diff --git a/plugins/calendar/drivers/database/SQL/mysql.initial.sql b/plugins/calendar/drivers/database/SQL/mysql.initial.sql
new file mode 100644
index 0000000..c8c3d7b
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/mysql.initial.sql
@@ -0,0 +1,82 @@
+/**
+ * Roundcube Calendar
+ *
+ * Plugin to add a calendar to Roundcube.
+ *
+ * @version @package_version@
+ * @author Lazlo Westerhof
+ * @author Thomas Bruederli
+ * @url http://rc-calendar.lazlo.me
+ * @licence GNU AGPL
+ * @copyright (c) 2010 Lazlo Westerhof - Netherlands
+ *
+ **/
+
+CREATE TABLE `calendars` (
+  `calendar_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+  `name` varchar(255) NOT NULL,
+  `color` varchar(8) NOT NULL,
+  `showalarms` tinyint(1) NOT NULL DEFAULT '1',
+  PRIMARY KEY(`calendar_id`),
+  INDEX `user_name_idx` (`user_id`, `name`),
+  CONSTRAINT `fk_calendars_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+CREATE TABLE `events` (
+  `event_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `calendar_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
+  `recurrence_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
+  `uid` varchar(255) NOT NULL DEFAULT '',
+  `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
+  `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
+  `sequence` int(1) UNSIGNED NOT NULL DEFAULT '0',
+  `start` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
+  `end` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
+  `recurrence` varchar(255) DEFAULT NULL,
+  `title` varchar(255) NOT NULL,
+  `description` text NOT NULL,
+  `location` varchar(255) NOT NULL DEFAULT '',
+  `categories` varchar(255) NOT NULL DEFAULT '',
+  `all_day` tinyint(1) NOT NULL DEFAULT '0',
+  `free_busy` tinyint(1) NOT NULL DEFAULT '0',
+  `priority` tinyint(1) NOT NULL DEFAULT '0',
+  `sensitivity` tinyint(1) NOT NULL DEFAULT '0',
+  `alarms` varchar(255) DEFAULT NULL,
+  `attendees` text DEFAULT NULL,
+  `notifyat` datetime DEFAULT NULL,
+  PRIMARY KEY(`event_id`),
+  INDEX `uid_idx` (`uid`),
+  INDEX `recurrence_idx` (`recurrence_id`),
+  INDEX `calendar_notify_idx` (`calendar_id`,`notifyat`),
+  CONSTRAINT `fk_events_calendar_id` FOREIGN KEY (`calendar_id`)
+    REFERENCES `calendars`(`calendar_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+CREATE TABLE `attachments` (
+  `attachment_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
+  `event_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
+  `filename` varchar(255) NOT NULL DEFAULT '',
+  `mimetype` varchar(255) NOT NULL DEFAULT '',
+  `size` int(11) NOT NULL DEFAULT '0',
+  `data` longtext NOT NULL DEFAULT '',
+  PRIMARY KEY(`attachment_id`),
+  CONSTRAINT `fk_attachments_event_id` FOREIGN KEY (`event_id`)
+    REFERENCES `events`(`event_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+CREATE TABLE `itipinvitations` (
+  `token` VARCHAR(64) NOT NULL,
+  `event_uid` VARCHAR(255) NOT NULL,
+  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+  `event` TEXT NOT NULL,
+  `expires` DATETIME DEFAULT NULL,
+  `cancelled` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY(`token`),
+  INDEX `uid_idx` (`user_id`,`event_uid`),
+  CONSTRAINT `fk_itipinvitations_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+INSERT INTO system (name, value) VALUES ('calendar-database-version', '2013011000.sql');
diff --git a/plugins/calendar/drivers/database/SQL/mysql/2012080600.sql b/plugins/calendar/drivers/database/SQL/mysql/2012080600.sql
new file mode 100644
index 0000000..f38e1cf
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/mysql/2012080600.sql
@@ -0,0 +1,3 @@
+-- MySQL database updates since version 0.7/0.8
+
+ALTER TABLE `events` ADD `sequence` int(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `changed`;
diff --git a/plugins/calendar/drivers/database/SQL/mysql/2013011000.sql b/plugins/calendar/drivers/database/SQL/mysql/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/mysql/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file
diff --git a/plugins/calendar/drivers/database/SQL/postgres.initial.sql b/plugins/calendar/drivers/database/SQL/postgres.initial.sql
new file mode 100644
index 0000000..e3ba497
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/postgres.initial.sql
@@ -0,0 +1,106 @@
+/**
+ * RoundCube Calendar
+ *
+ * Plugin to add a calendar to RoundCube.
+ *
+ * @version @package_version@
+ * @author Lazlo Westerhof
+ * @author Albert Lee
+ * @author Aleksander Machniak <machniak at kolabsys.com>
+ * @url http://rc-calendar.lazlo.me
+ * @licence GNU AGPL
+ * @copyright (c) 2010 Lazlo Westerhof - Netherlands
+ *
+ **/
+
+
+CREATE SEQUENCE calendar_ids
+    INCREMENT BY 1
+    NO MAXVALUE
+    NO MINVALUE
+    CACHE 1;
+
+CREATE TABLE calendars (
+    calendar_id integer DEFAULT nextval('calendar_ids'::regclass) NOT NULL,
+    user_id integer NOT NULL
+        REFERENCES users (user_id) ON UPDATE CASCADE ON DELETE CASCADE,
+    name varchar(255) NOT NULL,
+    color varchar(8) NOT NULL,
+    showalarms smallint NOT NULL DEFAULT 1,
+    PRIMARY KEY (calendar_id)
+);
+
+CREATE INDEX calendars_user_id_idx ON calendars (user_id, name);
+
+
+CREATE SEQUENCE event_ids
+    INCREMENT BY 1
+    NO MAXVALUE
+    NO MINVALUE
+    CACHE 1;
+
+CREATE TABLE events (
+    event_id integer DEFAULT nextval('event_ids'::regclass) NOT NULL,
+    calendar_id integer NOT NULL
+        REFERENCES calendars (calendar_id) ON UPDATE CASCADE ON DELETE CASCADE,
+    recurrence_id integer NOT NULL DEFAULT 0,
+    uid varchar(255) NOT NULL DEFAULT '',
+    created timestamp without time zone DEFAULT now() NOT NULL,
+    changed timestamp without time zone DEFAULT now(),
+    sequence integer NOT NULL DEFAULT 0,
+    "start" timestamp without time zone DEFAULT now() NOT NULL,
+    "end" timestamp without time zone DEFAULT now() NOT NULL,
+    recurrence varchar(255) DEFAULT NULL,
+    title character varying(255) NOT NULL,
+    description text NOT NULL,
+    location character varying(255) NOT NULL,
+    categories character varying(255) NOT NULL,
+    all_day smallint NOT NULL DEFAULT 0,
+    free_busy smallint NOT NULL DEFAULT 0,
+    priority smallint NOT NULL DEFAULT 0,
+    sensitivity smallint NOT NULL DEFAULT 0,
+    alarms varchar(255) DEFAULT NULL,
+    attendees text DEFAULT NULL,
+    notifyat timestamp without time zone DEFAULT NULL,
+    PRIMARY KEY (event_id)
+);
+
+CREATE INDEX events_calendar_id_notifyat_idx ON events (calendar_id, notifyat);
+CREATE INDEX events_uid_idx ON events (uid);
+CREATE INDEX events_recurrence_id_idx ON events (recurrence_id);
+
+
+CREATE SEQUENCE attachment_ids
+    INCREMENT BY 1
+    NO MAXVALUE
+    NO MINVALUE
+    CACHE 1;
+
+CREATE TABLE attachments (
+    attachment_id integer DEFAULT nextval('attachment_ids'::regclass) NOT NULL,
+    event_id integer NOT NULL
+        REFERENCES events (event_id) ON DELETE CASCADE ON UPDATE CASCADE,
+    filename varchar(255) NOT NULL DEFAULT '',
+    mimetype varchar(255) NOT NULL DEFAULT '',
+    size integer NOT NULL DEFAULT 0,
+    data text NOT NULL DEFAULT '',
+    PRIMARY KEY (attachment_id)
+);
+
+CREATE INDEX attachments_user_id_idx ON attachments (event_id);
+
+
+CREATE TABLE itipinvitations (
+    token varchar(64) NOT NULL,
+    event_uid varchar(255) NOT NULL,
+    user_id integer NOT NULL
+        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
+    event TEXT NOT NULL,
+    expires timestamp without time zone DEFAULT NULL,
+    cancelled smallint NOT NULL DEFAULT 0,
+    PRIMARY KEY (token)
+);
+
+CREATE INDEX itipinvitations_user_id_event_uid_idx ON itipinvitations (user_id, event_uid);
+
+INSERT INTO system (name, value) VALUES ('calendar-database-version', '2013011000.sql');
diff --git a/plugins/calendar/drivers/database/SQL/postgres/2012080600.sql b/plugins/calendar/drivers/database/SQL/postgres/2012080600.sql
new file mode 100644
index 0000000..9a273e6
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/postgres/2012080600.sql
@@ -0,0 +1,3 @@
+-- Postgres database updates since version 0.7/0.8
+
+ALTER TABLE events ADD sequence integer NOT NULL DEFAULT 0;
diff --git a/plugins/calendar/drivers/database/SQL/postgres/2013011000.sql b/plugins/calendar/drivers/database/SQL/postgres/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/postgres/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file
diff --git a/plugins/calendar/drivers/database/SQL/sqlite.initial.sql b/plugins/calendar/drivers/database/SQL/sqlite.initial.sql
new file mode 100644
index 0000000..67ce8ad
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/sqlite.initial.sql
@@ -0,0 +1,76 @@
+/**
+ * Roundcube Calendar
+ *
+ * Plugin to add a calendar to Roundcube.
+ *
+ * @version @package_version@
+ * @author Lazlo Westerhof
+ * @author Thomas Bruederli
+ * @author Albert Lee
+ * @url http://rc-calendar.lazlo.me
+ * @licence GNU AGPL
+ * @copyright (c) 2010 Lazlo Westerhof - Netherlands
+ *
+ **/
+
+CREATE TABLE calendars (
+  calendar_id integer NOT NULL PRIMARY KEY,
+  user_id integer NOT NULL default '0',
+  name varchar(255) NOT NULL default '',
+  color varchar(255) NOT NULL default '',
+  showalarms tinyint(1) NOT NULL default '1',
+  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
+    REFERENCES users(user_id)
+);
+
+CREATE TABLE events (
+  event_id integer NOT NULL PRIMARY KEY,
+  calendar_id integer NOT NULL default '0',
+  recurrence_id integer NOT NULL default '0',
+  uid varchar(255) NOT NULL default '',
+  created datetime NOT NULL default '1000-01-01 00:00:00',
+  changed datetime NOT NULL default '1000-01-01 00:00:00',
+  sequence integer NOT NULL default '0',
+  start datetime NOT NULL default '1000-01-01 00:00:00',
+  end datetime NOT NULL default '1000-01-01 00:00:00',
+  recurrence varchar(255) default NULL,
+  title varchar(255) NOT NULL,
+  description text NOT NULL,
+  location varchar(255) NOT NULL default '',
+  categories varchar(255) NOT NULL default '',
+  all_day tinyint(1) NOT NULL default '0',
+  free_busy tinyint(1) NOT NULL default '0',
+  priority tinyint(1) NOT NULL default '0',
+  sensitivity tinyint(1) NOT NULL default '0',
+  alarms varchar(255) default NULL,
+  attendees text default NULL,
+  notifyat datetime default NULL,
+  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
+    REFERENCES calendars(calendar_id)
+);
+
+CREATE TABLE attachments (
+  attachment_id integer NOT NULL PRIMARY KEY,
+  event_id integer NOT NULL default '0',
+  filename varchar(255) NOT NULL default '',
+  mimetype varchar(255) NOT NULL default '',
+  size integer NOT NULL default '0',
+  data text NOT NULL default '',
+  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
+    REFERENCES events(event_id)
+);
+
+CREATE TABLE itipinvitations (
+  token varchar(64) NOT NULL PRIMARY KEY,
+  event_uid varchar(255) NOT NULL,
+  user_id integer NOT NULL default '0',
+  event text NOT NULL,
+  expires datetime NOT NULL default '1000-01-01 00:00:00',
+  cancelled tinyint(1) NOT NULL default '0',
+  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
+    REFERENCES users(user_id)
+);
+
+CREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid);
+
+INSERT INTO system (name, value) VALUES ('calendar-database-version', '2013011000.sql');
diff --git a/plugins/calendar/drivers/database/SQL/sqlite/2013011000.sql b/plugins/calendar/drivers/database/SQL/sqlite/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/calendar/drivers/database/SQL/sqlite/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file
diff --git a/plugins/calendar/drivers/database/sql/mysql.sql b/plugins/calendar/drivers/database/sql/mysql.sql
deleted file mode 100644
index e39acf4..0000000
--- a/plugins/calendar/drivers/database/sql/mysql.sql
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Roundcube Calendar
- *
- * Plugin to add a calendar to Roundcube.
- *
- * @version @package_version@
- * @author Lazlo Westerhof
- * @author Thomas Bruederli
- * @url http://rc-calendar.lazlo.me
- * @licence GNU AGPL
- * @copyright (c) 2010 Lazlo Westerhof - Netherlands
- *
- **/
-
-CREATE TABLE `calendars` (
-  `calendar_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
-  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
-  `name` varchar(255) NOT NULL,
-  `color` varchar(8) NOT NULL,
-  `showalarms` tinyint(1) NOT NULL DEFAULT '1',
-  PRIMARY KEY(`calendar_id`),
-  INDEX `user_name_idx` (`user_id`, `name`),
-  CONSTRAINT `fk_calendars_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-
-CREATE TABLE `events` (
-  `event_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
-  `calendar_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
-  `recurrence_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
-  `uid` varchar(255) NOT NULL DEFAULT '',
-  `created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
-  `changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
-  `sequence` int(1) UNSIGNED NOT NULL DEFAULT '0',
-  `start` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
-  `end` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
-  `recurrence` varchar(255) DEFAULT NULL,
-  `title` varchar(255) NOT NULL,
-  `description` text NOT NULL,
-  `location` varchar(255) NOT NULL DEFAULT '',
-  `categories` varchar(255) NOT NULL DEFAULT '',
-  `all_day` tinyint(1) NOT NULL DEFAULT '0',
-  `free_busy` tinyint(1) NOT NULL DEFAULT '0',
-  `priority` tinyint(1) NOT NULL DEFAULT '0',
-  `sensitivity` tinyint(1) NOT NULL DEFAULT '0',
-  `alarms` varchar(255) DEFAULT NULL,
-  `attendees` text DEFAULT NULL,
-  `notifyat` datetime DEFAULT NULL,
-  PRIMARY KEY(`event_id`),
-  INDEX `uid_idx` (`uid`),
-  INDEX `recurrence_idx` (`recurrence_id`),
-  INDEX `calendar_notify_idx` (`calendar_id`,`notifyat`),
-  CONSTRAINT `fk_events_calendar_id` FOREIGN KEY (`calendar_id`)
-    REFERENCES `calendars`(`calendar_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-
-CREATE TABLE `attachments` (
-  `attachment_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
-  `event_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
-  `filename` varchar(255) NOT NULL DEFAULT '',
-  `mimetype` varchar(255) NOT NULL DEFAULT '',
-  `size` int(11) NOT NULL DEFAULT '0',
-  `data` longtext NOT NULL DEFAULT '',
-  PRIMARY KEY(`attachment_id`),
-  CONSTRAINT `fk_attachments_event_id` FOREIGN KEY (`event_id`)
-    REFERENCES `events`(`event_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-
-CREATE TABLE `itipinvitations` (
-  `token` VARCHAR(64) NOT NULL,
-  `event_uid` VARCHAR(255) NOT NULL,
-  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
-  `event` TEXT NOT NULL,
-  `expires` DATETIME DEFAULT NULL,
-  `cancelled` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
-  PRIMARY KEY(`token`),
-  INDEX `uid_idx` (`user_id`,`event_uid`),
-  CONSTRAINT `fk_itipinvitations_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
diff --git a/plugins/calendar/drivers/database/sql/mysql.upgrade-0.7.sql b/plugins/calendar/drivers/database/sql/mysql.upgrade-0.7.sql
deleted file mode 100644
index 089b06d..0000000
--- a/plugins/calendar/drivers/database/sql/mysql.upgrade-0.7.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * MySQL database updates since version 0.7/0.8
- **/
-
-ALTER TABLE `events` ADD `sequence` int(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `changed`;
diff --git a/plugins/calendar/drivers/database/sql/postgres.upgrade-0.7.sql b/plugins/calendar/drivers/database/sql/postgres.upgrade-0.7.sql
deleted file mode 100644
index facb195..0000000
--- a/plugins/calendar/drivers/database/sql/postgres.upgrade-0.7.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * Postgres database updates since version 0.7/0.8
- **/
-
-ALTER TABLE events ADD sequence integer NOT NULL DEFAULT 0;
diff --git a/plugins/calendar/drivers/database/sql/postgresql.sql b/plugins/calendar/drivers/database/sql/postgresql.sql
deleted file mode 100644
index 8b88438..0000000
--- a/plugins/calendar/drivers/database/sql/postgresql.sql
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * RoundCube Calendar
- *
- * Plugin to add a calendar to RoundCube.
- *
- * @version @package_version@
- * @author Lazlo Westerhof
- * @author Albert Lee
- * @author Aleksander Machniak <machniak at kolabsys.com>
- * @url http://rc-calendar.lazlo.me
- * @licence GNU AGPL
- * @copyright (c) 2010 Lazlo Westerhof - Netherlands
- *
- **/
-
-
-CREATE SEQUENCE calendar_ids
-    INCREMENT BY 1
-    NO MAXVALUE
-    NO MINVALUE
-    CACHE 1;
-
-CREATE TABLE calendars (
-    calendar_id integer DEFAULT nextval('calendar_ids'::regclass) NOT NULL,
-    user_id integer NOT NULL
-        REFERENCES users (user_id) ON UPDATE CASCADE ON DELETE CASCADE,
-    name varchar(255) NOT NULL,
-    color varchar(8) NOT NULL,
-    showalarms smallint NOT NULL DEFAULT 1,
-    PRIMARY KEY (calendar_id)
-);
-
-CREATE INDEX calendars_user_id_idx ON calendars (user_id, name);
-
-
-CREATE SEQUENCE event_ids
-    INCREMENT BY 1
-    NO MAXVALUE
-    NO MINVALUE
-    CACHE 1;
-
-CREATE TABLE events (
-    event_id integer DEFAULT nextval('event_ids'::regclass) NOT NULL,
-    calendar_id integer NOT NULL
-        REFERENCES calendars (calendar_id) ON UPDATE CASCADE ON DELETE CASCADE,
-    recurrence_id integer NOT NULL DEFAULT 0,
-    uid varchar(255) NOT NULL DEFAULT '',
-    created timestamp without time zone DEFAULT now() NOT NULL,
-    changed timestamp without time zone DEFAULT now(),
-    sequence integer NOT NULL DEFAULT 0,
-    "start" timestamp without time zone DEFAULT now() NOT NULL,
-    "end" timestamp without time zone DEFAULT now() NOT NULL,
-    recurrence varchar(255) DEFAULT NULL,
-    title character varying(255) NOT NULL,
-    description text NOT NULL,
-    location character varying(255) NOT NULL,
-    categories character varying(255) NOT NULL,
-    all_day smallint NOT NULL DEFAULT 0,
-    free_busy smallint NOT NULL DEFAULT 0,
-    priority smallint NOT NULL DEFAULT 0,
-    sensitivity smallint NOT NULL DEFAULT 0,
-    alarms varchar(255) DEFAULT NULL,
-    attendees text DEFAULT NULL,
-    notifyat timestamp without time zone DEFAULT NULL,
-    PRIMARY KEY (event_id)
-);
-
-CREATE INDEX events_calendar_id_notifyat_idx ON events (calendar_id, notifyat);
-CREATE INDEX events_uid_idx ON events (uid);
-CREATE INDEX events_recurrence_id_idx ON events (recurrence_id);
-
-
-CREATE SEQUENCE attachment_ids
-    INCREMENT BY 1
-    NO MAXVALUE
-    NO MINVALUE
-    CACHE 1;
-
-CREATE TABLE attachments (
-    attachment_id integer DEFAULT nextval('attachment_ids'::regclass) NOT NULL,
-    event_id integer NOT NULL
-        REFERENCES events (event_id) ON DELETE CASCADE ON UPDATE CASCADE,
-    filename varchar(255) NOT NULL DEFAULT '',
-    mimetype varchar(255) NOT NULL DEFAULT '',
-    size integer NOT NULL DEFAULT 0,
-    data text NOT NULL DEFAULT '',
-    PRIMARY KEY (attachment_id)
-);
-
-CREATE INDEX attachments_user_id_idx ON attachments (event_id);
-
-
-CREATE TABLE itipinvitations (
-    token varchar(64) NOT NULL,
-    event_uid varchar(255) NOT NULL,
-    user_id integer NOT NULL
-        REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
-    event TEXT NOT NULL,
-    expires timestamp without time zone DEFAULT NULL,
-    cancelled smallint NOT NULL DEFAULT 0,
-    PRIMARY KEY (token)
-);
-
-CREATE INDEX itipinvitations_user_id_event_uid_idx ON itipinvitations (user_id, event_uid);
diff --git a/plugins/calendar/drivers/database/sql/sqlite.sql b/plugins/calendar/drivers/database/sql/sqlite.sql
deleted file mode 100644
index 1debe54..0000000
--- a/plugins/calendar/drivers/database/sql/sqlite.sql
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * Roundcube Calendar
- *
- * Plugin to add a calendar to Roundcube.
- *
- * @version @package_version@
- * @author Lazlo Westerhof
- * @author Thomas Bruederli
- * @author Albert Lee
- * @url http://rc-calendar.lazlo.me
- * @licence GNU AGPL
- * @copyright (c) 2010 Lazlo Westerhof - Netherlands
- *
- **/
-
-CREATE TABLE calendars (
-  calendar_id integer NOT NULL PRIMARY KEY,
-  user_id integer NOT NULL default '0',
-  name varchar(255) NOT NULL default '',
-  color varchar(255) NOT NULL default '',
-  showalarms tinyint(1) NOT NULL default '1',
-  CONSTRAINT fk_calendars_user_id FOREIGN KEY (user_id)
-    REFERENCES users(user_id)
-);
-
-CREATE TABLE events (
-  event_id integer NOT NULL PRIMARY KEY,
-  calendar_id integer NOT NULL default '0',
-  recurrence_id integer NOT NULL default '0',
-  uid varchar(255) NOT NULL default '',
-  created datetime NOT NULL default '1000-01-01 00:00:00',
-  changed datetime NOT NULL default '1000-01-01 00:00:00',
-  sequence integer NOT NULL default '0',
-  start datetime NOT NULL default '1000-01-01 00:00:00',
-  end datetime NOT NULL default '1000-01-01 00:00:00',
-  recurrence varchar(255) default NULL,
-  title varchar(255) NOT NULL,
-  description text NOT NULL,
-  location varchar(255) NOT NULL default '',
-  categories varchar(255) NOT NULL default '',
-  all_day tinyint(1) NOT NULL default '0',
-  free_busy tinyint(1) NOT NULL default '0',
-  priority tinyint(1) NOT NULL default '0',
-  sensitivity tinyint(1) NOT NULL default '0',
-  alarms varchar(255) default NULL,
-  attendees text default NULL,
-  notifyat datetime default NULL,
-  CONSTRAINT fk_events_calendar_id FOREIGN KEY (calendar_id)
-    REFERENCES calendars(calendar_id)
-);
-
-CREATE TABLE attachments (
-  attachment_id integer NOT NULL PRIMARY KEY,
-  event_id integer NOT NULL default '0',
-  filename varchar(255) NOT NULL default '',
-  mimetype varchar(255) NOT NULL default '',
-  size integer NOT NULL default '0',
-  data text NOT NULL default '',
-  CONSTRAINT fk_attachment_event_id FOREIGN KEY (event_id)
-    REFERENCES events(event_id)
-);
-
-CREATE TABLE itipinvitations (
-  token varchar(64) NOT NULL PRIMARY KEY,
-  event_uid varchar(255) NOT NULL,
-  user_id integer NOT NULL default '0',
-  event text NOT NULL,
-  expires datetime NOT NULL default '1000-01-01 00:00:00',
-  cancelled tinyint(1) NOT NULL default '0',
-  CONSTRAINT fk_itipinvitations_user_id FOREIGN KEY (user_id)
-    REFERENCES users(user_id)
-);
-
-CREATE INDEX ix_itipinvitations_uid ON itipinvitations(user_id, event_uid);
-
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql.initial.sql b/plugins/calendar/drivers/kolab/SQL/mysql.initial.sql
new file mode 100644
index 0000000..9c90433
--- /dev/null
+++ b/plugins/calendar/drivers/kolab/SQL/mysql.initial.sql
@@ -0,0 +1,32 @@
+/**
+ * Roundcube Calendar Kolab backend
+ *
+ * @version @package_version@
+ * @author Thomas Bruederli
+ * @licence GNU AGPL
+ **/
+
+CREATE TABLE IF NOT EXISTS `kolab_alarms` (
+  `event_id` VARCHAR(255) NOT NULL,
+  `user_id` int(10) UNSIGNED NOT NULL,
+  `notifyat` DATETIME DEFAULT NULL,
+  `dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY(`event_id`),
+  CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */;
+
+CREATE TABLE IF NOT EXISTS `itipinvitations` (
+  `token` VARCHAR(64) NOT NULL,
+  `event_uid` VARCHAR(255) NOT NULL,
+  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
+  `event` TEXT NOT NULL,
+  `expires` DATETIME DEFAULT NULL,
+  `cancelled` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY(`token`),
+  INDEX `uid_idx` (`event_uid`,`user_id`),
+  CONSTRAINT `fk_itipinvitations_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+INSERT INTO system (name, value) VALUES ('calendar-kolab-version', '2013011000.sql');
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql.sql b/plugins/calendar/drivers/kolab/SQL/mysql.sql
deleted file mode 100644
index 7a93d0a..0000000
--- a/plugins/calendar/drivers/kolab/SQL/mysql.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Roundcube Calendar Kolab backend
- *
- * @version @package_version@
- * @author Thomas Bruederli
- * @licence GNU AGPL
- **/
-
-CREATE TABLE IF NOT EXISTS `kolab_alarms` (
-  `event_id` VARCHAR(255) NOT NULL,
-  `user_id` int(10) UNSIGNED NOT NULL,
-  `notifyat` DATETIME DEFAULT NULL,
-  `dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
-  PRIMARY KEY(`event_id`),
-  CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */;
-
-CREATE TABLE IF NOT EXISTS `itipinvitations` (
-  `token` VARCHAR(64) NOT NULL,
-  `event_uid` VARCHAR(255) NOT NULL,
-  `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
-  `event` TEXT NOT NULL,
-  `expires` DATETIME DEFAULT NULL,
-  `cancelled` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
-  PRIMARY KEY(`token`),
-  INDEX `uid_idx` (`event_uid`,`user_id`),
-  CONSTRAINT `fk_itipinvitations_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
-
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql.upgrade-0.7.sql b/plugins/calendar/drivers/kolab/SQL/mysql.upgrade-0.7.sql
deleted file mode 100644
index da567b6..0000000
--- a/plugins/calendar/drivers/kolab/SQL/mysql.upgrade-0.7.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Kolab backend SQL updates
- **/
-
-DROP TABLE IF EXISTS `kolab_alarms`;
-
-CREATE TABLE `kolab_alarms` (
-  `event_id` VARCHAR(255) NOT NULL,
-  `user_id` int(10) UNSIGNED NOT NULL,
-  `notifyat` DATETIME DEFAULT NULL,
-  `dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
-  PRIMARY KEY(`event_id`),
-  CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=INNODB */;
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql/2012080600.sql b/plugins/calendar/drivers/kolab/SQL/mysql/2012080600.sql
new file mode 100644
index 0000000..5c9f1ae
--- /dev/null
+++ b/plugins/calendar/drivers/kolab/SQL/mysql/2012080600.sql
@@ -0,0 +1,11 @@
+DROP TABLE IF EXISTS `kolab_alarms`;
+
+CREATE TABLE `kolab_alarms` (
+  `event_id` VARCHAR(255) NOT NULL,
+  `user_id` int(10) UNSIGNED NOT NULL,
+  `notifyat` DATETIME DEFAULT NULL,
+  `dismissed` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY(`event_id`),
+  CONSTRAINT `fk_kolab_alarms_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=INNODB */;
diff --git a/plugins/calendar/drivers/kolab/SQL/mysql/2013011000.sql b/plugins/calendar/drivers/kolab/SQL/mysql/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/calendar/drivers/kolab/SQL/mysql/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file
diff --git a/plugins/libkolab/README b/plugins/libkolab/README
index 7631220..2f94839 100644
--- a/plugins/libkolab/README
+++ b/plugins/libkolab/README
@@ -15,15 +15,11 @@ REQUIREMENTS
 * PEAR: HTTP/Request2
 * PEAR: Net/URL2
 
-* Optional for old format support:
-  Horde Kolab_Format package and all of its dependencies
-  which are at least Horde_(Browser,DOM,NLS,String,Utils)
-
 
 INSTALLATION
 ------------
 To use local cache you need to create a dedicated table in Roundcube's database.
-To do so, execute the SQL commands in SQL/<yourdatabase>.sql
+To do so, execute the SQL commands in SQL/<yourdatabase>.initial.sql
 
 
 CONFIGURATION
diff --git a/plugins/libkolab/SQL/mysql.initial.sql b/plugins/libkolab/SQL/mysql.initial.sql
new file mode 100644
index 0000000..8603bc8
--- /dev/null
+++ b/plugins/libkolab/SQL/mysql.initial.sql
@@ -0,0 +1,27 @@
+/**
+ * libkolab database schema
+ *
+ * @version @package_version@
+ * @author Thomas Bruederli
+ * @licence GNU AGPL
+ **/
+
+DROP TABLE IF EXISTS `kolab_cache`;
+
+CREATE TABLE `kolab_cache` (
+  `resource` VARCHAR(255) CHARACTER SET ascii NOT NULL,
+  `type` VARCHAR(32) CHARACTER SET ascii NOT NULL,
+  `msguid` BIGINT UNSIGNED NOT NULL,
+  `uid` VARCHAR(128) CHARACTER SET ascii NOT NULL,
+  `created` DATETIME DEFAULT NULL,
+  `changed` DATETIME DEFAULT NULL,
+  `data` TEXT NOT NULL,
+  `xml` TEXT NOT NULL,
+  `dtstart` DATETIME,
+  `dtend` DATETIME,
+  `tags` VARCHAR(255) NOT NULL,
+  `words` TEXT NOT NULL,
+  PRIMARY KEY(`resource`,`type`,`msguid`)
+) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+INSERT INTO `system` (`name`, `value`) VALUES ('libkolab-version', '2013011000');
diff --git a/plugins/libkolab/SQL/mysql.sql b/plugins/libkolab/SQL/mysql.sql
deleted file mode 100644
index 244ab3d..0000000
--- a/plugins/libkolab/SQL/mysql.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * libkolab database schema
- *
- * @version @package_version@
- * @author Thomas Bruederli
- * @licence GNU AGPL
- **/
-
-DROP TABLE IF EXISTS `kolab_cache`;
-
-CREATE TABLE `kolab_cache` (
-  `resource` VARCHAR(255) CHARACTER SET ascii NOT NULL,
-  `type` VARCHAR(32) CHARACTER SET ascii NOT NULL,
-  `msguid` BIGINT UNSIGNED NOT NULL,
-  `uid` VARCHAR(128) CHARACTER SET ascii NOT NULL,
-  `created` DATETIME DEFAULT NULL,
-  `changed` DATETIME DEFAULT NULL,
-  `data` TEXT NOT NULL,
-  `xml` TEXT NOT NULL,
-  `dtstart` DATETIME,
-  `dtend` DATETIME,
-  `tags` VARCHAR(255) NOT NULL,
-  `words` TEXT NOT NULL,
-  PRIMARY KEY(`resource`,`type`,`msguid`)
-) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
diff --git a/plugins/libkolab/SQL/mysql/2013011000.sql b/plugins/libkolab/SQL/mysql/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/libkolab/SQL/mysql/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file
diff --git a/plugins/libkolab/UPGRADING b/plugins/libkolab/UPGRADING
new file mode 100644
index 0000000..e7f04d8
--- /dev/null
+++ b/plugins/libkolab/UPGRADING
@@ -0,0 +1,9 @@
+UPGRADING instructions
+======================
+
+To update database schema please run in Roundcube bin/ directory:
+
+updatedb.sh --package=libkolab --version=<version> --dir=../plugins/libkolab/SQL
+
+[*] Replace <version> with Roundcube version e.g. 0.7.3
+[*] Roundcube should be upgraded before plugin upgrades
diff --git a/plugins/tasklist/UPGRADING b/plugins/tasklist/UPGRADING
new file mode 100644
index 0000000..41343fb
--- /dev/null
+++ b/plugins/tasklist/UPGRADING
@@ -0,0 +1,17 @@
+UPGRADING instructions
+======================
+
+To update database schema, depending on the driver you're using,
+please run in Roundcube bin/ directory:
+
+updatedb.sh --package=tasklist-<driver> --version=<version> \
+  --dir=../plugins/tasklist/drivers/<driver>/SQL
+
+[*] Replace <driver> with "database" or "kolab" (without quotes)
+[*] Replace <version> with Roundcube version e.g. 0.7.3
+[*] Roundcube should be upgraded before plugin upgrades
+
+Example:
+
+updatedb.sh --package=tasklist-database --version=0.9-beta \
+  --dir=../plugins/tasklist/drivers/database/SQL
diff --git a/plugins/tasklist/drivers/database/SQL/mysql.initial.sql b/plugins/tasklist/drivers/database/SQL/mysql.initial.sql
new file mode 100644
index 0000000..5e71788
--- /dev/null
+++ b/plugins/tasklist/drivers/database/SQL/mysql.initial.sql
@@ -0,0 +1,51 @@
+/**
+ * Roundcube Tasklist plugin database
+ *
+ * @version @package_version@
+ * @author Thomas Bruederli
+ * @licence GNU AGPL
+ * @copyright (C) 2012, Kolab Systems AG
+ */
+
+CREATE TABLE `tasklists` (
+  `tasklist_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `user_id` int(10) unsigned NOT NULL,
+  `name` varchar(255) NOT NULL,
+  `color` varchar(8) NOT NULL,
+  `showalarms` tinyint(2) unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`tasklist_id`),
+  KEY `user_id` (`user_id`),
+  CONSTRAINT `fk_tasklist_user_id` FOREIGN KEY (`user_id`)
+    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+CREATE TABLE `tasks` (
+  `task_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `tasklist_id` int(10) unsigned NOT NULL,
+  `parent_id` int(10) unsigned DEFAULT NULL,
+  `uid` varchar(255) NOT NULL,
+  `created` datetime NOT NULL,
+  `changed` datetime NOT NULL,
+  `del` tinyint(1) unsigned NOT NULL DEFAULT '0',
+  `title` varchar(255) NOT NULL,
+  `description` text,
+  `tags` text,
+  `date` varchar(10) DEFAULT NULL,
+  `time` varchar(5) DEFAULT NULL,
+  `startdate` varchar(10) DEFAULT NULL,
+  `starttime` varchar(5) DEFAULT NULL,
+  `flagged` tinyint(4) NOT NULL DEFAULT '0',
+  `complete` float NOT NULL DEFAULT '0',
+  `alarms` varchar(255) DEFAULT NULL,
+  `recurrence` varchar(255) DEFAULT NULL,
+  `organizer` varchar(255) DEFAULT NULL,
+  `attendees` text,
+  `notify` datetime DEFAULT NULL,
+  PRIMARY KEY (`task_id`),
+  KEY `tasklisting` (`tasklist_id`,`del`,`date`),
+  KEY `uid` (`uid`),
+  CONSTRAINT `fk_tasks_tasklist_id` FOREIGN KEY (`tasklist_id`)
+    REFERENCES `tasklists`(`tasklist_id`) ON DELETE CASCADE ON UPDATE CASCADE
+) /*!40000 ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci */;
+
+INSERT INTO `system` (`name`, `value`) VALUES ('tasklist-database-version', '2013011000');
diff --git a/plugins/tasklist/drivers/database/SQL/mysql.sql b/plugins/tasklist/drivers/database/SQL/mysql.sql
deleted file mode 100644
index b6fd2ce..0000000
--- a/plugins/tasklist/drivers/database/SQL/mysql.sql
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Roundcube Tasklist plugin database
- *
- * @version @package_version@
- * @author Thomas Bruederli
- * @licence GNU AGPL
- * @copyright (C) 2012, Kolab Systems AG
- */
-
-CREATE TABLE `tasklists` (
-  `tasklist_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `user_id` int(10) unsigned NOT NULL,
-  `name` varchar(255) NOT NULL,
-  `color` varchar(8) NOT NULL,
-  `showalarms` tinyint(2) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`tasklist_id`),
-  KEY `user_id` (`user_id`),
-  CONSTRAINT `fk_tasklist_user_id` FOREIGN KEY (`user_id`)
-    REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci */;
-
-CREATE TABLE `tasks` (
-  `task_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `tasklist_id` int(10) unsigned NOT NULL,
-  `parent_id` int(10) unsigned DEFAULT NULL,
-  `uid` varchar(255) NOT NULL,
-  `created` datetime NOT NULL,
-  `changed` datetime NOT NULL,
-  `del` tinyint(1) unsigned NOT NULL DEFAULT '0',
-  `title` varchar(255) NOT NULL,
-  `description` text,
-  `tags` text,
-  `date` varchar(10) DEFAULT NULL,
-  `time` varchar(5) DEFAULT NULL,
-  `startdate` varchar(10) DEFAULT NULL,
-  `starttime` varchar(5) DEFAULT NULL,
-  `flagged` tinyint(4) NOT NULL DEFAULT '0',
-  `complete` float NOT NULL DEFAULT '0',
-  `alarms` varchar(255) DEFAULT NULL,
-  `recurrence` varchar(255) DEFAULT NULL,
-  `organizer` varchar(255) DEFAULT NULL,
-  `attendees` text,
-  `notify` datetime DEFAULT NULL,
-  PRIMARY KEY (`task_id`),
-  KEY `tasklisting` (`tasklist_id`,`del`,`date`),
-  KEY `uid` (`uid`),
-  CONSTRAINT `fk_tasks_tasklist_id` FOREIGN KEY (`tasklist_id`)
-    REFERENCES `tasklists`(`tasklist_id`) ON DELETE CASCADE ON UPDATE CASCADE
-) /*!40000 ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci */;
diff --git a/plugins/tasklist/drivers/database/SQL/mysql/2013011000.sql b/plugins/tasklist/drivers/database/SQL/mysql/2013011000.sql
new file mode 100644
index 0000000..fe6741a
--- /dev/null
+++ b/plugins/tasklist/drivers/database/SQL/mysql/2013011000.sql
@@ -0,0 +1 @@
+-- empty
\ No newline at end of file





More information about the commits mailing list