Add destination_numbers array and use a foreach.

This commit is contained in:
FusionPBX 2021-07-18 17:28:37 -06:00 committed by GitHub
parent f6f2f1c77f
commit 0445361ad1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 526 additions and 479 deletions

View File

@ -80,6 +80,7 @@
//get http post variables and set them to php variables
if (count($_POST) > 0) {
//set the variables
$dialplan_uuid = $_POST["dialplan_uuid"];
$domain_uuid = $_POST["domain_uuid"];
@ -114,14 +115,14 @@
$destination_carrier = $_POST["destination_carrier"];
//get the destination app and data
$destination_array = explode(":", $_POST["destination_action"], 2);
$destination_app = $destination_array[0];
$destination_data = $destination_array[1];
$destination_action_array = explode(":", $_POST["destination_action"], 2);
$destination_app = $destination_action_array[0];
$destination_data = $destination_action_array[1];
//get the alternate destination app and data
$destination_alternate_array = explode(":", $_POST["destination_alternate_action"], 2);
$destination_alternate_app = $destination_alternate_array[0];
$destination_alternate_data = $destination_alternate_array[1];
$destination_alternate_action_array = explode(":", $_POST["destination_alternate_action"], 2);
$destination_alternate_app = $destination_alternate_action_array[0];
$destination_alternate_data = $destination_alternate_action_array[1];
}
//process the http post
@ -133,14 +134,6 @@
$destination->domain_uuid = $domain_uuid;
}
//get the uuid
if ($action == "update" && is_uuid($_POST["destination_uuid"])) {
$destination_uuid = $_POST["destination_uuid"];
}
else {
$destination_uuid = uuid();
}
//set the default context
if ($destination_type =="inbound" && strlen($destination_context) == 0) {
$destination_context = 'public';
@ -194,6 +187,7 @@
//save the inbound destination and add the dialplan for the inbound route
if ($destination_type == 'inbound' || $destination_type == 'local') {
//get the array
$dialplan_details = $_POST["dialplan_details"];
@ -232,14 +226,27 @@
unset($sql, $parameters, $row);
}
//if the user doesn't have the correct permission then
//override destination_number and destination_context values
//get the uuid
if ($action == "update" && is_uuid($_POST["destination_uuid"])) {
$destination_uuid = $_POST["destination_uuid"];
}
//get the destination row values
if ($action == 'update' && is_uuid($destination_uuid)) {
$sql = "select * from v_destinations ";
$sql .= "where destination_uuid = :destination_uuid ";
$parameters['destination_uuid'] = $destination_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
}
//get the dialplan_uuid from the database
if (is_array($row) && @sizeof($row) != 0) {
$dialplan_uuid = $row["dialplan_uuid"];
}
//if the user doesn't have the correct permission then
//override destination_number and destination_context values
if (is_array($row) && @sizeof($row) != 0) {
if (!permission_exists('destination_trunk_prefix')) {
$destination_trunk_prefix = $row["destination_trunk_prefix"];
@ -259,7 +266,37 @@
}
}
unset($sql, $parameters, $row);
//build the destination_numbers array
$array = explode('-', $destination_number);
$array = array_map('trim', $array);
if (count($array) == 2 && is_numeric($array[0]) && is_numeric($array[1])) {
$destination_numbers = range($array[0], $array[1]);
$destination_number_range = true;
}
elseif (stristr($destination_number, 'n') || stristr($destination_number, 'x') || stristr($destination_number, 'z')) {
//n = 2-9, x = 0-9, z = 1-9
$destination_start = $destination_number;
$destination_end = $destination_number;
$destination_start = str_ireplace("n", "2", $destination_start);
$destination_end = str_ireplace("n", "9", $destination_end);
$destination_start = str_ireplace("x", "0", $destination_start);
$destination_end = str_ireplace("x", "9", $destination_end);
$destination_start = str_ireplace("z", "1", $destination_start);
$destination_end = str_ireplace("z", "9", $destination_end);
$destination_numbers = range($destination_start, $destination_end);
$destination_number_range = true;
}
else {
//$destination_numbers[] = $destination_number;
$destination_numbers = $array;
$destination_number_range = false;
}
unset($array);
//add the destinations and asscociated dialplans
$x = 0;
foreach($destination_numbers as $destination_number) {
//convert the number to a regular expression
if (isset($destination_prefix) && strlen($destination_prefix) > 0) {
@ -279,12 +316,21 @@
unset($destination_numbers);
//if empty then get new uuid
if (!is_uuid($destination_uuid)) {
$destination_uuid = uuid();
}
if (!is_uuid($dialplan_uuid)) {
$dialplan_uuid = uuid();
}
//if the destination range is true then set a new uuid for each iteration of the loop
if ($destination_number_range) {
$destination_uuid = uuid();
$dialplan_uuid = uuid();
}
//set the dialplan_uuid
$array['destinations'][0]["dialplan_uuid"] = $dialplan_uuid;
$array['destinations'][$x]["dialplan_uuid"] = $dialplan_uuid;
//build the dialplan array
if ($destination_type == "inbound") {
@ -663,59 +709,61 @@
}
//build the destination array
$array['destinations'][0]["domain_uuid"] = $domain_uuid;
$array['destinations'][0]["destination_uuid"] = $destination_uuid;
$array['destinations'][0]["dialplan_uuid"] = $dialplan_uuid;
$array['destinations'][0]["fax_uuid"] = $fax_uuid;
$array['destinations'][$x]["domain_uuid"] = $domain_uuid;
$array['destinations'][$x]["destination_uuid"] = $destination_uuid;
$array['destinations'][$x]["dialplan_uuid"] = $dialplan_uuid;
$array['destinations'][$x]["fax_uuid"] = $fax_uuid;
if (permission_exists('provider_edit')) {
$array['destinations'][0]["provider_uuid"] = $provider_uuid;
$array['destinations'][$x]["provider_uuid"] = $provider_uuid;
}
if (permission_exists('user_edit')) {
$array['destinations'][0]["user_uuid"] = $user_uuid;
$array['destinations'][$x]["user_uuid"] = $user_uuid;
}
$array['destinations'][0]["destination_type"] = $destination_type;
$array['destinations'][$x]["destination_type"] = $destination_type;
if (permission_exists('destination_condition_field')) {
$array['destinations'][0]["destination_condition_field"] = $destination_condition_field;
$array['destinations'][$x]["destination_condition_field"] = $destination_condition_field;
}
if (permission_exists('destination_number')) {
$array['destinations'][0]["destination_number"] = $destination_number;
$array['destinations'][0]["destination_number_regex"] = $destination_number_regex;
$array['destinations'][0]["destination_prefix"] = $destination_prefix;
$array['destinations'][$x]["destination_number"] = $destination_number;
$array['destinations'][$x]["destination_number_regex"] = $destination_number_regex;
$array['destinations'][$x]["destination_prefix"] = $destination_prefix;
}
if (permission_exists('destination_trunk_prefix')) {
$array['destinations'][0]["destination_trunk_prefix"] = $destination_trunk_prefix;
$array['destinations'][$x]["destination_trunk_prefix"] = $destination_trunk_prefix;
}
if (permission_exists('destination_area_code')) {
$array['destinations'][0]["destination_area_code"] = $destination_area_code;
$array['destinations'][$x]["destination_area_code"] = $destination_area_code;
}
$array['destinations'][0]["destination_caller_id_name"] = $destination_caller_id_name;
$array['destinations'][0]["destination_caller_id_number"] = $destination_caller_id_number;
$array['destinations'][0]["destination_cid_name_prefix"] = $destination_cid_name_prefix;
$array['destinations'][0]["destination_context"] = $destination_context;
$array['destinations'][0]["destination_hold_music"] = $destination_hold_music;
$array['destinations'][0]["destination_record"] = $destination_record;
$array['destinations'][0]["destination_accountcode"] = $destination_accountcode;
$array['destinations'][0]["destination_type_voice"] = $destination_type_voice ? 1 : null;
$array['destinations'][0]["destination_type_fax"] = $destination_type_fax ? 1 : null;
$array['destinations'][0]["destination_type_text"] = $destination_type_text ? 1 : null;
$array['destinations'][$x]["destination_caller_id_name"] = $destination_caller_id_name;
$array['destinations'][$x]["destination_caller_id_number"] = $destination_caller_id_number;
$array['destinations'][$x]["destination_cid_name_prefix"] = $destination_cid_name_prefix;
$array['destinations'][$x]["destination_context"] = $destination_context;
$array['destinations'][$x]["destination_hold_music"] = $destination_hold_music;
$array['destinations'][$x]["destination_record"] = $destination_record;
$array['destinations'][$x]["destination_accountcode"] = $destination_accountcode;
$array['destinations'][$x]["destination_type_voice"] = $destination_type_voice ? 1 : null;
$array['destinations'][$x]["destination_type_fax"] = $destination_type_fax ? 1 : null;
$array['destinations'][$x]["destination_type_text"] = $destination_type_text ? 1 : null;
if (permission_exists('destination_emergency')){
$array['destinations'][0]["destination_type_emergency"] = $destination_type_emergency ? 1 : null;
$array['destinations'][$x]["destination_type_emergency"] = $destination_type_emergency ? 1 : null;
}
if ($destination->valid($destination_app.':'.$destination_data)) {
$array['destinations'][0]["destination_app"] = $destination_app;
$array['destinations'][0]["destination_data"] = $destination_data;
$array['destinations'][$x]["destination_app"] = $destination_app;
$array['destinations'][$x]["destination_data"] = $destination_data;
}
if ($destination->valid($destination_alternate_app.':'.$destination_alternate_data)) {
$array['destinations'][0]["destination_alternate_app"] = $destination_alternate_app;
$array['destinations'][0]["destination_alternate_data"] = $destination_alternate_data;
$array['destinations'][$x]["destination_alternate_app"] = $destination_alternate_app;
$array['destinations'][$x]["destination_alternate_data"] = $destination_alternate_data;
}
$array['destinations'][0]["destination_order"] = $destination_order;
$array['destinations'][0]["destination_enabled"] = $destination_enabled;
$array['destinations'][0]["destination_description"] = $destination_description;
$array['destinations'][$x]["destination_order"] = $destination_order;
$array['destinations'][$x]["destination_enabled"] = $destination_enabled;
$array['destinations'][$x]["destination_description"] = $destination_description;
$x++;
//prepare the array
$array['dialplans'][] = $dialplan;
unset($dialplan);
} //foreach($destination_numbers as $destination_number)
//add the dialplan permission
$p = new permissions;
@ -728,9 +776,6 @@
$database = new database;
$database->app_name = 'destinations';
$database->app_uuid = '5ec89622-b19c-3559-64f0-afde802ab139';
if (isset($dialplan["dialplan_uuid"])) {
$database->uuid($dialplan["dialplan_uuid"]);
}
$database->save($array);
$dialplan_response = $database->message;
@ -741,11 +786,12 @@
$p->delete("dialplan_detail_edit", 'temp');
//update the dialplan xml
if ($_SESSION['destinations']['dialplan_details']['boolean'] == "true") {
$dialplans = new dialplan;
$dialplans->source = "details";
$dialplans->destination = "database";
$dialplans->uuid = $dialplan_uuid;
$dialplans->xml();
}
//clear the cache
$cache = new cache;
@ -762,14 +808,15 @@
if ($destination_type == 'outbound') {
//prepare the array
$array['destinations'][0]["destination_uuid"] = $destination_uuid;
$array['destinations'][0]["domain_uuid"] = $domain_uuid;
$array['destinations'][0]["destination_type"] = $destination_type;
$array['destinations'][0]["destination_number"] = $destination_number;
$array['destinations'][0]["destination_prefix"] = $destination_prefix;
$array['destinations'][0]["destination_context"] = $destination_context;
$array['destinations'][0]["destination_enabled"] = $destination_enabled;
$array['destinations'][0]["destination_description"] = $destination_description;
$x = 0;
$array['destinations'][$x]["destination_uuid"] = $destination_uuid;
$array['destinations'][$x]["domain_uuid"] = $domain_uuid;
$array['destinations'][$x]["destination_type"] = $destination_type;
$array['destinations'][$x]["destination_number"] = $destination_number;
$array['destinations'][$x]["destination_prefix"] = $destination_prefix;
$array['destinations'][$x]["destination_context"] = $destination_context;
$array['destinations'][$x]["destination_enabled"] = $destination_enabled;
$array['destinations'][$x]["destination_description"] = $destination_description;
//save the destination
$database = new database;