Portions created by the Initial Developer are Copyright (C) 2008-2012 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ require_once "root.php"; require_once "includes/require.php"; require_once "includes/checkauth.php"; if (permission_exists('call_center_queues_add') || permission_exists('call_center_queues_edit')) { //access granted } else { echo "access denied"; exit; } //action add or update if (isset($_REQUEST["id"])) { $action = "update"; $call_center_queue_uuid = check_str($_REQUEST["id"]); } else { $action = "add"; } //get http post variables and set them to php variables if (count($_POST)>0) { //$domain_uuid = check_str($_POST["domain_uuid"]); $queue_name = check_str($_POST["queue_name"]); $queue_extension = check_str($_POST["queue_extension"]); $queue_strategy = check_str($_POST["queue_strategy"]); $queue_moh_sound = check_str($_POST["queue_moh_sound"]); $queue_record_template = check_str($_POST["queue_record_template"]); $queue_time_base_score = check_str($_POST["queue_time_base_score"]); $queue_max_wait_time = check_str($_POST["queue_max_wait_time"]); $queue_max_wait_time_with_no_agent = check_str($_POST["queue_max_wait_time_with_no_agent"]); $queue_max_wait_time_with_no_agent_time_reached = check_str($_POST["queue_max_wait_time_with_no_agent_time_reached"]); $queue_tier_rules_apply = check_str($_POST["queue_tier_rules_apply"]); $queue_tier_rule_wait_second = check_str($_POST["queue_tier_rule_wait_second"]); $queue_tier_rule_wait_multiply_level = check_str($_POST["queue_tier_rule_wait_multiply_level"]); $queue_tier_rule_no_agent_no_wait = check_str($_POST["queue_tier_rule_no_agent_no_wait"]); $queue_timeout_action = check_str($_POST["queue_timeout_action"]); $queue_discard_abandoned_after = check_str($_POST["queue_discard_abandoned_after"]); $queue_abandoned_resume_allowed = check_str($_POST["queue_abandoned_resume_allowed"]); $queue_cid_prefix = check_str($_POST["queue_cid_prefix"]); $queue_description = check_str($_POST["queue_description"]); //remove invalid characters $queue_cid_prefix = str_replace(":", "-", $queue_cid_prefix); $queue_cid_prefix = str_replace("\"", "", $queue_cid_prefix); $queue_cid_prefix = str_replace("@", "", $queue_cid_prefix); $queue_cid_prefix = str_replace("\\", "", $queue_cid_prefix); $queue_cid_prefix = str_replace("/", "", $queue_cid_prefix); } if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; if ($action == "update") { $call_center_queue_uuid = check_str($_POST["call_center_queue_uuid"]); } //check for all required data if (strlen($domain_uuid) == 0) { $msg .= "Please provide: domain_uuid
\n"; } if (strlen($queue_name) == 0) { $msg .= "Please provide: Queue Name
\n"; } if (strlen($queue_extension) == 0) { $msg .= "Please provide: Extension
\n"; } if (strlen($queue_strategy) == 0) { $msg .= "Please provide: Strategy
\n"; } if (strlen($queue_moh_sound) == 0) { $msg .= "Please provide: Music on Hold
\n"; } //if (strlen($queue_record_template) == 0) { $msg .= "Please provide: Record Template
\n"; } //if (strlen($queue_time_base_score) == 0) { $msg .= "Please provide: Time Base Score
\n"; } //if (strlen($queue_max_wait_time) == 0) { $msg .= "Please provide: Max Wait Time
\n"; } //if (strlen($queue_max_wait_time_with_no_agent) == 0) { $msg .= "Please provide: Max Wait Time with no Agent
\n"; } //if (strlen($queue_max_wait_time_with_no_agent_time_reached) == 0) { $msg .= "Please provide: Max Wait Time with no Agent Time Reached.
\n"; } //if (strlen($queue_tier_rules_apply) == 0) { $msg .= "Please provide: Tier Rules Apply
\n"; } //if (strlen($queue_tier_rule_wait_second) == 0) { $msg .= "Please provide: Tier Rule Wait Second
\n"; } //if (strlen($queue_tier_rule_wait_multiply_level) == 0) { $msg .= "Please provide: Tier Rule Wait Multiply Level
\n"; } //if (strlen($queue_tier_rule_no_agent_no_wait) == 0) { $msg .= "Please provide: Tier Rule No Agent No Wait
\n"; } //if (strlen($queue_timeout_action) == 0) { $msg .= "Please provide: Timeout Action
\n"; } //if (strlen($queue_discard_abandoned_after) == 0) { $msg .= "Please provide: Discard Abandoned After
\n"; } //if (strlen($queue_abandoned_resume_allowed) == 0) { $msg .= "Please provide: Abandoned Resume Allowed
\n"; } //if (strlen($queue_cid_prefix) == 0) { $msg .= "Please provide: Caller ID Prefix
\n"; } //if (strlen($queue_description) == 0) { $msg .= "Please provide: Description
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "includes/header.php"; require_once "includes/persistformvar.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\n"; require_once "includes/footer.php"; return; } //add or update the database if ($_POST["persistformvar"] != "true") { if ($action == "add") { //add the call center queue $call_center_queue_uuid = uuid(); $sql = "insert into v_call_center_queues "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "call_center_queue_uuid, "; $sql .= "queue_name, "; $sql .= "queue_extension, "; $sql .= "queue_strategy, "; $sql .= "queue_moh_sound, "; $sql .= "queue_record_template, "; $sql .= "queue_time_base_score, "; $sql .= "queue_max_wait_time, "; $sql .= "queue_max_wait_time_with_no_agent, "; $sql .= "queue_max_wait_time_with_no_agent_time_reached, "; $sql .= "queue_tier_rules_apply, "; $sql .= "queue_tier_rule_wait_second, "; $sql .= "queue_tier_rule_wait_multiply_level, "; $sql .= "queue_tier_rule_no_agent_no_wait, "; $sql .= "queue_timeout_action, "; $sql .= "queue_discard_abandoned_after, "; $sql .= "queue_abandoned_resume_allowed, "; $sql .= "queue_cid_prefix, "; $sql .= "queue_description "; $sql .= ")"; $sql .= "values "; $sql .= "("; $sql .= "'$domain_uuid', "; $sql .= "'$call_center_queue_uuid', "; $sql .= "'$queue_name', "; $sql .= "'$queue_extension', "; $sql .= "'$queue_strategy', "; $sql .= "'$queue_moh_sound', "; $sql .= "'$queue_record_template', "; $sql .= "'$queue_time_base_score', "; $sql .= "'$queue_max_wait_time', "; $sql .= "'$queue_max_wait_time_with_no_agent', "; $sql .= "'$queue_max_wait_time_with_no_agent_time_reached', "; $sql .= "'$queue_tier_rules_apply', "; $sql .= "'$queue_tier_rule_wait_second', "; $sql .= "'$queue_tier_rule_wait_multiply_level', "; $sql .= "'$queue_tier_rule_no_agent_no_wait', "; $sql .= "'$queue_timeout_action', "; $sql .= "'$queue_discard_abandoned_after', "; $sql .= "'$queue_abandoned_resume_allowed', "; $sql .= "'$queue_cid_prefix', "; $sql .= "'$queue_description' "; $sql .= ")"; $db->exec(check_sql($sql)); unset($sql); //syncrhonize the configuration save_call_center_xml(); //redirect the user require_once "includes/header.php"; echo "\n"; echo "
\n"; echo "Add Complete\n"; echo "
\n"; require_once "includes/footer.php"; return; } //if ($action == "add") if ($action == "update") { //update the call center queue $sql = "update v_call_center_queues set "; $sql .= "queue_name = '$queue_name', "; $sql .= "queue_extension = '$queue_extension', "; $sql .= "queue_strategy = '$queue_strategy', "; $sql .= "queue_moh_sound = '$queue_moh_sound', "; $sql .= "queue_record_template = '$queue_record_template', "; $sql .= "queue_time_base_score = '$queue_time_base_score', "; $sql .= "queue_max_wait_time = '$queue_max_wait_time', "; $sql .= "queue_max_wait_time_with_no_agent = '$queue_max_wait_time_with_no_agent', "; $sql .= "queue_max_wait_time_with_no_agent_time_reached = '$queue_max_wait_time_with_no_agent_time_reached', "; $sql .= "queue_tier_rules_apply = '$queue_tier_rules_apply', "; $sql .= "queue_tier_rule_wait_second = '$queue_tier_rule_wait_second', "; $sql .= "queue_tier_rule_wait_multiply_level = '$queue_tier_rule_wait_multiply_level', "; $sql .= "queue_tier_rule_no_agent_no_wait = '$queue_tier_rule_no_agent_no_wait', "; $sql .= "queue_timeout_action = '$queue_timeout_action', "; $sql .= "queue_discard_abandoned_after = '$queue_discard_abandoned_after', "; $sql .= "queue_abandoned_resume_allowed = '$queue_abandoned_resume_allowed', "; $sql .= "queue_cid_prefix = '$queue_cid_prefix', "; $sql .= "queue_description = '$queue_description' "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and call_center_queue_uuid = '$call_center_queue_uuid'"; $db->exec(check_sql($sql)); unset($sql); //syncrhonize the configuration save_call_center_xml(); //redirect the user require_once "includes/header.php"; echo "\n"; echo "
\n"; echo "Update Complete\n"; echo "
\n"; require_once "includes/footer.php"; return; } //if ($action == "update") } //if ($_POST["persistformvar"] != "true") } //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) //pre-populate the form if (count($_GET)>0 && $_POST["persistformvar"] != "true") { $call_center_queue_uuid = $_GET["id"]; $sql = "select * from v_call_center_queues "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and call_center_queue_uuid = '$call_center_queue_uuid' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); 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_max_wait_time_with_no_agent_time_reached = $row["queue_max_wait_time_with_no_agent_time_reached"]; $queue_timeout_action = $row["queue_timeout_action"]; $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_cid_prefix = $row["queue_cid_prefix"]; $queue_description = $row["queue_description"]; break; //limit to 1 row } unset ($prep_statement); } //set default values if (strlen($queue_strategy) == 0) { $queue_strategy = "longest-idle-agent"; } if (strlen($queue_moh_sound) == 0) { $queue_moh_sound = "\$\${hold_music}"; } if (strlen($queue_time_base_score) == 0) { $queue_time_base_score = "system"; } if (strlen($queue_max_wait_time) == 0) { $queue_max_wait_time = "0"; } if (strlen($queue_max_wait_time_with_no_agent) == 0) { $queue_max_wait_time_with_no_agent = "30"; } if (strlen($queue_max_wait_time_with_no_agent_time_reached) == 0) { $queue_max_wait_time_with_no_agent_time_reached = "60"; } if (strlen($queue_tier_rules_apply) == 0) { $queue_tier_rules_apply = "false"; } if (strlen($queue_tier_rule_wait_second) == 0) { $queue_tier_rule_wait_second = "300"; } if (strlen($queue_tier_rule_wait_multiply_level) == 0) { $queue_tier_rule_wait_multiply_level = "true"; } if (strlen($queue_tier_rule_no_agent_no_wait) == 0) { $queue_tier_rule_no_agent_no_wait = "false"; } if (strlen($queue_discard_abandoned_after) == 0) { $queue_discard_abandoned_after = "60"; } if (strlen($queue_abandoned_resume_allowed) == 0) { $queue_abandoned_resume_allowed = "false"; } //show the header require_once "includes/header.php"; //show the content echo "
"; echo "\n"; echo "\n"; echo " "; echo " "; echo "
\n"; echo "
"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; if ($action == "add") { echo "\n"; } if ($action == "update") { echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " "; echo "
Call Center Queue AddCall Center Queue Edit\n"; if ($action == "update") { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } echo " \n"; echo "
\n"; //echo "Call Center queue settings.

