diff --git a/include/class.role.php b/include/class.role.php index ef424a917d5cd45a95e0186977cd6e578893005c..1f2ab4d8cda60f1f16130a1a1dba505e0823cc34 100644 --- a/include/class.role.php +++ b/include/class.role.php @@ -281,6 +281,26 @@ class RolePermission { /* @trans */ 'Delete', /* @trans */ 'Ability to delete tickets'), ), + /* @trans */ 'Tasks' => array( + 'task.create' => array( + /* @trans */ 'Create', + /* @trans */ 'Ability to create tasks'), + 'task.edit' => array( + /* @trans */ 'Edit', + /* @trans */ 'Ability to edit tasks'), + 'task.assign' => array( + /* @trans */ 'Assign', + /* @trans */ 'Ability to assign tasks to agents or teams'), + 'task.transfer' => array( + /* @trans */ 'Transfer', + /* @trans */ 'Ability to transfer tasks between departments'), + 'task.close' => array( + /* @trans */ 'Close', + /* @trans */ 'Ability to close tasks'), + 'tasks.delete' => array( + /* @trans */ 'Delete', + /* @trans */ 'Ability to delete tasks'), + ), /* @trans */ 'Knowledgebase' => array( 'kb.premade' => array( /* @trans */ 'Premade', diff --git a/include/i18n/en_US/role.yaml b/include/i18n/en_US/role.yaml index f3def31e27e96f965ff5aa4fc8c3325ea225d81c..d83a60c2914848730123c02c623b52e7b210cd71 100644 --- a/include/i18n/en_US/role.yaml +++ b/include/i18n/en_US/role.yaml @@ -24,6 +24,13 @@ ticket.reply, ticket.close, ticket.delete, + task.create, + task.edit, + task.assign, + task.transfer, + task.reply, + task.close, + task.delete, kb.premade, kb.faq, stats.agents, @@ -42,6 +49,12 @@ ticket.transfer, ticket.reply, ticket.close, + task.create, + task.edit, + task.assign, + task.transfer, + task.reply, + task.close, kb.premade, kb.faq, stats.agents, @@ -57,4 +70,8 @@ ticket.create, ticket.assign, ticket.transfer, - ticket.reply] + ticket.reply + task.create, + task.assign, + task.transfer, + task.reply] diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig index 73c2003f8c53fd3a92199db12c39bff375b68149..fff47877fe2996017555fd667e82af5a7ab1db9d 100644 --- a/include/upgrader/streams/core.sig +++ b/include/upgrader/streams/core.sig @@ -1 +1 @@ -48b4499152a6c11e714d4a40fc33332a +366ff61fbe023fe840a4a65138320d11 diff --git a/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql b/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql deleted file mode 100644 index 7ceb7daed55117866ff95f206adb9eb513133a92..0000000000000000000000000000000000000000 --- a/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @version v1.9.5 - * @signature 48b4499152a6c11e714d4a40fc33332a - * @title Add tasks - * - * This patch introduces the concept of tasks - * - */ - --- create task task -CREATE TABLE `%TABLE_PREFIX%task` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `object_id` int(11) NOT NULL DEFAULT '0', - `object_type` char(1) NOT NULL, - `number` varchar(20) DEFAULT NULL, - `dept_id` int(10) unsigned NOT NULL DEFAULT '0', - `sla_id` int(10) unsigned NOT NULL DEFAULT '0', - `staff_id` int(10) unsigned NOT NULL DEFAULT '0', - `team_id` int(10) unsigned NOT NULL DEFAULT '0', - `flags` int(10) unsigned NOT NULL DEFAULT '0', - `created` datetime NOT NULL, - `updated` datetime NOT NULL, - PRIMARY KEY (`id`), - KEY `dept_id` (`dept_id`), - KEY `staff_id` (`staff_id`), - KEY `team_id` (`team_id`), - KEY `created` (`created`), - KEY `sla_id` (`sla_id`), - KEY `object` (`object_id`,`object_type`) -) DEFAULT CHARSET=utf8; - --- Add flags field to form field -ALTER TABLE `%TABLE_PREFIX%form_field` - ADD `flags` INT UNSIGNED NOT NULL DEFAULT '1' AFTER `form_id`; - --- Flag field stored in the system elsewhere as nonstorable locally. -UPDATE `%TABLE_PREFIX%form_field` A1 JOIN `%TABLE_PREFIX%form` A2 ON(A2.id=A1.form_id) - SET A1.`flags` = 3 - WHERE A2.`type` = 'U' AND A1.`name` IN('name','email'); - -UPDATE `%TABLE_PREFIX%form_field` A1 JOIN `%TABLE_PREFIX%form` A2 ON(A2.id=A1.form_id) - SET A1.`flags`=3 - WHERE A2.`type`='O' AND A1.`name` IN('name'); - --- TODO: add ticket thread entry?? - - --- rename ticket sequence numbering - -UPDATE `%TABLE_PREFIX%config` - SET `key` = 'ticket_number_format' - WHERE `key` = 'number_format' AND `namespace` = 'core'; - -UPDATE `%TABLE_PREFIX%config` - SET `key` = 'ticket_sequence_id' - WHERE `key` = 'sequence_id' AND `namespace` = 'core'; - --- Set new schema signature -UPDATE `%TABLE_PREFIX%config` - SET `value` = '48b4499152a6c11e714d4a40fc33332a' - WHERE `key` = 'schema_signature' AND `namespace` = 'core'; diff --git a/include/upgrader/streams/core/b26f29a6-4b4daf9c.cleanup.sql b/include/upgrader/streams/core/c7c82835-366ff61f.cleanup.sql similarity index 100% rename from include/upgrader/streams/core/b26f29a6-4b4daf9c.cleanup.sql rename to include/upgrader/streams/core/c7c82835-366ff61f.cleanup.sql diff --git a/include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql b/include/upgrader/streams/core/c7c82835-366ff61f.patch.sql similarity index 67% rename from include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql rename to include/upgrader/streams/core/c7c82835-366ff61f.patch.sql index 62280690740e46da12e8f2d052fea4c9a37d3e55..df0890e1504f13da161cacb6e5e03d564cb40882 100644 --- a/include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql +++ b/include/upgrader/streams/core/c7c82835-366ff61f.patch.sql @@ -1,9 +1,9 @@ /** - * @version v1.9.5 - * @signature 2257f6f22ca4b31bea6045b8b7d59d56 - * @title Threads revisited + * @version v1.9.6 + * @signature 366ff61fbe023fe840a4a65138320d11 + * @title Add tasks * - * This patch adds ability to thread anything + * This patch adds ability to thread anything and introduces tasks * */ @@ -77,9 +77,40 @@ ALTER TABLE `%TABLE_PREFIX%ticket_email_info` RENAME TABLE `%TABLE_PREFIX%ticket_email_info` TO `%TABLE_PREFIX%thread_entry_email`; +-- create task task +CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%task` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `object_id` int(11) NOT NULL DEFAULT '0', + `object_type` char(1) NOT NULL, + `number` varchar(20) DEFAULT NULL, + `dept_id` int(10) unsigned NOT NULL DEFAULT '0', + `sla_id` int(10) unsigned NOT NULL DEFAULT '0', + `staff_id` int(10) unsigned NOT NULL DEFAULT '0', + `team_id` int(10) unsigned NOT NULL DEFAULT '0', + `flags` int(10) unsigned NOT NULL DEFAULT '0', + `duedate` datetime DEFAULT NULL, + `created` datetime NOT NULL, + `updated` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `dept_id` (`dept_id`), + KEY `staff_id` (`staff_id`), + KEY `team_id` (`team_id`), + KEY `created` (`created`), + KEY `sla_id` (`sla_id`), + KEY `object` (`object_id`,`object_type`) +) DEFAULT CHARSET=utf8; +-- rename ticket sequence numbering + +UPDATE `%TABLE_PREFIX%config` + SET `key` = 'ticket_number_format' + WHERE `key` = 'number_format' AND `namespace` = 'core'; + +UPDATE `%TABLE_PREFIX%config` + SET `key` = 'ticket_sequence_id' + WHERE `key` = 'sequence_id' AND `namespace` = 'core'; -- Set new schema signature UPDATE `%TABLE_PREFIX%config` - SET `value` = '2257f6f22ca4b31bea6045b8b7d59d56' + SET `value` = '366ff61fbe023fe840a4a65138320d11' WHERE `key` = 'schema_signature' AND `namespace` = 'core'; diff --git a/include/upgrader/streams/core/4b4daf9c-48b44991.task.php b/include/upgrader/streams/core/c7c82835-366ff61f.task.php similarity index 54% rename from include/upgrader/streams/core/4b4daf9c-48b44991.task.php rename to include/upgrader/streams/core/c7c82835-366ff61f.task.php index baf686b4d367228276c08710baa60916d55d47e1..eec7c43f72b3fe48f18ad2c0feb64824cb732f17 100644 --- a/include/upgrader/streams/core/4b4daf9c-48b44991.task.php +++ b/include/upgrader/streams/core/c7c82835-366ff61f.task.php @@ -4,8 +4,17 @@ * */ -class TaskFormLoader extends MigrationTask { +class TaskLoader extends MigrationTask { var $description = "Loading initial data for tasks"; + static $pman = array( + 'ticket.create' => 'task.create', + 'ticket.edit' => 'task.edit', + 'ticket.reply' => 'task.reply', + 'ticket.delete' => 'task.delete', + 'ticket.close' => 'task.close', + 'ticket.assign' => 'task.assign', + 'ticket.transfer' => 'task.transfer', + ); function run($max_time) { global $cfg; @@ -30,9 +39,20 @@ class TaskFormLoader extends MigrationTask { break; } + // Copy ticket permissions + foreach (Role::objects() as $role) { + $perms = $role->getPermissionInfo(); + foreach (self::$pmap as $k => $v) { + if (in_array($k, $perms)) + $perms[] = $v; + } + $role->updatePerms($perms); + $role->save(); + } + } } -return 'TaskFormLoader'; +return 'TaskLoader'; ?> diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql index b106d286f2a665cf2acc296ae222ffd2298d7aae..d17ef3cdb1c998a20946d10787a955dcce2fe37b 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -779,6 +779,7 @@ CREATE TABLE `%TABLE_PREFIX%task` ( `staff_id` int(10) unsigned NOT NULL DEFAULT '0', `team_id` int(10) unsigned NOT NULL DEFAULT '0', `flags` int(10) unsigned NOT NULL DEFAULT '0', + `duedate` datetime DEFAULT NULL, `created` datetime NOT NULL, `updated` datetime NOT NULL, PRIMARY KEY (`id`),