You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							2.5 KiB
						
					
					
				| /** | |
|  * @signature 98ad7d550c26ac44340350912296e673 | |
|  * @version v1.10.0 | |
|  * @title Access Control 2.0 | |
|  * | |
|  */ | |
|  | |
| DROP TABLE IF EXISTS `%TABLE_PREFIX%staff_dept_access`; | |
| CREATE TABLE `%TABLE_PREFIX%staff_dept_access` ( | |
|   `staff_id` int(10) unsigned NOT NULL DEFAULT 0, | |
|   `dept_id` int(10) unsigned NOT NULL DEFAULT 0, | |
|   `role_id` int(10) unsigned NOT NULL DEFAULT 0, | |
|   `flags` int(10) unsigned NOT NULL DEFAULT 1, | |
|   PRIMARY KEY `staff_dept` (`staff_id`,`dept_id`), | |
|   KEY `dept_id` (`dept_id`) | |
| ) DEFAULT CHARSET=utf8; | |
|  | |
| -- Expand staff -> group -> dept_access to staff -> dept_access | |
| -- At the same time, drop primary department from staff_dept_access | |
| INSERT INTO `%TABLE_PREFIX%staff_dept_access` | |
|   (`staff_id`, `dept_id`, `role_id`) | |
|   SELECT A1.`staff_id`, A2.`dept_id`, | |
|     CASE WHEN A2.`role_id` = 0 THEN A3.`role_id` ELSE A2.`role_id` END | |
|   FROM `%TABLE_PREFIX%staff` A1 | |
|   JOIN `%TABLE_PREFIX%group_dept_access` A2 ON (A1.`group_id` = A2.`group_id`) | |
|   JOIN `%TABLE_PREFIX%group` A3 ON (A3.`id` = A1.`group_id`) | |
|   WHERE A2.`dept_id` != A1.`dept_id`; | |
|  | |
| ALTER TABLE `%TABLE_PREFIX%staff` | |
|   DROP `group_id`, | |
|   ADD `permissions` text AFTER `extra`; | |
|  | |
| ALTER TABLE `%TABLE_PREFIX%team_member` | |
|   ADD `flags` int(10) unsigned NOT NULL DEFAULT 1 AFTER `staff_id`; | |
|  | |
| ALTER TABLE `%TABLE_PREFIX%task` | |
|   ADD `closed` datetime DEFAULT NULL AFTER `duedate`; | |
|  | |
| ALTER TABLE `%TABLE_PREFIX%thread` | |
|   ADD `lastresponse` datetime DEFAULT NULL AFTER `extra`, | |
|   ADD `lastmessage` datetime DEFAULT NULL AFTER `lastresponse`; | |
|  | |
| UPDATE `%TABLE_PREFIX%thread` A1 | |
|   JOIN `%TABLE_PREFIX%ticket` A2 ON (A2.`ticket_id` = A1.`object_id` AND A1.`object_type` = 'T') | |
|   SET A1.`lastresponse` = A2.`lastresponse`, | |
|       A1.`lastmessage` = A2.`lastmessage`; | |
|  | |
| -- Mark `message` field as externally stored | |
| -- DynamicFormField::FLAG_EXT_STORED = 0x00002; | |
| UPDATE `%TABLE_PREFIX%form_field` A1 | |
|   JOIN `%TABLE_PREFIX%form` A2 ON (A2.`id` = A1.`form_id`) | |
|   SET A1.`flags` = A1.`flags` | 0x00002 | |
|   WHERE A2.`type` = 'T' AND A1.`name` = 'message'; | |
|  | |
| -- Change storage type for `DatetimeField` values to Y-m-d format | |
| UPDATE `%TABLE_PREFIX%form_entry_values` A1 | |
|   JOIN `%TABLE_PREFIX%form_field` A2 ON (A2.`id` = A1.`field_id`) | |
|   SET A1.`value` = DATE_FORMAT(FROM_UNIXTIME(A1.`value`), '%Y-%m-%d %H:%i:%s') | |
|   WHERE A2.`type` = 'datetime'; | |
|  | |
| -- Updates should happen in the %cdata tables too; however, those are more | |
| -- complex and the tables are being dropped anyway | |
|  | |
| -- Finished with patch | |
| UPDATE `%TABLE_PREFIX%config` | |
|     SET `value` = '98ad7d550c26ac44340350912296e673' | |
|     WHERE `key` = 'schema_signature' AND `namespace` = 'core';
 |