1 -- /************************************************************************
3 -- * MySQL Script for civicrm database/tables - upgradation from 2.0 -> 2.1
5 -- *************************************************************************/
7 -- Please add script for all the schema / fixed-data related modifications to
8 -- this sql script as you resolve 2.1 issues. Include the issue number which
9 -- is the source of the change, as part of the comment.
12 -- lower case all email addresses
14 UPDATE civicrm_email SET email = LOWER( email );
15 UPDATE civicrm_uf_match SET uf_name = LOWER( uf_name );
18 -- Add new tinyint column to civicrm_tag
19 ALTER TABLE `civicrm_tag`
20 ADD `is_selectable` tinyint DEFAULT 1 AFTER `parent_id`;
22 -- Add new tinyint columns in civicrm_relationship
24 ALTER TABLE `civicrm_relationship`
25 ADD `is_permission_a_b` tinyint DEFAULT 0 AFTER `description`;
26 ALTER TABLE `civicrm_relationship`
27 ADD `is_permission_b_a` tinyint DEFAULT 0 AFTER `is_permission_a_b`;
30 -- Add 'My Contacts / Organizations' option in user dashboard options
32 UPDATE civicrm_preferences SET user_dashboard_options = CONCAT(user_dashboard_options, '5
\ 16
\ 1'),
33 contact_view_options = CONCAT(contact_view_options, '11
\ 113
\ 1'),
34 advanced_search_options = CONCAT(advanced_search_options, '12
\ 113
\ 115
\ 1');
37 -- make the dates in civicrm_contribution_recur optional
39 ALTER TABLE `civicrm_contribution_recur`
40 MODIFY modified_date datetime DEFAULT NULL,
41 MODIFY cancel_date datetime DEFAULT NULL,
42 MODIFY end_date datetime DEFAULT NULL,
43 MODIFY next_sched_contribution datetime DEFAULT NULL;
46 -- extend civicrm_dedupe_rule_group to the current schema
48 ALTER TABLE civicrm_dedupe_rule_group
49 ADD level enum('Strict', 'Fuzzy'),
50 ADD is_default tinyint;
53 -- make the current dedupe rule groups into default and fuzzy ones
55 UPDATE civicrm_dedupe_rule_group SET level = 'Fuzzy', is_default = true;
58 -- insert the new strict dedupe_rule_group dupe rules
60 INSERT INTO civicrm_dedupe_rule_group (contact_type, threshold, level, is_default)
61 VALUES ('Individual', 10, 'Strict', true);
63 SELECT @drgid := MAX(id) FROM civicrm_dedupe_rule_group;
64 INSERT INTO civicrm_dedupe_rule (dedupe_rule_group_id, rule_table, rule_field, rule_weight)
65 VALUES (@drgid, 'civicrm_email', 'email', 10);
67 INSERT INTO civicrm_dedupe_rule_group (contact_type, threshold, level, is_default)
68 VALUES ('Organization', 10, 'Strict', true);
70 SELECT @drgid := MAX(id) FROM civicrm_dedupe_rule_group;
71 INSERT INTO civicrm_dedupe_rule (dedupe_rule_group_id, rule_table, rule_field, rule_weight)
72 VALUES (@drgid, 'civicrm_contact', 'organization_name', 10),
73 (@drgid, 'civicrm_email' , 'email', 10);
75 INSERT INTO civicrm_dedupe_rule_group (contact_type, threshold, level, is_default)
76 VALUES ('Household', 10, 'Strict', true);
78 SELECT @drgid := MAX(id) FROM civicrm_dedupe_rule_group;
79 INSERT INTO civicrm_dedupe_rule (dedupe_rule_group_id, rule_table, rule_field, rule_weight)
80 VALUES (@drgid, 'civicrm_contact', 'household_name', 10),
81 (@drgid, 'civicrm_email' , 'email', 10);
84 -- Edited indexing of custom group table
86 ALTER TABLE `civicrm_custom_group`
87 DROP INDEX `UI_title_domain_id` ,
88 ADD UNIQUE `UI_title_extends` ( `title` , `extends` ),
89 DROP INDEX `UI_name_domain_id` ,
90 ADD UNIQUE `UI_name_extends` ( `name` , `extends` );
92 ALTER TABLE `civicrm_custom_group`
93 MODIFY `extends` enum('Contact','Individual','Household','Organization','Location','Address','Contribution','Activity','Relationship','Group','Membership','Participant','Event','Grant','Pledge') collate utf8_unicode_ci default 'Contact' COMMENT 'Type of object this group extends (can add other options later e.g. contact_address, etc.).';
95 -- change the default value of is_email_confirm to 0 from 1 in civicrm_event_page table, CRM-3109
97 ALTER TABLE `civicrm_event_page`
98 MODIFY `is_email_confirm` tinyint(4) default '0' COMMENT 'If true, confirmation is automatically emailed to contact on successful registration.';
103 ALTER TABLE `civicrm_contribution_page`
104 ADD `is_recur_interval` tinyint(4) NULL DEFAULT '0' AFTER is_recur,
105 ADD `recur_frequency_unit` varchar(128) NULL DEFAULT NULL AFTER is_recur;
108 UPDATE civicrm_country SET name = 'Moldova' WHERE id = 1143;
112 -- we need to update option value table for cvOpt, ceOpt, asOpt, udOpt and adOpt. Not sure the best way to do this
113 -- since translations are involved. The easiest option might be to delete the rows and then readd them
119 ALTER TABLE `civicrm_mapping` ADD `mapping_type_id` int(10) unsigned NULL DEFAULT NULL AFTER mapping_type;
121 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
122 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Export Contact';
123 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Export';
125 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
126 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Export Contribution';
127 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Export Contributions';
129 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
130 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Import Activity';
131 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Import Activity';
133 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
134 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Import Contact';
135 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Import';
137 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
138 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Import Contribution';
139 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Import Contributions';
141 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
142 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Import Membership';
143 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Import Memberships';
145 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
146 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Import Participant';
147 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Import Participants';
149 SELECT @mapvalue := value FROM civicrm_option_value, civicrm_option_group
150 WHERE civicrm_option_group.name = 'mapping_type' && civicrm_option_value.name = 'Search Builder';
151 UPDATE civicrm_mapping SET mapping_type_id = @mapvalue WHERE civicrm_mapping.mapping_type = 'Search Builder';
153 ALTER TABLE `civicrm_mapping` DROP `mapping_type`;
157 ALTER TABLE `civicrm_contribution_page`
158 ADD `for_organization` text NULL DEFAULT NULL AFTER thankyou_footer,
159 ADD `is_for_organization` tinyint(4) NULL DEFAULT '0' AFTER thankyou_footer;
162 -- add the language column to civicrm_uf_match
164 ALTER TABLE civicrm_uf_match ADD language VARCHAR(5) COMMENT 'UI language preferred by the given user/contact';
169 ALTER TABLE `civicrm_custom_field` MODIFY `label` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Text for form field label (also friendly name for administering this custom property).';
171 ALTER TABLE `civicrm_price_set`
172 MODIFY `title` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Displayed title for Price Set.',
173 MODIFY `name` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Variable name/programmatic handle for this set of price fields.';
175 ALTER TABLE `civicrm_price_field`
176 MODIFY `label` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Text for form field label (also friendly name for administering this field).',
177 MODIFY `name` VARCHAR(255) NULL DEFAULT NULL COMMENT 'Variable name/programmatic handle for this field.';
180 -- Modify civicrm_acl_cache
182 ALTER TABLE civicrm_acl_cache
183 DROP FOREIGN KEY FK_civicrm_acl_cache_contact_id,
184 DROP FOREIGN KEY FK_civicrm_acl_cache_acl_id;
186 ALTER TABLE civicrm_acl_cache
187 ADD CONSTRAINT FK_civicrm_acl_cache_contact_id FOREIGN KEY (contact_id) REFERENCES civicrm_contact(id) ON DELETE CASCADE,
188 ADD CONSTRAINT FK_civicrm_acl_cache_acl_id FOREIGN KEY (acl_id) REFERENCES civicrm_acl(id) ON DELETE CASCADE;
193 UPDATE civicrm_relationship_type SET is_reserved = 1 WHERE id IN (4,6,7);
198 UPDATE civicrm_state_province SET name = "Frederiksberg" WHERE id = 2261;
199 UPDATE civicrm_state_province SET name = "Copenhagen City" WHERE id = 2262;
200 UPDATE civicrm_state_province SET name = "Vestsjælland" WHERE id = 2266;
201 UPDATE civicrm_state_province SET name = "Fyn" WHERE id = 2269;
202 UPDATE civicrm_state_province SET name = "South Jutland" WHERE id = 2270;
203 UPDATE civicrm_state_province SET name = "Ringkjøbing" WHERE id = 2273;
204 UPDATE civicrm_state_province SET name = "Århus" WHERE id = 2274;
205 UPDATE civicrm_state_province SET name = "North Jutland" WHERE id = 2276;
207 INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
208 (5196, 1016, "13", "Al Manāmah (Al ‘Āşimah)"),
209 (5197, 1016, "14", "Al Janūbīyah"),
210 (5199, 1016, "16", "Al Wusţá"),
211 (5200, 1016, "17", "Ash Shamālīyah");
216 INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
217 (5201, 1165, "_A", "Jenin"),
218 (5202, 1165, "_B", "Tubas"),
219 (5203, 1165, "_C", "Tulkarm"),
220 (5204, 1165, "_D", "Nablus"),
221 (5205, 1165, "_E", "Qalqilya"),
222 (5206, 1165, "_F", "Salfit"),
223 (5207, 1165, "_G", "Ramallah and Al-Bireh"),
224 (5208, 1165, "_H", "Jericho"),
225 (5209, 1165, "_I", "Jerusalem"),
226 (5210, 1165, "_J", "Bethlehem"),
227 (5211, 1165, "_K", "Hebron"),
228 (5212, 1165, "_L", "North Gaza"),
229 (5213, 1165, "_M", "Gaza"),
230 (5214, 1165, "_N", "Deir el-Balah"),
231 (5215, 1165, "_O", "Khan Yunis"),
232 (5216, 1165, "_P", "Rafah");
237 INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES
238 (10000, 1107, "CI", "Carbonia-Iglesias"),
239 (10001, 1107, "OT", "Olbia-Tempio"),
240 (10002, 1107, "VS", "Medio Campidano"),
241 (10003, 1107, "OG", "Ogliastra");
243 UPDATE civicrm_state_province SET name = "Forlì-Cesena" WHERE id = 3206;
244 UPDATE civicrm_state_province SET abbreviation = "FC" WHERE id = 3206;
245 UPDATE civicrm_state_province SET abbreviation = "MC" WHERE id = 3221;
246 UPDATE civicrm_state_province SET abbreviation = "PU" WHERE id = 3237;
251 INSERT INTO civicrm_state_province (id, country_id, abbreviation, name) VALUES (5217, 1020, "BRU", "Brussels");
254 -- Following wasn't done by 2.0 upgrade script, so adding here (also added to 2.0 script)
256 ALTER TABLE `civicrm_loc_block`
257 DROP FOREIGN KEY `FK_civicrm_loc_block_email_id`,
258 DROP FOREIGN KEY `FK_civicrm_loc_block_email_2_id`,
259 DROP FOREIGN KEY `FK_civicrm_loc_block_phone_id`,
260 DROP FOREIGN KEY `FK_civicrm_loc_block_phone_2_id`,
261 DROP FOREIGN KEY `FK_civicrm_loc_block_im_id`,
262 DROP FOREIGN KEY `FK_civicrm_loc_block_im_2_id`;
264 ALTER TABLE `civicrm_loc_block`
265 ADD CONSTRAINT `FK_civicrm_loc_block_email_id` FOREIGN KEY (`email_id`) REFERENCES `civicrm_email` (`id`) ON DELETE SET NULL,
266 ADD CONSTRAINT `FK_civicrm_loc_block_email_2_id` FOREIGN KEY (`email_2_id`) REFERENCES `civicrm_email` (`id`) ON DELETE SET NULL,
267 ADD CONSTRAINT `FK_civicrm_loc_block_phone_id` FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone` (`id`) ON DELETE SET NULL,
268 ADD CONSTRAINT `FK_civicrm_loc_block_phone_2_id` FOREIGN KEY (`phone_2_id`) REFERENCES `civicrm_phone` (`id`) ON DELETE SET NULL,
269 ADD CONSTRAINT `FK_civicrm_loc_block_im_id` FOREIGN KEY (`im_id`) REFERENCES `civicrm_im` (`id`) ON DELETE SET NULL,
270 ADD CONSTRAINT `FK_civicrm_loc_block_im_2_id` FOREIGN KEY (`im_2_id`) REFERENCES `civicrm_im` (`id`) ON DELETE SET NULL;
274 -- add the new civicrm_domain.locales column
276 ALTER TABLE civicrm_domain ADD locales text COMMENT 'list of locales supported by the current db state (NULL for single-lang install)';
280 -- new tables added to 2.0
282 CREATE TABLE `civicrm_cache` (
283 `id` int(10) unsigned NOT NULL auto_increment,
284 `group_name` varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 'group name for cache element, useful in cleaning cache elements',
285 `path` varchar(64) collate utf8_unicode_ci default NULL COMMENT 'Unique path name for cache element',
286 `data` text collate utf8_unicode_ci COMMENT 'data associated with this path',
287 `component_id` int(10) unsigned default NULL COMMENT 'Component that this menu item belongs to',
288 `created_date` datetime default NULL COMMENT 'When was the cache item created',
289 `expired_date` datetime default NULL COMMENT 'When should cache item expire',
291 UNIQUE `UI_group_path` (`group_name`,`path`)
292 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
294 ALTER TABLE `civicrm_cache`
295 ADD CONSTRAINT `FK_civicrm_cache_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component` (`id`);
298 CREATE TABLE `civicrm_group_contact_cache` (
299 `id` int(10) unsigned NOT NULL auto_increment COMMENT 'primary key',
300 `group_id` int(10) unsigned NOT NULL COMMENT 'FK to civicrm_group',
301 `contact_id` int(10) unsigned NOT NULL COMMENT 'FK to civicrm_contact',
303 UNIQUE `UI_contact_group` (`contact_id`,`group_id`)
304 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
306 ALTER TABLE `civicrm_group_contact_cache`
307 ADD CONSTRAINT `FK_civicrm_group_contact_cache_group_id` FOREIGN KEY (`group_id`) REFERENCES `civicrm_group` (`id`) ON DELETE CASCADE,
308 ADD CONSTRAINT `FK_civicrm_group_contact_cache_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE;
310 -- create discount table
311 CREATE TABLE `civicrm_discount` (
312 `id` int(10) unsigned NOT NULL COMMENT 'primary key' auto_increment,
313 `entity_table` varchar(64) collate utf8_unicode_ci default NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event',
314 `entity_id` int(10) unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
315 `option_group_id` int(10) unsigned NOT NULL COMMENT 'FK to civicrm_option_group',
316 `start_date` date default NULL COMMENT 'Date when discount starts.',
317 `end_date` date default NULL COMMENT 'Date when discount ends.',
319 INDEX index_entity (entity_table, entity_id),
320 INDEX index_entity_option_id (entity_table, entity_id, option_group_id),
321 CONSTRAINT `FK_civicrm_discount_option_group_id` FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group` (`id`) ON DELETE CASCADE
322 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;
327 CREATE TABLE `civicrm_menu` (
328 id int unsigned NOT NULL AUTO_INCREMENT ,
329 path varchar(255) COMMENT 'Path Name',
330 path_arguments text COMMENT 'Arguments to pass to the url',
331 title varchar(255) COMMENT 'Menu Title',
332 access_callback varchar(255) COMMENT 'Function to call to check access permissions',
333 access_arguments text COMMENT 'Arguments to pass to access callback',
334 page_callback varchar(255) COMMENT 'function to call for this url',
335 page_arguments text COMMENT 'Arguments to pass to page callback',
336 breadcrumb text COMMENT 'Breadcrumb for the path.',
337 return_url varchar(255) COMMENT 'Url where a page should redirected to, if next url not known.',
338 return_url_args varchar(255) COMMENT 'Arguments to pass to return_url',
339 component_id int unsigned COMMENT 'Component that this menu item belongs to',
340 is_active tinyint COMMENT 'Is this menu item active?',
341 is_public tinyint COMMENT 'Is this menu accessible to the public?',
342 is_exposed tinyint COMMENT 'Is this menu exposed to the navigation system?',
343 is_ssl tinyint COMMENT 'Should this menu be exposed via SSL if enabled?',
344 weight int NOT NULL DEFAULT 1 COMMENT 'Ordering of the menu items in various blocks.',
345 type int NOT NULL DEFAULT 1 COMMENT 'Drupal menu type.',
346 page_type int NOT NULL DEFAULT 1 COMMENT 'CiviCRM menu type.',
348 UNIQUE `UI_path` (`path`)
349 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
351 ALTER TABLE `civicrm_menu`
352 ADD CONSTRAINT `FK_civicrm_menu_component_id` FOREIGN KEY (`component_id`) REFERENCES `civicrm_component` (`id`);
354 -- pledge component insert
356 INSERT INTO civicrm_component (name, namespace) VALUES ('CiviPledge', 'CRM_Pledge' );
360 CREATE TABLE `civicrm_pledge` (
361 `id` int(10) unsigned NOT NULL auto_increment COMMENT 'Pledge ID',
362 `contact_id` int(10) unsigned NOT NULL COMMENT 'Foreign key to civicrm_contact.id .',
363 `contribution_type_id` int(10) unsigned default NULL COMMENT 'FK to Contribution Type. This is propagated to contribution record when pledge payments are made.',
364 `contribution_page_id` int(10) unsigned default NULL COMMENT 'The Contribution Page which triggered this contribution',
365 `amount` decimal(20,2) NOT NULL COMMENT 'Total pledged amount.',
366 `frequency_unit` enum('day','week','month','year') collate utf8_unicode_ci default 'month' COMMENT 'Time units for recurrence of pledge payments.',
367 `frequency_interval` int(10) unsigned NOT NULL default '1' COMMENT 'Number of time units for recurrence of pledge payments.',
368 `frequency_day` int(10) unsigned NOT NULL default '3' COMMENT 'Day in the period when the pledge payment is due e.g. 1st of month, 15th etc. Use this to set the scheduled dates for pledge payments.',
369 `installments` int(10) unsigned default '1' COMMENT 'Total number of payments to be made.',
370 `start_date` datetime NOT NULL COMMENT 'The date the first scheduled pledge occurs.',
371 `create_date` datetime NOT NULL COMMENT 'When this pledge record was created.',
372 `acknowledge_date` datetime default NULL COMMENT 'When a pledge acknowledgement message was sent to the contributor.',
373 `modified_date` datetime default NULL COMMENT 'Last updated date for this pledge record.',
374 `cancel_date` datetime default NULL COMMENT 'Date this pledge was cancelled by contributor.',
375 `end_date` datetime default NULL COMMENT 'Date this pledge finished successfully (total pledge payments equal to or greater than pledged amount).',
376 `honor_contact_id` int(10) unsigned default NULL COMMENT 'FK to contact ID. Used when pledge is made in honor of another contact. This is propagated to contribution records when pledge payments are made.',
377 `honor_type_id` int(10) unsigned default NULL COMMENT 'Implicit FK to civicrm_option_value.',
378 `max_reminders` int(10) unsigned default '1' COMMENT 'The maximum number of payment reminders to send for any given payment.',
379 `initial_reminder_day` int(10) unsigned default '5' COMMENT 'Send initial reminder this many days prior to the payment due date.',
380 `additional_reminder_day` int(10) unsigned default '5' COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
381 `status_id` int(10) unsigned default NULL COMMENT 'Implicit foreign key to civicrm_option_values in the contribution_status option group.',
382 `is_test` tinyint(4) default '0',
384 INDEX `index_status` (`status_id`),
385 CONSTRAINT `FK_civicrm_pledge_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE,
386 CONSTRAINT `FK_civicrm_pledge_contribution_type_id` FOREIGN KEY (`contribution_type_id`) REFERENCES `civicrm_contribution_type` (`id`) ON DELETE SET NULL,
387 CONSTRAINT `FK_civicrm_pledge_contribution_page_id` FOREIGN KEY (`contribution_page_id`) REFERENCES `civicrm_contribution_page` (`id`) ON DELETE SET NULL,
388 CONSTRAINT `FK_civicrm_pledge_honor_contact_id` FOREIGN KEY (`honor_contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL
389 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
391 CREATE TABLE `civicrm_pledge_block` (
392 `id` int(10) unsigned NOT NULL auto_increment COMMENT 'Pledge ID',
393 `entity_table` varchar(64) collate utf8_unicode_ci default NULL COMMENT 'physical tablename for entity being joined to pledge, e.g. civicrm_contact',
394 `entity_id` int(10) unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.',
395 `pledge_frequency_unit` varchar(128) collate utf8_unicode_ci default NULL COMMENT 'Delimited list of supported frequency units',
396 `is_pledge_interval` tinyint(4) default '0' COMMENT 'Is frequency interval exposed on the contribution form.',
397 `max_reminders` int(10) unsigned default '1' COMMENT 'The maximum number of payment reminders to send for any given payment.',
398 `initial_reminder_day` int(10) unsigned default '5' COMMENT 'Send initial reminder this many days prior to the payment due date.',
399 `additional_reminder_day` int(10) unsigned default '5' COMMENT 'Send additional reminder this many days after last one sent, up to maximum number of reminders.',
401 INDEX `index_entity` (`entity_table`,`entity_id`)
402 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
404 CREATE TABLE `civicrm_pledge_payment` (
405 `id` int(10) unsigned NOT NULL auto_increment,
406 `pledge_id` int(10) unsigned NOT NULL COMMENT 'FK to Pledge table',
407 `contribution_id` int(10) unsigned default NULL COMMENT 'FK to contribution table.',
408 `scheduled_amount` decimal(20,2) NOT NULL COMMENT 'Pledged amount for this payment (the actual contribution amount might be different).',
409 `scheduled_date` datetime NOT NULL COMMENT 'The date the pledge payment is supposed to happen.',
410 `reminder_date` datetime default NULL COMMENT 'The date that the most recent payment reminder was sent.',
411 `reminder_count` int(10) unsigned default '0' COMMENT 'The number of payment reminders sent.',
412 `status_id` int(10) unsigned default NULL,
414 UNIQUE `UI_contribution_pledge` (`contribution_id`, `pledge_id`),
415 INDEX `index_status` (`status_id`),
416 CONSTRAINT `FK_civicrm_pledge_payment_pledge_id` FOREIGN KEY (`pledge_id`) REFERENCES `civicrm_pledge` (`id`) ON DELETE CASCADE,
417 CONSTRAINT `FK_civicrm_pledge_payment_contribution_id` FOREIGN KEY (`contribution_id`) REFERENCES `civicrm_contribution` (`id`) ON DELETE CASCADE
418 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
420 CREATE TABLE `civicrm_case_contact` (
421 id int(10) unsigned NOT NULL auto_increment,
422 `case_id` int(10) unsigned NOT NULL,
423 `contact_id` int(10) unsigned NOT NULL,
425 CONSTRAINT `FK_civicrm_case_contact_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case` (`id`) ON DELETE CASCADE,
426 CONSTRAINT `FK_civicrm_case_contact_contact_id` FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE CASCADE,
427 UNIQUE `UI_case_contact_id` (`case_id`, `contact_id`)
428 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
430 INSERT INTO civicrm_case_contact (case_id, contact_id)
431 SELECT ca.id, ca.contact_id
433 ON DUPLICATE KEY UPDATE case_id=ca.id;
436 -- fixes noticed via db diff
438 ALTER TABLE `civicrm_contact`
439 ADD `employer_id` int(10) unsigned NULL DEFAULT NULL AFTER user_unique_id,
440 ADD INDEX `index_contact_type` (`contact_type`),
441 ADD INDEX `index_contact_sub_type` (`contact_sub_type`),
442 ADD INDEX `index_sort_name` (`sort_name`),
443 ADD INDEX `index_hash` (`hash`),
444 DROP INDEX index_contact_type_domain,
445 DROP INDEX index_contact_sub_type_domain,
446 DROP INDEX index_sort_name_domain,
447 DROP INDEX index_hash_domain;
450 UPDATE civicrm_contact cc1
451 LEFT JOIN civicrm_contact cc2 ON cc1.mail_to_household_id=cc2.id
452 SET cc1.mail_to_household_id=NULL
453 WHERE cc2.id IS NULL;
455 ALTER TABLE `civicrm_contact`
456 ADD CONSTRAINT `FK_civicrm_contact_mail_to_household_id` FOREIGN KEY (`mail_to_household_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL,
457 ADD CONSTRAINT `FK_civicrm_contact_employer_id` FOREIGN KEY (`employer_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL;
460 ALTER TABLE `civicrm_contribution_recur`
461 ADD UNIQUE `UI_contrib_trxn_id` (`trxn_id`),
462 ADD UNIQUE `UI_contrib_invoice_id` (`invoice_id`);
465 ALTER TABLE `civicrm_contribution_type`
466 ADD UNIQUE `UI_name` (name);
468 ALTER TABLE `civicrm_custom_field`
469 ADD `is_view` tinyint(4) NULL DEFAULT NULL AFTER is_active,
470 MODIFY `html_type` enum('Text','TextArea','Select','Multi-Select','Radio','CheckBox','Select Date','Select State/Province','Select Country','Multi-Select Country','Multi-Select State/Province','File','Link','RichTextEditor') NOT NULL DEFAULT 'Text';
472 ALTER TABLE `civicrm_dedupe_rule_group`
473 ADD name varchar(64) NULL DEFAULT NULL AFTER is_default;
475 DROP TABLE `civicrm_dupe_match`;
477 ALTER TABLE `civicrm_event`
480 ALTER TABLE `civicrm_event_page`
481 ADD `is_multiple_registrations` tinyint(4) NULL DEFAULT '0' AFTER pay_later_receipt,
482 ADD `default_discount_id` int(10) unsigned NULL DEFAULT NULL AFTER default_fee_id;
484 ALTER TABLE `civicrm_financial_trxn`
485 ADD UNIQUE `UI_ft_trxn_id` (`trxn_id`);
487 ALTER TABLE `civicrm_grant`
488 MODIFY `amount_requested` decimal(20,2) NULL DEFAULT NULL,
489 MODIFY `amount_granted` decimal(20,2) NULL DEFAULT NULL;
491 ALTER TABLE `civicrm_group`
492 ADD `cache_date` datetime NULL DEFAULT NULL AFTER group_type,
493 ADD parents text NULL DEFAULT NULL AFTER cache_date,
494 ADD children text NULL DEFAULT NULL AFTER parents,
495 MODIFY description text NULL DEFAULT NULL,
496 ADD UNIQUE `UI_title` (title),
497 ADD UNIQUE `UI_name` (name);
499 ALTER TABLE `civicrm_location_type`
500 ADD UNIQUE `UI_name` (name);
502 ALTER TABLE `civicrm_mailing`
503 MODIFY `body_text` longtext NULL DEFAULT NULL,
504 MODIFY `body_html` longtext NULL DEFAULT NULL;
506 ALTER TABLE `civicrm_membership_type`
507 ALTER `fixed_period_start_day` DROP DEFAULT,
508 ALTER `fixed_period_rollover_day` DROP DEFAULT;
510 ALTER TABLE `civicrm_note`
511 MODIFY `contact_id` int(10) unsigned NULL DEFAULT NULL;
513 ALTER TABLE `civicrm_participant`
514 CHANGE `event_level` `fee_level` varchar(255) NULL DEFAULT NULL,
515 ADD `is_pay_later` tinyint(4) NULL DEFAULT '0' AFTER is_test,
516 ADD `fee_amount` decimal(20,2) NULL DEFAULT NULL AFTER is_pay_later,
517 ADD `registered_by_id` int(10) unsigned NULL DEFAULT NULL AFTER fee_amount,
518 ADD `discount_id` int(10) unsigned NULL DEFAULT NULL AFTER registered_by_id;
520 ALTER TABLE `civicrm_participant`
521 ADD CONSTRAINT `FK_civicrm_participant_registered_by_id` FOREIGN KEY (`registered_by_id`) REFERENCES `civicrm_participant` (`id`) ON DELETE SET NULL,
522 ADD CONSTRAINT `FK_civicrm_participant_discount_id` FOREIGN KEY (`discount_id`) REFERENCES `civicrm_discount` (`id`) ON DELETE SET NULL;
524 ALTER TABLE `civicrm_preferences`
525 ADD `editor_id` int(10) unsigned NULL DEFAULT NULL AFTER address_standardization_url;
527 ALTER TABLE `civicrm_price_field`
528 MODIFY name varchar(255) NOT NULL DEFAULT '',
529 MODIFY label varchar(255) NOT NULL DEFAULT '';
531 ALTER TABLE `civicrm_price_set`
532 MODIFY name varchar(255) NOT NULL DEFAULT '',
533 MODIFY title varchar(255) NOT NULL DEFAULT '';
535 ALTER TABLE `civicrm_relationship`
536 MODIFY `is_permission_a_b` tinyint(4) NULL DEFAULT '0',
537 MODIFY `is_permission_b_a` tinyint(4) NULL DEFAULT '0';
539 ALTER TABLE `civicrm_relationship_type`
540 ADD UNIQUE `UI_name_a_b` (`name_a_b`),
541 ADD UNIQUE `UI_name_b_a` (`name_b_a`);
543 ALTER TABLE `civicrm_tag`
544 ADD UNIQUE `UI_name` (name);
546 ALTER TABLE `civicrm_uf_group`
547 ADD `group_type` varchar(255) NULL DEFAULT NULL AFTER is_active,
550 ALTER TABLE `civicrm_uf_match`
551 ADD UNIQUE `UI_uf_name` (`uf_name`);
553 ALTER TABLE `civicrm_contribution`
554 ADD `is_pay_later` tinyint(4) NULL DEFAULT '0' AFTER is_test,
555 ADD UNIQUE `UI_contrib_trxn_id` (`trxn_id`),
556 ADD UNIQUE `UI_contrib_invoice_id` (`invoice_id`);
558 ALTER TABLE `civicrm_membership`
559 ADD `is_pay_later` tinyint(4) NULL DEFAULT '0' AFTER is_test;
561 ALTER TABLE `civicrm_membership_status`
562 ADD `is_reserved` tinyint(4) NULL DEFAULT '0' AFTER is_active;
564 ALTER TABLE `civicrm_payment_processor_type`
565 ADD UNIQUE `UI_name` (name);
567 UPDATE civicrm_dedupe_rule SET rule_table='civicrm_contact' WHERE rule_table IN ('civicrm_individual', 'civicrm_household', 'civicrm_organization');
569 ALTER TABLE `civicrm_case`
570 DROP FOREIGN KEY `FK_civicrm_case_contact_id`;
571 ALTER TABLE `civicrm_case`
574 ALTER TABLE `civicrm_case_activity`
575 DROP FOREIGN KEY `FK_civicrm_case_activity_case_id`;
576 ALTER TABLE `civicrm_case_activity`
577 ADD CONSTRAINT `FK_civicrm_case_activity_case_id` FOREIGN KEY (`case_id`) REFERENCES `civicrm_case` (`id`) ON DELETE CASCADE;
580 -- current employer data upgrade
582 SELECT @relTypeId := id FROM civicrm_relationship_type WHERE name_a_b='Employee of';
584 UPDATE civicrm_relationship cr
585 INNER JOIN civicrm_contact cci ON (cr.contact_id_a=cci.id)
586 INNER JOIN civicrm_contact cco ON (cr.contact_id_b=cco.id)
587 SET cci.employer_id = cr.contact_id_b,
588 cci.organization_name = cco.organization_name
589 WHERE cr.relationship_type_id=@relTypeId AND cr.is_active=1 AND IF(cr.end_date IS NULL, 1, (DATEDIFF(CURDATE( ), cr.end_date) <= 0));
591 -- table civicrm_mailing_event_forward, adding on delete set null
593 ALTER TABLE `civicrm_mailing_event_forward`
594 MODIFY dest_queue_id int(10) unsigned DEFAULT NULL COMMENT 'FK to EventQueue for destination',
595 DROP FOREIGN KEY `FK_civicrm_mailing_event_forward_dest_queue_id`;
596 ALTER TABLE `civicrm_mailing_event_forward`
597 ADD CONSTRAINT `FK_civicrm_mailing_event_forward_dest_queue_id` FOREIGN KEY (`dest_queue_id`) REFERENCES `civicrm_mailing_event_queue` (`id`) ON DELETE SET NULL;
599 -- table civicrm_payment_processor_type, insert ebay record
601 INSERT INTO `civicrm_payment_processor_type`
602 (name, title, description, is_active, is_default, user_name_label, password_label, signature_label, subject_label, class_name, url_site_default, url_api_default, url_recur_default, url_button_default, url_site_test_default, url_api_test_default, url_recur_test_default, url_button_test_default, billing_mode, is_recur )
604 ('eWAY', 'eWAY (Single Currency)',NULL,1,0,'Customer ID',NULL,NULL,NULL,'Payment_eWAY','https://www.eway.com.au/gateway_cvn/xmlpayment.asp',NULL,NULL,NULL,'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp',NULL,NULL,NULL,1,0);
606 UPDATE `civicrm_payment_processor_type`
607 SET is_recur = NULL WHERE title = 'Authorize.Net - AIM';
609 --address name field in civicrm_address table
611 ALTER TABLE `civicrm_address`
612 ADD `name` varchar(255) collate utf8_unicode_ci DEFAULT NULL ;
615 ALTER TABLE `civicrm_line_item`
616 DROP FOREIGN KEY FK_civicrm_line_item_price_field_id;
618 ALTER TABLE `civicrm_line_item`
619 ADD CONSTRAINT `FK_civicrm_line_item_price_field_id` FOREIGN KEY (`price_field_id`) REFERENCES `civicrm_price_field` (`id`) ON DELETE CASCADE;