From 4f9b3533f2bb2ffb9a8684c73851666e8a39b884 Mon Sep 17 00:00:00 2001 From: Sipwise Jenkins Builder Date: Tue, 20 Jun 2023 16:39:16 +0200 Subject: [PATCH] MT#56845 New subscriber preference: `cloud_pbx_hunt_cancel_mode`, schemes update Change-Id: I2a068ac91ee231aeb6f70d23ef89d1b18960f723 --- schema/kamailio.sql | 2 +- schema/ngcp.sql | 3 +- schema/provisioning.json | 28 +++++++--- schema/provisioning.sql | 118 +++++++++++++++++++-------------------- 4 files changed, 81 insertions(+), 70 deletions(-) diff --git a/schema/kamailio.sql b/schema/kamailio.sql index e0265561..1ef64e50 100644 --- a/schema/kamailio.sql +++ b/schema/kamailio.sql @@ -1069,7 +1069,7 @@ INSERT INTO `dom_preferences` VALUES (27,'','0','voip.sipwise.local','play_annou INSERT INTO `dom_preferences` VALUES (28,'','0','voip.sipwise.local','mobile_push_enable',0,'never',NOW()); INSERT INTO `dom_preferences` VALUES (29,'','0','voip.sipwise.local','busy_hg_member_mode',0,'ring',NOW()); INSERT INTO `domain` VALUES (1,'voip.sipwise.local',NOW(),NULL); -INSERT INTO `subscriber` VALUES (1,'no_such_number','voip.sipwise.local','e1c2601c6a448a7b8aff90fb6a1c217d','0a799047585d088375293571363cfccc','a055f00375c7d1d3ed1572f81d8b6e23','9bcb88b6-541a-43da-8fdc-816f5557ff93','',NOW()); +INSERT INTO `subscriber` VALUES (1,'no_such_number','voip.sipwise.local','f18820efc46b27ca1e79defc53a13ce0','9b98383b437577f1d1fb8ea5f6e88bca','273fb5630bf94858f8deac25d0bacc26','9bcb88b6-541a-43da-8fdc-816f5557ff93','',NOW()); INSERT INTO `usr_preferences` VALUES (1,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','cloud_pbx_hunt_policy',0,'none',NOW()); INSERT INTO `usr_preferences` VALUES (5,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','emergency_location_format',0,'cirpack',NOW()); INSERT INTO `usr_preferences` VALUES (6,'9bcb88b6-541a-43da-8fdc-816f5557ff93','no_such_number','voip.sipwise.local','play_announce_before_recording',0,'never',NOW()); diff --git a/schema/ngcp.sql b/schema/ngcp.sql index 5b352979..a023e38c 100644 --- a/schema/ngcp.sql +++ b/schema/ngcp.sql @@ -20,7 +20,7 @@ CREATE TABLE `db_schema` ( `applied_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `rev_idx` (`revision`,`node`) -) ENGINE=InnoDB AUTO_INCREMENT=841 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +) ENGINE=InnoDB AUTO_INCREMENT=842 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -30883,6 +30883,7 @@ INSERT INTO `db_schema` VALUES (837,15768,'spce',NOW()); INSERT INTO `db_schema` VALUES (838,15770,'spce',NOW()); INSERT INTO `db_schema` VALUES (839,15771,'spce',NOW()); INSERT INTO `db_schema` VALUES (840,15772,'spce',NOW()); +INSERT INTO `db_schema` VALUES (841,15773,'spce',NOW()); INSERT INTO `timezone` VALUES ('1','localtime',NOW(),NOW(),NULL); INSERT INTO `tzinfo_version` VALUES ('1','0',NOW(),NOW()); COMMIT; diff --git a/schema/provisioning.json b/schema/provisioning.json index 45374462..f3fe0429 100644 --- a/schema/provisioning.json +++ b/schema/provisioning.json @@ -6620,7 +6620,7 @@ "COLUMN_TYPE" : "timestamp", "EXTRA" : "", "IS_NULLABLE" : "NO", - "ORDINAL_POSITION" : 18, + "ORDINAL_POSITION" : 19, "TABLE_NAME" : "voip_subscribers", "key_col" : "voip_subscribers/create_timestamp" }, @@ -6680,7 +6680,7 @@ "COLUMN_TYPE" : "timestamp", "EXTRA" : "on update current_timestamp()", "IS_NULLABLE" : "NO", - "ORDINAL_POSITION" : 17, + "ORDINAL_POSITION" : 18, "TABLE_NAME" : "voip_subscribers", "key_col" : "voip_subscribers/modify_timestamp" }, @@ -6704,10 +6704,22 @@ "COLUMN_TYPE" : "varchar(255)", "EXTRA" : "", "IS_NULLABLE" : "YES", - "ORDINAL_POSITION" : 14, + "ORDINAL_POSITION" : 15, "TABLE_NAME" : "voip_subscribers", "key_col" : "voip_subscribers/pbx_extension" }, + "voip_subscribers/pbx_hunt_cancel_mode" : { + "CHARACTER_SET_NAME" : "utf8mb3", + "COLLATION_NAME" : "utf8mb3_general_ci", + "COLUMN_DEFAULT" : "'cancel'", + "COLUMN_NAME" : "pbx_hunt_cancel_mode", + "COLUMN_TYPE" : "enum('bye','cancel')", + "EXTRA" : "", + "IS_NULLABLE" : "YES", + "ORDINAL_POSITION" : 14, + "TABLE_NAME" : "voip_subscribers", + "key_col" : "voip_subscribers/pbx_hunt_cancel_mode" + }, "voip_subscribers/pbx_hunt_policy" : { "CHARACTER_SET_NAME" : "utf8mb3", "COLLATION_NAME" : "utf8mb3_general_ci", @@ -6740,7 +6752,7 @@ "COLUMN_TYPE" : "int(11) unsigned", "EXTRA" : "", "IS_NULLABLE" : "YES", - "ORDINAL_POSITION" : 16, + "ORDINAL_POSITION" : 17, "TABLE_NAME" : "voip_subscribers", "key_col" : "voip_subscribers/profile_id" }, @@ -6752,7 +6764,7 @@ "COLUMN_TYPE" : "int(11) unsigned", "EXTRA" : "", "IS_NULLABLE" : "YES", - "ORDINAL_POSITION" : 15, + "ORDINAL_POSITION" : 16, "TABLE_NAME" : "voip_subscribers", "key_col" : "voip_subscribers/profile_set_id" }, @@ -12945,7 +12957,7 @@ "key_col" : "ip_is_ipv6" }, "update_sound_set_handle_parents" : { - "ROUTINE_DEFINITION" : "BEGIN\n IF u_sound_set_id IS NOT NULL THEN\n DELETE p FROM voip_sound_set_handle_parents p\n WHERE set_id IN (\n WITH RECURSIVE cte as (\n SELECT s.id\n FROM voip_sound_sets s\n WHERE id = u_sound_set_id\n UNION\n SELECT s.id\n FROM voip_sound_sets s\n JOIN cte ON cte.id = s.parent_id\n )\n SELECT id\n FROM cte\n )\n AND (handle_id = u_handle_id OR 1=1);\n\n DELETE p FROM voip_sound_set_handle_parents p\n WHERE set_id IN (\n WITH RECURSIVE cte as (\n SELECT s.id, s.parent_id\n FROM voip_sound_sets s\n WHERE id = u_sound_set_id\n UNION\n SELECT s.id, s.parent_id\n FROM voip_sound_sets s\n JOIN cte ON cte.parent_id = s.id\n )\n SELECT id\n FROM cte\n )\n AND (handle_id = u_handle_id OR 1=1);\n\n INSERT INTO voip_sound_set_handle_parents(set_id, handle_id, parent_set_id, parent_chain)\n WITH RECURSIVE cte as (\n SELECT v.id AS set_id, v.handle_id,\n v.id AS data_set_id,\n CAST('' AS CHAR(4096)) AS parent_chain\n FROM (SELECT s.*, h.id as handle_id\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n WHERE v.id = (\n WITH RECURSIVE cte as (\n SELECT s.id, s.parent_id, CAST(0 as unsigned) as iter\n FROM voip_sound_sets s\n WHERE id = u_sound_set_id\n UNION\n SELECT s.id, s.parent_id, iter+1 as iter\n FROM voip_sound_sets s\n JOIN cte ON cte.parent_id = s.id\n )\n SELECT id\n FROM cte\n WHERE iter = (SELECT max(iter) from cte)\n )\n AND (v.handle_id = u_handle_id OR 1=1)\n UNION\n SELECT v.id AS set_id, v.handle_id,\n IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id,\n CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain\n FROM (SELECT s.*, h.id as handle_id, h.name as handle_name\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id\n )\n SELECT set_id, handle_id,\n IF(data_set_id = set_id, NULL, data_set_id) as data_set_id,\n parent_chain\n FROM cte;\n ELSE\n IF u_handle_id IS NOT NULL THEN\n DELETE FROM voip_sound_set_handle_parents WHERE handle_id = u_handle_id;\n ELSE\n DELETE FROM voip_sound_set_handle_parents;\n END IF;\n\n INSERT INTO voip_sound_set_handle_parents(set_id, handle_id, parent_set_id, parent_chain)\n WITH RECURSIVE cte as (\n SELECT v.id AS set_id, v.handle_id,\n v.id AS data_set_id,\n CAST('' AS CHAR(4096)) AS parent_chain\n FROM (SELECT s.*, h.id as handle_id\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n WHERE v.parent_id IS NULL\n AND (v.handle_id = u_handle_id OR 1=1)\n UNION\n SELECT v.id AS set_id, v.handle_id,\n IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id,\n CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain\n FROM (SELECT s.*, h.id as handle_id, h.name as handle_name\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id\n )\n SELECT set_id, handle_id,\n IF(data_set_id = set_id, NULL, data_set_id) as data_set_id,\n parent_chain\n FROM cte;\n END IF;\n\nEND", + "ROUTINE_DEFINITION" : "BEGIN\n IF u_sound_set_id IS NOT NULL THEN\n DELETE p FROM voip_sound_set_handle_parents p\n WHERE set_id = u_sound_set_id\n AND NOT EXISTS (SELECT id\n FROM voip_sound_sets\n WHERE id = u_sound_set_id);\n\n DELETE p FROM voip_sound_set_handle_parents p\n WHERE set_id IN (\n WITH RECURSIVE cte as (\n SELECT s.id\n FROM voip_sound_sets s\n WHERE id = u_sound_set_id\n UNION\n SELECT s.id\n FROM voip_sound_sets s\n JOIN cte ON cte.id = s.parent_id\n )\n SELECT id\n FROM cte\n )\n AND (handle_id = u_handle_id OR 1=1);\n\n INSERT INTO voip_sound_set_handle_parents(set_id, handle_id, parent_set_id, parent_chain)\n SELECT v.set_id, v.handle_id, v.data_set_id, v.parent_chain\n FROM (\n WITH RECURSIVE cte as (\n SELECT v.id AS set_id, v.handle_id,\n v.id AS data_set_id,\n CAST('' AS CHAR(4096)) AS parent_chain\n FROM (SELECT s.*, h.id as handle_id\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n WHERE v.id = (\n WITH RECURSIVE cte as (\n SELECT s.id, s.parent_id, CAST(0 as unsigned) as iter\n FROM voip_sound_sets s\n WHERE id = u_sound_set_id\n UNION\n SELECT s.id, s.parent_id, iter+1 as iter\n FROM voip_sound_sets s\n JOIN cte ON cte.parent_id = s.id\n )\n SELECT id\n FROM cte\n WHERE iter = (SELECT max(iter) from cte)\n )\n AND (v.handle_id = u_handle_id OR 1=1)\n UNION\n SELECT v.id AS set_id, v.handle_id,\n IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id,\n CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain\n FROM (SELECT s.*, h.id as handle_id, h.name as handle_name\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id\n )\n SELECT set_id, handle_id,\n IF(data_set_id = set_id, NULL, data_set_id) as data_set_id,\n parent_chain\n FROM cte\n ) as v\n ON DUPLICATE KEY UPDATE parent_set_id=v.data_set_id, parent_chain=v.parent_chain;\n ELSE\n IF u_handle_id IS NOT NULL THEN\n DELETE FROM voip_sound_set_handle_parents WHERE handle_id = u_handle_id;\n ELSE\n DELETE FROM voip_sound_set_handle_parents;\n END IF;\n\n INSERT INTO voip_sound_set_handle_parents(set_id, handle_id, parent_set_id, parent_chain)\n WITH RECURSIVE cte as (\n SELECT v.id AS set_id, v.handle_id,\n v.id AS data_set_id,\n CAST('' AS CHAR(4096)) AS parent_chain\n FROM (SELECT s.*, h.id as handle_id\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n WHERE v.parent_id IS NULL\n AND (v.handle_id = u_handle_id OR 1=1)\n UNION\n SELECT v.id AS set_id, v.handle_id,\n IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id,\n CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain\n FROM (SELECT s.*, h.id as handle_id, h.name as handle_name\n FROM (voip_sound_sets s, voip_sound_handles h)\n ) AS v\n LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id\n JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id\n )\n SELECT set_id, handle_id,\n IF(data_set_id = set_id, NULL, data_set_id) as data_set_id,\n parent_chain\n FROM cte;\n END IF;\n\nEND", "ROUTINE_TYPE" : "PROCEDURE", "key_col" : "update_sound_set_handle_parents" } @@ -14223,7 +14235,7 @@ "key_col" : "voip_sound_files_update_trig/voip_sound_files" }, "voip_sound_sets_create_trig/voip_sound_sets" : { - "ACTION_STATEMENT" : "BEGIN\n\n IF NEW.parent_id IS NOT NULL THEN\n CALL update_sound_set_handle_parents(NEW.id, NULL);\n END IF;\n\nEND", + "ACTION_STATEMENT" : "BEGIN\n\n CALL update_sound_set_handle_parents(NEW.id, NULL);\n\nEND", "ACTION_TIMING" : "AFTER", "EVENT_MANIPULATION" : "INSERT", "EVENT_OBJECT_SCHEMA" : "provisioning", @@ -14232,7 +14244,7 @@ "key_col" : "voip_sound_sets_create_trig/voip_sound_sets" }, "voip_sound_sets_delete_trig/voip_sound_sets" : { - "ACTION_STATEMENT" : "BEGIN\n\n DECLARE done INT DEFAULT 0;\n DECLARE set_id INT DEFAULT 0;\n DECLARE x CURSOR FOR\n SELECT DISTINCT set_id\n FROM voip_sound_set_handle_parents\n WHERE parent_set_id = OLD.id;\n DECLARE continue handler FOR NOT FOUND SET done = true;\n\n OPEN x;\n iter: LOOP\n FETCH x INTO set_id;\n IF done THEN\n LEAVE iter;\n END IF;\n CALL update_sound_set_handle_parents(set_id, NULL);\n END LOOP;\n CLOSE x;\n\nEND", + "ACTION_STATEMENT" : "BEGIN\n\n DECLARE done INT DEFAULT 0;\n DECLARE set_id INT DEFAULT 0;\n DECLARE x CURSOR FOR\n SELECT DISTINCT set_id\n FROM voip_sound_set_handle_parents\n WHERE parent_set_id = OLD.id;\n DECLARE continue handler FOR NOT FOUND SET done = true;\n\n OPEN x;\n iter: LOOP\n FETCH x INTO set_id;\n IF done THEN\n LEAVE iter;\n END IF;\n CALL update_sound_set_handle_parents(set_id, NULL);\n END LOOP;\n CLOSE x;\n\n CALL update_sound_set_handle_parents(OLD.id, NULL);\n\nEND", "ACTION_TIMING" : "AFTER", "EVENT_MANIPULATION" : "DELETE", "EVENT_OBJECT_SCHEMA" : "provisioning", diff --git a/schema/provisioning.sql b/schema/provisioning.sql index 5db1bda0..a941e999 100644 --- a/schema/provisioning.sql +++ b/schema/provisioning.sql @@ -1186,7 +1186,7 @@ CREATE TABLE `voip_preferences` ( UNIQUE KEY `attribute_idx` (`attribute`), KEY `vpgid_ref` (`voip_preference_groups_id`), CONSTRAINT `vpgid_ref` FOREIGN KEY (`voip_preference_groups_id`) REFERENCES `voip_preference_groups` (`id`) ON UPDATE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=398 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +) ENGINE=InnoDB AUTO_INCREMENT=399 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1209,7 +1209,7 @@ CREATE TABLE `voip_preferences_enum` ( PRIMARY KEY (`id`), KEY `preference_id` (`preference_id`), CONSTRAINT `voip_preferences_enum_ibfk_1` FOREIGN KEY (`preference_id`) REFERENCES `voip_preferences` (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=388 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +) ENGINE=InnoDB AUTO_INCREMENT=390 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; @@ -1455,6 +1455,7 @@ CREATE TABLE `voip_subscribers` ( `is_pbx_group` tinyint(1) NOT NULL DEFAULT 0, `pbx_hunt_policy` enum('serial','parallel','random','circular','none') DEFAULT 'none', `pbx_hunt_timeout` int(4) unsigned DEFAULT NULL, + `pbx_hunt_cancel_mode` enum('bye','cancel') DEFAULT 'cancel', `pbx_extension` varchar(255) DEFAULT NULL, `profile_set_id` int(11) unsigned DEFAULT NULL, `profile_id` int(11) unsigned DEFAULT NULL, @@ -1986,6 +1987,12 @@ DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `update_sound_set_handle_parents`(IN u_sound_set_id INT, IN u_handle_id INT) BEGIN IF u_sound_set_id IS NOT NULL THEN + DELETE p FROM voip_sound_set_handle_parents p + WHERE set_id = u_sound_set_id + AND NOT EXISTS (SELECT id + FROM voip_sound_sets + WHERE id = u_sound_set_id); + DELETE p FROM voip_sound_set_handle_parents p WHERE set_id IN ( WITH RECURSIVE cte as ( @@ -1999,63 +2006,51 @@ BEGIN ) SELECT id FROM cte - ) - AND (handle_id = u_handle_id OR 1=1); - - DELETE p FROM voip_sound_set_handle_parents p - WHERE set_id IN ( - WITH RECURSIVE cte as ( - SELECT s.id, s.parent_id - FROM voip_sound_sets s - WHERE id = u_sound_set_id - UNION - SELECT s.id, s.parent_id - FROM voip_sound_sets s - JOIN cte ON cte.parent_id = s.id - ) - SELECT id - FROM cte - ) + ) AND (handle_id = u_handle_id OR 1=1); INSERT INTO voip_sound_set_handle_parents(set_id, handle_id, parent_set_id, parent_chain) - WITH RECURSIVE cte as ( + SELECT v.set_id, v.handle_id, v.data_set_id, v.parent_chain + FROM ( + WITH RECURSIVE cte as ( SELECT v.id AS set_id, v.handle_id, - v.id AS data_set_id, - CAST('' AS CHAR(4096)) AS parent_chain + v.id AS data_set_id, + CAST('' AS CHAR(4096)) AS parent_chain FROM (SELECT s.*, h.id as handle_id + FROM (voip_sound_sets s, voip_sound_handles h) + ) AS v + LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id + WHERE v.id = ( + WITH RECURSIVE cte as ( + SELECT s.id, s.parent_id, CAST(0 as unsigned) as iter + FROM voip_sound_sets s + WHERE id = u_sound_set_id + UNION + SELECT s.id, s.parent_id, iter+1 as iter + FROM voip_sound_sets s + JOIN cte ON cte.parent_id = s.id + ) + SELECT id + FROM cte + WHERE iter = (SELECT max(iter) from cte) + ) + AND (v.handle_id = u_handle_id OR 1=1) + UNION + SELECT v.id AS set_id, v.handle_id, + IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id, + CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain + FROM (SELECT s.*, h.id as handle_id, h.name as handle_name FROM (voip_sound_sets s, voip_sound_handles h) ) AS v LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id - WHERE v.id = ( - WITH RECURSIVE cte as ( - SELECT s.id, s.parent_id, CAST(0 as unsigned) as iter - FROM voip_sound_sets s - WHERE id = u_sound_set_id - UNION - SELECT s.id, s.parent_id, iter+1 as iter - FROM voip_sound_sets s - JOIN cte ON cte.parent_id = s.id - ) - SELECT id - FROM cte - WHERE iter = (SELECT max(iter) from cte) + JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id ) - AND (v.handle_id = u_handle_id OR 1=1) - UNION - SELECT v.id AS set_id, v.handle_id, - IF(f.use_parent = 0, v.id, cte.data_set_id) AS data_set_id, - CONCAT(v.parent_id, IF(cte.parent_chain, ':', ''), cte.parent_chain) as parent_chain - FROM (SELECT s.*, h.id as handle_id, h.name as handle_name - FROM (voip_sound_sets s, voip_sound_handles h) - ) AS v - LEFT JOIN voip_sound_files f ON f.handle_id = v.handle_id AND f.set_id = v.id - JOIN cte ON cte.set_id = v.parent_id AND cte.handle_id = v.handle_id - ) - SELECT set_id, handle_id, - IF(data_set_id = set_id, NULL, data_set_id) as data_set_id, - parent_chain - FROM cte; + SELECT set_id, handle_id, + IF(data_set_id = set_id, NULL, data_set_id) as data_set_id, + parent_chain + FROM cte + ) as v + ON DUPLICATE KEY UPDATE parent_set_id=v.data_set_id, parent_chain=v.parent_chain; ELSE IF u_handle_id IS NOT NULL THEN DELETE FROM voip_sound_set_handle_parents WHERE handle_id = u_handle_id; @@ -3810,6 +3805,7 @@ INSERT INTO `voip_preferences` VALUES (394,8,'csc_device_provisioning','CSC Devi INSERT INTO `voip_preferences` VALUES (395,8,'csc_hunt_groups','CSC Hunt Groups',1,1,1,0,0,0,0,0,0,0,0,NOW(),1,1,'boolean',0,'\'CSC Hunt Groups\' - An internal flag to be able to map Hunt Groups visibility to subscriber profiles. Not directly used',0,0,1); INSERT INTO `voip_preferences` VALUES (396,6,'peer_auth_registrar_server','Specific value for the registrar server',0,1,0,0,0,1,0,0,0,0,0,NOW(),0,0,'string',0,'Registrar server value is used as a registration R-URI as well as From/To domain in the outbound REGISTER.',0,0,0); INSERT INTO `voip_preferences` VALUES (397,8,'reseller_id','Internal Reseller #\'',1,1,1,0,0,0,0,0,0,0,0,NOW(),1,0,'int',0,NULL,0,0,0); +INSERT INTO `voip_preferences` VALUES (398,9,'cloud_pbx_hunt_cancel_mode','termination mode for early stage legs',0,1,1,0,0,0,0,0,0,0,0,NOW(),1,1,'enum',0,'This is a termination mode for call legs in the early dialog stage. Can be: bye or cancel.',0,0,0); INSERT INTO `voip_preferences_enum` VALUES (8,62,'use domain default',NULL,1,1,0,0,NULL,0,0,0,0,NULL,NULL); INSERT INTO `voip_preferences_enum` VALUES (9,62,'no','no',1,1,0,0,NULL,0,0,0,0,NULL,NULL); INSERT INTO `voip_preferences_enum` VALUES (10,62,'no','no',0,0,1,0,NULL,0,0,0,0,1,NULL); @@ -4161,6 +4157,8 @@ INSERT INTO `voip_preferences_enum` VALUES (384,382,'7','7',1,1,1,1,0,0,0,0,0,0, INSERT INTO `voip_preferences_enum` VALUES (385,382,'8 (slower, better quality)','8',1,1,1,1,0,0,0,0,0,0,NULL); INSERT INTO `voip_preferences_enum` VALUES (386,382,'9','9',1,1,1,1,0,0,0,0,0,0,NULL); INSERT INTO `voip_preferences_enum` VALUES (387,382,'10 (slowest, best quality)','10',1,1,1,1,0,0,0,0,0,0,NULL); +INSERT INTO `voip_preferences_enum` VALUES (388,398,'bye','bye',1,0,0,0,0,0,0,0,0,0,0); +INSERT INTO `voip_preferences_enum` VALUES (389,398,'cancel','cancel',1,0,0,0,0,0,0,0,0,0,0); INSERT INTO `voip_sound_groups` VALUES (1,'early_rejects'); INSERT INTO `voip_sound_groups` VALUES (2,'pbx'); INSERT INTO `voip_sound_groups` VALUES (3,'calling_card'); @@ -4325,7 +4323,7 @@ INSERT INTO `voip_sound_handles` VALUES (149,'recent_call_deleted',12,1); INSERT INTO `voip_sound_handles` VALUES (150,'ringback_tone',13,1); INSERT INTO `voip_sound_handles` VALUES (151,'aa_timeout',2,1); INSERT INTO `voip_sound_handles` VALUES (152,'aa_default',2,1); -INSERT INTO `voip_subscribers` VALUES (3,'no_such_number',2,'9bcb88b6-541a-43da-8fdc-816f5557ff93','e1c2601c6a448a7b8aff90fb6a1c217d',0,NULL,NULL,NULL,0,0,'none',NULL,NULL,NULL,NULL,NOW(),NOW()); +INSERT INTO `voip_subscribers` VALUES (3,'no_such_number',2,'9bcb88b6-541a-43da-8fdc-816f5557ff93','f18820efc46b27ca1e79defc53a13ce0',0,NULL,NULL,NULL,0,0,'none',NULL,'cancel',NULL,NULL,NULL,NOW(),NOW()); INSERT INTO `voip_usr_preferences` VALUES (1,3,97,'none',NOW()); INSERT INTO `voip_usr_preferences` VALUES (7,3,372,'cirpack',NOW()); INSERT INTO `voip_usr_preferences` VALUES (8,3,305,'never',NOW()); @@ -6219,7 +6217,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_files_create_trig AFTER UPDATE ON voip_sound_files - FOR each ROW BEGIN +FOR each ROW BEGIN CALL update_sound_set_handle_parents(NEW.set_id, NEW.handle_id); @@ -6239,7 +6237,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_files_update_trig AFTER UPDATE ON voip_sound_files - FOR each ROW BEGIN +FOR each ROW BEGIN CALL update_sound_set_handle_parents(NEW.set_id, NEW.handle_id); @@ -6259,7 +6257,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_files_delete_trig AFTER DELETE ON voip_sound_files - FOR each ROW BEGIN +FOR each ROW BEGIN DECLARE done INT DEFAULT 0; DECLARE set_id INT DEFAULT 0; @@ -6296,11 +6294,9 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_sets_create_trig AFTER INSERT ON voip_sound_sets - FOR each ROW BEGIN +FOR each ROW BEGIN - IF NEW.parent_id IS NOT NULL THEN - CALL update_sound_set_handle_parents(NEW.id, NULL); - END IF; + CALL update_sound_set_handle_parents(NEW.id, NULL); END */;; DELIMITER ; @@ -6318,7 +6314,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_sets_update_trig AFTER UPDATE ON voip_sound_sets - FOR each ROW BEGIN +FOR each ROW BEGIN IF NOT (OLD.parent_id <=> NEW.parent_id) THEN CALL update_sound_set_handle_parents(NEW.id, NULL); @@ -6340,7 +6336,7 @@ DELIMITER ; /*!50003 SET sql_mode = 'NO_ENGINE_SUBSTITUTION' */ ; DELIMITER ;; /*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER voip_sound_sets_delete_trig AFTER DELETE ON voip_sound_sets - FOR each ROW BEGIN +FOR each ROW BEGIN DECLARE done INT DEFAULT 0; DECLARE set_id INT DEFAULT 0; @@ -6360,6 +6356,8 @@ DELIMITER ;; END LOOP; CLOSE x; + CALL update_sound_set_handle_parents(OLD.id, NULL); + END */;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ;