diff --git a/src/setup.php b/src/setup.php
index aa1a56a..eab0629 100644
--- a/src/setup.php
+++ b/src/setup.php
@@ -256,7 +256,7 @@ elseif($ver == $lastVer)
}
else
{
- if(!in_array($ver, array('1.3.0','1.3.1','1.4'))) {
+ if(!in_array($ver, array('1.4'))) {
exitMessage("Can not update. Unsupported database version ($ver).");
}
if(!isset($_POST['update'])) {
@@ -271,17 +271,6 @@ else
{
update_14_17($db, $dbtype);
}
- elseif ($ver == '1.3.1')
- {
- update_131_14($db, $dbtype);
- update_14_17($db, $dbtype);
- }
- elseif ($ver == '1.3.0')
- {
- update_130_131($db, $dbtype);
- update_131_14($db, $dbtype);
- update_14_17($db, $dbtype);
- }
}
echo "Done
Attention! Delete this file for security reasons.";
printFooter();
@@ -403,291 +392,6 @@ function myExceptionHandler($e)
}
-### 1.3.0 to 1.3.1 ##########
-function update_130_131(Database_Abstract $db, $dbtype)
-{
- $tz = null;
- if(isset($_POST['tz'])) {
- $tz = (int)$_POST['tz'];
- if($tz<-720 || $tz>720 || $tz%30!=0) $tz = null;
- else $tz = $tz*60;
- }
- if(is_null($tz)) $tz = (int)date('Z');
-
-# if($dbtype=='sqlite') {
-# $temp_store_pragma = $db->sq("PRAGMA temp_store");
-# $db->ex("PRAGMA temp_store = MEMORY");
-# }
-
- $db->ex("BEGIN");
- if($dbtype=='mysql')
- {
- $db->ex("ALTER TABLE lists ADD `ow` INT NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD `d_created` INT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD `sorting` TINYINT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD `published` TINYINT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD `taskview` INT UNSIGNED NOT NULL default 0");
-
- $db->ex("ALTER TABLE todolist ADD `d_created` INT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE todolist ADD `d_completed` INT UNSIGNED NOT NULL default 0");
-
- # convert task date...
- $db_session_timezone = $db->sq("SELECT @@session.time_zone");;
- $db->ex("SET time_zone='+0:00'");
- $tz = -1*$tz;
- $db->ex("UPDATE todolist SET d_created = UNIX_TIMESTAMP(d) + TIME_TO_SEC(TIMEDIFF(NOW(),UTC_TIMESTAMP())) ".($tz<0?'-':'+').abs($tz));
- $db->ex("SET time_zone=?", array($db_session_timezone));
-
- $db->ex("ALTER TABLE todolist DROP `d`");
- }
- else
- {
- $db->ex("ALTER TABLE lists ADD ow INTEGER NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD d_created INTEGER UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD sorting TINYINT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD published TINYINT UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE lists ADD taskview INTEGER UNSIGNED NOT NULL default 0");
-
- $db->ex("ALTER TABLE todolist ADD d_created INTEGER UNSIGNED NOT NULL default 0");
- $db->ex("ALTER TABLE todolist ADD d_completed INTEGER UNSIGNED NOT NULL default 0");
-
- # convert task date to timestamp
- $tz = -1*$tz;
- $db->ex("UPDATE todolist SET d_created=strftime('%s',d) ".($tz<0?'-':'+').abs($tz));
-
- # drop unnecessary field 'd'
- $db->ex(
-"CREATE TEMPORARY TABLE todolist_backup (
- id INTEGER,
- list_id INTEGER UNSIGNED NOT NULL default 0,
- d_created INTEGER UNSIGNED NOT NULL default 0,
- d_completed INTEGER UNSIGNED NOT NULL default 0,
- compl TINYINT UNSIGNED NOT NULL default 0,
- title VARCHAR(250) NOT NULL,
- note TEXT,
- prio TINYINT NOT NULL default 0,
- ow INT NOT NULL default 0,
- tags VARCHAR(250) NOT NULL default '',
- duedate DATE default NULL
-) ");
- $db->ex("INSERT INTO todolist_backup (id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate) ".
- " SELECT id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate FROM todolist");
- $db->ex("DROP TABLE todolist");
-
- $db->ex(
-"CREATE TABLE todolist (
- id INTEGER PRIMARY KEY,
- list_id INTEGER UNSIGNED NOT NULL default 0,
- d_created INTEGER UNSIGNED NOT NULL default 0,
- d_completed INTEGER UNSIGNED NOT NULL default 0,
- compl TINYINT UNSIGNED NOT NULL default 0,
- title VARCHAR(250) NOT NULL,
- note TEXT,
- prio TINYINT NOT NULL default 0,
- ow INT NOT NULL default 0,
- tags VARCHAR(250) NOT NULL default '',
- duedate DATE default NULL
-) ");
- $db->ex("CREATE INDEX list_id ON todolist (list_id)");
-
- $db->ex("INSERT INTO todolist (id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate) ".
- " SELECT id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate FROM todolist_backup");
- $db->ex("DROP TABLE todolist_backup");
- }
-
- $sort = 0;
- if(isset($_COOKIE['sort']) && $_COOKIE['sort'] != ''){
- $sort = (int)$_COOKIE['sort'];
- if($sort < 0 || $sort > 2) $sort = 0;
- }
-
- if(Config::get('password') != '' && Config::get('allowread')) $published = 1;
- else $published = 0;
-
- $db->ex("UPDATE lists SET d_created=?, sorting=?, published=?", array(time(), $sort, $published));
- $db->ex("UPDATE todolist SET d_completed=d_created WHERE compl=1");
-
- $db->ex("COMMIT");
-
-# if($dbtype=='sqlite') {
-# $db->ex("PRAGMA temp_store = $temp_store_pragma");
-# }
-}
-
-### end of 1.3.0 to 1.3.1 ##########
-
-### update v1.3.1 to v1.4 ##########
-function update_131_14(Database_Abstract $db, $dbtype)
-{
- $db->ex("BEGIN");
- if($dbtype=='mysql')
- {
- $db->ex("DROP TABLE {$db->prefix}tags");
- $db->ex(
- "CREATE TABLE {$db->prefix}tags (
- `id` INT UNSIGNED NOT NULL auto_increment,
- `name` VARCHAR(50) NOT NULL,
- PRIMARY KEY(`id`),
- UNIQUE KEY `name` (`name`)
- ) CHARSET=utf8 ");
-
- $db->ex("ALTER TABLE {$db->prefix}todolist CHANGE `tags` `tags` VARCHAR(600) NOT NULL default ''");
- $db->ex("ALTER TABLE {$db->prefix}todolist ADD `tags_ids` VARCHAR(250) NOT NULL default ''");
- $db->ex("ALTER TABLE {$db->prefix}todolist ADD `uuid` CHAR(36) NOT NULL default ''");
- $db->ex("ALTER TABLE {$db->prefix}todolist ADD `d_edited` INT UNSIGNED NOT NULL default 0");
-
- $db->ex("ALTER TABLE {$db->prefix}tag2task ADD `list_id` INT UNSIGNED NOT NULL");
- $db->ex("ALTER TABLE {$db->prefix}tag2task ADD KEY(`list_id`)");
-
- $db->ex("ALTER TABLE {$db->prefix}lists ADD `uuid` CHAR(36) NOT NULL default ''");
- $db->ex("ALTER TABLE {$db->prefix}lists ADD `d_edited` INT UNSIGNED NOT NULL default 0");
-
- }
- else #sqlite
- {
- # changes in tags table: fully new
- $db->ex("DROP TABLE {$db->prefix}tags"); //index will be deleted too
- $db->ex(
- "CREATE TABLE {$db->prefix}tags (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- name VARCHAR(50) NOT NULL COLLATE NOCASE
- ) ");
- $db->ex("CREATE UNIQUE INDEX tags_name ON {$db->prefix}tags (name COLLATE NOCASE)");
-
- # changes in todolist table: uuid, d_edited, tags, tags_ids
- $db->ex(
- "CREATE TABLE todolist_new (
- id INTEGER PRIMARY KEY,
- uuid CHAR(36) NOT NULL default '',
- list_id INTEGER UNSIGNED NOT NULL default 0,
- d_created INTEGER UNSIGNED NOT NULL default 0,
- d_completed INTEGER UNSIGNED NOT NULL default 0,
- d_edited INTEGER UNSIGNED NOT NULL default 0,
- compl TINYINT UNSIGNED NOT NULL default 0,
- title VARCHAR(250) NOT NULL,
- note TEXT,
- prio TINYINT NOT NULL default 0,
- ow INTEGER NOT NULL default 0,
- tags VARCHAR(600) NOT NULL default '',
- tags_ids VARCHAR(250) NOT NULL default '',
- duedate DATE default NULL
- ) ");
- $db->ex("INSERT INTO todolist_new (id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate)".
- " SELECT id,list_id,d_created,d_completed,compl,title,note,prio,ow,tags,duedate FROM {$db->prefix}todolist");
- $db->ex("DROP TABLE {$db->prefix}todolist");
- $db->ex("ALTER TABLE todolist_new RENAME TO {$db->prefix}todolist");
- $db->ex("CREATE INDEX todo_list_id ON {$db->prefix}todolist (list_id)"); #1st index of 2
-
- # changes in tag2task table: new column and index, new names of indexes
- $db->ex("ALTER TABLE {$db->prefix}tag2task ADD list_id INTEGER NOT NULL default 0");
- $db->ex("DROP INDEX tag_id");
- $db->ex("DROP INDEX task_id ");
- $db->ex("CREATE INDEX tag2task_tag_id ON {$db->prefix}tag2task (tag_id)");
- $db->ex("CREATE INDEX tag2task_task_id ON {$db->prefix}tag2task (task_id)");
- $db->ex("CREATE INDEX tag2task_list_id ON {$db->prefix}tag2task (list_id)");
-
- # changes in lists table: uuid, d_edited
- $db->ex("ALTER TABLE {$db->prefix}lists ADD uuid CHAR(36) NOT NULL default ''");
- $db->ex("ALTER TABLE {$db->prefix}lists ADD d_edited INTEGER UNSIGNED NOT NULL default 0");
-
- }
-
- # recreate tags
- $db->ex("DELETE FROM {$db->prefix}tag2task");
-
- $q = $db->dq("SELECT id,list_id,tags FROM {$db->prefix}todolist WHERE tags != ''");
- $ar = array();
- while($r = $q->fetchAssoc()) $ar[] = $r;
- foreach($ar as $r)
- {
- $aTags = v14_prepareTags($r['tags']);
- if($aTags)
- {
- v14_addTaskTags($r['id'], $aTags['ids'], $r['list_id']);
- $db->ex("UPDATE {$db->prefix}todolist SET tags=?,tags_ids=? WHERE id=".$r['id'],
- array(implode(',',$aTags['tags']), implode(',',$aTags['ids'])) );
- }
- }
-
- # fix bug with empty lists.d_created
- $db->ex("UPDATE {$db->prefix}lists SET d_created=?", time());
-
- # init d_edited
- $db->ex("UPDATE {$db->prefix}todolist SET d_edited=d_created");
- $db->ex("UPDATE {$db->prefix}todolist SET d_edited=d_completed WHERE d_completed > d_edited");
- $db->ex("UPDATE {$db->prefix}lists SET d_edited=d_created");
-
- # add UUID
- $q = $db->dq("SELECT id FROM {$db->prefix}todolist");
- $ar = array();
- while($r = $q->fetchAssoc()) $ar[] = $r;
- foreach($ar as $r) {
- $db->ex("UPDATE {$db->prefix}todolist SET uuid=? WHERE id=".$r['id'], array(generateUUID()) );
- }
-
- $q = $db->dq("SELECT id FROM {$db->prefix}lists");
- $ar = array();
- while($r = $q->fetchAssoc()) $ar[] = $r;
- foreach($ar as $r) {
- $db->ex("UPDATE {$db->prefix}lists SET uuid=? WHERE id=".$r['id'], array(generateUUID()) );
- }
-
- # create unique indexes for UUID
- if($dbtype=='mysql')
- {
- $db->ex("ALTER TABLE {$db->prefix}lists ADD UNIQUE KEY (`uuid`)");
- $db->ex("ALTER TABLE {$db->prefix}todolist ADD UNIQUE KEY (`uuid`)");
- }
- else
- {
- $db->ex("CREATE UNIQUE INDEX lists_uuid ON {$db->prefix}lists (uuid)");
- $db->ex("CREATE UNIQUE INDEX todo_uuid ON {$db->prefix}todolist (uuid)");
- }
-
- $db->ex("COMMIT");
-}
-
-function v14_prepareTags($tagsStr)
-{
- $tags = explode(',', $tagsStr);
- if(!$tags) return 0;
-
- $aTags = array('tags'=>array(), 'ids'=>array());
- foreach($tags as $tag)
- {
- $tag = str_replace(array('"',"'",'<','>','&','/','\\','^'),'',trim($tag));
- if($tag == '') continue;
-
- $aTag = v14_getOrCreateTag($tag);
- if($aTag && !in_array($aTag['id'], $aTags['ids'])) {
- $aTags['tags'][] = $aTag['name'];
- $aTags['ids'][] = $aTag['id'];
- }
- }
- return $aTags;
-}
-
-function v14_getOrCreateTag($name)
-{
- global $db;
- $tagId = $db->sq("SELECT id FROM {$db->prefix}tags WHERE name=?", array($name));
- if($tagId) return array('id'=>$tagId, 'name'=>$name);
-
- $db->ex("INSERT INTO {$db->prefix}tags (name) VALUES (?)", array($name));
- return array('id'=>$db->lastInsertId(), 'name'=>$name);
-}
-
-function v14_addTaskTags($taskId, $tagIds, $listId)
-{
- global $db;
- if(!$tagIds) return;
- foreach($tagIds as $tagId)
- {
- $db->ex("INSERT INTO {$db->prefix}tag2task (task_id,tag_id,list_id) VALUES (?,?,?)", array($taskId,$tagId,$listId));
- }
-}
-### end of 1.4 #####
-
### update v1.4 to v1.7 ##########
function update_14_17(Database_Abstract $db, $dbtype)
{