\n"; echo "
\n"; echo " Queue Name:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the queue name.\n"; echo "
\n"; echo " Extension:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the extension number.\n"; echo "
\n"; echo " Strategy:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the queue strategy.\n"; echo "
\n"; echo " Music on Hold:\n"; echo "\n"; require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php"; $moh= new switch_music_on_hold; $moh->select_name = "queue_moh_sound"; $moh->select_value = $queue_moh_sound; echo $moh->select(); echo "
\n"; echo "Enter the music on hold information.\n"; echo "
\n"; echo " Record Template:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter a record template. \$\${base_dir}/recordings/archive/\${strftime(%Y)}/\${strftime(%b)}/\${strftime(%d)}/\${uuid}.wav\n"; echo "
\n"; echo " Time Base Score:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the time base score.\n"; echo "
\n"; echo " Max Wait Time:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the max wait time.\n"; echo "
\n"; echo " Max Wait Time with no Agent:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the max wait time with no agent.\n"; echo "
\n"; echo " Max Wait Time with no Agent time reached:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the max wait time with no agent time reached.\n"; echo "
\n"; echo " Timeout Action:\n"; echo "\n"; //switch_select_destination(select_type, select_label, select_name, select_value, select_style, action); switch_select_destination("dialplan", "", "queue_timeout_action", $queue_timeout_action, "", ""); echo "
\n"; echo "Set the action to perform when the max wait time is reached.\n"; echo "
\n"; echo " Tier Rules Apply:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Set the tier rule rules apply to true or false.\n"; echo "
\n"; echo " Tier Rule Wait Second:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the tier rule wait seconds.\n"; echo "
\n"; echo " Tier Rule Wait Multiply Level:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Set the tier rule wait multiply level to true or false.\n"; echo "
\n"; echo " Tier Rule No Agent No Wait:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the tier rule no agent no wait.\n"; echo "
\n"; echo " Discard Abandoned After:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Set the discard abandoned after seconds.\n"; echo "
\n"; echo " Abandoned Resume Allowed:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Set the abandoned resume allowed to true or false.\n"; echo "
\n"; echo " CID Prefix:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Set a prefix on the caller ID name.\n"; echo "
\n"; echo " Description:\n"; echo "\n"; echo " \n"; echo "
\n"; echo "Enter the description.\n"; echo "
\n"; if ($action == "update") { echo " \n"; } echo " \n"; echo "
"; echo ""; echo "
"; echo "
"; require_once "includes/footer.php"; ?>