diff --git a/include/class.dept.php b/include/class.dept.php index 4e42d9335fca4fe40f339266012c8f400868100e..49ff05a8b473c541c71a8770cc066ff693b3e03f 100644 --- a/include/class.dept.php +++ b/include/class.dept.php @@ -62,11 +62,7 @@ implements TemplateVariable { const ALERTS_DEPT_AND_GROUPS = 1; const ALERTS_DEPT_ONLY = 0; - function getConfig() { - if (!isset($this->config)) - $this->config = new Config('dept.'. $this->getId()); - return $this->config; - } + const FLAG_ASSIGN_MEMBERS_ONLY = 0x0001; function asVar() { return $this->getName(); @@ -301,7 +297,7 @@ implements TemplateVariable { } function assignMembersOnly() { - return $this->getConfig()->get('assign_members_only', 0); + return $this->flags & self::FLAG_ASSIGN_MEMBERS_ONLY; } function isGroupMembershipEnabled() { @@ -314,11 +310,12 @@ implements TemplateVariable { foreach (static::$meta['joins'] as $k => $v) unset($ht[$k]); + $ht['assign_members_only'] = $this->flags & self::FLAG_ASSIGN_MEMBERS_ONLY; return $ht; } function getInfo() { - return $this->getConfig()->getInfo() + $this->getHashtable(); + return $this->getHashtable(); } function getAllowedGroups() { @@ -368,7 +365,6 @@ implements TemplateVariable { function updateSettings($vars) { $this->updateGroups($vars['groups'] ?: array(), $vars); - $this->getConfig()->set('assign_members_only', $vars['assign_members_only']); $this->path = $this->getFullPath(); $this->save(); return true; @@ -386,10 +382,8 @@ implements TemplateVariable { return 0; } - parent::delete(); $id = $this->getId(); - $sql='DELETE FROM '.DEPT_TABLE.' WHERE id='.db_input($id).' LIMIT 1'; - if(db_query($sql) && ($num=db_affected_rows())) { + if (parent::delete()) { // DO SOME HOUSE CLEANING //Move tickets to default Dept. TODO: Move one ticket at a time and send alerts + log notes. db_query('UPDATE '.TICKET_TABLE.' SET dept_id='.db_input($cfg->getDefaultDeptId()).' WHERE dept_id='.db_input($id)); @@ -403,9 +397,6 @@ implements TemplateVariable { //Delete group access db_query('DELETE FROM '.GROUP_DEPT_TABLE.' WHERE dept_id='.db_input($id)); - - // Destrory config settings - $this->getConfig()->destroy(); } return $num; @@ -602,6 +593,7 @@ implements TemplateVariable { $this->group_membership = $vars['group_membership']; $this->ticket_auto_response = isset($vars['ticket_auto_response'])?$vars['ticket_auto_response']:1; $this->message_auto_response = isset($vars['message_auto_response'])?$vars['message_auto_response']:1; + $this->flags = isset($vars['assign_members_only']) ? self::FLAG_ASSIGN_MEMBERS_ONLY : 0; if ($this->save()) return $this->updateSettings($vars); diff --git a/include/upgrader/streams/core/9143a511-00000000.cleanup.sql b/include/upgrader/streams/core/9143a511-00000000.cleanup.sql index 6df31117b1982e1e2e612b1b0c27d810b06346e9..1ebb607cac3537e1949a77f7e6890fd88723fbf5 100644 --- a/include/upgrader/streams/core/9143a511-00000000.cleanup.sql +++ b/include/upgrader/streams/core/9143a511-00000000.cleanup.sql @@ -44,3 +44,6 @@ EXECUTE stmt; ALTER TABLE `%TABLE_PREFIX%team` DROP `isenabled`, DROP `noalerts`; + +DELETE FROM `%TABLE_PREFIX%config` +WHERE `key`='assign_members_only' AND `namespace` LIKE 'dept.%'; diff --git a/include/upgrader/streams/core/9143a511-00000000.patch.sql b/include/upgrader/streams/core/9143a511-00000000.patch.sql index 3676eb32fe62e84f2261988d117ac428ac53441c..f723319f8e612069d3b0f0df8605fcc90ef8a51e 100644 --- a/include/upgrader/streams/core/9143a511-00000000.patch.sql +++ b/include/upgrader/streams/core/9143a511-00000000.patch.sql @@ -54,6 +54,15 @@ UPDATE `%TABLE_PREFIX%team` SET `flags` = CASE WHEN `isenabled` THEN 1 ELSE 0 END + CASE WHEN `noalerts` THEN 2 ELSE 0 END; +-- Migrate %config[namespace=dept.x, key=alert_members_only] +ALTER TABLE `%TABLE_PREFIX%department` + ADD `flags` int(10) unsigned NOT NULL default 0 AFTER `manager_id`; + +UPDATE `%TABLE_PREFIX%department` A1 + JOIN (SELECT `value` FROM `%TABLE_PREFIX%config`) `config` + ON (`config`.`namespace` = CONCAT('dept.', A1.`id`) AND `config`.`key` = 'assign_members_only') + SET A1.`flags` = 1 WHERE `config`.`value` != ''; + -- Finished with patch UPDATE `%TABLE_PREFIX%config` SET `value` = '00000000000000000000000000000000' diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql index 48b808d9e36b418f17feac0aa4309e7ac7525bf5..8f9fe2311b7b2d4bbc7eb114370ad9faee76c84e 100644 --- a/setup/inc/streams/core/install-mysql.sql +++ b/setup/inc/streams/core/install-mysql.sql @@ -206,6 +206,7 @@ CREATE TABLE `%TABLE_PREFIX%department` ( `email_id` int(10) unsigned NOT NULL default '0', `autoresp_email_id` int(10) unsigned NOT NULL default '0', `manager_id` int(10) unsigned NOT NULL default '0', + `flags` int(10) unsigned NOT NULL default 0, `name` varchar(128) NOT NULL default '', `signature` text NOT NULL, `ispublic` tinyint(1) unsigned NOT NULL default '1',