Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists('time_condition_add') || permission_exists('time_condition_edit')) { //access granted } else { echo "access denied"; exit; } require_once "resources/header.php"; require_once "resources/paging.php"; //add multi-lingual support $language = new text; $text = $language->get(); //load available presets foreach ($_SESSION['time_conditions']['preset'] as $json) { $available_presets[] = json_decode($json, true); } //set the action as an add or an update if (isset($_REQUEST["id"])) { $action = "update"; $dialplan_uuid = check_str($_REQUEST["id"]); } else { $action = "add"; } //get the post variables if (count($_POST) > 0) { $dialplan_name = check_str($_POST["dialplan_name"]); $dialplan_number = check_str($_POST["dialplan_number"]); $dialplan_order = check_str($_POST["dialplan_order"]); $dialplan_action = check_str($_POST["dialplan_action"]); $dialplan_action_array = explode(":", $dialplan_action); $dialplan_action_app = array_shift($dialplan_action_array); $dialplan_action_data = join(':', $dialplan_action_array); $dialplan_anti_action = check_str($_POST["dialplan_anti_action"]); $dialplan_anti_action_array = explode(":", $dialplan_anti_action); $dialplan_anti_action_app = array_shift($dialplan_anti_action_array); $dialplan_anti_action_data = join(':', $dialplan_anti_action_array); $dialplan_enabled = check_str($_POST["dialplan_enabled"]); $dialplan_description = check_str($_POST["dialplan_description"]); } if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //check for all required data if (strlen($domain_uuid) == 0) { $msg .= $text['label-required-domain_uuid']."
\n"; } if (strlen($dialplan_name) == 0) { $msg .= $text['label-required-dialplan_name']."
\n"; } if (strlen($dialplan_number) == 0) { $msg .= $text['label-required-dialplan_number']."
\n"; } if (strlen($dialplan_action) == 0) { $msg .= $text['label-required-action']."
\n"; } if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) { require_once "resources/header.php"; require_once "resources/persist_form_var.php"; echo "
\n"; echo "
\n"; echo $msg."
"; echo "
\n"; persistformvar($_POST); echo "
\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 .= "("; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'4b821450-926b-175a-af93-a03c441818b1', "; $sql .= "'".$dialplan_name."', "; $sql .= "'".$dialplan_number."', "; $sql .= "'".$dialplan_order."', "; $sql .= "'true', "; $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 "; $sql .= "dialplan_name = '".$dialplan_name."', "; $sql .= "dialplan_number = '".$dialplan_number."', "; $sql .= "dialplan_order = '".$dialplan_order."', "; $sql .= "dialplan_continue = 'true', "; $sql .= "dialplan_context = '".$_SESSION['context']."', "; $sql .= "dialplan_enabled = '".$dialplan_enabled."', "; $sql .= "dialplan_description = '".$dialplan_description."' "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and 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; //check if custom conditions defined $custom_conditions_defined = false; foreach ($_REQUEST['variable'] as $cond_var) { if ($cond_var != '') { $custom_conditions_defined = true; } } if ($custom_conditions_defined) { //build insert query for custom 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 destination number condition $dialplan_detail_order += 10; $sql .= "( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'condition', "; $sql .= "'destination_number', "; $sql .= "'^".$dialplan_number."$', "; $sql .= "'never', "; $sql .= "null, "; $sql .= "'".$dialplan_detail_group."', "; $sql .= "'".$dialplan_detail_order."' "; $sql .= ")"; //add custom conditions foreach ($_REQUEST['variable'] as $cond_num => $cond_var) { if ($cond_var != '') { $scope = $_REQUEST['scope'][$cond_num]; $cond_start = $_REQUEST[$cond_var][$cond_num]['start']; $cond_stop = $_REQUEST[$cond_var][$cond_num]['stop']; //handle time of day if ($cond_var == 'time-of-day' && $cond_start['hour'] != '') { //format condition start if ($cond_start['notation'] == 'PM') { $cond_start_hour = ($cond_start['hour'] != 12) ? $cond_start['hour'] += 12 : $cond_start['hour']; } else if ($cond_start['notation'] == 'AM') { $cond_start_hour = ($cond_start['hour'] == 12) ? $cond_start['hour'] -= 12 : $cond_start['hour']; } $cond_start_hour = number_pad($cond_start_hour,2); $cond_start_minute = $cond_start['minute']; $cond_start = $cond_start_hour.':'.$cond_start_minute; //format condition stop if ($cond_start != '' && $scope == 'range') { if ($cond_stop['notation'] == 'PM') { $cond_stop_hour = ($cond_stop['hour'] != 12) ? $cond_stop['hour'] += 12 : $cond_stop['hour']; } else if ($cond_stop['notation'] == 'AM') { $cond_stop_hour = ($cond_stop['hour'] == 12) ? $cond_stop['hour'] -= 12 : $cond_stop['hour']; } $cond_stop_hour = number_pad($cond_stop_hour,2); $cond_stop_minute = $cond_stop['minute']; $cond_stop = $cond_stop_hour.':'.$cond_stop_minute; } else { unset($cond_stop); } $cond_value = $cond_start.(($cond_stop != '') ? '-'.$cond_stop : null); } //handle all other variables else { if ($cond_start != '') { $cond_value = $cond_start; if ($scope == 'range' && $cond_stop != '') { $range_indicator = ($cond_var == 'date-time') ? '~' : '-'; $cond_value .= $range_indicator.$cond_stop; } } } //add condition to query string $dialplan_detail_order += 10; $sql .= ", ( "; $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 .= ") "; } } //add condition action $dialplan_detail_order += 10; $sql .= ", ( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'action', "; $sql .= "'set', "; $sql .= "'time_condition=true', "; $sql .= "null, "; $sql .= "'true', "; $sql .= "'".$dialplan_detail_group."', "; $sql .= "'".$dialplan_detail_order."' "; $sql .= ") "; //execute query $db->exec(check_sql($sql)); unset($sql); } //add to query for preset conditions (if any) if (sizeof($_REQUEST['preset']) > 0) { //build insert query for 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 "; foreach ($_REQUEST['preset'] as $index => $preset_number) { //increment group and order number $dialplan_detail_group += 10; $dialplan_detail_order = 0; //add destination number condition $dialplan_detail_order += 10; $sql .= ($index != 0) ? "," : null; $sql .= " ( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'condition', "; $sql .= "'destination_number', "; $sql .= "'^".$dialplan_number."$', "; $sql .= "'never', "; $sql .= "null, "; $sql .= "'".$dialplan_detail_group."', "; $sql .= "'".$dialplan_detail_order."' "; $sql .= ") "; foreach ($available_presets[$preset_number] as $preset_name => $preset_variables) { foreach ($preset_variables as $cond_var => $cond_value) { //add preset condition to query string $dialplan_detail_order += 10; $sql .= ", ( "; $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 .= ") "; } } //add condition action $dialplan_detail_order += 10; $sql .= ", ( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'action', "; $sql .= "'set', "; $sql .= "'time_condition=true', "; $sql .= "null, "; $sql .= "'true', "; $sql .= "'".$dialplan_detail_group."', "; $sql .= "'".$dialplan_detail_order."' "; $sql .= ") "; } //execute query $db->exec(check_sql($sql)); unset($sql); } //increment group number, reset order number $dialplan_detail_group = 999; $dialplan_detail_order = 0; //add to query for main action and anti-action condition //build insert query for custom 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 destination number condition $dialplan_detail_order += 10; $sql .= "( "; $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 time condition met check $dialplan_detail_order += 10; $sql .= ", ( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'condition', "; $sql .= "'".'${time_condition}'."', "; $sql .= "'^true$', "; $sql .= "null, "; $sql .= "null, "; $sql .= "'".$dialplan_detail_group."', "; $sql .= "'".$dialplan_detail_order."' "; $sql .= ") "; //add main action $dialplan_detail_order += 10; $sql .= ", ( "; $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 anti-action (if defined) if (strlen($dialplan_anti_action_app) > 0) { $dialplan_detail_order += 10; $sql .= ", ( "; $sql .= "'".$domain_uuid."', "; $sql .= "'".$dialplan_uuid."', "; $sql .= "'".uuid()."', "; $sql .= "'anti-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 $db->exec(check_sql($sql)); unset($sql); //commit the atomic transaction $count = $db->exec("COMMIT;"); //returns affected rows //clear the cache $cache = new cache; $cache->delete("dialplan:".$_SESSION["context"]); //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; } //end if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) //get existing data to pre-populate form if ($dialplan_uuid != '' && $_POST["persistformvar"] != "true") { //get main dialplan entry $orm = new orm; $orm->name('dialplans'); $orm->uuid($dialplan_uuid); $result = $orm->find()->get(); //$message = $orm->message; foreach ($result as &$row) { $domain_uuid = $row["domain_uuid"]; //$app_uuid = $row["app_uuid"]; $dialplan_name = $row["dialplan_name"]; $dialplan_number = $row["dialplan_number"]; $dialplan_order = $row["dialplan_order"]; $dialplan_continue = $row["dialplan_continue"]; $dialplan_context = $row["dialplan_context"]; $dialplan_enabled = $row["dialplan_enabled"]; $dialplan_description = $row["dialplan_description"]; } unset ($prep_statement); //get dialplan detail conditions $sql = "select dialplan_detail_group, dialplan_detail_tag, dialplan_detail_type, dialplan_detail_data from v_dialplan_details "; $sql .= "where dialplan_uuid = '".$dialplan_uuid."' "; $sql .= "and "; $sql .= "( "; $sql .= " ( "; $sql .= " dialplan_detail_tag = 'condition' "; $sql .= " and dialplan_detail_type in ('year','mon','mday','wday','yday','week','mweek','hour','minute','minute-of-day','time-of-day','date-time') "; $sql .= " ) "; $sql .= " or ( "; $sql .= " dialplan_detail_tag = 'action' "; $sql .= " and dialplan_detail_group = '999' "; $sql .= " ) "; $sql .= " or ( "; $sql .= " dialplan_detail_tag = 'anti-action' "; $sql .= " and dialplan_detail_group = '999' "; $sql .= " ) "; $sql .= ") "; $sql .= "order by dialplan_detail_group asc, dialplan_detail_order asc"; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); unset ($prep_statement, $sql); //load current conditions into array (combined by group), and retrieve action and anti-action $c = 0; foreach ($result as $row) { switch ($row['dialplan_detail_tag']) { case 'condition': $current_conditions[$row['dialplan_detail_group']][$row['dialplan_detail_type']] = $row['dialplan_detail_data']; break; case 'action': $dialplan_action = $row['dialplan_detail_type'].':'.$row['dialplan_detail_data']; break; case 'anti-action': $dialplan_anti_action = $row['dialplan_detail_type'].':'.$row['dialplan_detail_data']; break; } } //loop through available presets foreach ($available_presets as $preset_number => $preset) { foreach ($preset as $preset_name => $preset_variables) { //loop through each condition group foreach ($current_conditions as $group_number => $condition_variables) { //compare variable count if (sizeof($preset_variables) == sizeof($condition_variables)) { $matches = 0; foreach ($condition_variables as $condition_variable_name => $condition_variable_value) { //count matching variable values if ($preset_variables[$condition_variable_name] == $condition_variable_value) { $matches++; } } //if all variables match, then condition is a preset if ($matches == sizeof($preset_variables)) { $current_presets[] = $preset_number; //drop group from array of current conditions unset($current_conditions[$group_number]); } } } } } //load remaining conditions as custom conditions $c = 0; foreach ($current_conditions as $conditions) { foreach ($conditions as $condition_variable => $condition_value) { $custom_conditions[$c]['var'] = $condition_variable; $custom_conditions[$c]['val'] = $condition_value; $c++; } } unset($current_conditions); } ?> \n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['title-time-conditions'].""; echo "

\n"; echo " ".$text['description-time-conditions']."\n"; echo "
\n"; echo " \n"; echo " \n"; echo "
"; 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 " ".$text['label-name']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo " ".$text['description-name']."\n"; echo "
\n"; echo "\n"; echo "
\n"; echo " ".$text['label-extension']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo " ".$text['description-extension']."
\n"; echo "
\n"; echo " ".$text['label-conditions']."\n"; echo "\n"; //define select box options for each time condition variable (where appropriate) for ($y = date('Y'); $y <= (date('Y') + 10); $y++) { $var_option_select['year'][$y] = $y; } //years for ($m = 1; $m <= 12; $m++) { $var_option_select['mon'][$m] = date('F', strtotime('2015-'.number_pad($m,2).'-01')); } //month names for ($d = 1; $d <= 366; $d++) { $var_option_select['yday'][$d] = $d; } //days of year for ($d = 1; $d <= 31; $d++) { $var_option_select['mday'][$d] = $d; } //days of month for ($d = 1; $d <= 7; $d++) { $var_option_select['wday'][$d] = date('l', strtotime('Sunday +'.($d-1).' days')); } //week days for ($w = 1; $w <= 53; $w++) { $var_option_select['week'][$w] = $w; } //weeks of year for ($w = 1; $w <= 5; $w++) { $var_option_select['mweek'][$w] = $w; } //weeks of month for ($h = 0; $h <= 23; $h++) { $var_option_select['hour'][$h] = (($h) ? (($h >= 12) ? (($h == 12) ? $h : ($h-12)).' PM' : $h.' AM') : '12 AM'); } //hours of day for ($m = 0; $m <= 59; $m++) { $var_option_select['minute'][$m] = number_pad($m,2); } //minutes of hour //output condition fields echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; $max_conditions = (is_array($custom_conditions)) ? sizeof($custom_conditions)+2 : 4; for ($c = 0; $c <= ($max_conditions - 1); $c++) { echo " \n"; echo " \n"; //specific or range $range_indicator = ($custom_conditions[$c]['var'] == 'date-time') ? '~' : '-'; $detail_data = explode($range_indicator, $custom_conditions[$c]['val']); echo " \n"; echo " \n"; echo " \n"; } echo "
".$text['label-condition_parameter']."".$text['label-condition_scope']."".$text['label-condition_values']."
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; //variables and values foreach ($time_condition_vars as $var_name => $var_label) { switch ($var_name) { case "minute-of-day" : echo "\n"; echo " \n"; echo " \n"; echo "  ~ \n"; echo " \n"; echo " \n"; echo "\n"; break; case "time-of-day" : //split out hours and minutes, determine am/pm value, then adjust hours accordingly if ($custom_conditions[$c]['var'] == $var_name && $detail_data[0] != '') { $detail_data_tmp = explode(':', $detail_data[0]); $detail_data_tmp[0] = (int) $detail_data_tmp[0]; if ($detail_data_tmp[0] != 0) { if ($detail_data_tmp[0] >= 12) { $detail_data['start_hour'] = ($detail_data_tmp[0] > 12) ? $detail_data_tmp[0] - 12 : $detail_data_tmp[0]; $detail_data['start_notation'] = 'PM'; } else { $detail_data['start_hour'] = $detail_data_tmp[0]; $detail_data['start_notation'] = 'AM'; } } else { $detail_data['start_hour'] = '12'; $detail_data['start_notation'] = 'AM'; } $detail_data['start_minute'] = (int) $detail_data_tmp[1]; unset($detail_data_tmp); } echo "\n"; echo " \n"; echo " \n"; echo " \n"; //split out hours and minutes, determine am/pm value, then adjust hours accordingly if ($custom_conditions[$c]['var'] == $var_name && $detail_data[1] != '') { $detail_data_tmp = explode(':', $detail_data[1]); $detail_data_tmp[0] = (int) $detail_data_tmp[0]; if ($detail_data_tmp[0] != 0) { if ($detail_data_tmp[0] >= 12) { $detail_data['stop_hour'] = ($detail_data_tmp[0] > 12) ? $detail_data_tmp[0] - 12 : $detail_data_tmp[0]; $detail_data['stop_notation'] = 'PM'; } else { $detail_data['stop_hour'] = $detail_data_tmp[0]; $detail_data['stop_notation'] = 'AM'; } } else { $detail_data['stop_hour'] = '12'; $detail_data['stop_notation'] = 'AM'; } $detail_data['stop_minute'] = (int) $detail_data_tmp[1]; unset($detail_data_tmp); } echo " \n"; echo "  ~ "; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; break; case "date-time" : echo "\n"; echo " \n"; echo " \n"; echo "  ~ \n"; echo " \n"; echo " \n"; echo "\n"; break; default: echo "\n"; echo " \n"; echo " \n"; echo "  ~ \n"; echo " \n"; echo " \n"; echo "\n"; } } echo "
\n"; if ($action == 'add') { echo "\n"; } echo "
"; echo " ".$text['description-conditions']."
\n"; echo "
\n"; echo " ".$text['label-presets']."\n"; echo "\n"; echo " \n"; echo " \n"; echo " "; echo " \n"; echo " \n"; echo "
\n"; $preset_count = sizeof($available_presets); $presets_per_column = ceil($preset_count / 3); $p = 0; foreach ($available_presets as $preset_number => $preset) { foreach ($preset as $preset_name => $preset_variables) { $checked = (is_array($current_presets) && in_array($preset_number, $current_presets)) ? "checked='checked'" : null; echo "
\n"; $p++; if ($p == $presets_per_column) { echo "
\n"; $p = 0; } } } echo "
\n"; echo "
\n"; echo " ".$text['description-presets']."
\n"; echo "
\n"; echo " ".$text['label-action']."\n"; echo "\n"; switch_select_destination("dialplan", $dialplan_action, "dialplan_action", $dialplan_action, '', ''); echo "
\n"; echo " ".$text['label-action-alternate']."\n"; echo "\n"; switch_select_destination("dialplan", $dialplan_anti_action, "dialplan_anti_action", $dialplan_anti_action, '', ''); echo "
\n"; echo "
\n"; echo " ".$text['label-order']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo "
\n"; echo "
"; echo "
\n"; if ($action == "update") { echo " \n"; } echo " \n"; echo "
"; echo ""; echo "
"; //include the footer require_once "resources/footer.php"; ?>