From a6fe826fe209a91181d293e2dfdd374575df4b78 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Sat, 21 Mar 2015 06:14:28 +0000 Subject: [PATCH] Save the Call Center XML only if the directory path has a value. --- resources/switch.php | 730 +++++++++++++++++++++---------------------- 1 file changed, 365 insertions(+), 365 deletions(-) diff --git a/resources/switch.php b/resources/switch.php index e84e89792a..c087219075 100644 --- a/resources/switch.php +++ b/resources/switch.php @@ -2172,436 +2172,436 @@ if (!function_exists('save_call_center_xml')) { function save_call_center_xml() { global $db, $domain_uuid; - //include the classes - include "app/dialplan/resources/classes/dialplan.php"; + if (strlen($_SESSION['switch']['call_center']['dir']) > 0) { + //include the classes + include "app/dialplan/resources/classes/dialplan.php"; - $sql = "select * from v_call_center_queues "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - $result_count = count($result); - unset ($prep_statement, $sql); - if ($result_count > 0) { //found results - foreach($result as $row) { - //set the variables - $call_center_queue_uuid = $row["call_center_queue_uuid"]; - $domain_uuid = $row["domain_uuid"]; - $dialplan_uuid = $row["dialplan_uuid"]; - $queue_name = check_str($row["queue_name"]); - $queue_extension = $row["queue_extension"]; - $queue_strategy = $row["queue_strategy"]; - $queue_moh_sound = $row["queue_moh_sound"]; - $queue_record_template = $row["queue_record_template"]; - $queue_time_base_score = $row["queue_time_base_score"]; - $queue_max_wait_time = $row["queue_max_wait_time"]; - $queue_max_wait_time_with_no_agent = $row["queue_max_wait_time_with_no_agent"]; - $queue_tier_rules_apply = $row["queue_tier_rules_apply"]; - $queue_tier_rule_wait_second = $row["queue_tier_rule_wait_second"]; - $queue_tier_rule_wait_multiply_level = $row["queue_tier_rule_wait_multiply_level"]; - $queue_tier_rule_no_agent_no_wait = $row["queue_tier_rule_no_agent_no_wait"]; - $queue_timeout_action = $row["queue_timeout_action"]; - $queue_discard_abandoned_after = $row["queue_discard_abandoned_after"]; - $queue_abandoned_resume_allowed = $row["queue_abandoned_resume_allowed"]; - $queue_cid_prefix = $row["queue_cid_prefix"]; - $queue_announce_sound = $row["queue_announce_sound"]; - $queue_announce_frequency = $row["queue_announce_frequency"]; - $queue_description = check_str($row["queue_description"]); + $sql = "select * from v_call_center_queues "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $result_count = count($result); + unset ($prep_statement, $sql); + if ($result_count > 0) { + foreach($result as $row) { + //set the variables + $call_center_queue_uuid = $row["call_center_queue_uuid"]; + $domain_uuid = $row["domain_uuid"]; + $dialplan_uuid = $row["dialplan_uuid"]; + $queue_name = check_str($row["queue_name"]); + $queue_extension = $row["queue_extension"]; + $queue_strategy = $row["queue_strategy"]; + $queue_moh_sound = $row["queue_moh_sound"]; + $queue_record_template = $row["queue_record_template"]; + $queue_time_base_score = $row["queue_time_base_score"]; + $queue_max_wait_time = $row["queue_max_wait_time"]; + $queue_max_wait_time_with_no_agent = $row["queue_max_wait_time_with_no_agent"]; + $queue_tier_rules_apply = $row["queue_tier_rules_apply"]; + $queue_tier_rule_wait_second = $row["queue_tier_rule_wait_second"]; + $queue_tier_rule_wait_multiply_level = $row["queue_tier_rule_wait_multiply_level"]; + $queue_tier_rule_no_agent_no_wait = $row["queue_tier_rule_no_agent_no_wait"]; + $queue_timeout_action = $row["queue_timeout_action"]; + $queue_discard_abandoned_after = $row["queue_discard_abandoned_after"]; + $queue_abandoned_resume_allowed = $row["queue_abandoned_resume_allowed"]; + $queue_cid_prefix = $row["queue_cid_prefix"]; + $queue_announce_sound = $row["queue_announce_sound"]; + $queue_announce_frequency = $row["queue_announce_frequency"]; + $queue_description = check_str($row["queue_description"]); - //replace space with an underscore - $queue_name = str_replace(" ", "_", $queue_name); + //replace space with an underscore + $queue_name = str_replace(" ", "_", $queue_name); - //add each Queue to the dialplan - if (strlen($row['call_center_queue_uuid']) > 0) { - $action = 'add'; //set default action to add - $i = 0; + //add each Queue to the dialplan + if (strlen($row['call_center_queue_uuid']) > 0) { + $action = 'add'; //set default action to add + $i = 0; - //determine the action add or update - if (strlen($dialplan_uuid) > 0) { - $sql = "select * from v_dialplans "; - $sql .= "where dialplan_uuid = '".$dialplan_uuid."' "; - $prep_statement_2 = $db->prepare($sql); - $prep_statement_2->execute(); - while($row2 = $prep_statement_2->fetch(PDO::FETCH_ASSOC)) { - $action = 'update'; + //determine the action add or update + if (strlen($dialplan_uuid) > 0) { + $sql = "select * from v_dialplans "; + $sql .= "where dialplan_uuid = '".$dialplan_uuid."' "; + $prep_statement_2 = $db->prepare($sql); + $prep_statement_2->execute(); + while($row2 = $prep_statement_2->fetch(PDO::FETCH_ASSOC)) { + $action = 'update'; + } + unset ($sql, $prep_statement_2); } - unset ($sql, $prep_statement_2); - } - if ($action == 'add') { - //create queue entry in the dialplan - $dialplan_name = $queue_name; - $dialplan_order ='210'; - $dialplan_context = $_SESSION['context']; - $dialplan_enabled = 'true'; - $dialplan_description = $queue_description; - $app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; - $dialplan_uuid = uuid(); - dialplan_add($domain_uuid, $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid); + if ($action == 'add') { + //create queue entry in the dialplan + $dialplan_name = $queue_name; + $dialplan_order ='210'; + $dialplan_context = $_SESSION['context']; + $dialplan_enabled = 'true'; + $dialplan_description = $queue_description; + $app_uuid = '95788e50-9500-079e-2807-fd530b0ea370'; + $dialplan_uuid = uuid(); + dialplan_add($domain_uuid, $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid); - //add the dialplan_uuid to the call center table - $sql = "update v_call_center_queues set "; - $sql .= "dialplan_uuid = '$dialplan_uuid' "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and call_center_queue_uuid = '".$row['call_center_queue_uuid']."' "; - $db->exec(check_sql($sql)); - unset($sql); - } - if ($action == 'update') { - //add the dialplan_uuid to the call center table - $sql = "update v_dialplans set "; - $sql .= "dialplan_name = '".$queue_name."', "; - $sql .= "dialplan_description = '".$queue_description."' "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $sql .= "and dialplan_uuid = '".$dialplan_uuid."' "; - $db->exec(check_sql($sql)); - unset($sql); + //add the dialplan_uuid to the call center table + $sql = "update v_call_center_queues set "; + $sql .= "dialplan_uuid = '$dialplan_uuid' "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and call_center_queue_uuid = '".$row['call_center_queue_uuid']."' "; + $db->exec(check_sql($sql)); + unset($sql); + } + if ($action == 'update') { + //add the dialplan_uuid to the call center table + $sql = "update v_dialplans set "; + $sql .= "dialplan_name = '".$queue_name."', "; + $sql .= "dialplan_description = '".$queue_description."' "; + $sql .= "where domain_uuid = '".$domain_uuid."' "; + $sql .= "and dialplan_uuid = '".$dialplan_uuid."' "; + $db->exec(check_sql($sql)); + unset($sql); - //add the dialplan_uuid to the call center table - $sql = "delete from v_dialplan_details "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and dialplan_uuid = '$dialplan_uuid' "; - $db->exec(check_sql($sql)); - unset($sql); - } + //add the dialplan_uuid to the call center table + $sql = "delete from v_dialplan_details "; + $sql .= "where domain_uuid = '$domain_uuid' "; + $sql .= "and dialplan_uuid = '$dialplan_uuid' "; + $db->exec(check_sql($sql)); + unset($sql); + } - //group 1 - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction - $dialplan->dialplan_detail_type = '${caller_id_name}'; - $dialplan->dialplan_detail_data = '^([^#]+#)(.*)$'; - $dialplan->dialplan_detail_break = 'never'; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '1'; - $dialplan->dialplan_detail_order = '010'; - $dialplan->dialplan_detail_add(); - unset($dialplan); + //group 1 + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction + $dialplan->dialplan_detail_type = '${caller_id_name}'; + $dialplan->dialplan_detail_data = '^([^#]+#)(.*)$'; + $dialplan->dialplan_detail_break = 'never'; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '1'; + $dialplan->dialplan_detail_order = '010'; + $dialplan->dialplan_detail_add(); + unset($dialplan); - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'set'; - $dialplan->dialplan_detail_data = 'caller_id_name=$2'; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '1'; - $dialplan->dialplan_detail_order = '020'; - $dialplan->dialplan_detail_add(); - unset($dialplan); - - //group 2 - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'destination_number'; - $dialplan->dialplan_detail_data = '^'.$row['queue_extension'].'$'; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '010'; - $dialplan->dialplan_detail_add(); - unset($dialplan); - - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'answer'; - $dialplan->dialplan_detail_data = ''; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '020'; - $dialplan->dialplan_detail_add(); - unset($dialplan); - - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'set'; - $dialplan->dialplan_detail_data = 'hangup_after_bridge=true'; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '030'; - $dialplan->dialplan_detail_add(); - unset($dialplan); - - if (strlen($queue_cid_prefix) > 0) { $dialplan = new dialplan; $dialplan->domain_uuid = $domain_uuid; $dialplan->dialplan_uuid = $dialplan_uuid; $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction $dialplan->dialplan_detail_type = 'set'; - $dialplan->dialplan_detail_data = "effective_caller_id_name=".$queue_cid_prefix."-\${caller_id_name}"; + $dialplan->dialplan_detail_data = 'caller_id_name=$2'; + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '1'; + $dialplan->dialplan_detail_order = '020'; + $dialplan->dialplan_detail_add(); + unset($dialplan); + + //group 2 + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'condition'; //condition, action, antiaction + $dialplan->dialplan_detail_type = 'destination_number'; + $dialplan->dialplan_detail_data = '^'.$row['queue_extension'].'$'; $dialplan->dialplan_detail_break = ''; $dialplan->dialplan_detail_inline = ''; $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '040'; + $dialplan->dialplan_detail_order = '010'; $dialplan->dialplan_detail_add(); unset($dialplan); - } - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'callcenter'; - $dialplan->dialplan_detail_data = $queue_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '050'; - $dialplan->dialplan_detail_add(); - unset($dialplan); - - if (strlen($queue_timeout_action) > 0) { - $action_array = explode(":",$queue_timeout_action); $dialplan = new dialplan; $dialplan->domain_uuid = $domain_uuid; $dialplan->dialplan_uuid = $dialplan_uuid; $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = $action_array[0]; - $dialplan->dialplan_detail_data = substr($queue_timeout_action, strlen($action_array[0])+1, strlen($queue_timeout_action)); + $dialplan->dialplan_detail_type = 'answer'; + $dialplan->dialplan_detail_data = ''; $dialplan->dialplan_detail_break = ''; $dialplan->dialplan_detail_inline = ''; $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '060'; + $dialplan->dialplan_detail_order = '020'; $dialplan->dialplan_detail_add(); unset($dialplan); - } - $dialplan = new dialplan; - $dialplan->domain_uuid = $domain_uuid; - $dialplan->dialplan_uuid = $dialplan_uuid; - $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction - $dialplan->dialplan_detail_type = 'hangup'; - $dialplan->dialplan_detail_data = ''; - $dialplan->dialplan_detail_break = ''; - $dialplan->dialplan_detail_inline = ''; - $dialplan->dialplan_detail_group = '2'; - $dialplan->dialplan_detail_order = '070'; - $dialplan->dialplan_detail_add(); - unset($dialplan); + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan->dialplan_detail_type = 'set'; + $dialplan->dialplan_detail_data = 'hangup_after_bridge=true'; + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '2'; + $dialplan->dialplan_detail_order = '030'; + $dialplan->dialplan_detail_add(); + unset($dialplan); - //synchronize the xml config - save_dialplan_xml(); + if (strlen($queue_cid_prefix) > 0) { + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan->dialplan_detail_type = 'set'; + $dialplan->dialplan_detail_data = "effective_caller_id_name=".$queue_cid_prefix."-\${caller_id_name}"; + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '2'; + $dialplan->dialplan_detail_order = '040'; + $dialplan->dialplan_detail_add(); + unset($dialplan); + } - //unset variables - unset($action); + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan->dialplan_detail_type = 'callcenter'; + $dialplan->dialplan_detail_data = $queue_name."@".$_SESSION['domains'][$domain_uuid]['domain_name']; + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '2'; + $dialplan->dialplan_detail_order = '050'; + $dialplan->dialplan_detail_add(); + unset($dialplan); - } //end if strlen call_center_queue_uuid; add the call center queue to the dialplan - } + if (strlen($queue_timeout_action) > 0) { + $action_array = explode(":",$queue_timeout_action); + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan->dialplan_detail_type = $action_array[0]; + $dialplan->dialplan_detail_data = substr($queue_timeout_action, strlen($action_array[0])+1, strlen($queue_timeout_action)); + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '2'; + $dialplan->dialplan_detail_order = '060'; + $dialplan->dialplan_detail_add(); + unset($dialplan); + } - //prepare Queue XML string - $v_queues = ''; - $sql = "select * from v_call_center_queues "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - $x=0; - foreach ($result as &$row) { - $queue_name = $row["queue_name"]; - $queue_extension = $row["queue_extension"]; - $queue_strategy = $row["queue_strategy"]; - $queue_moh_sound = $row["queue_moh_sound"]; - $queue_record_template = $row["queue_record_template"]; - $queue_time_base_score = $row["queue_time_base_score"]; - $queue_max_wait_time = $row["queue_max_wait_time"]; - $queue_max_wait_time_with_no_agent = $row["queue_max_wait_time_with_no_agent"]; - $queue_tier_rules_apply = $row["queue_tier_rules_apply"]; - $queue_tier_rule_wait_second = $row["queue_tier_rule_wait_second"]; - $queue_tier_rule_wait_multiply_level = $row["queue_tier_rule_wait_multiply_level"]; - $queue_tier_rule_no_agent_no_wait = $row["queue_tier_rule_no_agent_no_wait"]; - $queue_discard_abandoned_after = $row["queue_discard_abandoned_after"]; - $queue_abandoned_resume_allowed = $row["queue_abandoned_resume_allowed"]; - $queue_announce_sound = $row["queue_announce_sound"]; - $queue_announce_frequency = $row ["queue_announce_frequency"]; - $queue_description = $row["queue_description"]; - if ($x > 0) { - $v_queues .= "\n"; - $v_queues .= " "; - } - $v_queues .= "\n"; - $v_queues .= " \n"; - if (strlen($queue_moh_sound) == 0) { - $v_queues .= " \n"; - } - else { - if (substr($queue_moh_sound, 0, 15) == 'local_stream://') { - $v_queues .= " \n"; + $dialplan = new dialplan; + $dialplan->domain_uuid = $domain_uuid; + $dialplan->dialplan_uuid = $dialplan_uuid; + $dialplan->dialplan_detail_tag = 'action'; //condition, action, antiaction + $dialplan->dialplan_detail_type = 'hangup'; + $dialplan->dialplan_detail_data = ''; + $dialplan->dialplan_detail_break = ''; + $dialplan->dialplan_detail_inline = ''; + $dialplan->dialplan_detail_group = '2'; + $dialplan->dialplan_detail_order = '070'; + $dialplan->dialplan_detail_add(); + unset($dialplan); + + //synchronize the xml config + save_dialplan_xml(); + + //unset variables + unset($action); + + } //end if strlen call_center_queue_uuid; add the call center queue to the dialplan + } + + //prepare Queue XML string + $v_queues = ''; + $sql = "select * from v_call_center_queues "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $x=0; + foreach ($result as &$row) { + $queue_name = $row["queue_name"]; + $queue_extension = $row["queue_extension"]; + $queue_strategy = $row["queue_strategy"]; + $queue_moh_sound = $row["queue_moh_sound"]; + $queue_record_template = $row["queue_record_template"]; + $queue_time_base_score = $row["queue_time_base_score"]; + $queue_max_wait_time = $row["queue_max_wait_time"]; + $queue_max_wait_time_with_no_agent = $row["queue_max_wait_time_with_no_agent"]; + $queue_tier_rules_apply = $row["queue_tier_rules_apply"]; + $queue_tier_rule_wait_second = $row["queue_tier_rule_wait_second"]; + $queue_tier_rule_wait_multiply_level = $row["queue_tier_rule_wait_multiply_level"]; + $queue_tier_rule_no_agent_no_wait = $row["queue_tier_rule_no_agent_no_wait"]; + $queue_discard_abandoned_after = $row["queue_discard_abandoned_after"]; + $queue_abandoned_resume_allowed = $row["queue_abandoned_resume_allowed"]; + $queue_announce_sound = $row["queue_announce_sound"]; + $queue_announce_frequency = $row ["queue_announce_frequency"]; + $queue_description = $row["queue_description"]; + if ($x > 0) { + $v_queues .= "\n"; + $v_queues .= " "; } - elseif (substr($queue_moh_sound, 0, 2) == '${' && substr($queue_moh_sound, -5) == 'ring}') { - $v_queues .= " \n"; + $v_queues .= "\n"; + $v_queues .= " \n"; + if (strlen($queue_moh_sound) == 0) { + $v_queues .= " \n"; } else { - $v_queues .= " \n"; - } - } - if (strlen($queue_record_template) > 0) { - $v_queues .= " \n"; - } - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " \n"; - $v_queues .= " "; - $x++; - } - unset ($prep_statement); - - //prepare Agent XML string - $v_agents = ''; - $sql = "select * from v_call_center_agents "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - $x=0; - foreach ($result as &$row) { - //get the values from the db and set as php variables - $agent_name = $row["agent_name"]; - $agent_type = $row["agent_type"]; - $agent_call_timeout = $row["agent_call_timeout"]; - $agent_contact = $row["agent_contact"]; - $agent_status = $row["agent_status"]; - $agent_no_answer_delay_time = $row["agent_no_answer_delay_time"]; - $agent_max_no_answer = $row["agent_max_no_answer"]; - $agent_wrap_up_time = $row["agent_wrap_up_time"]; - $agent_reject_delay_time = $row["agent_reject_delay_time"]; - $agent_busy_delay_time = $row["agent_busy_delay_time"]; - if ($x > 0) { - $v_agents .= "\n"; - $v_agents .= " "; - - } - - //get and then set the complete agent_contact with the call_timeout and when necessary confirm - //$tmp_confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1"; - //if you change this variable also change app/call_center/call_center_agent_edit.php - $tmp_confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1,group_confirm_read_timeout=2000,leg_timeout=".$agent_call_timeout; - if(strstr($agent_contact, '}') === FALSE) { - //not found - if(stristr($agent_contact, 'sofia/gateway') === FALSE) { - //add the call_timeout - $tmp_agent_contact = "{call_timeout=".$agent_call_timeout."}".$agent_contact; + if (substr($queue_moh_sound, 0, 15) == 'local_stream://') { + $v_queues .= " \n"; + } + elseif (substr($queue_moh_sound, 0, 2) == '${' && substr($queue_moh_sound, -5) == 'ring}') { + $v_queues .= " \n"; } else { - //add the call_timeout and confirm - $tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last; - $tmp_agent_contact = "{".$tmp_confirm.",call_timeout=".$agent_call_timeout."}".$agent_contact; + $v_queues .= " \n"; } } - else { - //found - if(stristr($agent_contact, 'sofia/gateway') === FALSE) { + if (strlen($queue_record_template) > 0) { + $v_queues .= " \n"; + } + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " \n"; + $v_queues .= " "; + $x++; + } + unset ($prep_statement); + + //prepare Agent XML string + $v_agents = ''; + $sql = "select * from v_call_center_agents "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $x=0; + foreach ($result as &$row) { + //get the values from the db and set as php variables + $agent_name = $row["agent_name"]; + $agent_type = $row["agent_type"]; + $agent_call_timeout = $row["agent_call_timeout"]; + $agent_contact = $row["agent_contact"]; + $agent_status = $row["agent_status"]; + $agent_no_answer_delay_time = $row["agent_no_answer_delay_time"]; + $agent_max_no_answer = $row["agent_max_no_answer"]; + $agent_wrap_up_time = $row["agent_wrap_up_time"]; + $agent_reject_delay_time = $row["agent_reject_delay_time"]; + $agent_busy_delay_time = $row["agent_busy_delay_time"]; + if ($x > 0) { + $v_agents .= "\n"; + $v_agents .= " "; + } + + //get and then set the complete agent_contact with the call_timeout and when necessary confirm + //$tmp_confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1"; + //if you change this variable also change app/call_center/call_center_agent_edit.php + $tmp_confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1,group_confirm_read_timeout=2000,leg_timeout=".$agent_call_timeout; + if(strstr($agent_contact, '}') === FALSE) { //not found - if(stristr($agent_contact, 'call_timeout') === FALSE) { + if(stristr($agent_contact, 'sofia/gateway') === FALSE) { //add the call_timeout - $tmp_pos = strrpos($agent_contact, "}"); - $tmp_first = substr($agent_contact, 0, $tmp_pos); - $tmp_last = substr($agent_contact, $tmp_pos); - $tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last; + $tmp_agent_contact = "{call_timeout=".$agent_call_timeout."}".$agent_contact; } else { - //the string has the call timeout - $tmp_agent_contact = $agent_contact; + //add the call_timeout and confirm + $tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last; + $tmp_agent_contact = "{".$tmp_confirm.",call_timeout=".$agent_call_timeout."}".$agent_contact; } } else { //found - $tmp_pos = strrpos($agent_contact, "}"); - $tmp_first = substr($agent_contact, 0, $tmp_pos); - $tmp_last = substr($agent_contact, $tmp_pos); - if(stristr($agent_contact, 'call_timeout') === FALSE) { - //add the call_timeout and confirm - $tmp_agent_contact = $tmp_first.','.$tmp_confirm.',call_timeout='.$agent_call_timeout.$tmp_last; + if(stristr($agent_contact, 'sofia/gateway') === FALSE) { + //not found + if(stristr($agent_contact, 'call_timeout') === FALSE) { + //add the call_timeout + $tmp_pos = strrpos($agent_contact, "}"); + $tmp_first = substr($agent_contact, 0, $tmp_pos); + $tmp_last = substr($agent_contact, $tmp_pos); + $tmp_agent_contact = $tmp_first.',call_timeout='.$agent_call_timeout.$tmp_last; + } + else { + //the string has the call timeout + $tmp_agent_contact = $agent_contact; + } } else { - //add confirm - $tmp_agent_contact = $tmp_first.','.$tmp_confirm.$tmp_last; + //found + $tmp_pos = strrpos($agent_contact, "}"); + $tmp_first = substr($agent_contact, 0, $tmp_pos); + $tmp_last = substr($agent_contact, $tmp_pos); + if(stristr($agent_contact, 'call_timeout') === FALSE) { + //add the call_timeout and confirm + $tmp_agent_contact = $tmp_first.','.$tmp_confirm.',call_timeout='.$agent_call_timeout.$tmp_last; + } + else { + //add confirm + $tmp_agent_contact = $tmp_first.','.$tmp_confirm.$tmp_last; + } } } - } - $v_agents .= "prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); - $x=0; - foreach ($result as &$row) { - $agent_name = $row["agent_name"]; - $queue_name = $row["queue_name"]; - $tier_level = $row["tier_level"]; - $tier_position = $row["tier_position"]; - if ($x > 0) { - $v_tiers .= "\n"; - $v_tiers .= " "; + $v_agents .= ""; - $x++; - } + unset ($prep_statement); - //set the path - if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) { - $path = "/usr/share/examples/fusionpbx/resources/templates/conf"; - } - else { - $path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/templates/conf"; - } + //prepare Tier XML string + $v_tiers = ''; + $sql = "select * from v_call_center_tiers "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); + $x=0; + foreach ($result as &$row) { + $agent_name = $row["agent_name"]; + $queue_name = $row["queue_name"]; + $tier_level = $row["tier_level"]; + $tier_position = $row["tier_position"]; + if ($x > 0) { + $v_tiers .= "\n"; + $v_tiers .= " "; + } + $v_tiers .= ""; + $x++; + } - //get the contents of the template - $file_contents = file_get_contents($path."/autoload_configs/callcenter.conf.xml"); + //set the path + if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) { + $path = "/usr/share/examples/fusionpbx/resources/templates/conf"; + } + else { + $path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/templates/conf"; + } - //add the Call Center Queues, Agents and Tiers to the XML config - $file_contents = str_replace("{v_queues}", $v_queues, $file_contents); - unset ($v_queues); + //get the contents of the template + $file_contents = file_get_contents($path."/autoload_configs/callcenter.conf.xml"); - $file_contents = str_replace("{v_agents}", $v_agents, $file_contents); - unset ($v_agents); + //add the Call Center Queues, Agents and Tiers to the XML config + $file_contents = str_replace("{v_queues}", $v_queues, $file_contents); + unset ($v_queues); - $file_contents = str_replace("{v_tiers}", $v_tiers, $file_contents); - unset ($v_tiers); + $file_contents = str_replace("{v_agents}", $v_agents, $file_contents); + unset ($v_agents); - //write the XML config file - $fout = fopen($_SESSION['switch']['conf']['dir']."/autoload_configs/callcenter.conf.xml","w"); - fwrite($fout, $file_contents); - fclose($fout); + $file_contents = str_replace("{v_tiers}", $v_tiers, $file_contents); + unset ($v_tiers); - //save the dialplan xml files - save_dialplan_xml(); + //write the XML config file + $fout = fopen($_SESSION['switch']['conf']['dir']."/autoload_configs/callcenter.conf.xml","w"); + fwrite($fout, $file_contents); + fclose($fout); - //apply settings - $_SESSION["reload_xml"] = true; + //save the dialplan xml files + save_dialplan_xml(); + //apply settings + $_SESSION["reload_xml"] = true; + } } } }