home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Freeware / Programare / dotproject / db / upgrade_022_to_100.sql < prev    next >
Text File  |  2003-09-03  |  14KB  |  390 lines

  1. # $Id: upgrade_022_to_100.sql,v 1.20 2003/09/03 00:31:09 ajdonnison Exp $
  2. # dotproject_022_to_023.sql
  3. #     Database Schema Update Script
  4. #
  5. # CHANGE LOG
  6. #     creation by Andrew Eddie (25 Oct 2002) pre-alpha
  7. #     updated by J. Christopher Pereira (29 Nov 2002)
  8. #
  9. # Use this schema for updating version 022 to 023
  10. #
  11. # WARNING:
  12. # This file may be in a state of development flux at the moment.
  13. # Watch out for changes (see above)
  14. #
  15.  
  16. #
  17. # ATTENTION:
  18. # The following tables have been dropped from the schema
  19. # Uncomment the lines to drop them if desired
  20. #
  21.  
  22. #DROP TABLE `localization`;
  23. #DROP TABLE `eventlog`;
  24. #DROP TABLE `attendees`;
  25. #DROP TABLE `attendees`;
  26.  
  27. #
  28. # Structure for new table 'departments'
  29. #
  30.  
  31. CREATE TABLE departments (
  32.   dept_id int(10) unsigned NOT NULL auto_increment,
  33.   dept_parent int(10) unsigned NOT NULL default '0',
  34.   dept_company int(10) unsigned NOT NULL default '0',
  35.   dept_name tinytext NOT NULL,
  36.   dept_phone varchar(30) default NULL,
  37.   dept_fax varchar(30) default NULL,
  38.   dept_address1 varchar(30) default NULL,
  39.   dept_address2 varchar(30) default NULL,
  40.   dept_city varchar(30) default NULL,
  41.   dept_state varchar(30) default NULL,
  42.   dept_zip varchar(11) default NULL,
  43.   dept_url varchar(25) default NULL,
  44.   dept_desc mediumtext,
  45.   dept_owner int(10) unsigned NOT NULL default '0',
  46.   PRIMARY KEY  (dept_id),
  47.   UNIQUE KEY dept_id (dept_id),
  48.   KEY dept_id_2 (dept_id)
  49. ) TYPE=MyISAM COMMENT='Department heirarchy under a company';
  50.  
  51. #
  52. # Table structure for table 'forum_watch'
  53. #
  54.  
  55. CREATE TABLE forum_watch (
  56.   watch_user int(10) unsigned NOT NULL default '0',
  57.   watch_forum int(10) unsigned default NULL,
  58.   watch_topic int(10) unsigned default NULL
  59. ) TYPE=MyISAM COMMENT='Links users to the forums/messages they are watching';
  60.  
  61. #
  62. # Addition to the forums table to store the id of the last post
  63. # This will mean the forum_last_date is deprecated
  64. #
  65. ALTER TABLE `forums` ADD `forum_last_id` INT UNSIGNED DEFAULT "0" NOT NULL AFTER `forum_last_date`;
  66.  
  67. #
  68. # Addition to the PROJECTS table to associate a project to a company department
  69. #
  70. ALTER TABLE `projects` ADD `project_department` INT UNSIGNED DEFAULT "0" NOT NULL AFTER `project_company`;
  71.  
  72. #
  73. # Minor change to the TASKS table to allow for part hours
  74. #
  75. ALTER TABLE `tasks` CHANGE `task_hours_worked` `task_hours_worked` FLOAT DEFAULT "0";
  76.  
  77. #
  78. # Change to the USERS table for the new departments module
  79. # and allow user defined user types
  80. #
  81. ALTER TABLE `users` ADD `user_department` INT UNSIGNED DEFAULT "0" NOT NULL AFTER `user_company`;
  82. ALTER TABLE `users` CHANGE `user_type` `user_type` TINYINT UNSIGNED DEFAULT "0" NOT NULL;
  83.  
  84. #
  85. # Events table
  86. #
  87. # The event_project field deprecates the event_parent field
  88. # event_parent is maintained for the moment to prevent errors
  89. #
  90. ALTER TABLE `events` ADD `event_owner` INT UNSIGNED DEFAULT "0";
  91. ALTER TABLE `events` ADD `event_project` INT UNSIGNED DEFAULT "0";
  92. ALTER TABLE `events` ADD `event_private` TINYINT UNSIGNED DEFAULT "0";
  93.  
  94. #
  95. # Task dependencies table
  96. #
  97. CREATE TABLE task_dependencies (
  98.     dependencies_task_id int(11) NOT NULL,
  99.     dependencies_req_task_id int(11) NOT NULL,
  100.     PRIMARY KEY (dependencies_task_id, dependencies_req_task_id)
  101. );
  102.  
  103. #
  104. # Change to TASKS table for the new dynamic task flag
  105. #
  106. ALTER TABLE tasks ADD task_dynamic tinyint(1) NOT NULL default 0;
  107.  
  108. #
  109. # Change to tickets to support longer cc lists
  110. #
  111. ALTER TABLE `tickets` CHANGE `cc` `cc` VARCHAR(255) NOT NULL DEFAULT '';
  112.  
  113. #
  114. # Prepare support for user localisation
  115. #
  116.  
  117.  
  118. #
  119. # Table changes 12 Dec 2002 (aje)
  120. #
  121. DROP TABLE IF EXISTS user_preferences;
  122. CREATE TABLE `user_preferences` (
  123.   `pref_user` varchar(12) NOT NULL default '',
  124.   `pref_name` varchar(12) NOT NULL default '',
  125.   `pref_value` varchar(32) NOT NULL default '',
  126.   KEY `pref_user` (`pref_user`,`pref_name`)
  127. ) TYPE=MyISAM;
  128.  
  129. #
  130. # Dumping data for table 'user_preferences'
  131. #
  132. INSERT INTO user_preferences VALUES("0", "LOCALE", "en");
  133. INSERT INTO user_preferences VALUES("0", "TABVIEW", "0");
  134. INSERT INTO user_preferences VALUES("0", "SHDATEFORMAT", "%d/%m/%Y");
  135. INSERT INTO user_preferences VALUES("0", "UISTYLE", "default");
  136.  
  137. #
  138. # Table changes 16 Dec 2002
  139. # Allowing forum_moderated field to hold the user id of the moderator
  140. #
  141. ALTER TABLE `forums` CHANGE `forum_moderated` `forum_moderated` INT DEFAULT "0" NOT NULL;
  142.  
  143. # AJE (2/Jan/2003): New preference
  144. #INSERT INTO user_preferences VALUES("0", "UISTYLE", "default");
  145.  
  146. #
  147. # AJE (4/Jan/2003)
  148. #
  149.  
  150. #
  151. # Contacts table
  152. #
  153. ALTER TABLE `contacts` ADD `contact_owner` INT UNSIGNED DEFAULT "0";
  154. ALTER TABLE `contacts` ADD `contact_private` TINYINT UNSIGNED DEFAULT "0";
  155.  
  156. #
  157. # Projects table
  158. #
  159. ALTER TABLE `projects` ADD `project_private` TINYINT UNSIGNED DEFAULT "0";
  160.  
  161. #
  162. # Users table
  163. #
  164. ALTER TABLE `users` CHANGE `signature` `user_signature` TEXT;
  165.  
  166. #
  167. # AJE (6/Jan/2003)
  168. #
  169. INSERT INTO user_preferences VALUES("0", "TIMEFORMAT", "%I:%M %p");
  170.  
  171. #
  172. # AJE (24/Jan/2003)
  173. # ---------
  174. # N O T E !
  175. #
  176. # MODULES TABLE IS STILL IN DEVELOPMENT STAGE
  177. #
  178.  
  179. #
  180. # Table structure for table 'modules'
  181. #
  182. DROP TABLE IF EXISTS modules;
  183. CREATE TABLE `modules` (
  184.   `mod_id` int(11) NOT NULL auto_increment,
  185.   `mod_name` varchar(64) NOT NULL default '',
  186.   `mod_directory` varchar(64) NOT NULL default '',
  187.   `mod_version` varchar(10) NOT NULL default '',
  188.   `mod_setup_class` varchar(64) NOT NULL default '',
  189.   `mod_type` varchar(64) NOT NULL default '',
  190.   `mod_active` int(1) unsigned NOT NULL default '0',
  191.   `mod_ui_name` varchar(20) NOT NULL default '',
  192.   `mod_ui_icon` varchar(64) NOT NULL default '',
  193.   `mod_ui_order` tinyint(3) NOT NULL default '0',
  194.   `mod_ui_active` int(1) unsigned NOT NULL default '0',
  195.   `mod_description` varchar(255) NOT NULL default '',
  196.   PRIMARY KEY  (`mod_id`,`mod_directory`)
  197. ) TYPE=MyISAM;
  198.  
  199. #
  200. # Dumping data for table 'modules'
  201. #
  202. INSERT INTO modules VALUES("1", "Companies", "companies", "1.0.0", "", "core", "1", "Companies", "money.gif", "1", "1", "");
  203. INSERT INTO modules VALUES("2", "Projects", "projects", "1.0.0", "", "core", "1", "Projects", "projects.gif", "2", "1", "");
  204. INSERT INTO modules VALUES("3", "Tasks", "tasks", "1.0.0", "", "core", "1", "Tasks", "tasks.gif", "3", "1", "");
  205. INSERT INTO modules VALUES("4", "Calendar", "calendar", "1.0.0", "", "core", "1", "Calendar", "calendar.gif", "4", "1", "");
  206. INSERT INTO modules VALUES("5", "Files", "files", "1.0.0", "", "core", "1", "Files", "folder.gif", "5", "1", "");
  207. INSERT INTO modules VALUES("6", "Contacts", "contacts", "1.0.0", "", "core", "1", "Contacts", "contacts.gif", "6", "1", "");
  208. INSERT INTO modules VALUES("7", "Forums", "forums", "1.0.0", "", "core", "1", "Forums", "communicate.gif", "7", "1", "");
  209. INSERT INTO modules VALUES("8", "Tickets", "ticketsmith", "1.0.0", "", "core", "1", "Tickets", "ticketsmith.gif", "8", "1", "");
  210. INSERT INTO modules VALUES("9", "User Administration", "admin", "1.0.0", "", "core", "1", "User Admin", "admin.gif", "9", "1", "");
  211. INSERT INTO modules VALUES("10", "System Administration", "system", "1.0.0", "", "core", "1", "System Admin", "system.gif", "10", "1", "");
  212. INSERT INTO modules VALUES("11", "Departments", "departments", "1.0.0", "", "core", "1", "Departments", "users.gif", "11", "0", "");
  213. INSERT INTO modules VALUES("12", "Help", "help", "1.0.0", "", "core", "1", "Help", "dp.gif", "12", "0", "");
  214. INSERT INTO modules VALUES("13", "Public", "public", "1.0.0", "", "core", "1", "Public", "users.gif", "13", "0", "");
  215.  
  216. #
  217. #  Alter tasks table 1/February/2003
  218. #
  219. ALTER TABLE `tasks` ADD `task_duration_type` VARCHAR(6)  DEFAULT 'hours' NOT NULL AFTER task_duration;
  220.  
  221. #
  222. # ! WARNING !
  223. # BACKUP DATA BEFORE APPLYING THE NEXT UPDATE INSTRUCTIONS
  224. # UNCOMMENT AND APPLY WHEN SAFE
  225.  
  226. # UPDATE tasks SET task_duration_type = 'days' WHERE task_duration >= 24.0;
  227. # UPDATE tasks SET task_duration = task_duration/24.0 WHERE task_duration >= 24.0;
  228.  
  229. # AJE (17/Feb/2003)
  230.  
  231. #
  232. # Table structure for table 'syskeys'
  233. #
  234.  
  235. DROP TABLE IF EXISTS syskeys;
  236. CREATE TABLE `syskeys` (
  237.   `syskey_id` int(10) unsigned NOT NULL auto_increment,
  238.   `syskey_name` varchar(48) NOT NULL default '',
  239.   `syskey_label` varchar(255) NOT NULL default '',
  240.   `syskey_type` int(1) unsigned NOT NULL default '0',
  241.   `syskey_sep1` char(2) default '\n',
  242.   `syskey_sep2` char(2) NOT NULL default '|',
  243.   PRIMARY KEY  (`syskey_id`),
  244.   UNIQUE KEY `idx_syskey_name` (`syskey_id`)
  245. ) TYPE=MyISAM;
  246.  
  247. #
  248. # Table structure for table 'sysvals'
  249. #
  250.  
  251. DROP TABLE IF EXISTS sysvals;
  252. CREATE TABLE sysvals (
  253.   sysval_id int(10) unsigned NOT NULL auto_increment,
  254.   sysval_key_id int(10) unsigned NOT NULL default '0',
  255.   sysval_title varchar(48) NOT NULL default '',
  256.   sysval_value text NOT NULL,
  257.   PRIMARY KEY  (sysval_id)
  258. ) TYPE=MyISAM;
  259.  
  260. #
  261. # Table structure for table 'sysvals'
  262. #
  263.  
  264. INSERT INTO syskeys VALUES("1", "SelectList", "Enter values for list", "0", "\n", "|");
  265. INSERT INTO sysvals VALUES("1", "1", "ProjectStatus", "0|Not Defined\r\n1|Proposed\r\n2|In Planning\r\n3|In Progress\r\n4|On Hold\r\n5|Complete");
  266.  
  267. #
  268. # Add "is provider" flag
  269. # and "email" in companies table
  270. # (22/Feb/2003)
  271. #
  272.  
  273. ALTER TABLE companies ADD COLUMN company_type INT(3) NOT NULL DEFAULT 0;
  274. ALTER TABLE companies ADD COLUMN company_email varchar(30);
  275.  
  276. INSERT INTO sysvals (sysval_key_id,sysval_title,sysval_value) VALUES("1", "CompanyType", "0|Not Applicable\n1|Client\n2|Vendor\n3|Supplier\n4|Consultant\n5|Government\n6|Internal");
  277. # ROLES TABLES: AJE 26/Feb/2003
  278.  
  279. #
  280. # Table structure for table 'roles'
  281. #
  282.  
  283. DROP TABLE IF EXISTS roles;
  284. CREATE TABLE roles (
  285.   role_id int(10) unsigned NOT NULL auto_increment,
  286.   role_name varchar(24) NOT NULL default '',
  287.   role_description varchar(255) NOT NULL default '',
  288.   role_type int(3) unsigned NOT NULL default '0',
  289.   role_module int(10) unsigned NOT NULL default '0',
  290.   PRIMARY KEY  (role_id)
  291. ) TYPE=MyISAM;
  292.  
  293. #
  294. # Table structure for table 'user_roles'
  295. #
  296.  
  297. DROP TABLE IF EXISTS user_roles;
  298. CREATE TABLE user_roles (
  299.   user_id int(10) unsigned NOT NULL default '0',
  300.   role_id int(10) unsigned NOT NULL default '0'
  301. ) TYPE=MyISAM;
  302.  
  303. # 28/Feb/2003 eddieajau
  304. # Give company address a bit more room
  305. ALTER TABLE `companies` CHANGE `company_address1` `company_address1` VARCHAR(50) DEFAULT "";
  306. ALTER TABLE `companies` CHANGE `company_address2` `company_address2` VARCHAR(50) DEFAULT "";
  307.  
  308. # 19/Mar/2003 eddieajau
  309. # Alterations to the task log table
  310. # This adds better information capture/support for other pluggins to use information
  311.  
  312. ALTER TABLE `task_log` ADD `task_log_hours` FLOAT DEFAULT "0" NOT NULL;
  313. ALTER TABLE `task_log` ADD `task_log_date` DATETIME;
  314. ALTER TABLE `task_log` ADD `task_log_costcode` VARCHAR(8) NOT NULL default '';
  315. ALTER TABLE `task_log` DROP `task_log_parent`;
  316.  
  317. # copy across task comments to task log table
  318. INSERT INTO task_log (task_log_task, task_log_name, task_log_description, task_log_creator, task_log_date)
  319. SELECT comment_task, comment_title, comment_body, comment_user, comment_date FROM task_comments;
  320.  
  321. # uncomment when satisfied data has been copied successfully
  322. #DROP TABLE task_comments;
  323.  
  324. # fix mis-spelt field
  325. ALTER TABLE `tasks` CHANGE `task_precent_complete` `task_percent_complete` TINYINT(4)  DEFAULT "0";
  326. ALTER TABLE `projects` CHANGE `project_precent_complete` `project_percent_complete` TINYINT(4)  DEFAULT "0";
  327.  
  328. # increase the description fields
  329. ALTER TABLE `companies` CHANGE `company_description` `company_description` TEXT;
  330. ALTER TABLE `departments` CHANGE `dept_desc` `dept_desc` TEXT;
  331. ALTER TABLE `files` CHANGE `file_description` `file_description` TEXT;
  332.  
  333. # alpha 2 to beta 1 upgrades
  334.  
  335. # fix to convert password field to md5 based string
  336. ALTER TABLE `users` CHANGE `user_password` `user_password` VARCHAR(32) NOT NULL DEFAULT '';
  337.  
  338. # fixes to provide more generic duration type handling
  339. UPDATE `tasks` SET task_duration_type = 1 WHERE task_duration_type = 'hours';
  340. UPDATE `tasks` SET task_duration_type = 24 WHERE task_duration_type = 'days';
  341.  
  342. ALTER TABLE `tasks` CHANGE `task_duration_type` `task_duration_type` int(11) NOT NULL DEFAULT 1;
  343.  
  344. INSERT INTO sysvals (sysval_key_id,sysval_title,sysval_value) VALUES("1", "TaskDurationType", "1|hours\n24|days");
  345.  
  346. # these can wait until release
  347. #ALTER TABLE `companies` ADD `company_module` INT UNSIGNED DEFAULT "0" NOT NULL AFTER company_id;
  348. #ALTER TABLE `projects` ADD `project_module` INT UNSIGNED DEFAULT "0" NOT NULL AFTER project_id;
  349. #ALTER TABLE `events` ADD `event_module` INT UNSIGNED DEFAULT "0" NOT NULL AFTER event_id;
  350.  
  351. #
  352. # Changes to the Events table
  353. # Convert unix timestamp fields to mysql datetime formats
  354. #
  355. ALTER TABLE `events` CHANGE `event_start_date` `event_start_date` VARCHAR(20);
  356. ALTER TABLE `events` CHANGE `event_end_date` `event_end_date` VARCHAR(20);
  357.  
  358. UPDATE `events` SET `event_start_date`=FROM_UNIXTIME(`event_start_date`);
  359. UPDATE `events` SET `event_end_date`=FROM_UNIXTIME(`event_end_date`);
  360.  
  361. ALTER TABLE `events` CHANGE `event_start_date` `event_start_date` DATETIME default null;
  362. ALTER TABLE `events` CHANGE `event_end_date` `event_end_date` DATETIME default null;
  363.  
  364. #
  365. # Added support for an event type
  366. #
  367. ALTER TABLE `events` ADD `event_type` TINYINT(3) DEFAULT "0" NOT NULL;
  368. INSERT INTO sysvals (sysval_key_id,sysval_title,sysval_value) VALUES("1", "EventType", "0|General\n1|Appointment\n2|Meeting\n3|All\nDay Event\n4|Anniversary\n5|Reminder");
  369.  
  370. # This field not used
  371. # Uncomment if you are satisfied this will not cause you any problems
  372. #ALTER TABLE `files` DROP `file_content`;
  373.  
  374. #
  375. # Fixes from beta1 to release1
  376.  
  377. # 10/Jul/2003 
  378. # add record access to tasks table
  379. ALTER TABLE `tasks` ADD `task_access` INT(11) NOT NULL DEFAULT '0';
  380.  
  381. # 30/Aug/2003
  382. # fix lengths of email fields
  383. ALTER TABLE `companies` CHANGE `company_email` `company_email` VARCHAR(255) DEFAULT NULL;
  384. ALTER TABLE `contacts` CHANGE `contact_email` `contact_email` VARCHAR(255) default NULL;
  385. ALTER TABLE `contacts` CHANGE `contact_email2` `contact_email2` VARCHAR(255) default NULL;
  386. ALTER TABLE `users` CHANGE `user_email` `user_email` VARCHAR(255) default '';
  387.  
  388. # Add notify column to tasks
  389. ALTER TABLE `tasks` ADD `task_notify` INT(11) NOT NULL DEFAULT '0';
  390.