# # Update wikindx v2 database # # Use this to add new fields to the wikindx database and # don't forget to change the dbVersion no. in INIT so that # SYSTEMCHECK::updateDatabase() will transparently update # the database.... # # There is NO error checking in SYSTEMCHECK.php as these update statements are run. We don't want # an ALTER statement for example to crash the code because that column name already exists or not. # Not having error checking allows such failing update statements to be quietly ignored meaning we can # store several generations of DB updates in this file and at whatever point a user upgrades WIKINDX from, # the DB update code will work. (Hopefully.) # # Any changes you add here must also be reflected in createMySQL.txt for those who are installing from scratch. # ########################################################## # 2.0.1 # Adding page ranges to quotes, paraphrases and musings ALTER TABLE `WKX_resource_quote` CHANGE COLUMN `page` `page_start` VARCHAR(10) default NULL; ALTER TABLE `WKX_resource_quote` ADD COLUMN `page_end` VARCHAR(10) default NULL; ALTER TABLE `WKX_resource_paraphrase` CHANGE COLUMN `page` `page_start` VARCHAR(10) default NULL; ALTER TABLE `WKX_resource_paraphrase` ADD COLUMN `page_end` VARCHAR(10) default NULL; ALTER TABLE `WKX_resource_musing` ADD COLUMN `page_start` VARCHAR(10) default NULL; ALTER TABLE `WKX_resource_musing` ADD COLUMN `page_end` VARCHAR(10) default NULL; ########################################################## # Adding WKX_bibtex_string table # `id` references `WKX_resource.id` CREATE TABLE IF NOT EXISTS `WKX_bibtex_string` ( `id` int(10) unsigned NOT NULL auto_increment, `text` text NOT NULL, PRIMARY KEY (`id`) ); ########################################################## # 2.1.0 # adding isbn field to WKX_resource ALTER TABLE `WKX_resource` ADD COLUMN `isbn` VARCHAR(255) default NULL; # adding prefix field to WKX_creator ALTER TABLE `WKX_creator` ADD COLUMN `prefix` varchar(255) default NULL; # adding multiUser and userRegistration fields to WKX_config ALTER TABLE `WKX_config` ADD COLUMN `multiUser` enum('N', 'Y') default 'N'; ALTER TABLE `WKX_config` ADD COLUMN `userRegistration` enum('N', 'Y') default 'N'; # dropping authWrite from WKX_config ALTER TABLE `WKX_config` DROP COLUMN `authWrite`; # adding `editUserIdxxxx` and `addUserIdxxxx` to appropriate tables ALTER TABLE `WKX_resource_musing_text` ADD COLUMN `editUserIdMusing` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_musing_text` ADD COLUMN `addUserIdMusing` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_note` ADD COLUMN `editUserIdNote` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_note` ADD COLUMN `addUserIdNote` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_abstract` ADD COLUMN `editUserIdAbstract` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_abstract` ADD COLUMN `addUserIdAbstract` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_quote_text` ADD COLUMN `editUserIdQuote` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_quote_text` ADD COLUMN `addUserIdQuote` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_paraphrase_text` ADD COLUMN `editUserIdParaphrase` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_paraphrase_text` ADD COLUMN `addUserIdParaphrase` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `editUserIdResource` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `addUserIdResource` int(10) unsigned default NULL; # Adding these columns was an error in 2.1 ALTER TABLE `WKX_resource` DROP COLUMN `editUserIdResource`; ALTER TABLE `WKX_resource` DROP COLUMN `addUserIdResource`; # Adding WKX_users table CREATE TABLE IF NOT EXISTS `WKX_users` ( `id` int(10) unsigned NOT NULL auto_increment, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `fullname` varchar(255) default NULL, `email` varchar(255) default NULL, `admin` enum('N', 'Y') default 'N', `cookie` enum('N', 'Y') default 'N', PRIMARY KEY (`id`) ); # 2.1.0 # Adding WKX_user_register table CREATE TABLE IF NOT EXISTS `WKX_user_register` ( `id` int(10) unsigned NOT NULL auto_increment, `hashKey` varchar(255) NOT NULL, `email` varchar(255) default NULL, `timestamp` timestamp(14) NOT NULL, PRIMARY KEY (`id`) ); # 2.1.0 # adding WKX_user_bibliography table # value of 'userId' references 'id' in `users` table CREATE TABLE IF NOT EXISTS `WKX_user_bibliography` ( `id` int(10) unsigned NOT NULL auto_increment, `userId` int(10) unsigned NOT NULL, `title` varchar(255) NOT NULL, `description` TEXT default NULL, /* `bibliography` is a comma-separated list of `id` numbers from WKX_resource table */ `bibliography` TEXT default NULL, PRIMARY KEY (`id`), KEY `userIdKey` (`userId`) ); # 2.2 # Removing `v1DbConvert` as it is no longer required. ALTER TABLE `WKX_config` DROP COLUMN `v1DbConvert`; # 2.2 # Removing auto_increment on `id` in WKX_resource_musing_text, as it shouldn't have been there in the first place... # Additionally, drop the editing user's id as v2.2 stops other users editing posts that are not their own. # A `timestamp` is added to WKX_resource_musing_text so that user musings can be properly ordered - when updating the database # at a wikindx upgrade for v2.2, initialise this column to NOW and set all NULL addUserIdxxx columns to superadmin's userId=1; # Add separate comment tables for paraphrases and musings and drop the comments column from WKX_resource_paraphrase_text and # WKX_resource_quote_text. # The `comment` columns in WKX_resource_ paraphrase_text and WKX_resource_quote_text are dropped in # core/systemcheck/SYSTEMCHECK.php if that script detects such columns still exist AFTER transferring them # to the new tables below. ALTER TABLE `WKX_resource_musing_text` CHANGE COLUMN `id` `id` int(10) unsigned NOT NULL; ALTER TABLE `WKX_resource_musing_text` DROP COLUMN `editUserIdMusing`; ALTER TABLE `WKX_resource_quote_text` DROP COLUMN `editUserIdQuote`; ALTER TABLE `WKX_resource_paraphrase_text` DROP COLUMN `editUserIdParaphrase`; ALTER TABLE `WKX_resource_musing_text` ADD COLUMN `timestamp` timestamp(14) NOT NULL; UPDATE TABLE `WKX_resource_musing_text` SET `timestamp` = NOW(); UPDATE `WKX_resource_musing_text` SET `addUserIdMusing` = '1' WHERE `addUserIdMusing` IS NULL; UPDATE `WKX_resource_quote_text` SET `addUserIdQuote` = '1' WHERE `addUserIdQuote` IS NULL; UPDATE `WKX_resource_paraphrase_text` SET `addUserIdParaphrase` = '1' WHERE `addUserIdParaphrase` IS NULL; CREATE TABLE IF NOT EXISTS `WKX_resource_quote_comment` ( `id` int(10) unsigned NOT NULL auto_increment, `quoteId` int(10) unsigned NOT NULL, `addUserIdQuote` int(10) unsigned default NULL, `comment` text default NULL, `timestamp` timestamp(14) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `WKX_resource_paraphrase_comment` ( `id` int(10) unsigned NOT NULL auto_increment, `paraphraseId` int(10) unsigned NOT NULL, `addUserIdParaphrase` int(10) unsigned default NULL, `comment` text default NULL, `timestamp` timestamp(14) NOT NULL, PRIMARY KEY (`id`) ); # v2.2 # Add email notification table CREATE TABLE IF NOT EXISTS `WKX_notify` ( `id` int(10) unsigned NOT NULL auto_increment, `notify` enum('N', 'A', 'M') default 'N', PRIMARY KEY (`id`) ); # Add option to turn notification on/off for administrator ALTER TABLE `WKX_config` ADD COLUMN `notify` enum('Y', 'N') default 'Y'; #v2.2 # Add news table CREATE TABLE IF NOT EXISTS `WKX_news` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(255) NOT NULL, `news` text default NULL, `timestamp` timestamp(14) NOT NULL, PRIMARY KEY (`id`) ); #v2.3.5 /* BBCode image display limits in pixels */ ALTER TABLE `WKX_config` ADD COLUMN `imgWidthLimit` int(10) default '400'; ALTER TABLE `WKX_config` ADD COLUMN `imgHeightLimit` int(10) default '400'; ##################### # v3.0.0 # A number of tables are dropped with this upgrade and various fields are # added, renamed or dropped either here or in the PHP code. # We leave all of the above SQL statements so that upgrading will work from # whatever version of wikindx the user is using. ##################### # We no longer use the WKX_resource_et_al table as it is superfluous DROP TABLE IF EXISTS `WKX_resource_et_al`; # WKX_journal becomes WKX_collection and 3 new fields are added # set `collectionType` to 'journal' to match resource type ALTER TABLE `WKX_journal` RENAME `WKX_collection`; ALTER TABLE `WKX_collection` CHANGE COLUMN `title` `collectionTitle` varchar(255) default NULL; ALTER TABLE `WKX_collection` ADD COLUMN `collectionType` varchar(255) default NULL; ALTER TABLE `WKX_collection` ADD COLUMN `collectionTitleShort` varchar(255) default NULL; UPDATE `WKX_collection` SET `collectionType` = 'journal'; # WKX_notify and WKX_preferences are collated into WKX_users. We create the appropriate fields here ALTER TABLE `WKX_users` ADD COLUMN `paging` int(10) default '20'; ALTER TABLE `WKX_users` ADD COLUMN `pagingMaxLinks` int(10) unsigned default '11'; ALTER TABLE `WKX_users` ADD COLUMN `stringLimit` int(10) default '40'; ALTER TABLE `WKX_users` ADD COLUMN `language` varchar(2) default 'en'; ALTER TABLE `WKX_users` ADD COLUMN `style` varchar(255) default 'APA'; ALTER TABLE `WKX_users` ADD COLUMN `template` varchar(255) default 'default'; ALTER TABLE `WKX_users` ADD COLUMN `notify` enum('N', 'A', 'M') default 'N'; # In WKX_resource, a variety of fields have been replaced with field1 ... field9 ALTER TABLE `WKX_resource` ADD COLUMN `field1` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field2` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field3` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field4` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field5` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field6` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field7` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field8` varchar(255) default NULL; ALTER TABLE `WKX_resource` ADD COLUMN `field9` varchar(255) default NULL; # File attachment field ALTER TABLE `WKX_resource` ADD COLUMN `file` varchar(255) default NULL; # In WKX_resource_creator, fields have been replaced with creator1 ... creator5 ALTER TABLE `WKX_resource_creator` CHANGE COLUMN `creator` `creator1` varchar(255) default NULL; ALTER TABLE `WKX_resource_creator` CHANGE COLUMN `editor` `creator2` varchar(255) default NULL; ALTER TABLE `WKX_resource_creator` CHANGE COLUMN `translator` `creator3` varchar(255) default NULL; ALTER TABLE `WKX_resource_creator` CHANGE COLUMN `reviser` `creator4` varchar(255) default NULL; ALTER TABLE `WKX_resource_creator` CHANGE COLUMN `producer` `creator5` varchar(255) default NULL; # In WKX_resource_year, fields have been bumped up to VARCHAR(30) ALTER TABLE `WKX_resource_year` CHANGE COLUMN `year1` `year1` varchar(30) default NULL; ALTER TABLE `WKX_resource_year` CHANGE COLUMN `year2` `year2` varchar(30) default NULL; ALTER TABLE `WKX_resource_year` CHANGE COLUMN `year3` `year3` varchar(30) default NULL; # In WKX_resource_misc: # 1/ journal field is renamed to collection # 2/ fields month, day, edition, seriesNumber, numberOfVolumes, # bookVolumeNumber, journalVolumeNumber and journalIssueNumber have been # replaced by miscField1 ... miscField4 ALTER TABLE `WKX_resource_misc` CHANGE COLUMN `journal` `collection` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `miscField1` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `miscField2` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `miscField3` int(10) unsigned default NULL; ALTER TABLE `WKX_resource_misc` ADD COLUMN `miscField4` int(10) unsigned default NULL; # In WKX_resource_year, all fields are replaced by year1, year2 and year3 fields ALTER TABLE `WKX_resource_year` ADD COLUMN `year1` varchar(9) default NULL; ALTER TABLE `WKX_resource_year` ADD COLUMN `year2` varchar(9) default NULL; ALTER TABLE `WKX_resource_year` ADD COLUMN `year3` varchar(9) default NULL; # Rename `name` field in WKX_publisher to `publisherName` and `location` to `publisherLocation` ALTER TABLE `WKX_publisher` CHANGE COLUMN `name` `publisherName` varchar(255) default NULL; ALTER TABLE `WKX_publisher` CHANGE COLUMN `location` `publisherLocation` varchar(255) default NULL; # Add `publisherType` column ALTER TABLE `WKX_publisher` ADD COLUMN `publisherType` varchar(255) default NULL; # Set `publisherType` to 'book' to match type of publisher UPDATE `WKX_publisher` SET `publisherType` = 'book'; # rename `WKX_bibtex` to `WKX_import_raw` and add a new column for the type of import. # For this update, set the new column to 'bibtex' RENAME TABLE `WKX_bibtex` TO `WKX_import_raw`; ALTER TABLE `WKX_import_raw` ADD COLUMN `importType` VARCHAR(255) NOT NULL; ALTER TABLE `WKX_import_raw` CHANGE COLUMN `stringId` `stringId` int(10) unsigned default NULL; UPDATE `WKX_import_raw` SET `importType` = 'bibtex'; # add columns to WKX_config to allow for file attachments to resources and user pasting of (bibTeX) entries ALTER TABLE `WKX_config` ADD COLUMN `fileAttach` enum('N', 'Y') default 'N'; ALTER TABLE `WKX_config` ADD COLUMN `fileViewLoggedOnOnly` enum('N', 'Y') default 'N'; ALTER TABLE `WKX_config` ADD COLUMN `maxPaste` int(10) default '10'; # Set default bibliographic style to APA UPDATE `WKX_config` SET `style` = 'APA'; # Bump `keywords` field in `WKX_resource_keyword` up to text to account for some (observed) # large keyword fields in bibtex files. ALTER TABLE `WKX_resource_keyword` CHANGE COLUMN `keywords` `keywords` text default NULL; # add a `keywords` column to each of `WKX_resource_quote`, `_paraphrase` and `_musing` so that they # may be associated with keywords. ALTER TABLE `WKX_resource_quote` ADD COLUMN `quote_keywords` text default NULL; ALTER TABLE `WKX_resource_paraphrase` ADD COLUMN `paraphrase_keywords` text default NULL; ALTER TABLE `WKX_resource_musing` ADD COLUMN `musing_keywords` text default NULL; # Table structure for table `WKX_custom` # Admin-added fields. # `id` references `resource` table's `id`. CREATE TABLE `WKX_custom` ( `id` int(10) unsigned NOT NULL auto_increment, `custom_label` varchar(255) default NULL, /* Small or Large */ `custom_size` enum('S', 'L') default 'S', PRIMARY KEY (`id`) ); # Table structure for table `WKX_resource_custom` # Resource data using custom fields. # `resourceId` references `resource` table's `id`. # `customId` references `custom` table's `id`. CREATE TABLE `WKX_resource_custom` ( `id` int(10) unsigned NOT NULL auto_increment, `customId` int(10) unsigned NOT NULL, `resourceId` int(10) unsigned NOT NULL, `custom_short` varchar(255) default NULL, `custom_long` text default NULL, `addUserIdCustom` int(10) unsigned default NULL, `editUserIdCustom` int(10) unsigned default NULL, PRIMARY KEY (`id`) ); ############################ # End v3.0.0 update ############################ ############################ # v3.0.2 update ############################ # Because of SQL confusion over the term 'group', this has been changed # to 'category' and 'categories' RENAME TABLE `WKX_group` TO `WKX_category`; RENAME TABLE `WKX_resource_group` TO `WKX_resource_category`; ALTER TABLE `WKX_category` CHANGE COLUMN `group` `category` varchar(255) default NULL; ALTER TABLE `WKX_resource_category` CHANGE COLUMN `groups` `categories` varchar(255) default NULL; # Because we're now using portable SQL code and data types for use with ADOdb, we change TIMESTAMP # values to DATETIME ALTER TABLE `WKX_resource_musing_text` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL; ALTER TABLE `WKX_resource_quote_comment` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL; ALTER TABLE `WKX_resource_paraphrase_comment` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL; ALTER TABLE `WKX_resource_timestamp` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL; ALTER TABLE `WKX_user_register` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL; ALTER TABLE `WKX_news` CHANGE COLUMN `timestamp` `timestamp` DATETIME NOT NULL;