mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Add select_mode
This commit is contained in:
@@ -155,6 +155,7 @@ if (!class_exists('destinations')) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build the destination select list
|
||||
* @var string $destination_type can be ivr, dialplan, call_center_contact or bridge
|
||||
@@ -173,252 +174,345 @@ if (!class_exists('destinations')) {
|
||||
$database = new database;
|
||||
$this->domain_name = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//get the destinations
|
||||
if (!is_array($this->destinations)) {
|
||||
//create a single destination select list
|
||||
if ($_SESSION['destinations']['select_mode']['text'] == 'default') {
|
||||
//get the destinations
|
||||
if (!is_array($this->destinations)) {
|
||||
|
||||
//get the array from the app_config.php files
|
||||
$config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
|
||||
$x = 0;
|
||||
foreach ($config_list as &$config_path) {
|
||||
try {
|
||||
include($config_path);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
$i = 0;
|
||||
foreach ($apps as $x => &$app) {
|
||||
if (isset($app['destinations'])) foreach ($app['destinations'] as &$row) {
|
||||
if (permission_exists($this->singular($row["name"])."_destinations")) {
|
||||
$this->destinations[] = $row;
|
||||
}
|
||||
}
|
||||
}
|
||||
//put the array in order
|
||||
if ($this->destinations !== null && is_array($this->destinations)) {
|
||||
foreach ($this->destinations as $row) {
|
||||
$option_groups[] = $row['label'];
|
||||
}
|
||||
array_multisort($option_groups, SORT_ASC, $this->destinations);
|
||||
}
|
||||
//add the sql and data to the array
|
||||
if ($this->destinations !== null && is_array($this->destinations)) {
|
||||
//get the array from the app_config.php files
|
||||
$config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
|
||||
$x = 0;
|
||||
foreach ($this->destinations as $row) {
|
||||
if ($row['type'] === 'sql') {
|
||||
$table_name = preg_replace('#[^a-zA-Z0-9_]#', '', $row['name']);
|
||||
if (isset($row['sql'])) {
|
||||
if (is_array($row['sql'])) {
|
||||
$sql = trim($row['sql'][$db_type])." ";
|
||||
}
|
||||
else {
|
||||
$sql = trim($row['sql'])." ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$field_count = count($row['field']);
|
||||
$fields = '';
|
||||
$c = 1;
|
||||
foreach ($row['field'] as $key => $value) {
|
||||
$key = preg_replace('#[^a-zA-Z0-9_]#', '', $key);
|
||||
$value = preg_replace('#[^a-zA-Z0-9_]#', '', $value);
|
||||
if ($field_count != $c) { $delimiter = ','; } else { $delimiter = ''; }
|
||||
$fields .= $value." as ".$key.$delimiter." ";
|
||||
$c++;
|
||||
}
|
||||
$sql = "select ".$fields;
|
||||
$sql .= " from v_".$table_name." ";
|
||||
}
|
||||
if (isset($row['where'])) {
|
||||
$sql .= trim($row['where'])." ";
|
||||
}
|
||||
$sql .= "order by ".trim($row['order_by']);
|
||||
$sql = str_replace("\${domain_uuid}", $this->domain_uuid, $sql);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, null, 'all');
|
||||
|
||||
$this->destinations[$x]['result']['sql'] = $sql;
|
||||
$this->destinations[$x]['result']['data'] = $result;
|
||||
foreach ($config_list as &$config_path) {
|
||||
try {
|
||||
include($config_path);
|
||||
}
|
||||
if ($row['type'] === 'array') {
|
||||
$this->destinations[$x] = $row;
|
||||
catch (Exception $e) {
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
$this->destinations[$x]['type'] = 'array';
|
||||
$this->destinations[$x]['label'] = 'other';
|
||||
$this->destinations[$x]['name'] = 'dialplans';
|
||||
$this->destinations[$x]['field']['name'] = "name";
|
||||
$this->destinations[$x]['field']['destination'] = "destination";
|
||||
$this->destinations[$x]['select_value']['dialplan'] = "transfer:\${destination}";
|
||||
$this->destinations[$x]['select_value']['ivr'] = "menu-exec-app:transfer \${destination}";
|
||||
$this->destinations[$x]['select_label'] = "\${name}";
|
||||
$y = 0;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'check_voicemail';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*98';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*98 XML ${context}';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'company_directory';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*411';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*411 XML ${context}';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['application'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'record';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*732';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*732 XML ${context}';
|
||||
$y++;
|
||||
}
|
||||
|
||||
//remove special characters from the name
|
||||
$destination_id = str_replace("]", "", $destination_name);
|
||||
$destination_id = str_replace("[", "_", $destination_id);
|
||||
|
||||
//set the css style
|
||||
$select_style = 'width: 200px;';
|
||||
|
||||
//add additional
|
||||
if (if_group("superadmin")) {
|
||||
$response = "<script>\n";
|
||||
$response .= "var Objs;\n";
|
||||
$response .= "\n";
|
||||
$response .= "function changeToInput".$destination_id."(obj){\n";
|
||||
$response .= " tb=document.createElement('INPUT');\n";
|
||||
$response .= " tb.type='text';\n";
|
||||
$response .= " tb.name=obj.name;\n";
|
||||
$response .= " tb.className='formfld';\n";
|
||||
$response .= " tb.setAttribute('id', '".$destination_id."');\n";
|
||||
$response .= " tb.setAttribute('style', '".$select_style."');\n";
|
||||
if ($onchange != '') {
|
||||
$response .= " tb.setAttribute('onchange', \"".$onchange."\");\n";
|
||||
$response .= " tb.setAttribute('onkeyup', \"".$onchange."\");\n";
|
||||
}
|
||||
$response .= " tb.value=obj.options[obj.selectedIndex].value;\n";
|
||||
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
|
||||
$response .= " tbb=document.createElement('INPUT');\n";
|
||||
$response .= " tbb.setAttribute('class', 'btn');\n";
|
||||
$response .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
|
||||
$response .= " tbb.type='button';\n";
|
||||
$response .= " tbb.value=$('<div />').html('◁').text();\n";
|
||||
$response .= " tbb.objs=[obj,tb,tbb];\n";
|
||||
$response .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
|
||||
$response .= " obj.parentNode.insertBefore(tb,obj);\n";
|
||||
$response .= " obj.parentNode.insertBefore(tbb,obj);\n";
|
||||
$response .= " obj.parentNode.removeChild(obj);\n";
|
||||
$response .= " Replace".$destination_id."(this.objs);\n";
|
||||
$response .= "}\n";
|
||||
$response .= "\n";
|
||||
$response .= "function Replace".$destination_id."(obj){\n";
|
||||
$response .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
|
||||
$response .= " obj[0].parentNode.removeChild(obj[1]);\n";
|
||||
$response .= " obj[0].parentNode.removeChild(obj[2]);\n";
|
||||
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
|
||||
if ($onchange != '') {
|
||||
$response .= " ".$onchange.";\n";
|
||||
}
|
||||
$response .= "}\n";
|
||||
$response .= "</script>\n";
|
||||
$response .= "\n";
|
||||
}
|
||||
|
||||
//set default to false
|
||||
$select_found = false;
|
||||
|
||||
$response .= " <select name='".$destination_name."' id='".$destination_id."' class='formfld' style='".$select_style."' onchange=\"".$onchange."\">\n";
|
||||
$response .= " <option value=''></option>\n";
|
||||
foreach ($this->destinations as $row) {
|
||||
|
||||
$name = $row['name'];
|
||||
$label = $row['label'];
|
||||
$destination = $row['field']['destination'];
|
||||
|
||||
//add multi-lingual support
|
||||
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/".$name."/app_languages.php")) {
|
||||
$language2 = new text;
|
||||
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$name);
|
||||
}
|
||||
|
||||
if (is_array($row['result']['data']) && count($row['result']['data']) > 0 and strlen($row['select_value'][$destination_type]) > 0) {
|
||||
$response .= " <optgroup label='".$text2['title-'.$label]."'>\n";
|
||||
$label2 = $label;
|
||||
foreach ($row['result']['data'] as $data) {
|
||||
$select_value = $row['select_value'][$destination_type];
|
||||
$select_label = $row['select_label'];
|
||||
foreach ($row['field'] as $key => $value) {
|
||||
if ($key == 'destination' and is_array($value)){
|
||||
if ($value['type'] === 'csv') {
|
||||
$array = explode($value['delimiter'], $data[$key]);
|
||||
$select_value = str_replace("\${destination}", $array[0], $select_value);
|
||||
$select_label = str_replace("\${destination}", $array[0], $select_label);
|
||||
}
|
||||
$i = 0;
|
||||
foreach ($apps as $x => &$app) {
|
||||
if (isset($app['destinations'])) foreach ($app['destinations'] as &$row) {
|
||||
if (permission_exists($this->singular($row["name"])."_destinations")) {
|
||||
$this->destinations[] = $row;
|
||||
}
|
||||
else {
|
||||
if (strpos($value,',') !== false) {
|
||||
$keys = explode(",", $value);
|
||||
foreach ($keys as $k) {
|
||||
if (strlen($data[$k]) > 0) {
|
||||
$select_value = str_replace("\${".$key."}", $data[$k], $select_value);
|
||||
if (strlen($data['label']) == 0) {
|
||||
$select_label = str_replace("\${".$key."}", $data[$k], $select_label);
|
||||
}
|
||||
else {
|
||||
$label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//put the array in order
|
||||
if ($this->destinations !== null && is_array($this->destinations)) {
|
||||
foreach ($this->destinations as $row) {
|
||||
$option_groups[] = $row['label'];
|
||||
}
|
||||
array_multisort($option_groups, SORT_ASC, $this->destinations);
|
||||
}
|
||||
//add the sql and data to the array
|
||||
if ($this->destinations !== null && is_array($this->destinations)) {
|
||||
$x = 0;
|
||||
foreach ($this->destinations as $row) {
|
||||
if ($row['type'] === 'sql') {
|
||||
$table_name = preg_replace('#[^a-zA-Z0-9_]#', '', $row['name']);
|
||||
if (isset($row['sql'])) {
|
||||
if (is_array($row['sql'])) {
|
||||
$sql = trim($row['sql'][$db_type])." ";
|
||||
}
|
||||
else {
|
||||
$sql = trim($row['sql'])." ";
|
||||
}
|
||||
}
|
||||
else {
|
||||
$select_value = str_replace("\${".$key."}", $data[$key], $select_value);
|
||||
if (strlen($data['label']) == 0) {
|
||||
$select_label = str_replace("\${".$key."}", $data[$key], $select_label);
|
||||
$field_count = count($row['field']);
|
||||
$fields = '';
|
||||
$c = 1;
|
||||
foreach ($row['field'] as $key => $value) {
|
||||
$key = preg_replace('#[^a-zA-Z0-9_]#', '', $key);
|
||||
$value = preg_replace('#[^a-zA-Z0-9_]#', '', $value);
|
||||
if ($field_count != $c) { $delimiter = ','; } else { $delimiter = ''; }
|
||||
$fields .= $value." as ".$key.$delimiter." ";
|
||||
$c++;
|
||||
}
|
||||
$sql = "select ".$fields;
|
||||
$sql .= " from v_".$table_name." ";
|
||||
}
|
||||
if (isset($row['where'])) {
|
||||
$sql .= trim($row['where'])." ";
|
||||
}
|
||||
$sql .= "order by ".trim($row['order_by']);
|
||||
$sql = str_replace("\${domain_uuid}", $this->domain_uuid, $sql);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, null, 'all');
|
||||
|
||||
$this->destinations[$x]['result']['sql'] = $sql;
|
||||
$this->destinations[$x]['result']['data'] = $result;
|
||||
}
|
||||
if ($row['type'] === 'array') {
|
||||
$this->destinations[$x] = $row;
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
$this->destinations[$x]['type'] = 'array';
|
||||
$this->destinations[$x]['label'] = 'other';
|
||||
$this->destinations[$x]['name'] = 'dialplans';
|
||||
$this->destinations[$x]['field']['name'] = "name";
|
||||
$this->destinations[$x]['field']['destination'] = "destination";
|
||||
$this->destinations[$x]['select_value']['dialplan'] = "transfer:\${destination}";
|
||||
$this->destinations[$x]['select_value']['ivr'] = "menu-exec-app:transfer \${destination}";
|
||||
$this->destinations[$x]['select_label'] = "\${name}";
|
||||
$y = 0;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'check_voicemail';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*98';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*98 XML ${context}';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'company_directory';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*411';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*411 XML ${context}';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['application'] = 'hangup';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '';
|
||||
$y++;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'record';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*732';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*732 XML ${context}';
|
||||
$y++;
|
||||
}
|
||||
|
||||
//remove special characters from the name
|
||||
$destination_id = str_replace("]", "", $destination_name);
|
||||
$destination_id = str_replace("[", "_", $destination_id);
|
||||
|
||||
//set the css style
|
||||
$select_style = 'width: 200px;';
|
||||
|
||||
//add additional
|
||||
if (if_group("superadmin")) {
|
||||
$response = "<script>\n";
|
||||
$response .= "var Objs;\n";
|
||||
$response .= "\n";
|
||||
$response .= "function changeToInput".$destination_id."(obj){\n";
|
||||
$response .= " tb=document.createElement('INPUT');\n";
|
||||
$response .= " tb.type='text';\n";
|
||||
$response .= " tb.name=obj.name;\n";
|
||||
$response .= " tb.className='formfld';\n";
|
||||
$response .= " tb.setAttribute('id', '".$destination_id."');\n";
|
||||
$response .= " tb.setAttribute('style', '".$select_style."');\n";
|
||||
if ($onchange != '') {
|
||||
$response .= " tb.setAttribute('onchange', \"".$onchange."\");\n";
|
||||
$response .= " tb.setAttribute('onkeyup', \"".$onchange."\");\n";
|
||||
}
|
||||
$response .= " tb.value=obj.options[obj.selectedIndex].value;\n";
|
||||
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
|
||||
$response .= " tbb=document.createElement('INPUT');\n";
|
||||
$response .= " tbb.setAttribute('class', 'btn');\n";
|
||||
$response .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
|
||||
$response .= " tbb.type='button';\n";
|
||||
$response .= " tbb.value=$('<div />').html('◁').text();\n";
|
||||
$response .= " tbb.objs=[obj,tb,tbb];\n";
|
||||
$response .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
|
||||
$response .= " obj.parentNode.insertBefore(tb,obj);\n";
|
||||
$response .= " obj.parentNode.insertBefore(tbb,obj);\n";
|
||||
$response .= " obj.parentNode.removeChild(obj);\n";
|
||||
$response .= " Replace".$destination_id."(this.objs);\n";
|
||||
$response .= "}\n";
|
||||
$response .= "\n";
|
||||
$response .= "function Replace".$destination_id."(obj){\n";
|
||||
$response .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
|
||||
$response .= " obj[0].parentNode.removeChild(obj[1]);\n";
|
||||
$response .= " obj[0].parentNode.removeChild(obj[2]);\n";
|
||||
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
|
||||
if ($onchange != '') {
|
||||
$response .= " ".$onchange.";\n";
|
||||
}
|
||||
$response .= "}\n";
|
||||
$response .= "</script>\n";
|
||||
$response .= "\n";
|
||||
}
|
||||
|
||||
//set default to false
|
||||
$select_found = false;
|
||||
|
||||
$response .= " <select name='".$destination_name."' id='".$destination_id."' class='formfld' style='".$select_style."' onchange=\"".$onchange."\">\n";
|
||||
$response .= " <option value=''></option>\n";
|
||||
foreach ($this->destinations as $row) {
|
||||
|
||||
$name = $row['name'];
|
||||
$label = $row['label'];
|
||||
$destination = $row['field']['destination'];
|
||||
|
||||
//add multi-lingual support
|
||||
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/".$name."/app_languages.php")) {
|
||||
$language2 = new text;
|
||||
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$name);
|
||||
}
|
||||
|
||||
if (is_array($row['result']['data']) && count($row['result']['data']) > 0 and strlen($row['select_value'][$destination_type]) > 0) {
|
||||
$response .= " <optgroup label='".$text2['title-'.$label]."'>\n";
|
||||
$label2 = $label;
|
||||
foreach ($row['result']['data'] as $data) {
|
||||
$select_value = $row['select_value'][$destination_type];
|
||||
$select_label = $row['select_label'];
|
||||
foreach ($row['field'] as $key => $value) {
|
||||
if ($key == 'destination' and is_array($value)){
|
||||
if ($value['type'] === 'csv') {
|
||||
$array = explode($value['delimiter'], $data[$key]);
|
||||
$select_value = str_replace("\${destination}", $array[0], $select_value);
|
||||
$select_label = str_replace("\${destination}", $array[0], $select_label);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (strpos($value,',') !== false) {
|
||||
$keys = explode(",", $value);
|
||||
foreach ($keys as $k) {
|
||||
if (strlen($data[$k]) > 0) {
|
||||
$select_value = str_replace("\${".$key."}", $data[$k], $select_value);
|
||||
if (strlen($data['label']) == 0) {
|
||||
$select_label = str_replace("\${".$key."}", $data[$k], $select_label);
|
||||
}
|
||||
else {
|
||||
$label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
$select_value = str_replace("\${".$key."}", $data[$key], $select_value);
|
||||
if (strlen($data['label']) == 0) {
|
||||
$select_label = str_replace("\${".$key."}", $data[$key], $select_label);
|
||||
}
|
||||
else {
|
||||
$label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
}
|
||||
}
|
||||
//application: hangup
|
||||
if (strlen($data['application']) > 0) {
|
||||
$select_value = str_replace("transfer", $data['application'], $select_value);
|
||||
}
|
||||
}
|
||||
//application: hangup
|
||||
if (strlen($data['application']) > 0) {
|
||||
$select_value = str_replace("transfer", $data['application'], $select_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$select_value = str_replace("\${domain_name}", $this->domain_name, $select_value);
|
||||
$select_value = str_replace("\${context}", $this->domain_name, $select_value);
|
||||
$select_label = str_replace("\${domain_name}", $this->domain_name, $select_label);
|
||||
$select_label = str_replace("\${context}", $this->domain_name, $select_label);
|
||||
$select_label = str_replace("✉", 'email-icon', $select_label);
|
||||
$select_label = escape(trim($select_label));
|
||||
$select_label = str_replace('email-icon', '✉', $select_label);
|
||||
if ($select_value == $destination_value) { $selected = "selected='selected' "; $select_found = true; } else { $selected = ''; }
|
||||
if ($label2 == 'destinations') { $select_label = format_phone($select_label); }
|
||||
$response .= " <option value='".escape($select_value)."' ".$selected.">".$select_label."</option>\n";
|
||||
$select_value = str_replace("\${domain_name}", $this->domain_name, $select_value);
|
||||
$select_value = str_replace("\${context}", $this->domain_name, $select_value);
|
||||
$select_label = str_replace("\${domain_name}", $this->domain_name, $select_label);
|
||||
$select_label = str_replace("\${context}", $this->domain_name, $select_label);
|
||||
$select_label = str_replace("✉", 'email-icon', $select_label);
|
||||
$select_label = escape(trim($select_label));
|
||||
$select_label = str_replace('email-icon', '✉', $select_label);
|
||||
if ($select_value == $destination_value) { $selected = "selected='selected' "; $select_found = true; } else { $selected = ''; }
|
||||
if ($label2 == 'destinations') { $select_label = format_phone($select_label); }
|
||||
$response .= " <option value='".escape($select_value)."' ".$selected.">".$select_label."</option>\n";
|
||||
}
|
||||
$response .= " </optgroup>\n";
|
||||
unset($text);
|
||||
}
|
||||
$response .= " </optgroup>\n";
|
||||
unset($text);
|
||||
}
|
||||
if (!$select_found) {
|
||||
$destination_label = str_replace(":", " ", $destination_value);
|
||||
$destination_label = str_replace("menu-exec-app", "", $destination_label);
|
||||
$destination_label = str_replace("transfer", "", $destination_label);
|
||||
$destination_label = str_replace("XML ".$this->domain_name, "", $destination_label);
|
||||
if ($destination_value != '' || $destination_label != '') {
|
||||
$response .= " <option value='".escape($destination_value)."' selected='selected'>".trim($destination_label)."</option>\n";
|
||||
}
|
||||
}
|
||||
$response .= " </select>\n";
|
||||
if (if_group("superadmin")) {
|
||||
$response .= "<input type='button' id='btn_select_to_input_".$destination_id."' class='btn' name='' alt='back' onclick='changeToInput".$destination_id."(document.getElementById(\"".$destination_id."\"));this.style.visibility = \"hidden\";' value='◁'>";
|
||||
}
|
||||
}
|
||||
if (!$select_found) {
|
||||
$destination_label = str_replace(":", " ", $destination_value);
|
||||
$destination_label = str_replace("menu-exec-app", "", $destination_label);
|
||||
$destination_label = str_replace("transfer", "", $destination_label);
|
||||
$destination_label = str_replace("XML ".$this->domain_name, "", $destination_label);
|
||||
if ($destination_value != '' || $destination_label != '') {
|
||||
$response .= " <option value='".escape($destination_value)."' selected='selected'>".trim($destination_label)."</option>\n";
|
||||
|
||||
//create a dynamic destination select list
|
||||
if ($_SESSION['destinations']['select_mode']['text'] == 'dynamic') {
|
||||
|
||||
//remove special characters from the name
|
||||
$destination_id = str_replace("]", "", $destination_name);
|
||||
$destination_id = str_replace("[", "_", $destination_id);
|
||||
//$destination_id = preg_replace('/[^a-zA-Z_,.]/', '', $destination_name);
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
function get_destinations(id, destination_type, action, search) {
|
||||
//alert(action);
|
||||
var xhttp = new XMLHttpRequest();
|
||||
xhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
document.getElementById(id).innerHTML = this.responseText;
|
||||
}
|
||||
};
|
||||
if (action) {
|
||||
xhttp.open("GET", "/app/destinations/resources/destinations.php?destination_type="+destination_type+"&action="+action, true);
|
||||
}
|
||||
else {
|
||||
xhttp.open("GET", "/app/destinations/resources/destinations.php?destination_type="+destination_type, true);
|
||||
}
|
||||
xhttp.send();
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
|
||||
//get the destinations
|
||||
$destination = new destinations;
|
||||
if (!isset($_SESSION['destinations'][$destination_type])) {
|
||||
unset($_SESSION['destinations'][$destination_type]);
|
||||
$_SESSION['destinations'][$destination_type] = $destination->get($destination_type);
|
||||
}
|
||||
}
|
||||
$response .= " </select>\n";
|
||||
if (if_group("superadmin")) {
|
||||
$response .= "<input type='button' id='btn_select_to_input_".$destination_id."' class='btn' name='' alt='back' onclick='changeToInput".$destination_id."(document.getElementById(\"".$destination_id."\"));this.style.visibility = \"hidden\";' value='◁'>";
|
||||
|
||||
//get the destination label
|
||||
foreach($_SESSION['destinations'][$destination_type] as $key => $value) {
|
||||
foreach($value as $k => $row) {
|
||||
if ($destination_value == $row['destination']) {
|
||||
$destination_key = $key;
|
||||
$destination_label = $row['label'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//add the language object
|
||||
$language2 = new text;
|
||||
|
||||
//build the destination select list in html
|
||||
$response .= " <select class='formfld' style='".$select_style."' onchange=\"get_destinations('".$destination_id."', '".$destination_type."', this.value);\">\n";
|
||||
$response .= " <option value=''></option>\n";
|
||||
foreach($_SESSION['destinations'][$destination_type] as $key => $value) {
|
||||
if (permission_exists($destination->singular($key)."_destinations")) {
|
||||
//determine if selected
|
||||
$selected = ($key == $destination_key) ? "selected='selected'" : '';
|
||||
|
||||
//add multi-lingual support
|
||||
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/".$key."/app_languages.php")) {
|
||||
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$key);
|
||||
}
|
||||
|
||||
//add the application to the select list
|
||||
$response .= " <option value='".$key."' $selected>".$text2['title-'.$key]." </option>\n";
|
||||
}
|
||||
}
|
||||
$response .= " </select>\n";
|
||||
$response .= " <select id='".$destination_id."' name='".$destination_name."' class='formfld' style='".$select_style."'>\n";
|
||||
foreach($_SESSION['destinations'][$destination_type] as $key => $value) {
|
||||
if ($key == $destination_key) {
|
||||
foreach($value as $k => $row) {
|
||||
$selected = ($row['destination'] == $destination_value) ? "selected='selected'" : '';
|
||||
$response .= " <option value='".$row['destination']."' $selected>".$row['label']."</option>\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
$response .= " </select>\n";
|
||||
|
||||
//debug information
|
||||
//echo $response;
|
||||
//echo "destination_key $destination_key\n";
|
||||
//echo "destination_id $destination_id\n";
|
||||
//echo "destination_type $destination_type\n";
|
||||
//echo "destination_name $destination_name\n";
|
||||
//echo "destination_value $destination_value\n";
|
||||
//exit;
|
||||
|
||||
}
|
||||
|
||||
//return the formatted destinations
|
||||
@@ -523,7 +617,7 @@ if (!class_exists('destinations')) {
|
||||
$this->destinations[$x]['select_value']['dialplan'] = "transfer:\${destination}";
|
||||
$this->destinations[$x]['select_value']['ivr'] = "menu-exec-app:transfer \${destination}";
|
||||
$this->destinations[$x]['select_label'] = "\${name}";
|
||||
$y = 0;
|
||||
$y=0;
|
||||
$this->destinations[$x]['result']['data'][$y]['label'] = 'check_voicemail';
|
||||
$this->destinations[$x]['result']['data'][$y]['name'] = '*98';
|
||||
$this->destinations[$x]['result']['data'][$y]['destination'] = '*98 XML ${context}';
|
||||
@@ -658,10 +752,10 @@ if (!class_exists('destinations')) {
|
||||
$x = 0;
|
||||
foreach ($config_list as &$config_path) {
|
||||
try {
|
||||
include($config_path);
|
||||
include($config_path);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
@@ -843,6 +937,7 @@ if (!class_exists('destinations')) {
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
unset($text);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user