Update time_condition_edit.php

Work on the indentation and update the dialplan xml.
This commit is contained in:
FusionPBX
2017-02-27 22:25:55 -07:00
committed by GitHub
parent 4fbcddb177
commit 578ba07d96

View File

@@ -84,253 +84,273 @@
}
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//check for all required data
//if (strlen($domain_uuid) == 0) { $msg .= $text['label-required-domain_uuid']."<br>\n"; }
if (strlen($dialplan_name) == 0) { $msg .= $text['label-required-dialplan_name']."<br>\n"; }
if (strlen($dialplan_number) == 0) { $msg .= $text['label-required-dialplan_number']."<br>\n"; }
//if (strlen($dialplan_action) == 0) { $msg .= $text['label-required-action']."<br>\n"; }
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
require_once "resources/header.php";
require_once "resources/persist_form_var.php";
echo "<div align='center'>\n";
echo "<table><tr><td>\n";
echo $msg."<br />";
echo "</td></tr></table>\n";
persistformvar($_POST);
echo "</div>\n";
require_once "resources/footer.php";
return;
}
//remove the invalid characters from the dialplan name
$dialplan_name = str_replace(' ', '_', $dialplan_name);
$dialplan_name = str_replace('/', '', $dialplan_name);
//start the atomic transaction
$count = $db->exec("BEGIN;"); //returns affected rows
//process main dialplan entry
if ($action == "add") {
//add main dialplan entry
$dialplan_uuid = uuid();
$sql = "insert into v_dialplans ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "app_uuid, ";
$sql .= "dialplan_name, ";
$sql .= "dialplan_number, ";
$sql .= "dialplan_order, ";
$sql .= "dialplan_continue, ";
$sql .= "dialplan_context, ";
$sql .= "dialplan_enabled, ";
$sql .= "dialplan_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "(";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'4b821450-926b-175a-af93-a03c441818b1', ";
$sql .= "'".$dialplan_name."', ";
$sql .= "'".$dialplan_number."', ";
$sql .= "'".$dialplan_order."', ";
$sql .= "'true', ";
if (strlen($domain_uuid) == 0) {
$sql .= "'\${domain_name}', ";
}
else {
$sql .= "'".$_SESSION['context']."', ";
}
$sql .= "'".$dialplan_enabled."', ";
$sql .= "'".$dialplan_description."' ";
$sql .= ")";
//execute query
$db->exec(check_sql($sql));
unset($sql);
}
else if ($action == "update") {
//update main dialplan entry
$sql = "update v_dialplans set ";
if (strlen($domain_uuid) == 0) {
$sql .= "domain_uuid = null, ";
}
else {
$sql .= "domain_uuid = '".$domain_uuid."', ";
}
$sql .= "dialplan_name = '".$dialplan_name."', ";
$sql .= "dialplan_number = '".$dialplan_number."', ";
$sql .= "dialplan_order = '".$dialplan_order."', ";
$sql .= "dialplan_continue = 'true', ";
if (strlen($domain_uuid) == 0) {
$sql .= "dialplan_context = '\${domain_name}', ";
}
else {
$sql .= "dialplan_context = '".$_SESSION['context']."', ";
}
$sql .= "dialplan_enabled = '".$dialplan_enabled."', ";
$sql .= "dialplan_description = '".$dialplan_description."' ";
$sql .= "where dialplan_uuid = '".$dialplan_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
//delete existing dialplan details
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$dialplan_uuid."'; ";
$db->query($sql);
unset($sql);
}
//initialize dialplan detail group and order numbers
$dialplan_detail_group = 0;
$dialplan_detail_order = 0;
//clean up array
//remove presets not checked, restructure variable array
if (is_array($_REQUEST['variable']['preset'])) {
foreach ($_REQUEST['variable']['preset'] as $group_id => $conditions) {
if (!in_array($group_id, $_REQUEST['preset'])) {
unset($_REQUEST['variable']['preset'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
continue;
}
$_REQUEST['variable'][$group_id] = $conditions;
//check for all required data
//if (strlen($domain_uuid) == 0) { $msg .= $text['label-required-domain_uuid']."<br>\n"; }
if (strlen($dialplan_name) == 0) { $msg .= $text['label-required-dialplan_name']."<br>\n"; }
if (strlen($dialplan_number) == 0) { $msg .= $text['label-required-dialplan_number']."<br>\n"; }
//if (strlen($dialplan_action) == 0) { $msg .= $text['label-required-action']."<br>\n"; }
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
require_once "resources/header.php";
require_once "resources/persist_form_var.php";
echo "<div align='center'>\n";
echo "<table><tr><td>\n";
echo $msg."<br />";
echo "</td></tr></table>\n";
persistformvar($_POST);
echo "</div>\n";
require_once "resources/footer.php";
return;
}
}
if (is_array($_REQUEST['variable']['custom'])) {
foreach ($_REQUEST['variable']['custom'] as $group_id => $conditions) {
$_REQUEST['variable'][$group_id] = $conditions;
}
}
unset($_REQUEST['variable']['custom'], $_REQUEST['variable']['preset']);
//remove invalid conditions and values by checking conditions
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $conditions) {
if (is_array($conditions)) {
foreach ($conditions as $condition_id => $condition_variable) {
if ($condition_variable == '') {
unset($_REQUEST['variable'][$group_id][$condition_id]);
unset($_REQUEST['value'][$group_id][$condition_id]);
}
//remove the invalid characters from the dialplan name
$dialplan_name = str_replace(' ', '_', $dialplan_name);
$dialplan_name = str_replace('/', '', $dialplan_name);
//start the atomic transaction
$count = $db->exec("BEGIN;"); //returns affected rows
//process main dialplan entry
if ($action == "add") {
//add main dialplan entry
$dialplan_uuid = uuid();
$sql = "insert into v_dialplans ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "app_uuid, ";
$sql .= "dialplan_name, ";
$sql .= "dialplan_number, ";
$sql .= "dialplan_order, ";
$sql .= "dialplan_continue, ";
$sql .= "dialplan_context, ";
$sql .= "dialplan_enabled, ";
$sql .= "dialplan_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "(";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
}
}
}
//remove invalid conditions and values by checking start value
if (is_array($_REQUEST['value'])) {
foreach ($_REQUEST['value'] as $group_id => $values) {
foreach ($values as $value_id => $value_range) {
if ($value_range['start'] == '') {
unset($_REQUEST['variable'][$group_id][$value_id]);
unset($_REQUEST['value'][$group_id][$value_id]);
else {
$sql .= "'".$domain_uuid."', ";
}
}
}
}
//remove any empty groups (where conditions no longer exist)
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $conditions) {
if (sizeof($conditions) == 0) {
unset($_REQUEST['variable'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
}
}
}
//remove groups where an action (or default_preset_action - if a preset group - or dialplan_anti_action) isn't defined
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $meh) {
if (
(in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '' && $_REQUEST['default_preset_action'] == '' && $_REQUEST['dialplan_anti_action'] == '') ||
(!in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '')
) {
unset($_REQUEST['variable'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
if (is_array($_REQUEST['preset'])) {
foreach ($_REQUEST['preset'] as $preset_id => $preset_group_id) {
if ($group_id == $preset_group_id) { unset($_REQUEST['preset'][$preset_id]); }
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'4b821450-926b-175a-af93-a03c441818b1', ";
$sql .= "'".$dialplan_name."', ";
$sql .= "'".$dialplan_number."', ";
$sql .= "'".$dialplan_order."', ";
$sql .= "'true', ";
if (strlen($domain_uuid) == 0) {
$sql .= "'\${domain_name}', ";
}
}
else {
$sql .= "'".$_SESSION['context']."', ";
}
$sql .= "'".$dialplan_enabled."', ";
$sql .= "'".$dialplan_description."' ";
$sql .= ")";
//execute query
$db->exec(check_sql($sql));
unset($sql);
}
}
else if ($action == "update") {
//update main dialplan entry
$sql = "update v_dialplans set ";
if (strlen($domain_uuid) == 0) {
$sql .= "domain_uuid = null, ";
}
else {
$sql .= "domain_uuid = '".$domain_uuid."', ";
}
$sql .= "dialplan_name = '".$dialplan_name."', ";
$sql .= "dialplan_number = '".$dialplan_number."', ";
$sql .= "dialplan_order = '".$dialplan_order."', ";
$sql .= "dialplan_continue = 'true', ";
if (strlen($domain_uuid) == 0) {
$sql .= "dialplan_context = '\${domain_name}', ";
}
else {
$sql .= "dialplan_context = '".$_SESSION['context']."', ";
}
$sql .= "dialplan_enabled = '".$dialplan_enabled."', ";
$sql .= "dialplan_description = '".$dialplan_description."' ";
$sql .= "where dialplan_uuid = '".$dialplan_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
//process conditions
$conditions_exist = false;
//begin insert query for custom and preset conditions
$sql = "insert into v_dialplan_details ";
$sql .= "( ";
$sql .= "domain_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "dialplan_detail_uuid, ";
$sql .= "dialplan_detail_tag, ";
$sql .= "dialplan_detail_type, ";
$sql .= "dialplan_detail_data, ";
$sql .= "dialplan_detail_break, ";
$sql .= "dialplan_detail_inline, ";
$sql .= "dialplan_detail_group, ";
$sql .= "dialplan_detail_order ";
$sql .= ") ";
$sql .= "values ";
//add conditions
if (is_array($_REQUEST['variable'])) foreach ($_REQUEST['variable'] as $group_id => $conditions) {
$group_conditions_exist[$group_id] = false;
//determine if preset
$is_preset = (in_array($group_id, $_REQUEST['preset'])) ? true : false;
//set group and order number
$dialplan_detail_group_user = check_str($_POST["group_$group_id"]);
if($dialplan_detail_group_user!='') {
$dialplan_detail_group = $dialplan_detail_group_user;
} else {
$dialplan_detail_group = $group_id;
//delete existing dialplan details
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$dialplan_uuid."'; ";
$db->query($sql);
unset($sql);
}
//initialize dialplan detail group and order numbers
$dialplan_detail_group = 0;
$dialplan_detail_order = 0;
if (is_array($conditions)) foreach ($conditions as $cond_num => $cond_var) {
if ($cond_var != '') {
$cond_start = $_REQUEST['value'][$group_id][$cond_num]['start'];
$cond_stop = $_REQUEST['value'][$group_id][$cond_num]['stop'];
//clean up array
//remove presets not checked, restructure variable array
if (is_array($_REQUEST['variable']['preset'])) {
foreach ($_REQUEST['variable']['preset'] as $group_id => $conditions) {
if (!in_array($group_id, $_REQUEST['preset'])) {
unset($_REQUEST['variable']['preset'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
continue;
}
$_REQUEST['variable'][$group_id] = $conditions;
}
}
if (is_array($_REQUEST['variable']['custom'])) {
foreach ($_REQUEST['variable']['custom'] as $group_id => $conditions) {
$_REQUEST['variable'][$group_id] = $conditions;
}
}
unset($_REQUEST['variable']['custom'], $_REQUEST['variable']['preset']);
//convert time-of-day to minute-of-day (due to inconsistencies with time-of-day on some systems)
if ($cond_var == 'time-of-day') {
$cond_var = 'minute-of-day';
$array_cond_start = explode(':', $cond_start);
$cond_start = ($array_cond_start[0] * 60) + $array_cond_start[1];
if ($cond_stop != '') {
$array_cond_stop = explode(':', $cond_stop);
$cond_stop = ($array_cond_stop[0] * 60) + $array_cond_stop[1];
//remove invalid conditions and values by checking conditions
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $conditions) {
if (is_array($conditions)) {
foreach ($conditions as $condition_id => $condition_variable) {
if ($condition_variable == '') {
unset($_REQUEST['variable'][$group_id][$condition_id]);
unset($_REQUEST['value'][$group_id][$condition_id]);
}
}
}
}
}
$cond_value = $cond_start;
if ($cond_stop != '') {
$range_indicator = ($cond_var == 'date-time') ? '~' : '-';
$cond_value .= $range_indicator.$cond_stop;
//remove invalid conditions and values by checking start value
if (is_array($_REQUEST['value'])) {
foreach ($_REQUEST['value'] as $group_id => $values) {
foreach ($values as $value_id => $value_range) {
if ($value_range['start'] == '') {
unset($_REQUEST['variable'][$group_id][$value_id]);
unset($_REQUEST['value'][$group_id][$value_id]);
}
}
}
}
if (!$group_conditions_exist[$group_id]) {
//add destination number condition
//remove any empty groups (where conditions no longer exist)
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $conditions) {
if (sizeof($conditions) == 0) {
unset($_REQUEST['variable'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
}
}
}
//remove groups where an action (or default_preset_action - if a preset group - or dialplan_anti_action) isn't defined
if (is_array($_REQUEST['variable'])) {
foreach ($_REQUEST['variable'] as $group_id => $meh) {
if (
(in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '' && $_REQUEST['default_preset_action'] == '' && $_REQUEST['dialplan_anti_action'] == '') ||
(!in_array($group_id, $_REQUEST['preset']) && $_REQUEST['dialplan_action'][$group_id] == '')
) {
unset($_REQUEST['variable'][$group_id]);
unset($_REQUEST['value'][$group_id]);
unset($_REQUEST['dialplan_action'][$group_id]);
if (is_array($_REQUEST['preset'])) {
foreach ($_REQUEST['preset'] as $preset_id => $preset_group_id) {
if ($group_id == $preset_group_id) { unset($_REQUEST['preset'][$preset_id]); }
}
}
}
}
}
//process conditions
$conditions_exist = false;
//begin insert query for custom and preset conditions
$sql = "insert into v_dialplan_details ";
$sql .= "( ";
$sql .= "domain_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "dialplan_detail_uuid, ";
$sql .= "dialplan_detail_tag, ";
$sql .= "dialplan_detail_type, ";
$sql .= "dialplan_detail_data, ";
$sql .= "dialplan_detail_break, ";
$sql .= "dialplan_detail_inline, ";
$sql .= "dialplan_detail_group, ";
$sql .= "dialplan_detail_order ";
$sql .= ") ";
$sql .= "values ";
//add conditions
if (is_array($_REQUEST['variable'])) foreach ($_REQUEST['variable'] as $group_id => $conditions) {
$group_conditions_exist[$group_id] = false;
//determine if preset
$is_preset = (in_array($group_id, $_REQUEST['preset'])) ? true : false;
//set group and order number
$dialplan_detail_group_user = check_str($_POST["group_$group_id"]);
if($dialplan_detail_group_user!='') {
$dialplan_detail_group = $dialplan_detail_group_user;
} else {
$dialplan_detail_group = $group_id;
}
$dialplan_detail_order = 0;
if (is_array($conditions)) foreach ($conditions as $cond_num => $cond_var) {
if ($cond_var != '') {
$cond_start = $_REQUEST['value'][$group_id][$cond_num]['start'];
$cond_stop = $_REQUEST['value'][$group_id][$cond_num]['stop'];
//convert time-of-day to minute-of-day (due to inconsistencies with time-of-day on some systems)
if ($cond_var == 'time-of-day') {
$cond_var = 'minute-of-day';
$array_cond_start = explode(':', $cond_start);
$cond_start = ($array_cond_start[0] * 60) + $array_cond_start[1];
if ($cond_stop != '') {
$array_cond_stop = explode(':', $cond_stop);
$cond_stop = ($array_cond_stop[0] * 60) + $array_cond_stop[1];
}
}
$cond_value = $cond_start;
if ($cond_stop != '') {
$range_indicator = ($cond_var == 'date-time') ? '~' : '-';
$cond_value .= $range_indicator.$cond_stop;
}
if (!$group_conditions_exist[$group_id]) {
//add destination number condition
$dialplan_detail_order += 10;
$sql .= ($conditions_exist) ? ", ( " : "( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'condition', ";
$sql .= "'destination_number', ";
$sql .= "'^".$dialplan_number."$', ";
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
//add condition to query string
$dialplan_detail_order += 10;
$sql .= ($conditions_exist) ? ", ( " : "( ";
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
@@ -340,196 +360,180 @@
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'condition', ";
$sql .= "'destination_number', ";
$sql .= "'^".$dialplan_number."$', ";
$sql .= "'".$cond_var."', ";
$sql .= "'".$cond_value."', ";
$sql .= "'never', ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
$conditions_exist = true;
$group_conditions_exist[$group_id] = true;
} //if
} //for each
//continue adding to query only if conditions exist in current group
if ($group_conditions_exist[$group_id]) {
//determine group action app and data
$dialplan_action = check_str($_REQUEST["dialplan_action"][$group_id]);
if ($dialplan_action == '') {
if ($is_preset) {
if (check_str($_REQUEST['default_preset_action']) != '') {
$dialplan_action = check_str($_REQUEST['default_preset_action']);
}
else if (check_str($_REQUEST['dialplan_anti_action']) != '') {
$dialplan_action = check_str($_REQUEST['dialplan_anti_action']);
}
}
}
if ($dialplan_action != '') {
//if preset, set log variable
if ($is_preset && is_array($_REQUEST['preset'])) {
foreach ($_REQUEST['preset'] as $preset_number => $preset_group_id) {
if ($group_id == $preset_group_id) {
if (is_array($available_presets[$preset_number])) {
foreach ($available_presets[$preset_number] as $available_preset_name => $meh) {
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'set', ";
$sql .= "'preset=".$available_preset_name."', ";
$sql .= "null, ";
$sql .= "'true', ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
}
}
}
}
//parse group app and data
if (substr_count($dialplan_action, ":") > 0) {
$dialplan_action_array = explode(":", $dialplan_action);
$dialplan_action_app = array_shift($dialplan_action_array);
$dialplan_action_data = join(':', $dialplan_action_array);
}
else {
$dialplan_action_app = $dialplan_action;
$dialplan_action_data = '';
}
//add group action to query
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'".$dialplan_action_app."', ";
$sql .= "'".$dialplan_action_data."', ";
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
//add condition to query string
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'condition', ";
$sql .= "'".$cond_var."', ";
$sql .= "'".$cond_value."', ";
$sql .= "'never', ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
$conditions_exist = true;
$group_conditions_exist[$group_id] = true;
} //if
}
} //for each
//add to query for default anti-action (if defined)
if (strlen($dialplan_anti_action_app) > 0) {
//continue adding to query only if conditions exist in current group
if ($group_conditions_exist[$group_id]) {
//increment group number, reset order number
$dialplan_detail_group = 999;
$dialplan_detail_order = 0;
//determine group action app and data
$dialplan_action = check_str($_REQUEST["dialplan_action"][$group_id]);
if ($dialplan_action == '') {
if ($is_preset) {
if (check_str($_REQUEST['default_preset_action']) != '') {
$dialplan_action = check_str($_REQUEST['default_preset_action']);
}
else if (check_str($_REQUEST['dialplan_anti_action']) != '') {
$dialplan_action = check_str($_REQUEST['dialplan_anti_action']);
}
}
}
if ($dialplan_action != '') {
//if preset, set log variable
if ($is_preset && is_array($_REQUEST['preset'])) {
foreach ($_REQUEST['preset'] as $preset_number => $preset_group_id) {
if ($group_id == $preset_group_id) {
if (is_array($available_presets[$preset_number])) {
foreach ($available_presets[$preset_number] as $available_preset_name => $meh) {
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'set', ";
$sql .= "'preset=".$available_preset_name."', ";
$sql .= "null, ";
$sql .= "'true', ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
}
}
}
}
//parse group app and data
if (substr_count($dialplan_action, ":") > 0) {
$dialplan_action_array = explode(":", $dialplan_action);
$dialplan_action_app = array_shift($dialplan_action_array);
$dialplan_action_data = join(':', $dialplan_action_array);
}
else {
$dialplan_action_app = $dialplan_action;
$dialplan_action_data = '';
}
//add group action to query
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'".$dialplan_action_app."', ";
$sql .= "'".$dialplan_action_data."', ";
//add destination number condition
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
}
} //for each
//add to query for default anti-action (if defined)
if (strlen($dialplan_anti_action_app) > 0) {
//increment group number, reset order number
$dialplan_detail_group = 999;
$dialplan_detail_order = 0;
//add destination number condition
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'condition', ";
$sql .= "'destination_number', ";
$sql .= "'^".$dialplan_number."$', ";
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'condition', ";
$sql .= "'destination_number', ";
$sql .= "'^".$dialplan_number."$', ";
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
//add anti-action
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
//add anti-action
$dialplan_detail_order += 10;
$sql .= ", ( ";
if (strlen($domain_uuid) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".$domain_uuid."', ";
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'".$dialplan_anti_action_app."', ";
$sql .= "'".$dialplan_anti_action_data."', ";
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
else {
$sql .= "'".$domain_uuid."', ";
//execute query
if ($conditions_exist) {
$db->exec(check_sql($sql));
unset($sql);
}
$sql .= "'".$dialplan_uuid."', ";
$sql .= "'".uuid()."', ";
$sql .= "'action', ";
$sql .= "'".$dialplan_anti_action_app."', ";
$sql .= "'".$dialplan_anti_action_data."', ";
$sql .= "null, ";
$sql .= "null, ";
$sql .= "'".$dialplan_detail_group."', ";
$sql .= "'".$dialplan_detail_order."' ";
$sql .= ") ";
}
//execute query
if ($conditions_exist) {
$db->exec(check_sql($sql));
unset($sql);
}
//commit the atomic transaction
$count = $db->exec("COMMIT;");
//commit the atomic transaction
$count = $db->exec("COMMIT;"); //returns affected rows
//update the dialplan xml
$dialplans = new dialplan;
$dialplans->source = "details";
$dialplans->destination = "database";
$dialplans->uuid = $dialplan_uuid;
$dialplans->xml();
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["context"]);
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION["context"]);
//synchronize the xml config
save_dialplan_xml();
//synchronize the xml config
save_dialplan_xml();
//set the message
if ($action == "add") {
$_SESSION['message'] = $text['message-add'];
}
else if ($action == "update") {
$_SESSION['message'] = $text['message-update'];
}
header("Location: time_condition_edit.php?id=".$dialplan_uuid.(($app_uuid != '') ? "&app_uuid=".$app_uuid : null));
return;
//set the message
if ($action == "add") {
$_SESSION['message'] = $text['message-add'];
}
else if ($action == "update") {
$_SESSION['message'] = $text['message-update'];
}
header("Location: time_condition_edit.php?id=".$dialplan_uuid.(($app_uuid != '') ? "&app_uuid=".$app_uuid : null));
return;
} //end if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)