\n";
echo "\n";
echo " ".$text['label-destination_enabled']."\n";
diff --git a/app/destinations/destinations.php b/app/destinations/destinations.php
index fb67cd79d9..7784278e7a 100644
--- a/app/destinations/destinations.php
+++ b/app/destinations/destinations.php
@@ -110,22 +110,6 @@
//add the search term
$search = strtolower($_GET["search"]);
- if (strlen($search) > 0) {
- $sql_search = "and (";
- $sql_search .= "lower(destination_type) like :search ";
- $sql_search .= "or lower(destination_number) like :search ";
- $sql_search .= "or lower(destination_context) like :search ";
- $sql_search .= "or lower(destination_accountcode) like :search ";
- if (permission_exists('outbound_caller_id_select')) {
- $sql_search .= "or lower(destination_caller_id_name) like :search ";
- $sql_search .= "or destination_caller_id_number like :search ";
- }
- $sql_search .= "or lower(destination_enabled) like :search ";
- $sql_search .= "or lower(destination_description) like :search ";
- $sql_search .= "or lower(destination_data) like :search ";
- $sql_search .= ") ";
- $parameters['search'] = '%'.$search.'%';
- }
//prepare to page the results
$sql = "select count(*) from v_destinations ";
@@ -134,7 +118,22 @@
$sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
$parameters['domain_uuid'] = $domain_uuid;
}
- $sql .= $sql_search;
+ if (strlen($search) > 0) {
+ $sql .= "and (";
+ $sql .= "lower(destination_type) like :search ";
+ $sql .= "or lower(destination_number) like :search ";
+ $sql .= "or lower(destination_context) like :search ";
+ $sql .= "or lower(destination_accountcode) like :search ";
+ if (permission_exists('outbound_caller_id_select')) {
+ $sql .= "or lower(destination_caller_id_name) like :search ";
+ $sql .= "or destination_caller_id_number like :search ";
+ }
+ $sql .= "or lower(destination_enabled) like :search ";
+ $sql .= "or lower(destination_description) like :search ";
+ $sql .= "or lower(destination_data) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
$parameters['destination_type'] = $destination_type;
$database = new database;
$num_rows = $database->select($sql, $parameters, 'column');
@@ -152,8 +151,29 @@
$offset = $rows_per_page * $page;
//get the list
- $sql = str_replace('count(*)', '*', $sql);
- $sql .= order_by($order_by, $order, 'destination_number', 'asc');
+ $sql = "select * from v_destinations ";
+ $sql .= "where destination_type = :destination_type ";
+ if ($_GET['show'] != "all" || !permission_exists('destination_all')) {
+ $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $parameters['domain_uuid'] = $domain_uuid;
+ }
+ if (strlen($search) > 0) {
+ $sql .= "and (";
+ $sql .= "lower(destination_type) like :search ";
+ $sql .= "or lower(destination_number) like :search ";
+ $sql .= "or lower(destination_context) like :search ";
+ $sql .= "or lower(destination_accountcode) like :search ";
+ if (permission_exists('outbound_caller_id_select')) {
+ $sql .= "or lower(destination_caller_id_name) like :search ";
+ $sql .= "or destination_caller_id_number like :search ";
+ }
+ $sql .= "or lower(destination_enabled) like :search ";
+ $sql .= "or lower(destination_description) like :search ";
+ $sql .= "or lower(destination_data) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+ $sql .= order_by($order_by, $order, 'destination_number, destination_order ', 'asc');
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$destinations = $database->select($sql, $parameters, 'all');
diff --git a/app/devices/app_languages.php b/app/devices/app_languages.php
index 9437eec4fe..1358639e2f 100644
--- a/app/devices/app_languages.php
+++ b/app/devices/app_languages.php
@@ -1650,8 +1650,8 @@ $text['label-keys']['de-ch'] = "Tasten"; //copied from de-de
$text['label-keys']['de-de'] = "Tasten";
$text['label-keys']['es-cl'] = "Claves";
$text['label-keys']['es-mx'] = "Claves"; //copied from es-cl
-$text['label-keys']['fr-ca'] = "Clés"; //copied from fr-fr
-$text['label-keys']['fr-fr'] = "Clés";
+$text['label-keys']['fr-ca'] = "Touches"; //copied from fr-fr
+$text['label-keys']['fr-fr'] = "Touches";
$text['label-keys']['he-il'] = "";
$text['label-keys']['it-it'] = "Tasti";
$text['label-keys']['nl-nl'] = "Toetsen";
diff --git a/app/devices/device_imports.php b/app/devices/device_imports.php
index 460c07bf9c..a62ae53862 100644
--- a/app/devices/device_imports.php
+++ b/app/devices/device_imports.php
@@ -291,6 +291,12 @@
$result[$key] = preg_replace('{\D}', '', $result[$key]);
}
+ //normalize the MAC address
+ if ($field_name == "device_mac_address") {
+ $result[$key] = strtolower($result[$key]);
+ $result[$key] = preg_replace('#[^a-fA-F0-9./]#', '', $result[$key]);
+ }
+
//build the data array
if (strlen($table_name) > 0) {
if (strlen($parent) == 0) {
diff --git a/app/dialplans/dialplan_xml.php b/app/dialplans/dialplan_xml.php
index 233561211e..2fea100426 100644
--- a/app/dialplans/dialplan_xml.php
+++ b/app/dialplans/dialplan_xml.php
@@ -92,8 +92,11 @@
$database->save($array);
unset($array);
- //clear the cache
+ //clear the cache
$cache = new cache;
+ if ($dialplan_context == "\${domain_name}" or $dialplan_context == "global") {
+ $dialplan_context = "*";
+ }
$cache->delete("dialplan:".$dialplan_context);
//save the message to a session variable
@@ -320,4 +323,4 @@
//show the footer
require_once "resources/footer.php";
-?>
\ No newline at end of file
+?>
diff --git a/app/dialplans/resources/switch/conf/dialplan/055_rtp_has_crypto.xml b/app/dialplans/resources/switch/conf/dialplan/055_rtp_has_crypto.xml
index e2576b75f1..b1ec3070f8 100644
--- a/app/dialplans/resources/switch/conf/dialplan/055_rtp_has_crypto.xml
+++ b/app/dialplans/resources/switch/conf/dialplan/055_rtp_has_crypto.xml
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/app/dialplans/resources/switch/conf/dialplan/080_default_caller_id.xml b/app/dialplans/resources/switch/conf/dialplan/080_default_caller_id.xml
index c110bbad89..3a892a44ed 100644
--- a/app/dialplans/resources/switch/conf/dialplan/080_default_caller_id.xml
+++ b/app/dialplans/resources/switch/conf/dialplan/080_default_caller_id.xml
@@ -1,11 +1,15 @@
-
+
+
+
-
+
+
+
diff --git a/app/dialplans/resources/switch/conf/dialplan/500_follow-me-destinations.xml b/app/dialplans/resources/switch/conf/dialplan/500_follow-me-destinations.xml
index 26a9ddfa08..4bb6730aa2 100644
--- a/app/dialplans/resources/switch/conf/dialplan/500_follow-me-destinations.xml
+++ b/app/dialplans/resources/switch/conf/dialplan/500_follow-me-destinations.xml
@@ -2,6 +2,8 @@
+
+
diff --git a/app/dialplans/resources/switch/conf/dialplan/505_call-forward-all.xml b/app/dialplans/resources/switch/conf/dialplan/505_call-forward-all.xml
index f56798f119..d509a919a2 100644
--- a/app/dialplans/resources/switch/conf/dialplan/505_call-forward-all.xml
+++ b/app/dialplans/resources/switch/conf/dialplan/505_call-forward-all.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/app/extension_settings/app_config.php b/app/extension_settings/app_config.php
new file mode 100755
index 0000000000..f73635a368
--- /dev/null
+++ b/app/extension_settings/app_config.php
@@ -0,0 +1,87 @@
+
\ No newline at end of file
diff --git a/app/extension_settings/app_defaults.php b/app/extension_settings/app_defaults.php
new file mode 100755
index 0000000000..adadacce42
--- /dev/null
+++ b/app/extension_settings/app_defaults.php
@@ -0,0 +1,7 @@
+
diff --git a/app/extension_settings/app_languages.php b/app/extension_settings/app_languages.php
new file mode 100755
index 0000000000..24625e19ea
--- /dev/null
+++ b/app/extension_settings/app_languages.php
@@ -0,0 +1,302 @@
+
\ No newline at end of file
diff --git a/app/extension_settings/extension_setting_edit.php b/app/extension_settings/extension_setting_edit.php
new file mode 100755
index 0000000000..7e026aa786
--- /dev/null
+++ b/app/extension_settings/extension_setting_edit.php
@@ -0,0 +1,365 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2021
+ the Initial Developer. All Rights Reserved.
+*/
+
+//includes
+ require_once "root.php";
+ require_once "resources/require.php";
+ require_once "resources/check_auth.php";
+
+//check permissions
+ if (permission_exists('extension_setting_add') || permission_exists('extension_setting_edit')) {
+ //access granted
+ }
+ else {
+ echo "access denied";
+ exit;
+ }
+
+//add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+//action add or update
+ if (is_uuid($_REQUEST["id"])) {
+ $action = "update";
+ $extension_setting_uuid = $_REQUEST["id"];
+ $id = $_REQUEST["id"];
+ }
+ else {
+ $action = "add";
+ }
+
+//get the extension id
+ if (is_uuid($_REQUEST["extension_setting_uuid"])) {
+ $extension_setting_uuid = $_REQUEST["extension_setting_uuid"];
+ }
+ if (is_uuid($_REQUEST["extension_uuid"])) {
+ $extension_uuid = $_REQUEST["extension_uuid"];
+ }
+
+//get http post variables and set them to php variables
+ if (is_array($_POST)) {
+ $domain_uuid = $_POST["domain_uuid"];
+ $extension_setting_type = $_POST["extension_setting_type"];
+ $extension_setting_name = $_POST["extension_setting_name"];
+ $extension_setting_value = $_POST["extension_setting_value"];
+ $extension_setting_enabled = $_POST["extension_setting_enabled"];
+ $extension_setting_description = $_POST["extension_setting_description"];
+ }
+
+//process the user data and save it to the database
+ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: extension_settings.php?id='.$extension_uuid);
+ exit;
+ }
+
+ //process the http post data by submitted action
+ if ($_POST['action'] != '' && strlen($_POST['action']) > 0) {
+
+ //prepare the array(s)
+ //send the array to the database class
+ switch ($_POST['action']) {
+ case 'copy':
+ if (permission_exists('extension_setting_add')) {
+ $obj = new database;
+ $obj->copy($array);
+ }
+ break;
+ case 'delete':
+ if (permission_exists('extension_setting_delete')) {
+ $obj = new database;
+ $obj->delete($array);
+ }
+ break;
+ case 'toggle':
+ if (permission_exists('extension_setting_update')) {
+ $obj = new database;
+ $obj->toggle($array);
+ }
+ break;
+ }
+
+ //redirect the user
+ if (in_array($_POST['action'], array('copy', 'delete', 'toggle')) && is_uuid($id) && is_uuid($extension_uuid)) {
+ header('Location: extension_setting_edit.php?id='.$id.'&extension_uuid='.$extension_uuid);
+ exit;
+ }
+ }
+
+ //check for all required data
+ $msg = '';
+ //if (strlen($domain_uuid) == 0) { $msg .= $text['message-required']." ".$text['label-domain_uuid']." \n"; }
+ if (strlen($extension_setting_type) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_type']." \n"; }
+ if (strlen($extension_setting_name) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_name']." \n"; }
+ //if (strlen($extension_setting_value) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_value']." \n"; }
+ if (strlen($extension_setting_enabled) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_enabled']." \n"; }
+ //if (strlen($extension_setting_description) == 0) { $msg .= $text['message-required']." ".$text['label-extension_setting_description']." \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;
+ }
+
+ //add the extension_setting_uuid
+ if (!is_uuid($extension_setting_uuid)) {
+ $extension_setting_uuid = uuid();
+ }
+
+ //prepare the array
+ $array['extension_settings'][0]['extension_setting_uuid'] = $extension_setting_uuid;
+ $array['extension_settings'][0]['extension_uuid'] = $extension_uuid;
+ $array['extension_settings'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
+ //$array['extension_settings'][0]['domain_uuid'] = $domain_uuid;
+ $array['extension_settings'][0]['extension_setting_type'] = $extension_setting_type;
+ $array['extension_settings'][0]['extension_setting_name'] = $extension_setting_name;
+ $array['extension_settings'][0]['extension_setting_value'] = $extension_setting_value;
+ $array['extension_settings'][0]['extension_setting_enabled'] = $extension_setting_enabled;
+ $array['extension_settings'][0]['extension_setting_description'] = $extension_setting_description;
+
+ //save the data
+ $database = new database;
+ $database->app_name = 'extension settings';
+ $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
+ $database->save($array);
+
+ //redirect the user
+ if (isset($action)) {
+ if ($action == "add") {
+ $_SESSION["message"] = $text['message-add'];
+ }
+ if ($action == "update") {
+ $_SESSION["message"] = $text['message-update'];
+ }
+ //header('Location: extension_settings.php');
+ header('Location: extension_setting_edit.php?id='.urlencode($extension_setting_uuid).'&extension_uuid='.$extension_uuid);
+ return;
+ }
+ }
+
+//pre-populate the form
+ if (is_array($_GET) && $_POST["persistformvar"] != "true") {
+ $sql = "select ";
+ //$sql .= "extension_uuid, ";
+ //$sql .= "domain_uuid, ";
+ $sql .= "extension_setting_uuid, ";
+ $sql .= "extension_setting_type, ";
+ $sql .= "extension_setting_name, ";
+ $sql .= "extension_setting_value, ";
+ $sql .= "cast(extension_setting_enabled as text), ";
+ $sql .= "extension_setting_description ";
+ $sql .= "from v_extension_settings ";
+ $sql .= "where extension_setting_uuid = :extension_setting_uuid ";
+ //$sql .= "and domain_uuid = :domain_uuid ";
+ //$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $parameters['extension_setting_uuid'] = $extension_setting_uuid;
+ $database = new database;
+ $row = $database->select($sql, $parameters, 'row');
+ if (is_array($row) && @sizeof($row) != 0) {
+ if (is_uuid($row["extension_uuid"])) {
+ $extension_uuid = $row["extension_uuid"];
+ }
+ //$domain_uuid = $row["domain_uuid"];
+ $extension_setting_type = $row["extension_setting_type"];
+ $extension_setting_name = $row["extension_setting_name"];
+ $extension_setting_value = $row["extension_setting_value"];
+ $extension_setting_enabled = $row["extension_setting_enabled"];
+ $extension_setting_description = $row["extension_setting_description"];
+ }
+ unset($sql, $parameters, $row);
+ }
+
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+ $document['title'] = $text['title-extension_setting'];
+ require_once "resources/header.php";
+
+//show the content
+ echo "";
+
+//include the footer
+ require_once "resources/footer.php";
+
+?>
diff --git a/app/extension_settings/extension_settings.php b/app/extension_settings/extension_settings.php
new file mode 100755
index 0000000000..a2cd197a80
--- /dev/null
+++ b/app/extension_settings/extension_settings.php
@@ -0,0 +1,327 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2021
+ the Initial Developer. All Rights Reserved.
+*/
+
+//includes
+ require_once "root.php";
+ require_once "resources/require.php";
+ require_once "resources/check_auth.php";
+
+//check permissions
+ if (permission_exists('extension_setting_view')) {
+ //access granted
+ }
+ else {
+ echo "access denied";
+ exit;
+ }
+
+//add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+//get the http post data
+ if (is_array($_POST['extension_settings'])) {
+ $action = $_POST['action'];
+ $search = $_POST['search'];
+ $extension_settings = $_POST['extension_settings'];
+ }
+
+//action add or update
+ if (is_uuid($_REQUEST["id"])) {
+ $extension_uuid = $_REQUEST["id"];
+ }
+
+//process the http post data by action
+ if ($action != '' && is_array($extension_settings) && @sizeof($extension_settings) != 0) {
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: extension_settings.php');
+ exit;
+ }
+
+ //prepare the array
+ foreach($extension_settings as $row) {
+ $array['extension_settings'][$x]['checked'] = $row['checked'];
+ $array['extension_settings'][$x]['extension_setting_uuid'] = $row['extension_setting_uuid'];
+ $array['extension_settings'][$x]['extension_setting_enabled'] = $row['extension_setting_enabled'];
+ $x++;
+ }
+
+ //prepare the database object
+ $database = new database;
+ $database->app_name = 'extension_settings';
+ $database->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
+
+ //send the array to the database class
+ switch ($action) {
+ case 'copy':
+ if (permission_exists('extension_setting_add')) {
+ $database->copy($array);
+ }
+ break;
+ case 'toggle':
+ if (permission_exists('extension_setting_edit')) {
+ $database->toggle($array);
+ }
+ break;
+ case 'delete':
+ if (permission_exists('extension_setting_delete')) {
+ $database->delete($array);
+ }
+ break;
+ }
+
+ //redirect the user
+ header('Location: extension_settings.php?id='.urlencode($extension_uuid).'&'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+
+//get order and order by
+ $order_by = $_GET["order_by"];
+ $order = $_GET["order"];
+
+//add the search
+ if (isset($_GET["search"])) {
+ $search = strtolower($_GET["search"]);
+ }
+
+//get the count
+ $sql = "select count(extension_setting_uuid) ";
+ $sql .= "from v_extension_settings ";
+ $sql .= "where extension_uuid = :extension_uuid ";
+ if (isset($search)) {
+ $sql .= "and (";
+ $sql .= " lower(extension_setting_type) like :search ";
+ $sql .= " or lower(extension_setting_name) like :search ";
+ $sql .= " or lower(extension_setting_description) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+ else {
+ $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ if (isset($sql_search)) {
+ $sql .= "and ".$sql_search;
+ }
+ $parameters['domain_uuid'] = $domain_uuid;
+ }
+ $parameters['extension_uuid'] = $extension_uuid;
+ $database = new database;
+ $num_rows = $database->select($sql, $parameters, 'column');
+ unset($sql, $parameters);
+
+//get the list
+ $sql = "select ";
+ //$sql .= "d.domain_name, ";
+ $sql .= "extension_setting_uuid, ";
+ $sql .= "extension_setting_type, ";
+ $sql .= "extension_setting_name, ";
+ $sql .= "extension_setting_value, ";
+ $sql .= "cast(extension_setting_enabled as text), ";
+ $sql .= "extension_setting_description ";
+ $sql .= "from v_extension_settings as e ";
+ //$sql .= ",v_domains as d ";
+ $sql .= "where extension_uuid = :extension_uuid ";
+ $sql .= "and (e.domain_uuid = :domain_uuid or e.domain_uuid is null) ";
+ //$sql .= "and d.domain_uuid = e.domain_uuid ";
+ if (isset($_GET["search"])) {
+ $sql .= "and (";
+ $sql .= " lower(extension_setting_type) like :search ";
+ $sql .= " or lower(extension_setting_name) like :search ";
+ $sql .= " or lower(extension_setting_description) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+
+ $sql .= order_by($order_by, $order, 'extension_setting_type', 'asc');
+ $sql .= limit_offset($rows_per_page, $offset);
+ $parameters['extension_uuid'] = $extension_uuid;
+ $parameters['domain_uuid'] = $domain_uuid;
+ $database = new database;
+ $extension_settings = $database->select($sql, $parameters, 'all');
+ unset($sql, $parameters);
+
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
+
+//additional includes
+ $document['title'] = $text['title-extension_settings'];
+ require_once "resources/header.php";
+
+//show the content
+ echo "\n";
+ echo "
".$text['title-extension_settings']." (".$num_rows.")
\n";
+ echo "
\n";
+
+ echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_add','name'=>'btn_add','link'=>'/app/extensions/extension_edit.php?id='.$extension_uuid]);
+
+ if (permission_exists('extension_setting_add')) {
+ echo button::create(['type'=>'button','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add'],'id'=>'btn_add','name'=>'btn_add','link'=>'extension_setting_edit.php?extension_uuid='.$extension_uuid]);
+ }
+ if (permission_exists('extension_setting_add') && $extension_settings) {
+ echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','name'=>'btn_copy','style'=>'display:none;','onclick'=>"modal_open('modal-copy','btn_copy');"]);
+ }
+ if (permission_exists('extension_setting_edit') && $extension_settings) {
+ echo button::create(['type'=>'button','label'=>$text['button-toggle'],'icon'=>$_SESSION['theme']['button_icon_toggle'],'id'=>'btn_toggle','name'=>'btn_toggle','style'=>'display:none;','onclick'=>"modal_open('modal-toggle','btn_toggle');"]);
+ }
+ if (permission_exists('extension_setting_delete') && $extension_settings) {
+ echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+ }
+ echo "\n";
+ echo "
\n";
+ echo "
\n";
+ echo "
\n";
+
+ if (permission_exists('extension_setting_add') && $extension_settings) {
+ echo modal::create(['id'=>'modal-copy','type'=>'copy','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_copy','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('copy'); list_form_submit('form_list');"])]);
+ }
+ if (permission_exists('extension_setting_edit') && $extension_settings) {
+ echo modal::create(['id'=>'modal-toggle','type'=>'toggle','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_toggle','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('toggle'); list_form_submit('form_list');"])]);
+ }
+ if (permission_exists('extension_setting_delete') && $extension_settings) {
+ echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
+ }
+
+ echo $text['title_description-extension_settings']."\n";
+ echo " \n";
+
+ echo "\n";
+
+//include the footer
+ require_once "resources/footer.php";
+
+?>
diff --git a/app/extension_settings/resources/classes/extension_settings.php b/app/extension_settings/resources/classes/extension_settings.php
new file mode 100755
index 0000000000..a8d21ce41f
--- /dev/null
+++ b/app/extension_settings/resources/classes/extension_settings.php
@@ -0,0 +1,266 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2021
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane
+*/
+
+/**
+ * extension_settings class
+ *
+ * @method null delete
+ * @method null toggle
+ * @method null copy
+ */
+if (!class_exists('extension_settings')) {
+ class extension_settings {
+
+ /**
+ * declare the variables
+ */
+ private $app_name;
+ private $app_uuid;
+ private $name;
+ private $table;
+ private $toggle_field;
+ private $toggle_values;
+ private $description_field;
+ private $location;
+
+ /**
+ * called when the object is created
+ */
+ public function __construct() {
+ //assign the variables
+ $this->app_name = 'extension_settings';
+ $this->app_uuid = '1416a250-f6e1-4edc-91a6-5c9b883638fd';
+ $this->name = 'extension_setting';
+ $this->table = 'extension_settings';
+ $this->toggle_field = 'extension_setting_enabled';
+ $this->toggle_values = ['true','false'];
+ $this->description_field = 'extension_setting_description';
+ $this->location = 'extension_settings.php';
+ }
+
+ /**
+ * called when there are no references to a particular object
+ * unset the variables used in the class
+ */
+ public function __destruct() {
+ foreach ($this as $key => $value) {
+ unset($this->$key);
+ }
+ }
+
+ /**
+ * delete rows from the database
+ */
+ public function delete($records) {
+ if (permission_exists($this->name.'_delete')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->location);
+ exit;
+ }
+
+ //delete multiple records
+ if (is_array($records) && @sizeof($records) != 0) {
+ //build the delete array
+ $x = 0;
+ foreach ($records as $record) {
+ //add to the array
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $array[$this->table][$x][$this->name.'_uuid'] = $record['uuid'];
+ $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+ }
+
+ //increment the id
+ $x++;
+ }
+
+ //delete the checked rows
+ if (is_array($array) && @sizeof($array) != 0) {
+ //execute delete
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->delete($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-delete']);
+ }
+ unset($records);
+ }
+ }
+ }
+
+ /**
+ * toggle a field between two values
+ */
+ public function toggle($records) {
+ if (permission_exists($this->name.'_edit')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->location);
+ exit;
+ }
+
+ //toggle the checked records
+ if (is_array($records) && @sizeof($records) != 0) {
+ //get current toggle state
+ foreach($records as $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $uuids[] = "'".$record['uuid']."'";
+ }
+ }
+ if (is_array($uuids) && @sizeof($uuids) != 0) {
+ $sql = "select ".$this->name."_uuid as uuid, ".$this->toggle_field." as toggle from v_".$this->table." ";
+ $sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
+ $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $database = new database;
+ $rows = $database->select($sql, $parameters, 'all');
+ if (is_array($rows) && @sizeof($rows) != 0) {
+ foreach ($rows as $row) {
+ $states[$row['uuid']] = $row['toggle'];
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //build update array
+ $x = 0;
+ foreach($states as $uuid => $state) {
+ //create the array
+ $array[$this->table][$x][$this->name.'_uuid'] = $uuid;
+ $array[$this->table][$x][$this->toggle_field] = $state == $this->toggle_values[0] ? $this->toggle_values[1] : $this->toggle_values[0];
+
+ //increment the id
+ $x++;
+ }
+
+ //save the changes
+ if (is_array($array) && @sizeof($array) != 0) {
+ //save the array
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->save($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-toggle']);
+ }
+ unset($records, $states);
+ }
+ }
+ }
+
+ /**
+ * copy rows from the database
+ */
+ public function copy($records) {
+ if (permission_exists($this->name.'_add')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->location);
+ exit;
+ }
+
+ //copy the checked records
+ if (is_array($records) && @sizeof($records) != 0) {
+
+ //get checked records
+ foreach($records as $record) {
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $uuids[] = "'".$record['uuid']."'";
+ }
+ }
+
+ //create the array from existing data
+ if (is_array($uuids) && @sizeof($uuids) != 0) {
+ $sql = "select * from v_".$this->table." ";
+ $sql .= "where ".$this->name."_uuid in (".implode(', ', $uuids).") ";
+ $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $database = new database;
+ $rows = $database->select($sql, $parameters, 'all');
+ if (is_array($rows) && @sizeof($rows) != 0) {
+ $x = 0;
+ foreach ($rows as $row) {
+ //copy data
+ $array[$this->table][$x] = $row;
+
+ //add copy to the description
+ $array[$this->table][$x][$this->name.'_uuid'] = uuid();
+ $array[$this->table][$x][$this->description_field] = trim($row[$this->description_field]).' ('.$text['label-copy'].')';
+
+ //increment the id
+ $x++;
+ }
+ }
+ unset($sql, $parameters, $rows, $row);
+ }
+
+ //save the changes and set the message
+ if (is_array($array) && @sizeof($array) != 0) {
+ //save the array
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->save($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-copy']);
+ }
+ unset($records);
+ }
+ }
+ }
+
+ }
+}
+
+?>
diff --git a/app/extension_settings/root.php b/app/extension_settings/root.php
new file mode 100755
index 0000000000..6fdf32f37b
--- /dev/null
+++ b/app/extension_settings/root.php
@@ -0,0 +1,90 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2008-2012
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane
+*/
+
+// make sure the PATH_SEPARATOR is defined
+ umask(2);
+ if (!defined("PATH_SEPARATOR")) {
+ if (strpos($_ENV["OS"], "Win") !== false) {
+ define("PATH_SEPARATOR", ";");
+ } else {
+ define("PATH_SEPARATOR", ":");
+ }
+ }
+
+ if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
+
+ // make sure the document_root is set
+ $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
+ if(PHP_SAPI == 'cli'){
+ chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
+ $script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
+ $dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
+ if (file_exists('/project_root.php')) {
+ $path = '/';
+ } else {
+ $i = 1;
+ $path = '';
+ while ($i < count($dirs)) {
+ $path .= '/' . $dirs[$i];
+ if (file_exists($path. '/project_root.php')) {
+ break;
+ }
+ $i++;
+ }
+ }
+ $_SERVER["DOCUMENT_ROOT"] = $path;
+ }else{
+ $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
+ }
+ $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
+// try to detect if a project path is being used
+ if (!defined('PROJECT_PATH')) {
+ if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
+ define('PROJECT_PATH', '/fusionpbx');
+ } elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
+ define('PROJECT_PATH', '');
+ } else {
+ $dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
+ $i = 1;
+ $path = $_SERVER["DOCUMENT_ROOT"];
+ while ($i < count($dirs)) {
+ $path .= '/' . $dirs[$i];
+ if (file_exists($path. '/project_root.php')) {
+ break;
+ }
+ $i++;
+ }
+ if(!file_exists($path. '/project_root.php')){
+ die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
+ }
+ $project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
+ define('PROJECT_PATH', $project_path);
+ }
+ $_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
+ set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
+ }
+
+?>
\ No newline at end of file
diff --git a/app/extensions/app_config.php b/app/extensions/app_config.php
index be45dbe80c..1f7bee03d4 100644
--- a/app/extensions/app_config.php
+++ b/app/extensions/app_config.php
@@ -591,12 +591,6 @@
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_follow_me";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "follow_me_uuid";
$z++;
- $apps[$x]['db'][$y]['fields'][$z]['name'] = "forward_caller_id_uuid";
- $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
- $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
- $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
- $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
- $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "follow_me_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
diff --git a/app/extensions/app_languages.php b/app/extensions/app_languages.php
index 0e0913cddd..5b4801b597 100644
--- a/app/extensions/app_languages.php
+++ b/app/extensions/app_languages.php
@@ -1150,8 +1150,8 @@ $text['label-hold_music']['de-ch'] = "Wartemusik"; //copied from de-de
$text['label-hold_music']['de-de'] = "Wartemusik";
$text['label-hold_music']['es-cl'] = "Música en Espera";
$text['label-hold_music']['es-mx'] = "Música en Espera"; //copied from es-cl
-$text['label-hold_music']['fr-ca'] = "Musique de Garde"; //copied from fr-fr
-$text['label-hold_music']['fr-fr'] = "Musique de Garde";
+$text['label-hold_music']['fr-ca'] = "Musique d'attente"; //copied from fr-fr
+$text['label-hold_music']['fr-fr'] = "Musique d'attente";
$text['label-hold_music']['he-il'] = "מוסיקה בהמתנה";
$text['label-hold_music']['it-it'] = "Musica di Attesa";
$text['label-hold_music']['nl-nl'] = "Wachtmuziek";
@@ -2460,8 +2460,8 @@ $text['description-hold_music']['de-ch'] = "Wählen Sie die Wartemusik Kategorie
$text['description-hold_music']['de-de'] = "Wählen Sie die Wartemusik Kategorie.";
$text['description-hold_music']['es-cl'] = "Ingrese la categoría de música en espera aquí";
$text['description-hold_music']['es-mx'] = "Ingrese la categoría de música en espera aquí"; //copied from es-cl
-$text['description-hold_music']['fr-ca'] = "Choisir la musique de garde."; //copied from fr-fr
-$text['description-hold_music']['fr-fr'] = "Choisir la musique de garde.";
+$text['description-hold_music']['fr-ca'] = "Choisir la musique d'attente'."; //copied from fr-fr
+$text['description-hold_music']['fr-fr'] = "Choisir la musique d'attente.";
$text['description-hold_music']['he-il'] = "";
$text['description-hold_music']['it-it'] = "Seleziona la categoria di Musica d'attesa.";
$text['description-hold_music']['nl-nl'] = "Kies Wachtmuziek hier.";
diff --git a/app/extensions/extension_download.php b/app/extensions/extension_download.php
index 4ade0e978c..04292c47df 100644
--- a/app/extensions/extension_download.php
+++ b/app/extensions/extension_download.php
@@ -92,7 +92,6 @@
$available_columns[] = 'follow_me_uuid';
$available_columns[] = 'enabled';
$available_columns[] = 'description';
- $available_columns[] = 'forward_caller_id_uuid';
$available_columns[] = 'absolute_codec_string';
$available_columns[] = 'forward_user_not_registered_destination';
$available_columns[] = 'forward_user_not_registered_enabled';
@@ -210,4 +209,4 @@
//include the footer
require_once "resources/footer.php";
-?>
\ No newline at end of file
+?>
diff --git a/app/extensions/extension_edit.php b/app/extensions/extension_edit.php
index 45bfc1aeae..384ce485ef 100644
--- a/app/extensions/extension_edit.php
+++ b/app/extensions/extension_edit.php
@@ -937,12 +937,13 @@
echo button::create(['type'=>'button','label'=>$text['button-call_forward'],'icon'=>'project-diagram','style'=>$button_margin,'link'=>'../calls/call_edit.php?id='.urlencode($extension_uuid)]);
unset($button_margin);
}
+ if (permission_exists('extension_setting_view')) {
+ echo button::create(['type'=>'button','label'=>$text['button-settings'],'icon'=>$_SESSION['theme']['button_icon_settings'],'id'=>'btn_settings','style'=>'','link'=>PROJECT_PATH.'/app/extension_settings/extension_settings.php?id='.urlencode($extension_uuid)]);
+ }
if (permission_exists('extension_copy')) {
echo button::create(['type'=>'button','label'=>$text['button-copy'],'icon'=>$_SESSION['theme']['button_icon_copy'],'id'=>'btn_copy','style'=>'margin-left: 15px;','onclick'=>"copy_extension();"]);
}
- if (permission_exists('domain_setting_view') && file_exists(PROJECT_PATH.'/app/extension_settings/app_config.php')) {
- echo button::create(['type'=>'button','label'=>$text['button-settings'],'icon'=>$_SESSION['theme']['button_icon_settings'],'id'=>'btn_settings','style'=>'','link'=>PROJECT_PATH.'/app/extension_settings/extension_settings.php?id='.urlencode($extension_uuid)]);
- }
+
}
echo button::create(['type'=>'button','label'=>$text['button-save'],'icon'=>$_SESSION['theme']['button_icon_save'],'id'=>'btn_save','style'=>'margin-left: 15px;','onclick'=>'submit_form();']);
echo " \n";
diff --git a/app/fanvil/app_config.php b/app/fanvil/app_config.php
index dd6f792bab..c4fe460dab 100644
--- a/app/fanvil/app_config.php
+++ b/app/fanvil/app_config.php
@@ -655,334 +655,6 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "EGS Syslog Server Port";
$y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "68feb973-be9a-42ac-94a1-54263dfde589";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_lldp_tx_enable";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " LLDP Transmit. 0-Disabled, 1-Enabled";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "f0d1dd5b-7130-428c-bddb-a975d85587f5";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_lldp_refresh";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "60";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "LLDP Refresh Timer. Default 60 seconds";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "10af1d27-ef61-4c7c-94cf-8db797a84ebc";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_lldp_learn";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Use LLDP learned information such as voip vlan";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b4cc791a-5389-4e1f-9f87-e8394b399d64";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_enable_vlan";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable VLAN Support. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "16d74bd9-7f44-4780-a202-3cfcbaa6ef5a";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_lan_port_vlan";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "256";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Default VLAN for phone LAN port.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "530564ac-17aa-4167-b047-bf764250d91a";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_pc_port_vlan";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Default VLAN for phone PC port.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "2b72e19b-2437-45c0-9df5-4fef6ac078c6";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_enable_diffserv";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable DiffServ(DSCP) Support. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "86081f7e-af03-41b9-a5af-b5593182c9ff";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_qos_rtp_voice";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 2 QoS 802.1p Priority Value for RTP Voice media";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8050cfbd-44d1-46db-b553-2cc0defd5fc2";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_qos_rtp_video";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 2 QoS 802.1p Priority Value for RTP Video media";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ddf89377-7303-435c-917a-bdd32579cf36";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_qos_sip";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 2 QoS 802.1p Priority Value for SIP signaling";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b6a89aa6-2e21-489c-8f1f-e819e6ced17b";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_dscp_rtp_voice";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "46";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 3 QoS DSCP Value for RTP Voice media";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9a22bd5b-c2b0-4c06-bd19-63ef58837011";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_dscp_rtp_video";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "46";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 3 QoS DSCP Value for RTP Video media";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "94effa7d-8c0f-4cca-b617-9d2d24748aa7";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_dscp_sip";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "-1";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Layer 3 QoS DSCP Value for SIP signaling (Disabled by default)";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "49f2ff3f-0628-44fa-a8d2-82cb38fbaf98";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_video_codec";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "H264";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable video codec on sip lines (Only h264 currently supported)";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "be8c1341-3cb6-4aa8-bef5-642ff11199e8";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_syslog_enable";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable Syslog server";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8281507b-80fa-450a-94b7-6f58a7a9e6e1";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_syslog_server";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0.0.0.0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Syslog Server ip";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "db7595a1-318b-49d8-86a6-8ff4b44e30f5";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_syslog_server_port";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "514";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Syslog Server Port number";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "67a916be-35df-44f1-ab12-81756fd1f911";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_default_answer_mode";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "2";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Answer call as audio only or audio with video. 1-Audio, 2-Video";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "bbbdf01c-d760-43cf-958d-e47c54dd3997";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_default_dial_mode";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Dial call as audio only or audio with video. 1-Audio, 2-Video Note: If you set this to video, then video is offered in the first invite which can cause your call to hang or not complete if going through a sip trunk provider.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "37ddabf0-8d7c-494f-b381-5bc4e3048bff";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_enable_auto_upgrade";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable firmware auto upgrade 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "5a2a79c3-befb-4b7a-998d-3f0bfc9fcde4";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_upgrade_server_1";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "https://server.yourdomain.com/app/fanvil/resources/firmware";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Auto upgrade firmware server 1.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "de60a8fb-628a-4ee3-a76a-ff3e0a7f045f";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_upgrade_server_2";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "https://server2.yourdomain.com/app/fanvil/resources/firmware";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Auto upgrade firmware server 2.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "09134520-647a-4a86-bffd-d927aff2b33b";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_upgrade_interval";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "24";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Check for firmware every X hours.";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3ca2b12b-21f1-4a6d-a0eb-8670105c77d9";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_i20s";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "i20S2.1.1.3664T20180809203309.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the i20S firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d07be0b3-a34b-4739-a227-766231e5bb52";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_i23s";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "i23S2.1.1.3664T20180809204215.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the i23S firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "6e0d313d-e44a-446f-9274-99e778d87cf5";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_i30";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "i302.1.1.3664T20180809203614.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the i30 firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a3cf0c35-4f92-4607-84a6-b06b29d67134";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_i31s";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "i31S2.1.1.3664T20180809203916.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the i31S firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "235ccea6-5ed0-45ff-a03f-d0cbc6ebaf01";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_x2p";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "x2-mono2.8.0.6251T20181017203533.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the X2P firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8912437c-7142-4a85-b4aa-f83c1e50ad30";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_x3";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "x3s2.8.0.6251T20181017202549.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the X3S/G firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "756059c7-b754-4285-be22-0d51c82d62b3";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_x4";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "x42.8.0.6251T20181017202853.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the X4/G firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "122ba840-7dee-4c8e-a93c-739681b4b1d4";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_x5s";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "x5s-6900-P0.13.3-1.8.0-2698T2018-09-30-15.23.04.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the X5S firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "32635e1c-dcb8-44e1-a0c4-5209b4f84392";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_firmware_x6";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "x6-6914-P0.13.3-1.8.0-2697T2018-09-30-15.10.00.z";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = " Filename of the X6 firmware ROM";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "4b7f56f3-31a9-46dd-b588-35b253024b1f";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_switch_mode";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "0 - Monostable, 1 - Bistable";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "316ce083-69ba-4932-be02-845d3ed8f585";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_enable_card_reader";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable RFID Card Reader. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7226d18c-7d49-449b-be7b-8cfb46c1ddb3";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_enable_indoor_open";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Use indoor switch to unlock the door. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "83dce10f-6254-490c-af89-a2a004890c47";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_enable_access_table";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Default: Enabled. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d4ffbf45-5abe-4ef3-9cf7-f222257d5633";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_opening_door_code_remote";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "*";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Default: *";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c51013fc-765e-4758-99a9-2738cfe9a7dd";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_opening_door_code_local";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "6789";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Default: 6789";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "0c5fe247-0361-4c69-a247-d14b5417e53e";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_enable_syslog";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable EGS Syslog. 0 - NO, 1 - Yes";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1a74a177-49fc-432e-b10e-39c7d0c7ddc4";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_log_server";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "0.0.0.0";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "EGS Syslog Server. Hostname or IP";
- $y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3fb2a87b-89b1-4d53-923d-c1478aec4f58";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_egs_log_port";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "514";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "EGS Syslog Server Port";
- $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "108f26c5-568d-4cc0-af94-097ecb600b8f";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "fanvil_provision_url";
diff --git a/app/fax/app_languages.php b/app/fax/app_languages.php
index 2f5e22804c..751e3ddf2d 100644
--- a/app/fax/app_languages.php
+++ b/app/fax/app_languages.php
@@ -303,8 +303,8 @@ $text['option-fax-resolution-superfine']['de-ch'] = "Superfein"; //copied from d
$text['option-fax-resolution-superfine']['de-de'] = "Superfein";
$text['option-fax-resolution-superfine']['es-cl'] = "Superfino";
$text['option-fax-resolution-superfine']['es-mx'] = "Superfino"; //copied from es-cl
-$text['option-fax-resolution-superfine']['fr-ca'] = "Superfin"; //copied from fr-fr
-$text['option-fax-resolution-superfine']['fr-fr'] = "Superfin";
+$text['option-fax-resolution-superfine']['fr-ca'] = "Superfine"; //copied from fr-fr
+$text['option-fax-resolution-superfine']['fr-fr'] = "Superfine";
$text['option-fax-resolution-superfine']['he-il'] = "";
$text['option-fax-resolution-superfine']['it-it'] = "Superfine";
$text['option-fax-resolution-superfine']['nl-nl'] = "";
@@ -324,8 +324,8 @@ $text['option-fax-resolution-normal']['de-ch'] = "Normal"; //copied from de-de
$text['option-fax-resolution-normal']['de-de'] = "Normal";
$text['option-fax-resolution-normal']['es-cl'] = "Normal";
$text['option-fax-resolution-normal']['es-mx'] = "Normal"; //copied from es-cl
-$text['option-fax-resolution-normal']['fr-ca'] = "Normal"; //copied from fr-fr
-$text['option-fax-resolution-normal']['fr-fr'] = "Normal";
+$text['option-fax-resolution-normal']['fr-ca'] = "Normale"; //copied from fr-fr
+$text['option-fax-resolution-normal']['fr-fr'] = "Normale";
$text['option-fax-resolution-normal']['he-il'] = "";
$text['option-fax-resolution-normal']['it-it'] = "Normale";
$text['option-fax-resolution-normal']['nl-nl'] = "";
@@ -492,8 +492,8 @@ $text['label-sent']['de-ch'] = "Gesendet"; //copied from de-de
$text['label-sent']['de-de'] = "Gesendet";
$text['label-sent']['es-cl'] = "Enviado";
$text['label-sent']['es-mx'] = "Enviado"; //copied from es-cl
-$text['label-sent']['fr-ca'] = "Envoyé"; //copied from fr-fr
-$text['label-sent']['fr-fr'] = "Envoyé";
+$text['label-sent']['fr-ca'] = "Envoyés"; //copied from fr-fr
+$text['label-sent']['fr-fr'] = "Envoyés";
$text['label-sent']['he-il'] = "";
$text['label-sent']['it-it'] = "Spedito";
$text['label-sent']['nl-nl'] = "";
@@ -1017,8 +1017,8 @@ $text['label-fax_files']['de-ch'] = "Fax Dateien"; //copied from de-de
$text['label-fax_files']['de-de'] = "Fax Dateien";
$text['label-fax_files']['es-cl'] = "Facsímil del Archivo(s)";
$text['label-fax_files']['es-mx'] = "Facsímil del Archivo(s)"; //copied from es-cl
-$text['label-fax_files']['fr-ca'] = "Télécopieur Fichier(s)"; //copied from fr-fr
-$text['label-fax_files']['fr-fr'] = "Télécopieur Fichier(s)";
+$text['label-fax_files']['fr-ca'] = "Fichier(s) à Télécopier"; //copied from fr-fr
+$text['label-fax_files']['fr-fr'] = "Fichier(s) à Télécopier";
$text['label-fax_files']['he-il'] = "";
$text['label-fax_files']['it-it'] = "File(s) FAX";
$text['label-fax_files']['nl-nl'] = "";
@@ -1332,8 +1332,8 @@ $text['label-fax-subject']['de-ch'] = "Betreff"; //copied from de-de
$text['label-fax-subject']['de-de'] = "Betreff";
$text['label-fax-subject']['es-cl'] = "Asunto";
$text['label-fax-subject']['es-mx'] = "Asunto"; //copied from es-cl
-$text['label-fax-subject']['fr-ca'] = "Sujet"; //copied from fr-fr
-$text['label-fax-subject']['fr-fr'] = "Sujet";
+$text['label-fax-subject']['fr-ca'] = "Objet"; //copied from fr-fr
+$text['label-fax-subject']['fr-fr'] = "Objet";
$text['label-fax-subject']['he-il'] = "נושא";
$text['label-fax-subject']['it-it'] = "Oggetto";
$text['label-fax-subject']['nl-nl'] = "";
@@ -1542,8 +1542,8 @@ $text['label-fax-footer']['de-ch'] = "Fußzeile"; //copied from de-de
$text['label-fax-footer']['de-de'] = "Fußzeile";
$text['label-fax-footer']['es-cl'] = "Pie de Página";
$text['label-fax-footer']['es-mx'] = "Pie de Página"; //copied from es-cl
-$text['label-fax-footer']['fr-ca'] = "Footer"; //copied from fr-fr
-$text['label-fax-footer']['fr-fr'] = "Footer";
+$text['label-fax-footer']['fr-ca'] = "Bas de page"; //copied from fr-fr
+$text['label-fax-footer']['fr-fr'] = "Bas de page";
$text['label-fax-footer']['he-il'] = "תחתית עמוד";
$text['label-fax-footer']['it-it'] = "PiÃè di pagina";
$text['label-fax-footer']['nl-nl'] = "";
@@ -2697,8 +2697,8 @@ $text['description-fax_files']['de-ch'] = "Wählen Sie die Datei(en) zum senden.
$text['description-fax_files']['de-de'] = "Wählen Sie die Datei(en) zum senden.";
$text['description-fax_files']['es-cl'] = "Seleccione el archivo a subir y enviar como fax.";
$text['description-fax_files']['es-mx'] = "Seleccione el archivo a subir y enviar como fax."; //copied from es-cl
-$text['description-fax_files']['fr-ca'] = "Choisir un fichier à télécharger pour être émis en tant que Fax."; //copied from fr-fr
-$text['description-fax_files']['fr-fr'] = "Choisir un fichier à télécharger pour être émis en tant que Fax.";
+$text['description-fax_files']['fr-ca'] = "Choisir un fichier à télécharger pour émettre en tant que Fax."; //copied from fr-fr
+$text['description-fax_files']['fr-fr'] = "Choisir un fichier à télécharger pour émettre en tant que Fax.";
$text['description-fax_files']['he-il'] = "";
$text['description-fax_files']['it-it'] = "Scegli i/il file da caricare e spedire.";
$text['description-fax_files']['nl-nl'] = "";
@@ -3214,8 +3214,8 @@ $text['description-email_outbound_subject_tag']['ru-ru'] = "Установите
$text['description-email_outbound_subject_tag']['sv-se'] = "Ange E-post ämne för utgående fax.";
$text['description-email_outbound_subject_tag']['uk-ua'] = "";
-$text['description-email_outbound_authorized_senders']['en-us'] = "Define the email address(es) and/or domains allowed to send faxes through this server.";
-$text['description-email_outbound_authorized_senders']['en-gb'] = "Define the email address(es) and/or domains allowed to send faxes through this server.";
+$text['description-email_outbound_authorized_senders']['en-us'] = "Define the email address(es) allowed to send faxes through this server.";
+$text['description-email_outbound_authorized_senders']['en-gb'] = "Define the email address(es) allowed to send faxes through this server.";
$text['description-email_outbound_authorized_senders']['ar-eg'] = "";
$text['description-email_outbound_authorized_senders']['de-at'] = "Geben Sie die Email Addresse(n) an, von welchen Faxe gesendet werden dürfen."; //copied from de-de
$text['description-email_outbound_authorized_senders']['de-ch'] = "Geben Sie die Email Addresse(n) an, von welchen Faxe gesendet werden dürfen."; //copied from de-de
@@ -3537,8 +3537,8 @@ $text['description-2']['de-ch'] = "Um ein Fax zu senden, laden Sie eine PDF oder
$text['description-2']['de-de'] = "Um ein Fax zu senden, laden Sie eine PDF oder eine TIF Datei hoch. Um ein Deckblatt zu generieren, geben Sie einen Betreff und/oder eine Nachricht unten an.";
$text['description-2']['es-cl'] = "Para enviar un fax, cargar un archivo PDF o TIF . Para generar una hoja de presentación, escriba un asunto y / o mensaje a continuación.";
$text['description-2']['es-mx'] = "Para enviar un fax, cargar un archivo PDF o TIF . Para generar una hoja de presentación, escriba un asunto y / o mensaje a continuación."; //copied from es-cl
-$text['description-2']['fr-ca'] = "Pour envoyer un fax, télécharger un fichier PDF ou TIF . Pour générer une feuille de couverture, entrer un sujet et / ou un message ci-dessous."; //copied from fr-fr
-$text['description-2']['fr-fr'] = "Pour envoyer un fax, télécharger un fichier PDF ou TIF . Pour générer une feuille de couverture, entrer un sujet et / ou un message ci-dessous.";
+$text['description-2']['fr-ca'] = "Pour envoyer un fax, téléchargez un fichier PDF ou TIF . Pour générer une feuille de couverture, entrez un sujet et / ou un message ci-dessous."; //copied from fr-fr
+$text['description-2']['fr-fr'] = "Pour envoyer un fax, téléchargez un fichier PDF ou TIF . Pour générer une feuille de couverture, entrez un sujet et / ou un message ci-dessous.";
$text['description-2']['he-il'] = "";
$text['description-2']['it-it'] = "Per spedire un fax, carica un PDF o un TIF . Per generare una copertina, inserisci un oggetto e/o un Messaggio qui sotto.";
$text['description-2']['nl-nl'] = "";
@@ -3747,8 +3747,8 @@ $text['button-preview']['de-ch'] = "Vorschau"; //copied from de-de
$text['button-preview']['de-de'] = "Vorschau";
$text['button-preview']['es-cl'] = "Prevista";
$text['button-preview']['es-mx'] = "Prevista"; //copied from es-cl
-$text['button-preview']['fr-ca'] = "Pré-Visualisation"; //copied from fr-fr
-$text['button-preview']['fr-fr'] = "Pré-Visualisation";
+$text['button-preview']['fr-ca'] = "Aperçu"; //copied from fr-fr
+$text['button-preview']['fr-fr'] = "Aperçu";
$text['button-preview']['he-il'] = "תצוגה מקדימה";
$text['button-preview']['it-it'] = "Anteprima";
$text['button-preview']['nl-nl'] = "";
diff --git a/app/follow_me/app_config.php b/app/follow_me/app_config.php
index a09aff8c7e..cd25312375 100644
--- a/app/follow_me/app_config.php
+++ b/app/follow_me/app_config.php
@@ -99,8 +99,6 @@
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "user";
$apps[$x]['permissions'][$y]['groups'][] = "agent";
- $y++;
- $apps[$x]['permissions'][$y]['name'] = "follow_me_caller_id";
//default settings
$y=0;
@@ -153,15 +151,6 @@
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
- $apps[$x]['db'][$y]['fields'][$z]['name'] = "follow_me_caller_id_uuid";
- $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
- $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
- $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
- $apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
- $apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_destinations";
- $apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "destination_uuid";
- $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
- $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "follow_me_ignore_busy";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
diff --git a/app/grandstream/app_config.php b/app/grandstream/app_config.php
index cd098d104b..f3673393b5 100644
--- a/app/grandstream/app_config.php
+++ b/app/grandstream/app_config.php
@@ -302,6 +302,22 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Bluetooth Handsfree - 0 - Off, 1 - On";
$y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "5bc527d0-6f83-403b-a6c0-574540cfa9a6";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_type";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Headset Type. 0 - Normal, 1 - Plantronics EHS. Default is 0";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "522ee640-5e24-4058-95ed-605bd982ec33";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_key_mode";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "HEADSET Key Mode. 0 - Default Mode, 1 - Toggle Headset/Speaker. Default is 0";
+ $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "453ec939-ef61-4ecd-ad0a-31905153efd8";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_auto_attended_transfer";
@@ -406,6 +422,14 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "BLF Call-pickup. 0 - Auto, 1 - Force BLF Call-pickup by prefix, 2 - Disabled. Default is 0";
$y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "53a9f955-d199-44f5-a97d-eed636348da5";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_blf_remote_status";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Hide BLF Remote Status. Default 0 - Not hidden, 1 - Hidden";
+ $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "09ed1352-2594-4eb8-b3f8-93cdaabe6302";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_active_backlight_timeout";
diff --git a/app/ivr_menus/app_defaults.php b/app/ivr_menus/app_defaults.php
index 6f54dc7ca8..4075d60551 100644
--- a/app/ivr_menus/app_defaults.php
+++ b/app/ivr_menus/app_defaults.php
@@ -68,9 +68,16 @@ if ($domains_processed == 1) {
//use the ivr_menu_language to update the language dialect and voice
$sql = "update v_ivr_menus set ";
- $sql .= "ivr_menu_language = split_part(ivr_menu_language, '/', 1), ";
- $sql .= "ivr_menu_dialect = split_part(ivr_menu_language, '/', 2), ";
- $sql .= "ivr_menu_voice = split_part(ivr_menu_language, '/', 3) ";
+ if ($db_type == 'pgsql') {
+ $sql .= "ivr_menu_language = split_part(ivr_menu_language, '/', 1), ";
+ $sql .= "ivr_menu_dialect = split_part(ivr_menu_language, '/', 2), ";
+ $sql .= "ivr_menu_voice = split_part(ivr_menu_language, '/', 3) ";
+ }
+ elseif ($db_type == 'mysql') {
+ $sql .= "ivr_menu_language = SUBSTRING_INDEX(SUBSTRING_INDEX(ivr_menu_language, '/', 1), '/', -1), ";
+ $sql .= "ivr_menu_dialect = SUBSTRING_INDEX(SUBSTRING_INDEX(ivr_menu_language, '/', 2), '/', -1), ";
+ $sql .= "ivr_menu_voice = SUBSTRING_INDEX(SUBSTRING_INDEX(ivr_menu_language, '/', 3), '/', -1) ";
+ }
$sql .= "where ivr_menu_language like '%/%/%'; ";
$database = new database;
$ivr_menus = $database->select($sql, null, 'all');
diff --git a/app/ivr_menus/app_languages.php b/app/ivr_menus/app_languages.php
index 6b1cc89727..d87b6b46ac 100644
--- a/app/ivr_menus/app_languages.php
+++ b/app/ivr_menus/app_languages.php
@@ -9,8 +9,8 @@ $text['title-option_edit']['de-ch'] = "Optionen der Automatischen Vermittlung be
$text['title-option_edit']['de-de'] = "Optionen der Automatischen Vermittlung bearbeiten";
$text['title-option_edit']['es-cl'] = "Editar Menú IVR";
$text['title-option_edit']['es-mx'] = "Editar Menú IVR"; //copied from es-cl
-$text['title-option_edit']['fr-ca'] = "Menu SVI Editer un Option"; //copied from fr-fr
-$text['title-option_edit']['fr-fr'] = "Menu SVI Editer un Option";
+$text['title-option_edit']['fr-ca'] = "Menu RVI Editer un Option"; //copied from fr-fr
+$text['title-option_edit']['fr-fr'] = "Menu RVI Editer un Option";
$text['title-option_edit']['he-il'] = "";
$text['title-option_edit']['it-it'] = "Modifica Opzioni Menu IVR";
$text['title-option_edit']['nl-nl'] = "IVR meni optie bewerken";
@@ -30,7 +30,7 @@ $text['title-option_add']['de-ch'] = "Optionen der Automatischen Vermittlung hin
$text['title-option_add']['de-de'] = "Optionen der Automatischen Vermittlung hinzufügen";
$text['title-option_add']['es-cl'] = "Agregar Menú IVR";
$text['title-option_add']['es-mx'] = "Agregar Menú IVR"; //copied from es-cl
-$text['title-option_add']['fr-ca'] = "Menu SVI Ajouter une Option"; //copied from fr-fr
+$text['title-option_add']['fr-ca'] = "Menu RVI Ajouter une Option"; //copied from fr-fr
$text['title-option_add']['fr-fr'] = "Menu SVI Ajouter une Option";
$text['title-option_add']['he-il'] = "";
$text['title-option_add']['it-it'] = "Inserisci Opzione Menu IVR";
@@ -51,7 +51,7 @@ $text['title-ivr_menus']['de-ch'] = "Automatische Vermittlungen"; //copied from
$text['title-ivr_menus']['de-de'] = "Automatische Vermittlungen";
$text['title-ivr_menus']['es-cl'] = "Menus IVR";
$text['title-ivr_menus']['es-mx'] = "Menus IVR"; //copied from es-cl
-$text['title-ivr_menus']['fr-ca'] = "Menus SVI"; //copied from fr-fr
+$text['title-ivr_menus']['fr-ca'] = "Menus RVI"; //copied from fr-fr
$text['title-ivr_menus']['fr-fr'] = "Menus SVI";
$text['title-ivr_menus']['he-il'] = "";
$text['title-ivr_menus']['it-it'] = "Menu IVR";
@@ -72,7 +72,7 @@ $text['title-ivr_menu']['de-ch'] = "Automatische Vermittlung"; //copied from de-
$text['title-ivr_menu']['de-de'] = "Automatische Vermittlung";
$text['title-ivr_menu']['es-cl'] = "Menú IVR";
$text['title-ivr_menu']['es-mx'] = "Menú IVR"; //copied from es-cl
-$text['title-ivr_menu']['fr-ca'] = "Menu SVI"; //copied from fr-fr
+$text['title-ivr_menu']['fr-ca'] = "Menu RVI"; //copied from fr-fr
$text['title-ivr_menu']['fr-fr'] = "Menu SVI";
$text['title-ivr_menu']['he-il'] = "";
$text['title-ivr_menu']['it-it'] = "Menu IVR";
@@ -93,7 +93,7 @@ $text['title-ivr_menus_sub']['de-ch'] = "Automatische Vermittlungen - Sub"; //co
$text['title-ivr_menus_sub']['de-de'] = "Automatische Vermittlungen - Sub";
$text['title-ivr_menus_sub']['es-cl'] = "Menus IVR - Sub";
$text['title-ivr_menus_sub']['es-mx'] = "Menus IVR - Sub"; //copied from es-cl
-$text['title-ivr_menus_sub']['fr-ca'] = "Menus SVI - Sub"; //copied from fr-fr
+$text['title-ivr_menus_sub']['fr-ca'] = "Menus RVI - Sub"; //copied from fr-fr
$text['title-ivr_menus_sub']['fr-fr'] = "Menus SVI - Sub";
$text['title-ivr_menus_sub']['he-il'] = "";
$text['title-ivr_menus_sub']['it-it'] = "Menu IVR - Sub";
@@ -114,8 +114,8 @@ $text['title-ivr_menus_other']['de-ch'] = "Automatische Vermittlungen - Other";
$text['title-ivr_menus_other']['de-de'] = "Automatische Vermittlungen - Other";
$text['title-ivr_menus_other']['es-cl'] = "Menus IVR - Other";
$text['title-ivr_menus_other']['es-mx'] = "Menus IVR - Other"; //copied from es-cl
-$text['title-ivr_menus_other']['fr-ca'] = "Menus SVI - Other"; //copied from fr-fr
-$text['title-ivr_menus_other']['fr-fr'] = "Menus SVI - Other";
+$text['title-ivr_menus_other']['fr-ca'] = "Menus RVI - Autre"; //copied from fr-fr
+$text['title-ivr_menus_other']['fr-fr'] = "Menus SVI - Autre";
$text['title-ivr_menus_other']['he-il'] = "";
$text['title-ivr_menus_other']['it-it'] = "Menu IVR - Other";
$text['title-ivr_menus_other']['nl-nl'] = "IVR Sub - menu";
@@ -198,7 +198,7 @@ $text['message-maximum_ivr_menus']['de-ch'] = "Maximale Anzahl an Automatischen
$text['message-maximum_ivr_menus']['de-de'] = "Maximale Anzahl an Automatischen Vermittlungen:";
$text['message-maximum_ivr_menus']['es-cl'] = "Máxima IVR Menús Animales:";
$text['message-maximum_ivr_menus']['es-mx'] = "Máxima IVR Menús Animales:"; //copied from es-cl
-$text['message-maximum_ivr_menus']['fr-ca'] = "Menus Maximale SVI Admis:"; //copied from fr-fr
+$text['message-maximum_ivr_menus']['fr-ca'] = "Menus Maximale RVI Admis:";
$text['message-maximum_ivr_menus']['fr-fr'] = "Menus Maximale SVI Admis:";
$text['message-maximum_ivr_menus']['he-il'] = "";
$text['message-maximum_ivr_menus']['it-it'] = "Massimo Menu IVR:";
@@ -786,7 +786,7 @@ $text['header-option_edit']['de-ch'] = "Optionen der Automatischen Vermittlung b
$text['header-option_edit']['de-de'] = "Optionen der Automatischen Vermittlung bearbeiten";
$text['header-option_edit']['es-cl'] = "Editar Menú IVR";
$text['header-option_edit']['es-mx'] = "Editar Menú IVR"; //copied from es-cl
-$text['header-option_edit']['fr-ca'] = "Menu SVI Editer un Option"; //copied from fr-fr
+$text['header-option_edit']['fr-ca'] = "Menu RVI Editer un Option";
$text['header-option_edit']['fr-fr'] = "Menu SVI Editer un Option";
$text['header-option_edit']['he-il'] = "";
$text['header-option_edit']['it-it'] = "Modificare Opzioni Menu IVR";
@@ -807,7 +807,7 @@ $text['header-option_add']['de-ch'] = "Optionen der Automatischen Vermittlung hi
$text['header-option_add']['de-de'] = "Optionen der Automatischen Vermittlung hinzufügen";
$text['header-option_add']['es-cl'] = "Agregar Menú IVR";
$text['header-option_add']['es-mx'] = "Agregar Menú IVR"; //copied from es-cl
-$text['header-option_add']['fr-ca'] = "Menu SVI Ajouter une Option"; //copied from fr-fr
+$text['header-option_add']['fr-ca'] = "Menu RVI Ajouter une Option"; //copied from fr-fr
$text['header-option_add']['fr-fr'] = "Menu SVI Ajouter une Option";
$text['header-option_add']['he-il'] = "";
$text['header-option_add']['it-it'] = "Inserire Opzioni Menu IVR";
@@ -828,7 +828,7 @@ $text['header-ivr_menus']['de-ch'] = "Automatische Vermittlungen"; //copied from
$text['header-ivr_menus']['de-de'] = "Automatische Vermittlungen";
$text['header-ivr_menus']['es-cl'] = "Menus IVR";
$text['header-ivr_menus']['es-mx'] = "Menus IVR"; //copied from es-cl
-$text['header-ivr_menus']['fr-ca'] = "Menus SVI"; //copied from fr-fr
+$text['header-ivr_menus']['fr-ca'] = "Menus RVI";
$text['header-ivr_menus']['fr-fr'] = "Menus SVI";
$text['header-ivr_menus']['he-il'] = "";
$text['header-ivr_menus']['it-it'] = "Menu IVR";
@@ -849,7 +849,7 @@ $text['header-ivr_menu']['de-ch'] = "Automatische Vermittlung"; //copied from de
$text['header-ivr_menu']['de-de'] = "Automatische Vermittlung";
$text['header-ivr_menu']['es-cl'] = "Menú IVR";
$text['header-ivr_menu']['es-mx'] = "Menú IVR"; //copied from es-cl
-$text['header-ivr_menu']['fr-ca'] = "Menu SVI"; //copied from fr-fr
+$text['header-ivr_menu']['fr-ca'] = "Menu RVI";
$text['header-ivr_menu']['fr-fr'] = "Menu SVI";
$text['header-ivr_menu']['he-il'] = "";
$text['header-ivr_menu']['it-it'] = "Menu IVR";
@@ -1059,7 +1059,7 @@ $text['description-name']['de-ch'] = "Geben Sie den Namen der Automatischen Verm
$text['description-name']['de-de'] = "Geben Sie den Namen der Automatischen Vermittlung an";
$text['description-name']['es-cl'] = "Ingrese un nombre para el menú IVR.";
$text['description-name']['es-mx'] = "Ingrese un nombre para el menú IVR."; //copied from es-cl
-$text['description-name']['fr-ca'] = "Choisir un nom pour le menu SVI"; //copied from fr-fr
+$text['description-name']['fr-ca'] = "Choisir un nom pour le menu RVI";
$text['description-name']['fr-fr'] = "Choisir un nom pour le menu SVI";
$text['description-name']['he-il'] = "";
$text['description-name']['it-it'] = "Inserire un nome per l'IVR.";
@@ -1122,7 +1122,7 @@ $text['description-ivr_menus']['de-ch'] = "Die Automatische Vermittlung spielt e
$text['description-ivr_menus']['de-de'] = "Die Automatische Vermittlung spielt eine Aufnahme oder eine vordefinierte Phrase ab von welcher der Anrufe seine Optionen wählt. Jede Option hat ein entsprechendes Ziel. Das Ziel kann eine Nebenstelle, eine Mailbox eine andere Automatische Vermittlung, Rufgruppen, Fax Server und weitere Funktionen sein.";
$text['description-ivr_menus']['es-cl'] = "El menú IVR reproduce una grabación o una frase predefinida que presenta opciones para elegir. Cada opción corresponde a un destino. Los destinos pueden ser extensiones, correo de voz, IVR, grupos, fax entre otros.";
$text['description-ivr_menus']['es-mx'] = "El menú IVR reproduce una grabación o una frase predefinida que presenta opciones para elegir. Cada opción corresponde a un destino. Los destinos pueden ser extensiones, correo de voz, IVR, grupos, fax entre otros."; //copied from es-cl
-$text['description-ivr_menus']['fr-ca'] = "Le Menu SVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus SVI, groupes d'appel, Fax, ou autres."; //copied from fr-fr
+$text['description-ivr_menus']['fr-ca'] = "Le Menu RVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus RVI, groupes d'appel, Fax, ou autres.";
$text['description-ivr_menus']['fr-fr'] = "Le Menu SVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus SVI, groupes d'appel, Fax, ou autres.";
$text['description-ivr_menus']['he-il'] = "";
$text['description-ivr_menus']['it-it'] = "Il Menu IVR suona al chiamante una registrazione o una frase che illustra le opzioni selezionabili. Ciascuna opzione ha una destinazione corrispondente. Le destinazioni possono essere interni, caselle vocali, altri IVR, gruppi di squillo, FAX virtuali, etc.";
@@ -1143,7 +1143,7 @@ $text['description-ivr_menu']['de-ch'] = "Die Automatische Vermittlung spielt ei
$text['description-ivr_menu']['de-de'] = "Die Automatische Vermittlung spielt eine Aufnahme oder eine vordefinierte Phrase ab von welcher der Anrufe seine Optionen wählt. Jede Option hat ein entsprechendes Ziel. Das Ziel kann eine Nebenstelle, eine Mailbox eine andere Automatische Vermittlung, Rufgruppen, Fax Server und weitere Funktionen sein.";
$text['description-ivr_menu']['es-cl'] = "El menú IVR reproduce una grabación o una frase predefinida que presenta opciones para elegir. Cada opción corresponde a un destino. Los destinos pueden ser extensiones, correo de voz, IVR, grupos, fax entre otros.";
$text['description-ivr_menu']['es-mx'] = "El menú IVR reproduce una grabación o una frase predefinida que presenta opciones para elegir. Cada opción corresponde a un destino. Los destinos pueden ser extensiones, correo de voz, IVR, grupos, fax entre otros."; //copied from es-cl
-$text['description-ivr_menu']['fr-ca'] = "Le Menu SVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus SVI, groupes d'appel, Fax, ou autres."; //copied from fr-fr
+$text['description-ivr_menu']['fr-ca'] = "Le Menu RVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus RVI, groupes d'appel, Fax, ou autres."; //copied from fr-fr
$text['description-ivr_menu']['fr-fr'] = "Le Menu SVI joue un guide vocal ou un texte prédéfini qui présente à l'appelant des options à choisir. Chaque option est configurée avec une destination correspondante. Ces destnations peuvent être des extensions, messageries vocales, d'autres menus SVI, groupes d'appel, Fax, ou autres.";
$text['description-ivr_menu']['he-il'] = "";
$text['description-ivr_menu']['it-it'] = "Il Menu IVR suona al chiamante una registrazione o una frase che illustra le opzioni selezionabili. Ciascuna opzione ha una destinazione corrispondente. Le destinazioni possono essere interni, caselle vocali, altri IVR, gruppi di squillo, FAX virtuali, etc.";
@@ -1290,7 +1290,7 @@ $text['description-exit_action']['de-ch'] = "Wählen Sie eine Aktion bei Verlass
$text['description-exit_action']['de-de'] = "Wählen Sie eine Aktion bei Verlassen der Automatischen Vermittlung.";
$text['description-exit_action']['es-cl'] = "Seleccione la acción de salida a ser realizada si el IVR existe.";
$text['description-exit_action']['es-mx'] = "Seleccione la acción de salida a ser realizada si el IVR existe."; //copied from es-cl
-$text['description-exit_action']['fr-ca'] = "Choisir l'action à executer en sortie si on sort du SVI par ailleurs qu'un des choix proposé."; //copied from fr-fr
+$text['description-exit_action']['fr-ca'] = "Choisir l'action à executer en sortie si on sort du RVI par ailleurs qu'un des choix proposé."; //copied from fr-fr
$text['description-exit_action']['fr-fr'] = "Choisir l'action à executer en sortie si on sort du SVI par ailleurs qu'un des choix proposé.";
$text['description-exit_action']['he-il'] = "";
$text['description-exit_action']['it-it'] = "Scegliere l'azione da compiere quando si esce dall'IVR.";
@@ -1332,7 +1332,7 @@ $text['description-direct_dial']['de-ch'] = "Definieren Sie ob Anrufer direkt zu
$text['description-direct_dial']['de-de'] = "Definieren Sie ob Anrufer direkt zu Nebenstellen durchwählen können.";
$text['description-direct_dial']['es-cl'] = "Define si quienes llaman pueden marcar directamente a las extensiones y códigos.";
$text['description-direct_dial']['es-mx'] = "Define si quienes llaman pueden marcar directamente a las extensiones y códigos."; //copied from es-cl
-$text['description-direct_dial']['fr-ca'] = "Défini si on peut appeler directement le SVI via une extension."; //copied from fr-fr
+$text['description-direct_dial']['fr-ca'] = "Défini si on peut appeler directement le RVI via une extension."; //copied from fr-fr
$text['description-direct_dial']['fr-fr'] = "Défini si on peut appeler directement le SVI via une extension.";
$text['description-direct_dial']['he-il'] = "";
$text['description-direct_dial']['it-it'] = "Definire se i chiamanti possono chiamare direttamente gli interni registrati.";
diff --git a/app/provision/index.php b/app/provision/index.php
index aba0070ba6..c2e9874493 100644
--- a/app/provision/index.php
+++ b/app/provision/index.php
@@ -137,26 +137,23 @@
}
//get the domain_uuid
- $sql = "select device_uuid, domain_uuid from v_devices ";
+ $sql = "select d.device_uuid, d.domain_uuid, n.domain_name ";
+ $sql .= "from v_devices as d, v_domains as n ";
$sql .= "where device_mac_address = :mac ";
+ $sql .= "and d.domain_uuid = n.domain_uuid; ";
$parameters['mac'] = $mac;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row)) {
- $domain_uuid = $row['domain_uuid'];
$device_uuid = $row['device_uuid'];
+ $domain_uuid = $row['domain_uuid'];
+ $domain_name = $row['domain_name'];
$_SESSION['domain_uuid'] = $domain_uuid;
}
unset($sql, $parameters);
//get the domain_name and domain_uuid
- if ($_SESSION['provision']['http_domain_filter']['boolean'] == "false") {
-
- //get the domain name
- $domain_name = $_SESSION['domains'][$domain_uuid]['domain_name'];
-
- }
- else {
+ if ($_SESSION['provision']['http_domain_filter']['boolean'] == "true") {
//get the domain_name
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
$domain_name = $domain_array[0];
diff --git a/app/provision/resources/classes/provision.php b/app/provision/resources/classes/provision.php
index a5e702093f..74d6b8c816 100644
--- a/app/provision/resources/classes/provision.php
+++ b/app/provision/resources/classes/provision.php
@@ -295,11 +295,12 @@ include "root.php";
$provision = array();
if (is_array($_SESSION['provision'])) {
foreach ($_SESSION['provision'] as $key => $val) {
- if (strlen($val['var']) > 0) { $value = $val['var']; }
- if (strlen($val['text']) > 0) { $value = $val['text']; }
- if (strlen($val['boolean']) > 0) { $value = $val['boolean']; }
- if (strlen($val['numeric']) > 0) { $value = $val['numeric']; }
- if (strlen($value) > 0) { $provision[$key] = $value; }
+ if (isset($val['var'])) { $value = $val['var']; }
+ elseif (isset($val['text'])) { $value = $val['text']; }
+ elseif (isset($val['boolean'])) { $value = $val['boolean']; }
+ elseif (isset($val['numeric'])) { $value = $val['numeric']; }
+ elseif (is_array($val) && !is_uuid($val['uuid'])) { $value = $val; }
+ if (isset($value)) { $provision[$key] = $value; }
unset($value);
}
}
diff --git a/app/recordings/app_config.php b/app/recordings/app_config.php
index a0f039be2c..81ebbcfbab 100644
--- a/app/recordings/app_config.php
+++ b/app/recordings/app_config.php
@@ -16,8 +16,8 @@
$apps[$x]['description']['de-de'] = "Aufnahmen verwalten. Diese werden hauptsächlich für Anrufzentralen (IVR) verwendet.";
$apps[$x]['description']['es-cl'] = "Administrador de grabaciones, utilizadas primordialmente con un IVR";
$apps[$x]['description']['es-mx'] = "";
- $apps[$x]['description']['fr-ca'] = "";
- $apps[$x]['description']['fr-fr'] = "Gestion des enregistrements principalement utilisés dans les IVR";
+ $apps[$x]['description']['fr-ca'] = "Gestion des guides vocaux principalement utilisés dans les RVI";
+ $apps[$x]['description']['fr-fr'] = "Gestion des guides vocaux principalement utilisés dans les RVI";
$apps[$x]['description']['he-il'] = "";
$apps[$x]['description']['it-it'] = "";
$apps[$x]['description']['nl-nl'] = "Beheer opnamen met name gebruikt in een IVR.";
@@ -92,8 +92,7 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "base64";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "";
-
- $y=0;
+ $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "960828e1-8d6b-4381-86c4-fa03fce4276a";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "recordings";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "recording_max_length";
diff --git a/app/recordings/app_languages.php b/app/recordings/app_languages.php
index fb7c7d59d3..231178c9fb 100644
--- a/app/recordings/app_languages.php
+++ b/app/recordings/app_languages.php
@@ -9,8 +9,8 @@ $text['title-edit']['de-ch'] = "Aufnahmen"; //copied from de-de
$text['title-edit']['de-de'] = "Aufnahmen";
$text['title-edit']['es-cl'] = "Grabación";
$text['title-edit']['es-mx'] = "Grabación"; //copied from es-cl
-$text['title-edit']['fr-ca'] = "Guide"; //copied from fr-fr
-$text['title-edit']['fr-fr'] = "Guide";
+$text['title-edit']['fr-ca'] = "Guides vocaux";
+$text['title-edit']['fr-fr'] = "Guides vocaux";
$text['title-edit']['he-il'] = "קובץ מדיה";
$text['title-edit']['it-it'] = "Registrazioni Audio";
$text['title-edit']['nl-nl'] = "Opname";
@@ -30,8 +30,8 @@ $text['title-add']['de-ch'] = "Aufnahme hinzufügen"; //copied from de-de
$text['title-add']['de-de'] = "Aufnahme hinzufügen";
$text['title-add']['es-cl'] = "Agregar Grabación";
$text['title-add']['es-mx'] = "Agregar Grabación"; //copied from es-cl
-$text['title-add']['fr-ca'] = "Ajouter un Guide"; //copied from fr-fr
-$text['title-add']['fr-fr'] = "Ajouter un Guide";
+$text['title-add']['fr-ca'] = "Ajouter un guide vocal"; //copied from fr-fr
+$text['title-add']['fr-fr'] = "Ajouter un guide vocal";
$text['title-add']['he-il'] = "הוסף קבצי מדיה";
$text['title-add']['it-it'] = "Inserire Registrazione";
$text['title-add']['nl-nl'] = "Voeg opname toe";
@@ -51,8 +51,8 @@ $text['title-recordings']['de-ch'] = "Aufnahmen"; //copied from de-de
$text['title-recordings']['de-de'] = "Aufnahmen";
$text['title-recordings']['es-cl'] = "Grabaciones";
$text['title-recordings']['es-mx'] = "Grabaciones"; //copied from es-cl
-$text['title-recordings']['fr-ca'] = "Guides Vocaux"; //copied from fr-fr
-$text['title-recordings']['fr-fr'] = "Guides Vocaux";
+$text['title-recordings']['fr-ca'] = "Guides vocaux"; //copied from fr-fr
+$text['title-recordings']['fr-fr'] = "Guides vocaux";
$text['title-recordings']['he-il'] = "קבצי מדיה";
$text['title-recordings']['it-it'] = "Registrazioni";
$text['title-recordings']['nl-nl'] = "Opnamen";
@@ -72,8 +72,8 @@ $text['message-uploaded']['de-ch'] = "Datei hochgeladen"; //copied from de-de
$text['message-uploaded']['de-de'] = "Datei hochgeladen";
$text['message-uploaded']['es-cl'] = "Subida de Archivos";
$text['message-uploaded']['es-mx'] = "Subida de Archivos"; //copied from es-cl
-$text['message-uploaded']['fr-ca'] = "Fichier Téléchargé"; //copied from fr-fr
-$text['message-uploaded']['fr-fr'] = "Fichier Téléchargé";
+$text['message-uploaded']['fr-ca'] = "Fichier téléchargé"; //copied from fr-fr
+$text['message-uploaded']['fr-fr'] = "Fichier téléchargé";
$text['message-uploaded']['he-il'] = "הקובץ הועלה";
$text['message-uploaded']['it-it'] = "File Caricato";
$text['message-uploaded']['nl-nl'] = "Bestand opsturen";
@@ -114,8 +114,8 @@ $text['label-upload']['de-ch'] = "Dateipfad"; //copied from de-de
$text['label-upload']['de-de'] = "Dateipfad";
$text['label-upload']['es-cl'] = "Archivo a subir";
$text['label-upload']['es-mx'] = "Archivo a subir"; //copied from es-cl
-$text['label-upload']['fr-ca'] = "Fichier à déposer"; //copied from fr-fr
-$text['label-upload']['fr-fr'] = "Fichier à déposer";
+$text['label-upload']['fr-ca'] = "Chemin du fichier"; //copied from fr-fr
+$text['label-upload']['fr-fr'] = "Chemin du fichier";
$text['label-upload']['he-il'] = "נתיב הקובץ";
$text['label-upload']['it-it'] = "Percorso File";
$text['label-upload']['nl-nl'] = "Bestandspad";
@@ -240,8 +240,8 @@ $text['label-file_size']['de-ch'] = "Dateigröße"; //copied from de-de
$text['label-file_size']['de-de'] = "Dateigröße";
$text['label-file_size']['es-cl'] = "Tamaño del archivo";
$text['label-file_size']['es-mx'] = "Tamaño del archivo"; //copied from es-cl
-$text['label-file_size']['fr-ca'] = "Taille de Fichier"; //copied from fr-fr
-$text['label-file_size']['fr-fr'] = "Taille de Fichier";
+$text['label-file_size']['fr-ca'] = "Taille du fichier"; //copied from fr-fr
+$text['label-file_size']['fr-fr'] = "Taille du fichier";
$text['label-file_size']['he-il'] = "גודל קובץ";
$text['label-file_size']['it-it'] = "Dimensioni File";
$text['label-file_size']['nl-nl'] = "Bestandsomvang";
@@ -261,8 +261,8 @@ $text['label-size']['de-ch'] = "Dateigröße"; //copied from de-de
$text['label-size']['de-de'] = "Dateigröße";
$text['label-size']['es-cl'] = "Tamaño del archivo";
$text['label-size']['es-mx'] = "Tamaño del archivo"; //copied from es-cl
-$text['label-size']['fr-ca'] = "Taille de Fichier"; //copied from fr-fr
-$text['label-size']['fr-fr'] = "Taille de Fichier";
+$text['label-size']['fr-ca'] = "Taille du fichier"; //copied from fr-fr
+$text['label-size']['fr-fr'] = "Taille du fichier";
$text['label-size']['he-il'] = "גודל";
$text['label-size']['it-it'] = "Dimensioni File";
$text['label-size']['nl-nl'] = "Afmetingen";
@@ -366,8 +366,8 @@ $text['header']['de-ch'] = "Aufnahme hochladen"; //copied from de-de
$text['header']['de-de'] = "Aufnahme hochladen";
$text['header']['es-cl'] = "Subir Grabación";
$text['header']['es-mx'] = "Subir Grabación"; //copied from es-cl
-$text['header']['fr-ca'] = "Télécharger Enregistrement"; //copied from fr-fr
-$text['header']['fr-fr'] = "Télécharger Enregistrement";
+$text['header']['fr-ca'] = "Télécharger l'enregistrement"; //copied from fr-fr
+$text['header']['fr-fr'] = "Télécharger l'enregistrement";
$text['header']['he-il'] = "העלאת הקלטה";
$text['header']['it-it'] = "Caricare Registrazione";
$text['header']['nl-nl'] = "Opsturen opname";
@@ -387,8 +387,8 @@ $text['description-recording']['de-ch'] = "Ein Name für die Aufnahme."; //copie
$text['description-recording']['de-de'] = "Ein Name für die Aufnahme.";
$text['description-recording']['es-cl'] = "Nombre de la grabación.";
$text['description-recording']['es-mx'] = "Nombre de la grabación."; //copied from es-cl
-$text['description-recording']['fr-ca'] = "Nom de l'enregistrement (non parsé)."; //copied from fr-fr
-$text['description-recording']['fr-fr'] = "Nom de l'enregistrement (non parsé).";
+$text['description-recording']['fr-ca'] = "Nom de l'enregistrement (non analysé)."; //copied from fr-fr
+$text['description-recording']['fr-fr'] = "Nom de l'enregistrement (non analysé).";
$text['description-recording']['he-il'] = "שם להקלטה לא מנותח.";
$text['description-recording']['it-it'] = "Un nome per la registrazione (non parsato).";
$text['description-recording']['nl-nl'] = "Een naam voor de opname (niet gecontroleerd).";
diff --git a/app/recordings/app_menu.php b/app/recordings/app_menu.php
index f0d3e45c06..9bcb6ed611 100644
--- a/app/recordings/app_menu.php
+++ b/app/recordings/app_menu.php
@@ -8,8 +8,8 @@
$apps[$x]['menu'][$y]['title']['de-de'] = "Aufnahmen";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Grabaciones";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
- $apps[$x]['menu'][$y]['title']['fr-ca'] = "";
- $apps[$x]['menu'][$y]['title']['fr-fr'] = "Guides Vocaux";
+ $apps[$x]['menu'][$y]['title']['fr-ca'] = "Guides vocaux";
+ $apps[$x]['menu'][$y]['title']['fr-fr'] = "Guides vocaux";
$apps[$x]['menu'][$y]['title']['he-il'] = "";
$apps[$x]['menu'][$y]['title']['it-it'] = "Registrazioni Audio";
$apps[$x]['menu'][$y]['title']['nl-nl'] = "Opnamen";
diff --git a/app/registrations/registrations.php b/app/registrations/registrations.php
index ece59bf31e..97527b380d 100644
--- a/app/registrations/registrations.php
+++ b/app/registrations/registrations.php
@@ -191,13 +191,28 @@
foreach ($registrations as $row) {
$matches = preg_grep('/'.$search.'/i', $row);
if ($matches != false) {
+
+ //prepare the user variable
$user = explode('@', $row['user']);
if ($user[1] == $_SESSION['domains'][$_SESSION['domain_uuid']]['domain_name']) {
- $user = "".escape($row['user'])." ".escape($user[0])."@... ";
+ $user = "".escape($row['user'])." ".escape($user[0])." ";
}
else {
$user = escape($row['user']);
}
+
+ //reformat the status
+ $patterns = array();
+ $patterns[] = '/(\d{4})-(\d{2})-(\d{2})/';
+ $patterns[] = '/(\d{2}):(\d{2}):(\d{2})/';
+ $patterns[] = '/unknown/';
+ $patterns[] = '/exp\(/';
+ $patterns[] = '/\(/';
+ $patterns[] = '/\)/';
+ $patterns[] = '/\s+/';
+ $status = preg_replace($patterns, ' ', $row['status']);
+
+ //show the content
echo "\n";
echo " \n";
echo " \n";
@@ -207,14 +222,14 @@
echo " \n";
echo " \n";
echo " \n";
- echo " ".$user." \n";
- echo " ".escape($row['agent'])." \n";
+ echo " ".$user." \n";
+ echo " ".escape($row['agent'])." \n";
echo " ".escape(explode('"',$row['contact'])[1])." \n";
echo " ".escape($row['lan-ip'])." \n";
echo " ".escape($row['network-ip'])." \n";
echo " ".escape($row['network-port'])." \n";
echo " ".escape($row['host'])." \n";
- echo " ".escape($row['status'])." \n";
+ echo " ".escape($status)." \n";
echo " ".escape($row['ping-time'])." \n";
echo " ".escape($row['sip_profile_name'])." \n";
echo " \n";
diff --git a/app/scripts/resources/scripts/app/feature_event/index.lua b/app/scripts/resources/scripts/app/feature_event/index.lua
index d0d38d3930..a8aa898f60 100644
--- a/app/scripts/resources/scripts/app/feature_event/index.lua
+++ b/app/scripts/resources/scripts/app/feature_event/index.lua
@@ -16,7 +16,7 @@
--
-- The Initial Developer of the Original Code is
-- Mark J Crane
--- Copyright (C) 2013 - 2014
+-- Copyright (C) 2013 - 2021
-- the Initial Developer. All Rights Reserved.
--
-- Contributor(s):
@@ -72,11 +72,11 @@
end
--get the events
- --if (user == nil) then
+ --if (user == nil) then
--serialize the data for the console
--freeswitch.consoleLog("notice","[events] " .. event:serialize("xml") .. "\n");
--freeswitch.consoleLog("notice","[evnts] " .. event:serialize("json") .. "\n");
-
+
--get the event variables
user = event:getHeader("user");
host = event:getHeader("host");
@@ -87,7 +87,7 @@
action_name = event:getHeader("Action-Name");
action_value = event:getHeader("Action-Value")
ring_count = event:getHeader("ringCount")
-
+
--send to the log
--freeswitch.consoleLog("notice","[events] user: " .. user .. "\n");
--freeswitch.consoleLog("notice","[events] host: " .. host .. "\n");
@@ -96,7 +96,7 @@
--if (action_name ~= nil) then freeswitch.consoleLog("notice","[events] action_name: " .. action_name .. "\n"); end
--if (action_value ~= nil) then freeswitch.consoleLog("notice","[events] action_value: " .. action_value .. "\n"); end
--end
-
+
--get the domain uuid from the host
local sql = "select * from v_domains ";
sql = sql .. "where domain_name = :domain_name ";
@@ -112,19 +112,20 @@
if (user ~= nil and domain_name ~= nil) then
do_not_disturb, forward_all_enabled, forward_all_destination, forward_busy_enabled, forward_busy_destination, forward_no_answer_enabled, forward_no_answer_destination, call_timeout = notify.get_db_values(user, domain_name)
end
-
+
--get sip profile
if (user ~= nil and host ~= nil) then
sip_profile = notify.get_profile(user, host);
end
-
+
--DND
-
+
--DND enabled
if (feature_action == "SetDoNotDisturb" and feature_enabled == "true" and sip_profile ~= nil) then
--set a variable
dial_string = "error/user_busy";
do_not_disturb = "true";
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = :do_not_disturb, ";
@@ -152,16 +153,16 @@
dbh:query(sql, params);
end
end
-
+
--send notify to the phone
notify.dnd(user, host, sip_profile, do_not_disturb);
-
end
--DND disabled
if (feature_action == "SetDoNotDisturb" and feature_enabled == "false" and sip_profile ~= nil ) then
--set a variable
do_not_disturb = "false";
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = :do_not_disturb, ";
@@ -177,11 +178,11 @@
--send notify to the phone
notify.dnd(user, host, sip_profile, do_not_disturb);
-
+
end
--Call Forward
-
+
--Call Formward All enabled
if (feature_action == "SetCallForward" and feature_enabled == "true" and action_name == "forward_immediate" and sip_profile ~= nil) then
--set a variable
@@ -189,48 +190,11 @@
forward_all_enabled = "true";
forward_immediate_destination = action_value;
forward_immediate_enabled = "true";
-
- --get the caller_id for outbound call
- local forward_caller_id = ""
- if not empty(forward_caller_id_uuid) then
- local sql = "select destination_number, destination_description,"..
- "destination_caller_id_number, destination_caller_id_name " ..
- "from v_destinations where domain_uuid = :domain_uuid and " ..
- "destination_type = 'inbound' and destination_uuid = :destination_uuid";
- local params = {domain_uuid = domain_uuid; destination_uuid = forward_caller_id_uuid}
- if (debug["sql"]) then
- freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
- end
- local row = dbh:first_row(sql, params)
- if row then
- local caller_id_number = row.destination_caller_id_number
- if empty(caller_id_number) then
- caller_id_number = row.destination_number
- end
-
- local caller_id_name = row.destination_caller_id_name
- if empty(caller_id_name) then
- caller_id_name = row.destination_description
- end
-
- if not empty(caller_id_number) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_number=" .. caller_id_number ..
- ",origination_caller_id_number=" .. caller_id_number
- end
-
- if not empty(caller_id_name) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_name=" .. caller_id_name ..
- ",origination_caller_id_name=" .. caller_id_name
- end
- end
- end
-
+
--set the dial string
if feature_enabled == "true" then
local destination_extension, destination_number_alias
-
+
--used for number_alias to get the correct user
local sql = "select extension, number_alias from v_extensions ";
sql = sql .. "where domain_uuid = :domain_uuid ";
@@ -244,47 +208,46 @@
destination_extension = row.extension;
destination_number_alias = row.number_alias or '';
end);
-
+
if (destination_user ~= nil) then
cmd = "user_exists id ".. destination_user .." "..domain_name;
else
cmd = "user_exists id ".. forward_all_destination .." "..domain_name;
end
local user_exists = trim(api:executeString(cmd));
-
end
-
- --update the extension
- sql = "update v_extensions set ";
- sql = sql .. "do_not_disturb = 'false', ";
- sql = sql .. "forward_all_enabled = 'true', ";
- sql = sql .. "forward_all_destination = :forward_all_destination, ";
- sql = sql .. "dial_string = null ";
- sql = sql .. "where domain_uuid = :domain_uuid ";
- sql = sql .. "and extension_uuid = :extension_uuid ";
- local params = {domain_uuid = domain_uuid, extension_uuid = extension_uuid, forward_all_destination = forward_all_destination};
- if (debug["sql"]) then
- freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
- end
- dbh:query(sql, params);
-
- --update follow me
- if (follow_me_uuid ~= nil) then
- if (string.len(follow_me_uuid) > 0) then
- local sql = "update v_follow_me set ";
- sql = sql .. "follow_me_enabled = 'false' ";
- sql = sql .. "where domain_uuid = :domain_uuid ";
- sql = sql .. "and follow_me_uuid = :follow_me_uuid ";
- local params = {domain_uuid = domain_uuid, follow_me_uuid = follow_me_uuid};
- if (debug["sql"]) then
- freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
- end
- dbh:query(sql, params);
+
+ --update the extension
+ sql = "update v_extensions set ";
+ sql = sql .. "do_not_disturb = 'false', ";
+ sql = sql .. "forward_all_enabled = 'true', ";
+ sql = sql .. "forward_all_destination = :forward_all_destination, ";
+ sql = sql .. "dial_string = null ";
+ sql = sql .. "where domain_uuid = :domain_uuid ";
+ sql = sql .. "and extension_uuid = :extension_uuid ";
+ local params = {domain_uuid = domain_uuid, extension_uuid = extension_uuid, forward_all_destination = forward_all_destination};
+ if (debug["sql"]) then
+ freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
+ end
+ dbh:query(sql, params);
+
+ --update follow me
+ if (follow_me_uuid ~= nil) then
+ if (string.len(follow_me_uuid) > 0) then
+ local sql = "update v_follow_me set ";
+ sql = sql .. "follow_me_enabled = 'false' ";
+ sql = sql .. "where domain_uuid = :domain_uuid ";
+ sql = sql .. "and follow_me_uuid = :follow_me_uuid ";
+ local params = {domain_uuid = domain_uuid, follow_me_uuid = follow_me_uuid};
+ if (debug["sql"]) then
+ freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
end
+ dbh:query(sql, params);
end
-
- --send notify to the phone
- notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
+ end
+
+ --send notify to the phone
+ notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
end
--Call Formward All disable
@@ -294,6 +257,7 @@
forward_all_enabled = "false";
forward_immediate_enabled = "false";
forward_immediate_destination = action_value;
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = 'false', ";
@@ -311,19 +275,20 @@
freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
end
dbh:query(sql, params);
-
- --send notify to the phone
- if (forward_immediate_destination == nil) then
- forward_immediate_destination = " ";
- end
- notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
+
+ --send notify to the phone
+ if (forward_immediate_destination == nil) then
+ forward_immediate_destination = " ";
+ end
+ notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
end
-
+
--Call Formward BUSY enable
if (feature_action == "SetCallForward" and feature_enabled == "true" and action_name == "forward_busy" and sip_profile ~= nil) then
--set a variable
forward_busy_destination = action_value;
forward_busy_enabled = "true";
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = 'false', ";
@@ -336,16 +301,17 @@
freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
end
dbh:query(sql, params);
-
+
--send notify to the phone
notify.forward_busy(user, host, sip_profile, forward_busy_enabled, forward_busy_destination);
end
-
+
--Call Formward BUSY disable
if (feature_action == "SetCallForward" and feature_enabled == "false" and action_name == "forward_busy" and sip_profile ~= nil) then
--set a variable
forward_busy_destination = action_value;
forward_busy_enabled = "false";
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = 'false', ";
@@ -362,7 +328,7 @@
freeswitch.consoleLog("notice", "[feature_event] "..sql.."; params:" .. json.encode(params) .. "\n");
end
dbh:query(sql, params);
-
+
--send notify to the phone
notify.forward_busy(user, host, sip_profile, forward_busy_enabled, forward_busy_destination);
end
@@ -373,6 +339,7 @@
forward_no_answer_destination = action_value;
forward_no_answer_enabled = "true";
call_timeout = ring_count * 6;
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = 'false', ";
@@ -390,12 +357,13 @@
--send notify to the phone
notify.forward_no_answer(user, host, sip_profile, forward_no_answer_enabled, forward_no_answer_destination, ring_count);
end
-
+
--Call Formward NO ANSWER disable
if (feature_action == "SetCallForward" and feature_enabled == "false" and action_name == "forward_no_answer" and sip_profile ~= nil) then
--set a variable
forward_no_answer_destination = action_value;
forward_no_answer_enabled = "false";
+
--update the extension
sql = "update v_extensions set ";
sql = sql .. "do_not_disturb = 'false', ";
@@ -420,19 +388,19 @@
--No feature event (phone boots): Send all values
if (feature_enabled == nil) then
--Do Not Disturb
- --notify.dnd(user, host, sip_profile, do_not_disturb);
+ --notify.dnd(user, host, sip_profile, do_not_disturb);
--Forward all
- forward_immediate_enabled = forward_all_enabled;
- forward_immediate_destination = forward_all_destination;
- --notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
+ forward_immediate_enabled = forward_all_enabled;
+ forward_immediate_destination = forward_all_destination;
+ --notify.forward_immediate(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination);
--Forward busy
- --notify.forward_busy(user, host, sip_profile, forward_busy_enabled, forward_busy_destination);
+ --notify.forward_busy(user, host, sip_profile, forward_busy_enabled, forward_busy_destination);
--Forward No Answer
- ring_count = math.ceil (call_timeout / 6);
- --notify.forward_no_answer(user, host, sip_profile, forward_no_answer_enabled, forward_no_answer_destination, ring_count);
+ ring_count = math.ceil (call_timeout / 6);
+ --notify.forward_no_answer(user, host, sip_profile, forward_no_answer_enabled, forward_no_answer_destination, ring_count);
notify.init(user,
host,
sip_profile,
@@ -445,9 +413,9 @@
ring_count,
do_not_disturb);
end
-
+
-- feature_event_notify.init(user, host, sip_profile, forward_immediate_enabled, forward_immediate_destination, forward_busy_enabled, forward_busy_destination, forward_no_answer_enabled, forward_no_answer_destination, ring_count, do_not_disturb)
-
+
--clear the cache
if (feature_enabled ~= nil) then
cache.del("directory:"..user.."@"..host)
diff --git a/app/scripts/resources/scripts/app/feature_event/resources/functions/feature_event_notify.lua b/app/scripts/resources/scripts/app/feature_event/resources/functions/feature_event_notify.lua
index e5769cada0..e2c145b984 100644
--- a/app/scripts/resources/scripts/app/feature_event/resources/functions/feature_event_notify.lua
+++ b/app/scripts/resources/scripts/app/feature_event/resources/functions/feature_event_notify.lua
@@ -39,7 +39,6 @@ function feature_event_notify.get_db_values(user, domain_name)
forward_no_answer_destination = row.forward_no_answer_destination;
forward_user_not_registered_enabled = row.forward_user_not_registered_enabled;
forward_user_not_registered_destination = row.forward_user_not_registered_destination;
- forward_caller_id_uuid = row.forward_caller_id_uuid;
toll_allow = row.toll_allow
call_timeout = row.call_timeout
--freeswitch.consoleLog("NOTICE", "[feature_event] extension "..row.extension.."\n");
diff --git a/app/scripts/resources/scripts/app/follow_me/index.lua b/app/scripts/resources/scripts/app/follow_me/index.lua
index 883ed790ee..5713d65a4d 100644
--- a/app/scripts/resources/scripts/app/follow_me/index.lua
+++ b/app/scripts/resources/scripts/app/follow_me/index.lua
@@ -28,6 +28,7 @@
if (session:ready()) then
domain_name = session:getVariable("domain_name");
domain_uuid = session:getVariable("domain_uuid");
+ uuid = session:getVariable("uuid");
destination_number = session:getVariable("destination_number");
caller_id_name = session:getVariable("caller_id_name");
caller_id_number = session:getVariable("caller_id_number");
@@ -142,7 +143,7 @@
--get the follow me data
if (follow_me_uuid ~= nil) then
local sql = "select cid_name_prefix, cid_number_prefix, ";
- sql = sql .. "follow_me_enabled, follow_me_caller_id_uuid, follow_me_ignore_busy ";
+ sql = sql .. "follow_me_enabled, follow_me_ignore_busy ";
sql = sql .. "from v_follow_me ";
sql = sql .. "where domain_uuid = :domain_uuid ";
sql = sql .. "and follow_me_uuid = :follow_me_uuid; ";
@@ -154,7 +155,6 @@
caller_id_name_prefix = row["cid_name_prefix"];
caller_id_number_prefix = row["cid_number_prefix"];
follow_me_enabled = row["follow_me_enabled"];
- follow_me_caller_id_uuid = row["follow_me_caller_id_uuid"];
follow_me_ignore_busy = row["follow_me_ignore_busy"];
end);
--dbh:query(sql, params, function(row);
@@ -330,8 +330,23 @@
--get the extension_uuid
cmd = "user_data ".. destination_number .."@"..domain_name.." var extension_uuid";
extension_uuid = trim(api:executeString(cmd));
+
+ local record_session = "";
+ --if session is already recording then skip
+ if (session:getVariable("record_session") ~= "true") then
+ local cmd = "user_data "..destination_number.."@"..domain_name.." var user_record";
+ local user_record = api:executeString(cmd);
+ if (user_record == "all" or user_record == call_direction) then
+ local recordings_dir = session:getVariable("recordings_dir");
+ local record_ext = session:getVariable("record_ext") or "wav";
+ local record_name = uuid.."."..record_ext;
+ local record_path = recordings_dir .. "/" .. domain_name .. "/archive/" .. os.date("%Y/%b/%d");
+ record_session = ",api_on_answer='uuid_record "..uuid.." start ".. record_path .. "/" .. record_name .. "',record_path='".. record_path .."',record_name="..record_name;
+ end
+ end
+
--send to user
- local dial_string_to_user = "[sip_invite_domain="..domain_name..",call_direction="..call_direction..","..group_confirm..","..timeout_name.."="..destination_timeout..","..delay_name.."="..destination_delay..",dialed_extension=" .. row.destination_number .. ",extension_uuid="..extension_uuid .. "]user/" .. row.destination_number .. "@" .. domain_name;
+ local dial_string_to_user = "[sip_invite_domain="..domain_name..",call_direction="..call_direction..","..group_confirm..","..timeout_name.."="..destination_timeout..","..delay_name.."="..destination_delay..",dialed_extension=" .. row.destination_number .. ",extension_uuid="..extension_uuid..record_session.."]user/" .. row.destination_number .. "@" .. domain_name;
dial_string = dial_string_to_user;
elseif (tonumber(destination_number) == nil) then
--sip uri
@@ -348,23 +363,6 @@
toll_allow = '';
end
- --get the destination caller id name and number
- if (follow_me_caller_id_uuid and follow_me_caller_id_uuid ~= '') then
- local sql = "select destination_uuid, destination_number, destination_description, destination_caller_id_name, destination_caller_id_number ";
- sql = sql .. "from v_destinations ";
- sql = sql .. "where domain_uuid = :domain_uuid ";
- sql = sql .. "and destination_uuid = :destination_uuid ";
- sql = sql .. "order by destination_number asc ";
- local params = {domain_uuid = domain_uuid, destination_uuid = follow_me_caller_id_uuid};
- if (debug["sql"]) then
- freeswitch.consoleLog("notice", "SQL:" .. sql .. "; params: " .. json.encode(params) .. "\n");
- end
- status = dbh:query(sql, params, function(field)
- caller_id_name = field["destination_caller_id_name"];
- caller_id_number = field["destination_caller_id_number"];
- end);
- end
-
--check if the user exists
if tonumber(caller_id_number) ~= nil then
cmd = "user_exists id ".. caller_id_number .." "..domain_name;
diff --git a/app/scripts/resources/scripts/app/provision/index.lua b/app/scripts/resources/scripts/app/provision/index.lua
index 3256e785d7..05a2c78e58 100644
--- a/app/scripts/resources/scripts/app/provision/index.lua
+++ b/app/scripts/resources/scripts/app/provision/index.lua
@@ -193,6 +193,7 @@
event:addHeader('content-type', 'application/simple-message-summary');
--check sync
event:addHeader('event-string', 'check-sync;reboot='..reboot);
+ --event:addHeader('event-string', 'resync');
--send the event
event:fire();
end);
@@ -249,6 +250,7 @@
event:addHeader('content-type', 'application/simple-message-summary');
--check sync
event:addHeader('event-string', 'check-sync;reboot='..reboot);
+ --event:addHeader('event-string', 'resync');
--send the event
event:fire();
end
diff --git a/app/scripts/resources/scripts/app/ring_groups/index.lua b/app/scripts/resources/scripts/app/ring_groups/index.lua
index cfef10f1b4..61d72800cb 100644
--- a/app/scripts/resources/scripts/app/ring_groups/index.lua
+++ b/app/scripts/resources/scripts/app/ring_groups/index.lua
@@ -325,6 +325,7 @@
if (debug["sql"]) then
freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
end
+ dbh = Database.new('system');
dbh:query(sql, params, function(row)
subject = row["template_subject"];
body = row["template_body"];
@@ -882,6 +883,9 @@
end
end
+ --release dbh before bridge
+ dbh:release();
+
--session execute
if (session:ready()) then
--set the variables
@@ -1006,6 +1010,7 @@
session:execute(ring_group_timeout_app, ring_group_timeout_data);
end
else
+ dbh = Database.new('system');
local sql = "SELECT ring_group_timeout_app, ring_group_timeout_data FROM v_ring_groups ";
sql = sql .. "where ring_group_uuid = :ring_group_uuid";
local params = {ring_group_uuid = ring_group_uuid};
diff --git a/app/scripts/resources/scripts/app/voicemail/resources/functions/record_message.lua b/app/scripts/resources/scripts/app/voicemail/resources/functions/record_message.lua
index a459da7b8a..93a61d9c68 100644
--- a/app/scripts/resources/scripts/app/voicemail/resources/functions/record_message.lua
+++ b/app/scripts/resources/scripts/app/voicemail/resources/functions/record_message.lua
@@ -587,7 +587,7 @@
--if the recording is below the minimal length then re-record the message
if (message_length > 2) then
- --continue
+ session:setVariable("voicemail_message_seconds", message_length);
else
if (session:ready()) then
--your recording is below the minimal acceptable length, please try again
diff --git a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua
index 01a404abb5..8d747bd7c4 100644
--- a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua
+++ b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/configuration/callcenter.conf.lua
@@ -180,16 +180,21 @@
agent_wrap_up_time = row.agent_wrap_up_time;
agent_reject_delay_time = row.agent_reject_delay_time;
agent_busy_delay_time = row.agent_busy_delay_time;
+ agent_record = row.agent_record;
--get and then set the complete agent_contact with the call_timeout and when necessary confirm
--confirm = "group_confirm_file=custom/press_1_to_accept_this_call.wav,group_confirm_key=1";
--if you change this variable also change app/call_center/call_center_agent_edit.php
confirm = "group_confirm_file=ivr/ivr-accept_reject_voicemail.wav,group_confirm_key=1,group_confirm_read_timeout=2000,leg_timeout="..agent_call_timeout;
+ local record = "";
+ if (agent_record == "true") then
+ record = string.format(",execute_on_pre_bridge='record_session %s/%s/archive/${strftime(%%Y)}/${strftime(%%b)}/${strftime(%%d)}/${uuid}.${record_ext}'", recordings_dir, domain_name)
+ end
if (string.find(agent_contact, '}') == nil) then
--not found
if (string.find(agent_contact, 'sofia/gateway') == nil) then
--add the call_timeout
- agent_contact = "{call_timeout="..agent_call_timeout..",domain_name="..domain_name..",domain_uuid="..domain_uuid..",extension_uuid="..extension_uuid..",sip_h_caller_destination=${caller_destination}}"..agent_contact;
+ agent_contact = "{call_timeout="..agent_call_timeout..",domain_name="..domain_name..",domain_uuid="..domain_uuid..",extension_uuid="..extension_uuid..",sip_h_caller_destination=${caller_destination}"..record.."}"..agent_contact;
else
--add the call_timeout and confirm
agent_contact = "{"..confirm..",call_timeout="..agent_call_timeout..",domain_name="..domain_name..",domain_uuid="..domain_uuid..",sip_h_caller_destination=${caller_destination}}"..agent_contact;
diff --git a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/directory/directory.lua b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/directory/directory.lua
index b02e0fc606..89a5b3d044 100644
--- a/app/scripts/resources/scripts/app/xml_handler/resources/scripts/directory/directory.lua
+++ b/app/scripts/resources/scripts/app/xml_handler/resources/scripts/directory/directory.lua
@@ -312,6 +312,7 @@
password = row.password;
mwi_account = row.mwi_account;
auth_acl = row.auth_acl;
+
--variables
sip_from_user = row.extension;
sip_from_number = (#number_alias > 0) and number_alias or row.extension;
@@ -412,6 +413,25 @@
end);
end
+ --get the extension settings from the database
+ if (extension_uuid) then
+ local sql = "SELECT * FROM v_extension_settings "
+ .. "WHERE extension_uuid = :extension_uuid "
+ .. "and extension_setting_enabled = 'true' ";
+ local params = {extension_uuid=extension_uuid};
+ if (debug["sql"]) then
+ freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
+ end
+ extension_settings = {}
+ dbh:query(sql, params, function(row)
+ table.insert(extension_settings, {
+ extension_setting_type = row.extension_setting_type,
+ extension_setting_name = row.extension_setting_name,
+ extension_setting_value = row.extension_setting_value
+ });
+ end);
+ end
+
--get the voicemail from the database
if (continue) then
vm_enabled = "true";
@@ -510,6 +530,11 @@
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
+ for key,row in pairs(extension_settings) do
+ if (row.extension_setting_type == 'param') then
+ table.insert(xml, [[ ]]);
+ end
+ end
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
@@ -645,6 +670,11 @@
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
+ for key,row in pairs(extension_settings) do
+ if (row.extension_setting_type == 'variable') then
+ table.insert(xml, [[ ]]);
+ end
+ end
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
table.insert(xml, [[ ]]);
diff --git a/app/scripts/resources/scripts/call_forward.lua b/app/scripts/resources/scripts/call_forward.lua
index bc97e5f130..33e69d8bd6 100644
--- a/app/scripts/resources/scripts/call_forward.lua
+++ b/app/scripts/resources/scripts/call_forward.lua
@@ -147,7 +147,6 @@
local last_forward_all_destination = row.forward_all_destination;
local follow_me_uuid = row.follow_me_uuid;
local toll_allow = row.toll_allow or '';
- local forward_caller_id_uuid = row.forward_caller_id_uuid;
--toggle enabled
if enabled == "toggle" then
@@ -190,56 +189,17 @@
session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/ivr/ivr-call_forwarding_has_been_set.wav");
end
---get the caller_id for outbound call
- local forward_caller_id = ""
- if enabled == "true" and not empty(forward_caller_id_uuid) then
- local sql = "select destination_number, destination_description,"..
- "destination_caller_id_number, destination_caller_id_name " ..
- "from v_destinations where domain_uuid = :domain_uuid and " ..
- "destination_type = 'inbound' and destination_uuid = :destination_uuid";
- local params = {domain_uuid = domain_uuid; destination_uuid = forward_caller_id_uuid}
- if (debug["sql"]) then
- log.noticef("SQL: %s; params: %s", sql, json.encode(params));
- end
- local row = dbh:first_row(sql, params)
- if row then
- local caller_id_number = row.destination_caller_id_number
- if empty(caller_id_number) then
- caller_id_number = row.destination_number
- end
-
- local caller_id_name = row.destination_caller_id_name
- if empty(caller_id_name) then
- caller_id_name = row.destination_description
- end
-
- if not empty(caller_id_number) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_number=" .. caller_id_number ..
- ",origination_caller_id_number=" .. caller_id_number
- end
-
- if not empty(caller_id_name) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_name=" .. caller_id_name ..
- ",origination_caller_id_name=" .. caller_id_name
- end
- end
- end
-
--get default caller_id for outbound call
- if enabled == "true" and empty(forward_caller_id_uuid) then
- if settings:get('cdr', 'call_forward_fix', 'boolean') == 'true' then
- if not empty(row.outbound_caller_id_number) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_number=" .. row.outbound_caller_id_number ..
- ",origination_caller_id_number=" .. row.outbound_caller_id_number
- end
- if not empty(row.outbound_caller_id_name) then
- forward_caller_id = forward_caller_id ..
- ",outbound_caller_id_name=" .. row.outbound_caller_id_name ..
- ",origination_caller_id_name=" .. row.outbound_caller_id_name
- end
+ if enabled == "true" and settings:get('cdr', 'call_forward_fix', 'boolean') == 'true' then
+ if not empty(row.outbound_caller_id_number) then
+ forward_caller_id = forward_caller_id ..
+ ",outbound_caller_id_number=" .. row.outbound_caller_id_number ..
+ ",origination_caller_id_number=" .. row.outbound_caller_id_number
+ end
+ if not empty(row.outbound_caller_id_name) then
+ forward_caller_id = forward_caller_id ..
+ ",outbound_caller_id_name=" .. row.outbound_caller_id_name ..
+ ",origination_caller_id_name=" .. row.outbound_caller_id_name
end
end
diff --git a/app/scripts/resources/scripts/resources/functions/send_mail.lua b/app/scripts/resources/scripts/resources/functions/send_mail.lua
index aa5837a4cc..c99ce9be3f 100644
--- a/app/scripts/resources/scripts/resources/functions/send_mail.lua
+++ b/app/scripts/resources/scripts/resources/functions/send_mail.lua
@@ -1,5 +1,5 @@
-local Settings = require "resources.functions.lazy_settings";
local Database = require "resources.functions.database";
+local Settings = require "resources.functions.lazy_settings";
local cache = require"resources.functions.cache";
local log = require "resources.functions.log".send_mail
@@ -28,6 +28,7 @@ if (email_queue_enabled == 'true') then
email_action_after = '';
end
+ local db = dbh or Database.new('system');
local settings = Settings.new(db, domain_name, domain_uuid);
local email_from = settings:get('email', 'smtp_from', 'text');
diff --git a/app/sip_status/app_languages.php b/app/sip_status/app_languages.php
index ad694a46fb..9b939199e0 100644
--- a/app/sip_status/app_languages.php
+++ b/app/sip_status/app_languages.php
@@ -345,8 +345,8 @@ $text['button-flush_registrations']['de-ch'] = "Registrierungen verwerfen"; //co
$text['button-flush_registrations']['de-de'] = "Registrierungen verwerfen";
$text['button-flush_registrations']['es-cl'] = "Inscripciones Flush";
$text['button-flush_registrations']['es-mx'] = "Inscripciones Flush"; //copied from es-cl
-$text['button-flush_registrations']['fr-ca'] = "Nettoyer enregistrements"; //copied from fr-fr
-$text['button-flush_registrations']['fr-fr'] = "Nettoyer enregistrements";
+$text['button-flush_registrations']['fr-ca'] = "Effacer enregistrements"; //copied from fr-fr
+$text['button-flush_registrations']['fr-fr'] = "Effacer enregistrements";
$text['button-flush_registrations']['he-il'] = "";
$text['button-flush_registrations']['it-it'] = "Pulisci Registrazioni";
$text['button-flush_registrations']['nl-nl'] = "Verwijder Registraties";
diff --git a/app/time_conditions/time_condition_edit.php b/app/time_conditions/time_condition_edit.php
index d9936e4ca7..e99afdb52d 100644
--- a/app/time_conditions/time_condition_edit.php
+++ b/app/time_conditions/time_condition_edit.php
@@ -49,8 +49,11 @@
$preset_region = "preset_".$_SESSION['time_conditions']['region']['text'];
if (is_array($_SESSION['time_conditions'][$preset_region])) {
foreach ($_SESSION['time_conditions'][$preset_region] as $json) {
- $available_presets[] = json_decode($json, true);
- $valid_presets[] = array_key_first(end($available_presets));
+ $json_array = json_decode($json, true);
+ if (is_array($json_array)) {
+ $available_presets[] = $json_array;
+ $valid_presets[] = array_key_first(end($available_presets));
+ }
}
}
unset($preset_region);
@@ -1296,4 +1299,4 @@ if ($action == 'update') {
//include the footer
require_once "resources/footer.php";
-?>
\ No newline at end of file
+?>
diff --git a/app/xml_cdr/app_config.php b/app/xml_cdr/app_config.php
index b130e477ef..3cd481481d 100644
--- a/app/xml_cdr/app_config.php
+++ b/app/xml_cdr/app_config.php
@@ -197,6 +197,9 @@
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_lose_race";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
+ $apps[$x]['permissions'][$y]['name'] = "xml_cdr_enterprise_leg";
+ $apps[$x]['permissions'][$y]['groups'][] = "superadmin";
+ $y++;
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_cc_agent_leg";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
@@ -537,6 +540,12 @@
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(1)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "The leg of the call a or b.";
$z++;
+ $apps[$x]['db'][$y]['fields'][$z]['name'] = "originating_leg_uuid";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
+ $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Originating Leg UUID. Used to identify legs of an enterprise ring group - and exclude them ";
+ $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "pdd_ms";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "numeric";
@@ -555,6 +564,12 @@
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Save the last application data.";
$z++;
+ $apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_message";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "boolean";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
+ $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text";
+ $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
+ $z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "missed_call";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "boolean";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
diff --git a/app/xml_cdr/app_languages.php b/app/xml_cdr/app_languages.php
index 366fd4a3f5..be989695a1 100644
--- a/app/xml_cdr/app_languages.php
+++ b/app/xml_cdr/app_languages.php
@@ -1562,8 +1562,8 @@ $text['label-hangup_cause']['de-ch'] = "Hangup Ursache"; //copied from de-de
$text['label-hangup_cause']['de-de'] = "Hangup Ursache";
$text['label-hangup_cause']['es-cl'] = "Causa Colgar";
$text['label-hangup_cause']['es-mx'] = "Causa Colgar"; //copied from es-cl
-$text['label-hangup_cause']['fr-ca'] = "Parce hangup"; //copied from fr-fr
-$text['label-hangup_cause']['fr-fr'] = "Parce hangup";
+$text['label-hangup_cause']['fr-ca'] = "Cause de raccrochage"; //copied from fr-fr
+$text['label-hangup_cause']['fr-fr'] = "Cause de raccrochage";
$text['label-hangup_cause']['he-il'] = "";
$text['label-hangup_cause']['it-it'] = "Causa Chiusura Chiamata";
$text['label-hangup_cause']['nl-nl'] = "";
@@ -1982,8 +1982,8 @@ $text['label-caller_id_number']['de-ch'] = "Anrufer Nummer"; //copied from de-de
$text['label-caller_id_number']['de-de'] = "Anrufer Nummer";
$text['label-caller_id_number']['es-cl'] = "Número CID";
$text['label-caller_id_number']['es-mx'] = "Número CID"; //copied from es-cl
-$text['label-caller_id_number']['fr-ca'] = "Nombre de l'Appelant"; //copied from fr-fr
-$text['label-caller_id_number']['fr-fr'] = "Nombre de l'Appelant";
+$text['label-caller_id_number']['fr-ca'] = "Numéro de l'Appelant"; //copied from fr-fr
+$text['label-caller_id_number']['fr-fr'] = "Numéro de l'Appelant";
$text['label-caller_id_number']['he-il'] = "";
$text['label-caller_id_number']['it-it'] = "Numero CID";
$text['label-caller_id_number']['nl-nl'] = "";
@@ -2402,8 +2402,8 @@ $text['label-order']['de-ch'] = "Order";
$text['label-order']['de-de'] = "Order";
$text['label-order']['es-cl'] = "Order";
$text['label-order']['es-mx'] = "Order";
-$text['label-order']['fr-ca'] = "Order";
-$text['label-order']['fr-fr'] = "Order";
+$text['label-order']['fr-ca'] = "Ordre";
+$text['label-order']['fr-fr'] = "Ordre";
$text['label-order']['he-il'] = "Order";
$text['label-order']['it-it'] = "Order";
$text['label-order']['nl-nl'] = "Order";
@@ -2696,8 +2696,8 @@ $text['description-tta']['de-ch'] = "Zeit zu beantworten"; //copied from de-de
$text['description-tta']['de-de'] = "Zeit zu beantworten";
$text['description-tta']['es-cl'] = "Hora de contestar";
$text['description-tta']['es-mx'] = "Hora de contestar"; //copied from es-cl
-$text['description-tta']['fr-ca'] = "Le temps de répondre"; //copied from fr-fr
-$text['description-tta']['fr-fr'] = "Le temps de répondre";
+$text['description-tta']['fr-ca'] = "Temps de réponse"; //copied from fr-fr
+$text['description-tta']['fr-fr'] = "Temps de réponse";
$text['description-tta']['he-il'] = "הגיע הזמן לענות";
$text['description-tta']['it-it'] = "Tempo per rispondere";
$text['description-tta']['nl-nl'] = "Tijd om te antwoorden";
@@ -2898,4 +2898,4 @@ $text['button-advanced_search']['ru-ru'] = "Расширенный поиск";
$text['button-advanced_search']['sv-se'] = "Avancerad";
$text['button-advanced_search']['uk-ua'] = "";
-?>
\ No newline at end of file
+?>
diff --git a/app/xml_cdr/resources/classes/xml_cdr.php b/app/xml_cdr/resources/classes/xml_cdr.php
index 904f920290..4f488c1002 100644
--- a/app/xml_cdr/resources/classes/xml_cdr.php
+++ b/app/xml_cdr/resources/classes/xml_cdr.php
@@ -145,10 +145,12 @@ if (!class_exists('xml_cdr')) {
$this->fields[] = "record_path";
$this->fields[] = "record_name";
$this->fields[] = "leg";
+ $this->fields[] = "originating_leg_uuid";
$this->fields[] = "pdd_ms";
$this->fields[] = "rtp_audio_in_mos";
$this->fields[] = "last_app";
$this->fields[] = "last_arg";
+ $this->fields[] = "voicemail_message";
$this->fields[] = "cc_side";
$this->fields[] = "cc_member_uuid";
$this->fields[] = "cc_queue_joined_epoch";
@@ -316,7 +318,7 @@ if (!class_exists('xml_cdr')) {
//set missed calls
$missed_call = 'false';
- if (strlen($xml->variables->answer_stamp) == 0) {
+ if ($xml->variables->cc_side != "agent" && strlen($xml->variables->originating_leg_uuid) == 0 && $xml->variables->call_direction != 'outbound' && strlen($xml->variables->answer_stamp) == 0) {
$missed_call = 'true';
}
if ($xml->variables->missed_call == 'true') {
@@ -390,6 +392,14 @@ if (!class_exists('xml_cdr')) {
$this->array[$key]['last_app'] = urldecode($xml->variables->last_app);
$this->array[$key]['last_arg'] = urldecode($xml->variables->last_arg);
+ //voicemail message success
+ if ($xml->variables->voicemail_action == "save" && $xml->variables->voicemail_message_seconds > 0){
+ $this->array[$key]['voicemail_message'] = "true";
+ }
+ else { //if ($xml->variables->voicemail_action == "save") {
+ $this->array[$key]['voicemail_message'] = "false";
+ }
+
//conference
$this->array[$key]['conference_name'] = urldecode($xml->variables->conference_name);
$this->array[$key]['conference_uuid'] = urldecode($xml->variables->conference_uuid);
@@ -404,6 +414,9 @@ if (!class_exists('xml_cdr')) {
//store the call leg
$this->array[$key]['leg'] = $leg;
+ //store the originating leg uuid
+ $this->array[$key]['originating_leg_uuid'] = urldecode($xml->variables->originating_leg_uuid);
+
//store post dial delay, in milliseconds
$this->array[$key]['pdd_ms'] = urldecode($xml->variables->progress_mediamsec) + urldecode($xml->variables->progressmsec);
@@ -430,7 +443,7 @@ if (!class_exists('xml_cdr')) {
if (strlen($domain_name) == 0) {
$presence_id = urldecode($xml->variables->presence_id);
if (strlen($presence_id) > 0) {
- $presence_array = explode($presence_id);
+ $presence_array = explode($presence_id, '%40');
$domain_name = $presence_array[1];
}
}
@@ -918,13 +931,13 @@ if (!class_exists('xml_cdr')) {
if (strlen($this->start_stamp_begin) > 0 || strlen($this->start_stamp_end) > 0) {
unset($this->quick_select);
if (strlen($this->start_stamp_begin) > 0 && strlen($this->start_stamp_end) > 0) {
- $sql_date_range .= " and start_stamp between :start_stamp_begin and :start_stamp_end \n";
+ $sql_date_range = " and start_stamp between :start_stamp_begin and :start_stamp_end \n";
$parameters['start_stamp_begin'] = $this->start_stamp_begin.':00.000';
$parameters['start_stamp_end'] = $this->start_stamp_end.':59.999';
}
else {
if (strlen($this->start_stamp_begin) > 0) {
- $sql_date_range .= "and start_stamp >= :start_stamp_begin \n";
+ $sql_date_range = "and start_stamp >= :start_stamp_begin \n";
$parameters['start_stamp_begin'] = $this->start_stamp_begin.':00.000';
}
if (strlen($this->start_stamp_end) > 0) {
@@ -935,13 +948,13 @@ if (!class_exists('xml_cdr')) {
}
else {
switch ($this->quick_select) {
- case 1: $sql_date_range .= "and start_stamp >= '".date('Y-m-d H:i:s.000', strtotime("-1 week"))."' \n"; break; //last 7 days
- case 2: $sql_date_range .= "and start_stamp >= '".date('Y-m-d H:i:s.000', strtotime("-1 hour"))."' \n"; break; //last hour
- case 3: $sql_date_range .= "and start_stamp >= '".date('Y-m-d')." "."00:00:00.000' \n"; break; //today
- case 4: $sql_date_range .= "and start_stamp between '".date('Y-m-d',strtotime("-1 day"))." "."00:00:00.000' and '".date('Y-m-d',strtotime("-1 day"))." "."23:59:59.999' \n"; break; //yesterday
- case 5: $sql_date_range .= "and start_stamp >= '".date('Y-m-d',strtotime("this week"))." "."00:00:00.000' \n"; break; //this week
- case 6: $sql_date_range .= "and start_stamp >= '".date('Y-m-')."01 "."00:00:00.000' \n"; break; //this month
- case 7: $sql_date_range .= "and start_stamp >= '".date('Y-')."01-01 "."00:00:00.000' \n"; break; //this year
+ case 1: $sql_date_range = "and start_stamp >= '".date('Y-m-d H:i:s.000', strtotime("-1 week"))."' \n"; break; //last 7 days
+ case 2: $sql_date_range = "and start_stamp >= '".date('Y-m-d H:i:s.000', strtotime("-1 hour"))."' \n"; break; //last hour
+ case 3: $sql_date_range = "and start_stamp >= '".date('Y-m-d')." "."00:00:00.000' \n"; break; //today
+ case 4: $sql_date_range = "and start_stamp between '".date('Y-m-d',strtotime("-1 day"))." "."00:00:00.000' and '".date('Y-m-d',strtotime("-1 day"))." "."23:59:59.999' \n"; break; //yesterday
+ case 5: $sql_date_range = "and start_stamp >= '".date('Y-m-d',strtotime("this week"))." "."00:00:00.000' \n"; break; //this week
+ case 6: $sql_date_range = "and start_stamp >= '".date('Y-m-')."01 "."00:00:00.000' \n"; break; //this month
+ case 7: $sql_date_range = "and start_stamp >= '".date('Y-')."01-01 "."00:00:00.000' \n"; break; //this year
}
}
@@ -969,7 +982,10 @@ if (!class_exists('xml_cdr')) {
$sql .= "filter ( \n";
$sql .= " where c.extension_uuid = e.extension_uuid \n";
$sql .= " and missed_call = true \n";
- if (!permission_exists('xml_cdr_lose_race')) {
+ if (!permission_exists('xml_cdr_enterprise_leg')) {
+ $sql .= " and originating_leg_uuid is null \n";
+ }
+ elseif (!permission_exists('xml_cdr_lose_race')) {
$sql .= " and hangup_cause <> 'LOSE_RACE' \n";
}
if ($this->include_internal) {
@@ -1025,7 +1041,10 @@ if (!class_exists('xml_cdr')) {
$sql .= "count(*) \n";
$sql .= "filter ( \n";
$sql .= " where c.extension_uuid = e.extension_uuid \n";
- if (!permission_exists('xml_cdr_lose_race')) {
+ if (!permission_exists('xml_cdr_enterprise_leg')) {
+ $sql .= " and originating_leg_uuid is null \n";
+ }
+ elseif (!permission_exists('xml_cdr_lose_race')) {
$sql .= " and hangup_cause <> 'LOSE_RACE' \n";
}
if ($this->include_internal) {
@@ -1076,6 +1095,7 @@ if (!class_exists('xml_cdr')) {
$sql .= " direction, \n";
$sql .= " start_stamp, \n";
$sql .= " hangup_cause, \n";
+ $sql .= " originating_leg_uuid, \n";
$sql .= " billsec \n";
$sql .= " from v_xml_cdr \n";
if (!($_GET['show'] === 'all' && permission_exists('xml_cdr_all'))) {
@@ -1210,7 +1230,7 @@ if (!class_exists('xml_cdr')) {
// If the range starts with an '-' we start from the beginning
// If not, we forward the file pointer
// And make sure to get the end byte if spesified
- if ($range0 == '-') {
+ if ($range == '-') {
// The n-number of the last bytes is requested
$c_start = $size - substr($range, 1);
}
diff --git a/app/xml_cdr/v_xml_cdr_import.php b/app/xml_cdr/v_xml_cdr_import.php
index d8a3198aef..6230f8c030 100644
--- a/app/xml_cdr/v_xml_cdr_import.php
+++ b/app/xml_cdr/v_xml_cdr_import.php
@@ -198,6 +198,14 @@
$database->fields['last_app'] = urldecode($xml->variables->last_app);
$database->fields['last_arg'] = urldecode($xml->variables->last_arg);
+ //voicemail message success
+ if ($xml->variables->voicemail_action == "save" && $xml->variables->voicemail_message_seconds > 0){
+ $database->fields['voicemail_message'] = "true";
+ }
+ elseif ($xml->variables->voicemail_action == "save") {
+ $database->fields['voicemail_message'] = "false";
+ }
+
//conference
$database->fields['conference_name'] = urldecode($xml->variables->conference_name);
$database->fields['conference_uuid'] = urldecode($xml->variables->conference_uuid);
@@ -211,7 +219,7 @@
//set missed calls
$database->fields['missed_call'] = 'false';
- if (strlen($xml->variables->answer_stamp) == 0) {
+ if ($xml->variables->cc_side != "agent" && strlen($xml->variables->originating_leg_uuid) == 0 && $xml->variables->call_direction != 'outbound' && strlen($xml->variables->answer_stamp) == 0) {
$database->fields['missed_call'] = 'true';
}
if ($xml->variables->missed_call == 'true') {
@@ -292,7 +300,7 @@
if (strlen($domain_name) == 0) {
$presence_id = urldecode($xml->variables->presence_id);
if (strlen($presence_id) > 0) {
- $presence_array = explode($presence_id);
+ $presence_array = explode($presence_id, '%40');
$domain_name = $presence_array[1];
}
}
diff --git a/app/xml_cdr/xml_cdr.php b/app/xml_cdr/xml_cdr.php
index 5cd4e71c94..05d889091b 100644
--- a/app/xml_cdr/xml_cdr.php
+++ b/app/xml_cdr/xml_cdr.php
@@ -796,7 +796,7 @@
}
//tta (time to answer)
if (permission_exists('xml_cdr_tta')) {
- $content .= " ".(($row['tta'] > 0) ? $row['tta']."s" : " ")." \n";
+ $content .= " ".(($row['tta'] >= 0) ? $row['tta']."s" : " ")." \n";
}
//duration
if (permission_exists('xml_cdr_duration')) {
@@ -823,14 +823,6 @@
}
$content .= " \n";
-
- if (!permission_exists('xml_cdr_lose_race') && $row['hangup_cause'] == 'LOSE_RACE') {
- $content = '';
- }
- //show agent originated legs only to those with the permission
- if (!permission_exists('xml_cdr_cc_agent_leg') && $row['cc_side'] == "agent") {
- $content = '';
- }
//show the leg b only to those with the permission
if ($row['leg'] == 'a') {
echo $content;
diff --git a/app/xml_cdr/xml_cdr_details.php b/app/xml_cdr/xml_cdr_details.php
index dee13f107e..3e76933f16 100644
--- a/app/xml_cdr/xml_cdr_details.php
+++ b/app/xml_cdr/xml_cdr_details.php
@@ -387,9 +387,17 @@
//foreach($array["variables"] as $key => $value) {
if (is_array($array["app_log"]["application"])) {
- foreach ($array["app_log"]["application"] as $row) {
- $app_name = $row["@attributes"]["app_name"];
- $app_data = urldecode($row["@attributes"]["app_data"]);
+ foreach ($array["app_log"]["application"] as $key=>$row) {
+ //single app
+ if ($key === "@attributes") {
+ $app_name = $row["app_name"];
+ $app_data = urldecode($row["app_data"]);
+ }
+ //multiple apps
+ else {
+ $app_name = $row["@attributes"]["app_name"];
+ $app_data = urldecode($row["@attributes"]["app_data"]);
+ }
echo "\n";
echo " ".escape($app_name)." \n";
echo " ".escape(wordwrap($app_data,75,"\n", true))." \n";
diff --git a/app/xml_cdr/xml_cdr_export.php b/app/xml_cdr/xml_cdr_export.php
index b39ce53d03..96a12d26f7 100644
--- a/app/xml_cdr/xml_cdr_export.php
+++ b/app/xml_cdr/xml_cdr_export.php
@@ -192,7 +192,7 @@
$data_body[$p] .= ''.format_phone($fields['destination_number']).' ';
$data_body[$p] .= ''.$fields['start_stamp'].' ';
$total['tta'] += ($fields['tta'] > 0) ? $fields['tta'] : 0;
- $data_body[$p] .= ''.(($fields['tta'] > 0) ? $fields['tta'].'s' : null).' ';
+ $data_body[$p] .= ''.(($fields['tta'] >= 0) ? $fields['tta'].'s' : null).' ';
$seconds = ($fields['hangup_cause'] == "ORIGINATOR_CANCEL") ? $fields['duration'] : round(($fields['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
$total['duration'] += $seconds;
$data_body[$p] .= ''.gmdate("G:i:s", $seconds).' ';
diff --git a/app/xml_cdr/xml_cdr_inc.php b/app/xml_cdr/xml_cdr_inc.php
index df1653fbb1..d7255167d8 100644
--- a/app/xml_cdr/xml_cdr_inc.php
+++ b/app/xml_cdr/xml_cdr_inc.php
@@ -417,6 +417,13 @@
$sql .= "and hangup_cause like :hangup_cause ";
$parameters['hangup_cause'] = '%'.$hangup_cause.'%';
}
+ elseif (!permission_exists('xml_cdr_lose_race') && !permission_exists('xml_cdr_enterprise_leg')) {
+ $sql .= "and hangup_cause != 'LOSE_RACE' ";
+ }
+ //exclude enterprise ring group legs
+ if (!permission_exists('xml_cdr_enterprise_leg')) {
+ $sql .= "and originating_leg_uuid IS NULL ";
+ }
if (strlen($call_result) > 0) {
switch ($call_result) {
case 'answered':
@@ -430,10 +437,20 @@
break;
case 'cancelled':
if ($direction == 'inbound' || $direction == 'local' || $call_result == 'missed') {
- $sql = "and (answer_stamp is null and bridge_uuid is null and sip_hangup_disposition <> 'send_refuse') ";
+ $sql .= "
+ and ((
+ answer_stamp is null
+ and bridge_uuid is null
+ and sip_hangup_disposition <> 'send_refuse'
+ )
+ or (
+ answer_stamp is not null
+ and bridge_uuid is null
+ and voicemail_message = false
+ ))";
}
else if ($direction == 'outbound') {
- $sql = "and (answer_stamp is null and bridge_uuid is not null) ";
+ $sql .= "and (answer_stamp is null and bridge_uuid is not null) ";
}
else {
$sql .= "
@@ -447,10 +464,17 @@
direction = 'outbound'
and answer_stamp is null
and bridge_uuid is not null
+ )
+ or (
+ (direction = 'inbound' or direction = 'local')
+ and answer_stamp is not null
+ and bridge_uuid is null
+ and voicemail_message = false
))";
}
break;
- default: //failed
+ default:
+ $sql .= "and (answer_stamp is null and bridge_uuid is null and duration = 0) ";
//$sql .= "and (answer_stamp is null and bridge_uuid is null and billsec = 0 and sip_hangup_disposition = 'send_refuse') ";
}
}
@@ -507,6 +531,10 @@
$sql .= "and (c.record_path is null or c.record_name is null) ";
}
}
+ //show agent originated legs only to those with the permission
+ if (!permission_exists('xml_cdr_cc_agent_leg')) {
+ $sql .= "and (cc_side is null or cc_side != 'agent') ";
+ }
//end where
if (strlen($order_by) > 0) {
$sql .= order_by($order_by, $order);
diff --git a/app/xml_cdr/xml_cdr_statistics.php b/app/xml_cdr/xml_cdr_statistics.php
index f05ebdccbb..554fc73048 100644
--- a/app/xml_cdr/xml_cdr_statistics.php
+++ b/app/xml_cdr/xml_cdr_statistics.php
@@ -314,7 +314,7 @@
echo " ".escape($row['volume'])." \n";
echo " ".(round(escape($row['minutes']),2))." \n";
echo " ".(round(escape($row['avg_min']),2))." / ".(round(escape($row['cpm_ans']),2))." \n";
- echo " ".escape($row['missed'])." \n";
+ echo " ".escape($row['missed'])." \n";
echo " ".(round(escape($row['asr']),2))." \n";
echo " ".(round(escape($row['aloc']),2))." \n";
echo " \n";
diff --git a/app/xml_cdr/xml_cdr_statistics_inc.php b/app/xml_cdr/xml_cdr_statistics_inc.php
index 6d48f28174..e695b8e67c 100644
--- a/app/xml_cdr/xml_cdr_statistics_inc.php
+++ b/app/xml_cdr/xml_cdr_statistics_inc.php
@@ -153,7 +153,7 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if ($missed == true) {
- $sql_where_ands[] = "billsec = '0'";
+ $sql_where_ands[] = "missed_call = true ";
}
if (strlen($start_epoch) > 0 && strlen($stop_epoch) > 0) {
$sql_where_ands[] = "start_epoch between :start_epoch and :stop_epoch";
@@ -280,6 +280,15 @@
$sql_where_ands[] = "leg = :leg";
$parameters['leg'] = $leg;
}
+ //Exclude enterprise ring group legs
+ if (!permission_exists('xml_cdr_enterprise_leg')) {
+ $sql_where_ands[] .= "originating_leg_uuid IS NULL";
+ }
+ //If you can't see lose_race, don't run stats on it
+ elseif (!permission_exists('xml_cdr_lose_race')) {
+ $sql_where_ands[] = "hangup_cause != 'LOSE_RACE'";
+ }
+
//if not admin or superadmin, only show own calls
if (!permission_exists('xml_cdr_domain')) {
@@ -345,7 +354,7 @@
//get the call volume between a start end end time in seconds
function get_call_volume_between($start, $end, $where, $parameters) {
- $sql = "select count(*) as count, sum(billsec) as seconds from v_xml_cdr ";
+ $sql = "select count(*) as count, sum(billsec) as seconds, sum(answer_stamp - start_stamp) as tta from v_xml_cdr ";
$sql .= $where." ";
$sql .= "start_epoch between :start and :end ";
$parameters['start'] = $start;
@@ -356,6 +365,7 @@
return array(
'volume' => $row['count'],
'seconds' => $row['seconds'],
+ 'tta' => $row['tta'],
);
}
return false;
@@ -375,14 +385,13 @@
$stats[$i]['volume'] = $stat_range ? $stat_range['volume'] : 0;
$stats[$i]['seconds'] = $stat_range ? $stat_range['seconds'] : 0;
$stats[$i]['minutes'] = $stats[$i]['seconds'] / 60;
- $stats[$i]['avg_sec'] = $stats[$i]['volume'] == 0 ? 0 : $stats[$i]['seconds'] / $stats[$i]['volume'];
if ($missed) {
//we select only missed calls at first place - no reasons to select it again
$stats[$i]['missed'] = $stats[$i]['volume'];
}
else {
- $where = $sql_where."billsec = '0' and ";
+ $where = $sql_where."missed_call = true and ";
$stat_range = get_call_volume_between($stats[$i]['start_epoch'], $stats[$i]['stop_epoch'], $where, $parameters);
$stats[$i]['missed'] = $stat_range ? $stat_range['volume'] : 0;
}
@@ -399,6 +408,9 @@
//answer / seizure ratio
$stats[$i]['asr'] = $stats[$i]['volume'] == 0 ? 0 : ($success_volume / $stats[$i]['volume'] * 100);
+ //average time to answer
+ $stats[$i]['avg_tta'] = $stats[$i]['volume'] == 0 ? 0 : round($stat_range['tta'] / $success_volume);
+
//average length of call
$stats[$i]['aloc'] = $success_volume == 0 ? 0 : $stats[$i]['minutes'] / $success_volume;
}
diff --git a/app/yealink/app_config.php b/app/yealink/app_config.php
index a67a0626a5..983e0478c7 100644
--- a/app/yealink/app_config.php
+++ b/app/yealink/app_config.php
@@ -263,6 +263,14 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the CP860 firmware ROM";
$y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "2d167eaf-dbfb-423d-a073-feb66e1434bd";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_firmware_cp920";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "cp920-78.85.0.5.rom";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the CP920 firmware ROM";
+ $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7a769f2f-2833-4b90-9789-ff96a4723773";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_firmware_cp960";
@@ -559,14 +567,6 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "http://localhost/all,delete all the customized ring tones";
$y++;
- $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "7af991ec-ddb9-4942-a05d-d1acc529fef5";
- $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
- $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_ringtone_url";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
- $apps[$x]['default_settings'][$y]['default_setting_value'] = "custom.wav";
- $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
- $apps[$x]['default_settings'][$y]['default_setting_description'] = "Before using this parameter, you should store the desired ring tone (custom.wav) to the provisioning server";
- $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "95862d61-18ac-41b5-ac69-467e0ef3afd7";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_remote_phonebook_1_name";
@@ -1206,5 +1206,44 @@
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "PC port VLAN enable Set 1 = ON 0 = OFF.";
-
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "fe946865-b2a4-47a0-92f7-9b2b879be8ef";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_lock_enable";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Configure the keypad lock type; 0-Disabled (default), 1-Enable. If needing remove pin lock, set value=0 and enabled=true, reprovision. Then you can set enabled=false and reprovision again for full removal and disablement.";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c9020c9e-ffb8-4755-9bf8-e3c9344cd129";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_lock_key_type";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Configure the keypad lock type;0-All Keys(default), 1-Function Key, 2-Menu Key";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d3ebfed3-13a8-44b6-bed9-6eaeb6ba7bf6";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_lock_pin";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "123";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Configure the unlock password for the phone. The default value is 123.";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "b4e7451c-ff42-4269-8404-5434a6303013";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_emergency_number";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "911,110,112";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Configure the emergency number, each separated by a comma. The default value is 911,110,112.";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "76efe175-8701-4222-b022-552c43e647cf";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "yealink_lock_timeout";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Configures the interval (in seconds) to automatically lock the IP phone. It ranges from 0 to 3600, the default value is 0.";
?>
diff --git a/core/authentication/resources/classes/authentication.php b/core/authentication/resources/classes/authentication.php
index a6b50bad9f..6b7fd340d5 100644
--- a/core/authentication/resources/classes/authentication.php
+++ b/core/authentication/resources/classes/authentication.php
@@ -102,7 +102,7 @@ class authentication {
}
//add user logs
- if (file_exists($_SERVER["PROJECT_ROOT"]."/app/user_logs/app_config.php")) {
+ if (file_exists($_SERVER["PROJECT_ROOT"]."/core/user_logs/app_config.php")) {
user_logs::add($result);
}
diff --git a/core/default_settings/default_setting_edit.php b/core/default_settings/default_setting_edit.php
index 23e96862a0..9dde93d365 100644
--- a/core/default_settings/default_setting_edit.php
+++ b/core/default_settings/default_setting_edit.php
@@ -765,8 +765,8 @@
echo " ".$text['label-description']."\n";
echo " \n";
echo "\n";
- echo " \n";
- echo " \n";
+ echo " \n";
+ echo " \n";
echo $text['description-description']."\n";
echo " \n";
echo " \n";
diff --git a/core/domain_settings/domain_setting_edit.php b/core/domain_settings/domain_setting_edit.php
index 55f6dd8afc..5fd1e5dbc3 100644
--- a/core/domain_settings/domain_setting_edit.php
+++ b/core/domain_settings/domain_setting_edit.php
@@ -17,7 +17,7 @@
The Initial Developer of the Original Code is
Mark J Crane
- Portions created by the Initial Developer are Copyright (C) 2008-2020
+ Portions created by the Initial Developer are Copyright (C) 2008-2021
the Initial Developer. All Rights Reserved.
Contributor(s):
@@ -820,7 +820,7 @@ if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
echo " ".$text['label-description']."\n";
echo "\n";
echo "\n";
- echo " \n";
+ echo " \n";
echo " \n";
echo $text['description-description']."\n";
echo " \n";
diff --git a/core/domains/domains.php b/core/domains/domains.php
index 1f1ca5a62f..742cc3bbc5 100644
--- a/core/domains/domains.php
+++ b/core/domains/domains.php
@@ -233,6 +233,7 @@
echo th_order_by('domain_name', $text['label-domain'], $order_by, $order);
}
echo th_order_by('domain_name', $text['label-domain_name'], $order_by, $order);
+ echo "".$text['label-tools']." ";
echo th_order_by('domain_enabled', $text['label-domain_enabled'], $order_by, $order, null, "class='center'");
echo " ".$text['label-domain_description']." \n";
if (permission_exists('domain_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
@@ -264,15 +265,19 @@
echo " ".escape($row['domain_name']);
}
echo " \n";
+ echo " \n";
+ echo " ".$text['label-manage']." ";
+ echo " \n";
if (permission_exists('domain_edit')) {
echo " \n";
echo button::create(['type'=>'submit','class'=>'link','label'=>$text['label-'.$row['domain_enabled']],'title'=>$text['button-toggle'],'onclick'=>"list_self_check('checkbox_".$x."'); list_action_set('toggle'); list_form_submit('form_list')"]);
+ echo " \n";
}
else {
echo " \n";
echo $text['label-'.$row['domain_enabled']];
+ echo " \n";
}
- echo " \n";
echo " ".escape($row['domain_description'])." \n";
if (permission_exists('domain_edit') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
echo " \n";
diff --git a/core/software/resources/classes/software.php b/core/software/resources/classes/software.php
index 1b7e4cdcd0..2760d50b2d 100644
--- a/core/software/resources/classes/software.php
+++ b/core/software/resources/classes/software.php
@@ -12,7 +12,7 @@ if (!class_exists('software')) {
* version
*/
public static function version() {
- return '4.5.20';
+ return '4.5.22';
}
/**
diff --git a/core/user_logs/app_config.php b/core/user_logs/app_config.php
new file mode 100644
index 0000000000..a303770571
--- /dev/null
+++ b/core/user_logs/app_config.php
@@ -0,0 +1,84 @@
+
diff --git a/core/user_logs/app_defaults.php b/core/user_logs/app_defaults.php
new file mode 100644
index 0000000000..adadacce42
--- /dev/null
+++ b/core/user_logs/app_defaults.php
@@ -0,0 +1,7 @@
+
diff --git a/core/user_logs/app_languages.php b/core/user_logs/app_languages.php
new file mode 100644
index 0000000000..75c752b8a4
--- /dev/null
+++ b/core/user_logs/app_languages.php
@@ -0,0 +1,422 @@
+
\ No newline at end of file
diff --git a/core/user_logs/app_menu.php b/core/user_logs/app_menu.php
new file mode 100644
index 0000000000..77d20630af
--- /dev/null
+++ b/core/user_logs/app_menu.php
@@ -0,0 +1,19 @@
+
diff --git a/core/user_logs/resources/classes/user_logs.php b/core/user_logs/resources/classes/user_logs.php
new file mode 100644
index 0000000000..b654a06416
--- /dev/null
+++ b/core/user_logs/resources/classes/user_logs.php
@@ -0,0 +1,161 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2019-2021
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane
+*/
+
+/**
+ * user_logs class
+ *
+ * @method null delete
+ * @method null toggle
+ * @method null copy
+ */
+if (!class_exists('user_logs')) {
+ class user_logs {
+
+ /**
+ * declare the variables
+ */
+ private $app_name;
+ private $app_uuid;
+ private $name;
+ private $table;
+ private $toggle_field;
+ private $toggle_values;
+ private $location;
+
+ /**
+ * called when the object is created
+ */
+ public function __construct() {
+ //assign the variables
+ $this->app_name = 'user_logs';
+ $this->app_uuid = '582a13cf-7d75-4ea3-b2d9-60914352d76e';
+ $this->name = 'user_log';
+ $this->table = 'user_logs';
+ $this->toggle_field = '';
+ $this->toggle_values = ['true','false'];
+ $this->location = 'user_logs.php';
+ }
+
+ /**
+ * called when there are no references to a particular object
+ * unset the variables used in the class
+ */
+ public function __destruct() {
+ foreach ($this as $key => $value) {
+ unset($this->$key);
+ }
+ }
+
+ /**
+ * add user_logs
+ */
+ public static function add($result) {
+ //prepare the array
+ $array['user_logs'][0]["timestamp"] = 'now()';
+ $array['user_logs'][0]["domain_uuid"] = $result['domain_uuid'];
+ $array['user_logs'][0]["user_uuid"] = $result['user_uuid'];
+ $array['user_logs'][0]["username"] = $result['username'];
+ $array['user_logs'][0]["type"] = 'login';
+ $array['user_logs'][0]["remote_address"] = $_SERVER['REMOTE_ADDR'];
+ $array['user_logs'][0]["user_agent"] = $_SERVER['HTTP_USER_AGENT'];
+ $array['user_logs'][0]["type"] = 'login';
+ if ($result["authorized"] == "true") {
+ $array['user_logs'][0]["result"] = 'success';
+ }
+ else {
+ $array['user_logs'][0]["result"] = 'failure';
+ }
+
+ //add the dialplan permission
+ $p = new permissions;
+ $p->add("user_log_add", 'temp');
+
+ //save to the data
+ $database = new database;
+ $database->app_name = 'authentication';
+ $database->app_uuid = 'a8a12918-69a4-4ece-a1ae-3932be0e41f1';
+ $database->uuid($user_log_uuid);
+ $database->save($array);
+ $message = $database->message;
+
+ //remove the temporary permission
+ $p->delete("user_log_add", 'temp');
+ }
+
+ /**
+ * delete rows from the database
+ */
+ public function delete($records) {
+ if (permission_exists($this->name.'_delete')) {
+
+ //add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: '.$this->location);
+ exit;
+ }
+
+ //delete multiple records
+ if (is_array($records) && @sizeof($records) != 0) {
+ //build the delete array
+ $x = 0;
+ foreach ($records as $record) {
+ //add to the array
+ if ($record['checked'] == 'true' && is_uuid($record['uuid'])) {
+ $array[$this->table][$x][$this->name.'_uuid'] = $record['uuid'];
+ $array[$this->table][$x]['domain_uuid'] = $_SESSION['domain_uuid'];
+ }
+
+ //increment the id
+ $x++;
+ }
+
+ //delete the checked rows
+ if (is_array($array) && @sizeof($array) != 0) {
+ //execute delete
+ $database = new database;
+ $database->app_name = $this->app_name;
+ $database->app_uuid = $this->app_uuid;
+ $database->delete($array);
+ unset($array);
+
+ //set message
+ message::add($text['message-delete']);
+ }
+ unset($records);
+ }
+ }
+ }
+
+ }
+}
+
+?>
diff --git a/core/user_logs/root.php b/core/user_logs/root.php
new file mode 100644
index 0000000000..6fdf32f37b
--- /dev/null
+++ b/core/user_logs/root.php
@@ -0,0 +1,90 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2008-2012
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+ Mark J Crane
+*/
+
+// make sure the PATH_SEPARATOR is defined
+ umask(2);
+ if (!defined("PATH_SEPARATOR")) {
+ if (strpos($_ENV["OS"], "Win") !== false) {
+ define("PATH_SEPARATOR", ";");
+ } else {
+ define("PATH_SEPARATOR", ":");
+ }
+ }
+
+ if (!isset($output_format)) $output_format = (PHP_SAPI == 'cli') ? 'text' : 'html';
+
+ // make sure the document_root is set
+ $_SERVER["SCRIPT_FILENAME"] = str_replace("\\", '/', $_SERVER["SCRIPT_FILENAME"]);
+ if(PHP_SAPI == 'cli'){
+ chdir(pathinfo(realpath($_SERVER["PHP_SELF"]), PATHINFO_DIRNAME));
+ $script_full_path = str_replace("\\", '/', getcwd() . '/' . $_SERVER["SCRIPT_FILENAME"]);
+ $dirs = explode('/', pathinfo($script_full_path, PATHINFO_DIRNAME));
+ if (file_exists('/project_root.php')) {
+ $path = '/';
+ } else {
+ $i = 1;
+ $path = '';
+ while ($i < count($dirs)) {
+ $path .= '/' . $dirs[$i];
+ if (file_exists($path. '/project_root.php')) {
+ break;
+ }
+ $i++;
+ }
+ }
+ $_SERVER["DOCUMENT_ROOT"] = $path;
+ }else{
+ $_SERVER["DOCUMENT_ROOT"] = str_replace($_SERVER["PHP_SELF"], "", $_SERVER["SCRIPT_FILENAME"]);
+ }
+ $_SERVER["DOCUMENT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"]);
+// try to detect if a project path is being used
+ if (!defined('PROJECT_PATH')) {
+ if (is_dir($_SERVER["DOCUMENT_ROOT"]. '/fusionpbx')) {
+ define('PROJECT_PATH', '/fusionpbx');
+ } elseif (file_exists($_SERVER["DOCUMENT_ROOT"]. '/project_root.php')) {
+ define('PROJECT_PATH', '');
+ } else {
+ $dirs = explode('/', str_replace('\\', '/', pathinfo($_SERVER["PHP_SELF"], PATHINFO_DIRNAME)));
+ $i = 1;
+ $path = $_SERVER["DOCUMENT_ROOT"];
+ while ($i < count($dirs)) {
+ $path .= '/' . $dirs[$i];
+ if (file_exists($path. '/project_root.php')) {
+ break;
+ }
+ $i++;
+ }
+ if(!file_exists($path. '/project_root.php')){
+ die("Failed to locate the Project Root by searching for project_root.php please contact support for assistance");
+ }
+ $project_path = str_replace($_SERVER["DOCUMENT_ROOT"], "", $path);
+ define('PROJECT_PATH', $project_path);
+ }
+ $_SERVER["PROJECT_ROOT"] = realpath($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH);
+ set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER["PROJECT_ROOT"]);
+ }
+
+?>
\ No newline at end of file
diff --git a/core/user_logs/user_log_edit.php b/core/user_logs/user_log_edit.php
new file mode 100644
index 0000000000..10c368ab30
--- /dev/null
+++ b/core/user_logs/user_log_edit.php
@@ -0,0 +1,213 @@
+get();
+
+//get the uuid
+ $user_log_uuid = $_GET['id'];
+
+//pre-populate the form
+ if (is_array($_GET) && $_POST["persistformvar"] != "true") {
+ $sql = "select * from v_user_logs ";
+ $sql .= "where user_log_uuid = :user_log_uuid ";
+ //$sql .= "and domain_uuid = :domain_uuid ";
+ //$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $parameters['user_log_uuid'] = $user_log_uuid;
+ $database = new database;
+ $row = $database->select($sql, $parameters, 'row');
+ if (is_array($row) && @sizeof($row) != 0) {
+ $domain_uuid = $row["domain_uuid"];
+ $timestamp = $row["timestamp"];
+ $user_uuid = $row["user_uuid"];
+ $username = $row["username"];
+ $type = $row["type"];
+ $result = $row["result"];
+ $remote_address = $row["remote_address"];
+ $user_agent = $row["user_agent"];
+ }
+ unset($sql, $parameters, $row);
+ }
+
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
+
+//show the header
+ $document['title'] = $text['title-user_log'];
+ require_once "resources/header.php";
+
+//get the users
+ $sql = "SELECT user_uuid, username FROM v_users ";
+ $sql .= "WHERE domain_uuid = :domain_uuid ";
+ $sql .= "ORDER by username asc ";
+ $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+ $database = new database;
+ $users = $database->execute($sql, $parameters, 'all');
+ unset ($sql, $parameters);
+
+//show the content
+ echo "";
+
+//include the footer
+ require_once "resources/footer.php";
+
+?>
\ No newline at end of file
diff --git a/core/user_logs/user_logs.php b/core/user_logs/user_logs.php
new file mode 100644
index 0000000000..a924d64d02
--- /dev/null
+++ b/core/user_logs/user_logs.php
@@ -0,0 +1,263 @@
+
+ Portions created by the Initial Developer are Copyright (C) 2018 - 2020
+ the Initial Developer. All Rights Reserved.
+*/
+
+//includes
+ require_once "root.php";
+ require_once "resources/require.php";
+ require_once "resources/check_auth.php";
+ require_once "resources/paging.php";
+
+//check permissions
+ if (permission_exists('user_log_view')) {
+ //access granted
+ }
+ else {
+ echo "access denied";
+ exit;
+ }
+
+//add multi-lingual support
+ $language = new text;
+ $text = $language->get();
+
+//get the http post data
+ if (is_array($_POST['user_logs'])) {
+ $action = $_POST['action'];
+ $search = $_POST['search'];
+ $user_logs = $_POST['user_logs'];
+ }
+
+//process the http post data by action
+ if ($action != '' && is_array($user_logs) && @sizeof($user_logs) != 0) {
+
+ //validate the token
+ $token = new token;
+ if (!$token->validate($_SERVER['PHP_SELF'])) {
+ message::add($text['message-invalid_token'],'negative');
+ header('Location: user_logs.php');
+ exit;
+ }
+
+ //prepare the array
+ foreach($user_logs as $row) {
+ $array['user_logs'][$x]['checked'] = $row['checked'];
+ $array['user_logs'][$x]['user_log_uuid'] = $row['user_log_uuid'];
+ $x++;
+ }
+
+ //prepare the database object
+ $database = new database;
+ $database->app_name = 'user_logs';
+ $database->app_uuid = '582a13cf-7d75-4ea3-b2d9-60914352d76e';
+
+ //send the array to the database class
+ if ($action == 'delete') {
+ if (permission_exists('user_log_delete')) {
+ $database->delete($array);
+ }
+ }
+
+ //redirect the user
+ header('Location: user_logs.php'.($search != '' ? '?search='.urlencode($search) : null));
+ exit;
+ }
+
+//get order and order by
+ $order_by = $_GET["order_by"];
+ $order = $_GET["order"];
+
+//add the search
+ if (isset($_GET["search"])) {
+ $search = strtolower($_GET["search"]);
+ }
+
+//get the count
+ $sql = "select count(user_log_uuid) ";
+ $sql .= "from v_user_logs ";
+ if (isset($search)) {
+ $sql .= "where (";
+ $sql .= " lower(username) like :search ";
+ $sql .= " or lower(type) like :search ";
+ $sql .= " or lower(result) like :search ";
+ $sql .= " or lower(remote_address) like :search ";
+ $sql .= " or lower(user_agent) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+ else {
+ $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+ if (isset($sql_search)) {
+ $sql .= "and ".$sql_search;
+ }
+ $parameters['domain_uuid'] = $domain_uuid;
+ }
+ $database = new database;
+ $num_rows = $database->select($sql, $parameters, 'column');
+ unset($sql, $parameters);
+
+//prepare to page the results
+ $rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
+ $param = $search ? "&search=".$search : null;
+ $param = ($_GET['show'] == 'all' && permission_exists('user_log_all')) ? "&show=all" : null;
+ $page = is_numeric($_GET['page']) ? $_GET['page'] : 0;
+ list($paging_controls, $rows_per_page) = paging($num_rows, $param, $rows_per_page);
+ list($paging_controls_mini, $rows_per_page) = paging($num_rows, $param, $rows_per_page, true);
+ $offset = $rows_per_page * $page;
+
+//get the list
+ $sql = "select ";
+ $sql .= "domain_uuid, ";
+ $sql .= "user_log_uuid, ";
+ $sql .= "timestamp, ";
+ $sql .= "username, ";
+ $sql .= "type, ";
+ $sql .= "result, ";
+ $sql .= "remote_address, ";
+ $sql .= "user_agent ";
+ $sql .= "from v_user_logs ";
+ if (isset($_GET["search"])) {
+ $sql .= "where (";
+ $sql .= " lower(username) like :search ";
+ $sql .= " or lower(type) like :search ";
+ $sql .= " or lower(result) like :search ";
+ $sql .= " or lower(remote_address) like :search ";
+ $sql .= " or lower(user_agent) like :search ";
+ $sql .= ") ";
+ $parameters['search'] = '%'.$search.'%';
+ }
+ $sql .= order_by($order_by, $order, 'timestamp', 'desc');
+ $sql .= limit_offset($rows_per_page, $offset);
+ $database = new database;
+ $user_logs = $database->select($sql, $parameters, 'all');
+ unset($sql, $parameters);
+
+//create token
+ $object = new token;
+ $token = $object->create($_SERVER['PHP_SELF']);
+
+//additional includes
+ $document['title'] = $text['title-user_logs'];
+ require_once "resources/header.php";
+
+//show the content
+ echo "\n";
+ echo "
".$text['title-user_logs']." (".$num_rows.")
\n";
+ echo "
\n";
+ if (permission_exists('user_log_delete') && $user_logs) {
+ echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
+ }
+ echo "\n";
+ echo "
\n";
+ echo "
\n";
+ echo "
\n";
+
+ if (permission_exists('user_log_delete') && $user_logs) {
+ echo modal::create(['id'=>'modal-delete','type'=>'delete','actions'=>button::create(['type'=>'button','label'=>$text['button-continue'],'icon'=>'check','id'=>'btn_delete','style'=>'float: right; margin-left: 15px;','collapse'=>'never','onclick'=>"modal_close(); list_action_set('delete'); list_form_submit('form_list');"])]);
+ }
+
+ echo $text['title_description-user_logs']."\n";
+ echo " \n";
+
+ echo "\n";
+
+//include the footer
+ require_once "resources/footer.php";
+
+?>
diff --git a/core/user_settings/app_languages.php b/core/user_settings/app_languages.php
index 457ecb3cdb..714a717fff 100644
--- a/core/user_settings/app_languages.php
+++ b/core/user_settings/app_languages.php
@@ -1332,7 +1332,7 @@ $text['label-ivr_menus']['de-de'] = "Automatische Vermittlungen";
$text['label-ivr_menus']['el-gr'] = "Μενού IVR";
$text['label-ivr_menus']['es-cl'] = "Menus IVR";
$text['label-ivr_menus']['es-mx'] = "Menus IVR"; //copied from es-cl
-$text['label-ivr_menus']['fr-ca'] = "Menus SVI"; //copied from fr-fr
+$text['label-ivr_menus']['fr-ca'] = "Menus RVI";
$text['label-ivr_menus']['fr-fr'] = "Menus SVI";
$text['label-ivr_menus']['he-il'] = "";
$text['label-ivr_menus']['it-it'] = "Menu IVR";
diff --git a/resources/app_languages.php b/resources/app_languages.php
index 72ffaa264b..ff678f3e07 100644
--- a/resources/app_languages.php
+++ b/resources/app_languages.php
@@ -662,8 +662,8 @@ $text['button-clear']['de-de'] = "Zurücksetzen";
$text['button-clear']['el-gr'] = "Εκκαθάριση";
$text['button-clear']['es-cl'] = "Limpiar";
$text['button-clear']['es-mx'] = "Limpiar"; //copied from es-cl
-$text['button-clear']['fr-ca'] = "Nettoyer"; //copied from fr-fr
-$text['button-clear']['fr-fr'] = "Nettoyer";
+$text['button-clear']['fr-ca'] = "Effacer"; //copied from fr-fr
+$text['button-clear']['fr-fr'] = "Effacer";
$text['button-clear']['he-il'] = "נקה";
$text['button-clear']['it-it'] = "Pulisci";
$text['button-clear']['nl-nl'] = "";
@@ -754,8 +754,8 @@ $text['button-search']['de-de'] = "Suchen";
$text['button-search']['el-gr'] = "Αναζήτηση";
$text['button-search']['es-cl'] = "Buscar";
$text['button-search']['es-mx'] = "Buscar"; //copied from es-cl
-$text['button-search']['fr-ca'] = "Chercher"; //copied from fr-fr
-$text['button-search']['fr-fr'] = "Chercher";
+$text['button-search']['fr-ca'] = "Rechercher"; //copied from fr-fr
+$text['button-search']['fr-fr'] = "Rechercher";
$text['button-search']['he-il'] = "חפש";
$text['button-search']['it-it'] = "Ricerca";
$text['button-search']['nl-nl'] = "";
@@ -4226,8 +4226,8 @@ $text['label-uploaded']['de-ch'] = "Hochgeladen"; //copied from de-de
$text['label-uploaded']['de-de'] = "Hochgeladen";
$text['label-uploaded']['es-cl'] = "Subir";
$text['label-uploaded']['es-mx'] = "Subir"; //copied from es-cl
-$text['label-uploaded']['fr-ca'] = "Envoyé"; //copied from fr-fr
-$text['label-uploaded']['fr-fr'] = "Envoyé";
+$text['label-uploaded']['fr-ca'] = "Envoyés"; //copied from fr-fr
+$text['label-uploaded']['fr-fr'] = "Envoyés";
$text['label-uploaded']['he-il'] = "הוטען";
$text['label-uploaded']['it-it'] = "Caricato";
$text['label-uploaded']['nl-nl'] = "Opgestuurd";
diff --git a/resources/check_auth.php b/resources/check_auth.php
index 44eb209d0b..745bba9322 100644
--- a/resources/check_auth.php
+++ b/resources/check_auth.php
@@ -147,6 +147,7 @@
if (is_array($sql_where_or) && @sizeof($sql_where_or) != 0) {
$sql .= "and (".implode(' or ', $sql_where_or).") ";
}
+ $sql .= "and permission_assigned = 'true' ";
$parameters['domain_uuid'] = $_SESSION["domain_uuid"];
$database = new database;
$result = $database->select($sql, $parameters, 'all');
diff --git a/resources/templates/conf/sip_profiles/external-ipv6.xml.noload b/resources/templates/conf/sip_profiles/external-ipv6.xml.noload
index d41740e9f4..4bf6ff2d46 100644
--- a/resources/templates/conf/sip_profiles/external-ipv6.xml.noload
+++ b/resources/templates/conf/sip_profiles/external-ipv6.xml.noload
@@ -84,7 +84,7 @@
-
+
diff --git a/resources/templates/conf/sip_profiles/external.xml.noload b/resources/templates/conf/sip_profiles/external.xml.noload
index 5720040e3d..6ffd93ea6c 100644
--- a/resources/templates/conf/sip_profiles/external.xml.noload
+++ b/resources/templates/conf/sip_profiles/external.xml.noload
@@ -89,7 +89,7 @@
-
+
diff --git a/resources/templates/conf/sip_profiles/internal-ipv6.xml.noload b/resources/templates/conf/sip_profiles/internal-ipv6.xml.noload
index 1129d7a80b..c9fcf7b73e 100644
--- a/resources/templates/conf/sip_profiles/internal-ipv6.xml.noload
+++ b/resources/templates/conf/sip_profiles/internal-ipv6.xml.noload
@@ -60,7 +60,7 @@
-
+
diff --git a/resources/templates/conf/sip_profiles/internal.xml.noload b/resources/templates/conf/sip_profiles/internal.xml.noload
index d16e55677e..667147540b 100644
--- a/resources/templates/conf/sip_profiles/internal.xml.noload
+++ b/resources/templates/conf/sip_profiles/internal.xml.noload
@@ -181,7 +181,7 @@
-
+
diff --git a/resources/templates/provision/fanvil/x3u/{$mac}.cfg b/resources/templates/provision/fanvil/x3u/{$mac}.cfg
index 0689edb733..814c34ed11 100644
--- a/resources/templates/provision/fanvil/x3u/{$mac}.cfg
+++ b/resources/templates/provision/fanvil/x3u/{$mac}.cfg
@@ -1,4 +1,5 @@
+
2.0000000000
@@ -11,7 +12,7 @@
{if isset($dns_server_secondary)}{$dns_server_secondary}{else}208.67.222.222{/if}
1
1
- 1
+
1
0
Fanvil X3U
@@ -43,11 +44,11 @@
-
+
{if isset($fanvil_country_toneset)}{$fanvil_country_toneset}{else}11{/if}
@@ -98,22 +99,25 @@
{$account.1.auth_id}
{$account.1.password}
{$account.1.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.1.password)}1{else}0{/if}
{$account.1.outbound_proxy_primary}
{$account.1.sip_port}
{$account.1.auth_id}
{$account.1.password}
+ 0
{$account.1.outbound_proxy_secondary}
{$account.1.sip_port}
+ 0
{if isset($account.1.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -147,7 +151,7 @@
0
0
1
- 0
+ {if isset($account.1.user_id)}1{else}{/if}
{$account.1.register_expires}
0
0
@@ -166,7 +170,7 @@
5060
{if $account.1.sip_transport == 'udp'}0 {/if}
{if $account.1.sip_transport == 'tcp'}1 {/if}
- {if $account.1.sip_transport == 'tls'}2 {/if}
+ {if $account.1.sip_transport == 'tls'}3 {/if}
0
0
@@ -174,10 +178,11 @@
1
0
-
+ {if isset($account.1.user_id)}*97{else}{/if}
+ 0
0
@@ -200,13 +205,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -223,7 +229,7 @@
0
0
1
- 0
+ 2
0
@@ -245,6 +251,8 @@
500
4000
5000
+ 0
+ 0
{$account.2.user_id}
@@ -255,22 +263,25 @@
{$account.2.auth_id}
{$account.2.password}
{$account.2.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.2.password)}1{else}0{/if}
{$account.2.outbound_proxy_primary}
{$account.2.sip_port}
{$account.2.auth_id}
{$account.2.password}
+ 0
{$account.2.outbound_proxy_secondary}
{$account.2.sip_port}
+ 0
{if isset($account.2.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -304,7 +315,7 @@
0
0
1
- 0
+ {if isset($account.2.user_id)}1{else}{/if}
{$account.2.register_expires}
0
0
@@ -323,7 +334,7 @@
5060
{if $account.2.sip_transport == 'udp'}0 {/if}
{if $account.2.sip_transport == 'tcp'}1 {/if}
- {if $account.2.sip_transport == 'tls'}2 {/if}
+ {if $account.2.sip_transport == 'tls'}3 {/if}
0
0
@@ -331,10 +342,11 @@
1
0
-
+ {if isset($account.2.user_id)}*97{else}{/if}
+ 0
0
@@ -357,13 +369,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -380,7 +393,7 @@
0
0
1
- 0
+ 2
0
@@ -402,6 +415,8 @@
500
4000
5000
+ 0
+ 0
{$account.3.user_id}
@@ -412,22 +427,25 @@
{$account.3.auth_id}
{$account.3.password}
{$account.3.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.3.password)}1{else}0{/if}
{$account.3.outbound_proxy_primary}
{$account.3.sip_port}
{$account.3.auth_id}
{$account.3.password}
+ 0
{$account.3.outbound_proxy_secondary}
{$account.3.sip_port}
+ 0
{if isset($account.3.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -461,7 +479,7 @@
0
0
1
- 0
+ {if isset($account.3.user_id)}1{else}{/if}
{$account.3.register_expires}
0
0
@@ -480,7 +498,7 @@
5060
{if $account.3.sip_transport == 'udp'}0 {/if}
{if $account.3.sip_transport == 'tcp'}1 {/if}
- {if $account.3.sip_transport == 'tls'}2 {/if}
+ {if $account.3.sip_transport == 'tls'}3 {/if}
0
0
@@ -488,10 +506,11 @@
1
0
-
+ {if isset($account.3.user_id)}*97{else}{/if}
+ 0
0
@@ -514,13 +533,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -537,7 +557,7 @@
0
0
1
- 0
+ 2
0
@@ -559,6 +579,8 @@
500
4000
5000
+ 0
+ 0
{$account.4.user_id}
@@ -569,22 +591,25 @@
{$account.4.auth_id}
{$account.4.password}
{$account.4.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.4.password)}1{else}0{/if}
{$account.4.outbound_proxy_primary}
{$account.4.sip_port}
{$account.4.auth_id}
{$account.4.password}
+ 0
{$account.4.outbound_proxy_secondary}
{$account.4.sip_port}
+ 0
{if isset($account.4.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -618,7 +643,7 @@
0
0
1
- 0
+ {if isset($account.4.user_id)}1{else}{/if}
{$account.4.register_expires}
0
0
@@ -637,7 +662,7 @@
5060
{if $account.4.sip_transport == 'udp'}0 {/if}
{if $account.4.sip_transport == 'tcp'}1 {/if}
- {if $account.4.sip_transport == 'tls'}2 {/if}
+ {if $account.4.sip_transport == 'tls'}3 {/if}
0
0
@@ -645,10 +670,11 @@
1
0
-
+ {if isset($account.4.user_id)}*97{else}{/if}
+ 0
0
@@ -671,13 +697,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -694,7 +721,7 @@
0
0
1
- 0
+ 2
0
@@ -716,6 +743,8 @@
500
4000
5000
+ 0
+ 0
{$account.5.user_id}
@@ -726,22 +755,25 @@
{$account.5.auth_id}
{$account.5.password}
{$account.5.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.5.password)}1{else}0{/if}
{$account.5.outbound_proxy_primary}
{$account.5.sip_port}
{$account.5.auth_id}
{$account.5.password}
+ 0
{$account.5.outbound_proxy_secondary}
{$account.5.sip_port}
+ 0
{if isset($account.5.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -775,15 +807,15 @@
0
0
1
- 0
+ {if isset($account.5.user_id)}1{else}{/if}
{$account.5.register_expires}
0
0
1
0
0
- 0
- 0
+ {if $account.5.sip_transport == 'dns srv'}1 {/if}
+ {if $account.5.sip_transport == 'dns srv'}1 {/if}
0
0
0
@@ -794,7 +826,7 @@
5060
{if $account.5.sip_transport == 'udp'}0 {/if}
{if $account.5.sip_transport == 'tcp'}1 {/if}
- {if $account.5.sip_transport == 'tls'}2 {/if}
+ {if $account.5.sip_transport == 'tls'}3 {/if}
0
0
@@ -802,10 +834,11 @@
1
0
-
+ {if isset($account.5.user_id)}*97{else}{/if}
+ 0
0
@@ -828,13 +861,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -851,7 +885,7 @@
0
0
1
- 0
+ 2
0
@@ -873,6 +907,8 @@
500
4000
5000
+ 0
+ 0
{$account.6.user_id}
@@ -883,22 +919,25 @@
{$account.6.auth_id}
{$account.6.password}
{$account.6.register_expires}
+ 0
5060
0
3600
+ 0
{if isset($account.6.password)}1{else}0{/if}
{$account.6.outbound_proxy_primary}
{$account.6.sip_port}
{$account.6.auth_id}
{$account.6.password}
+ 0
{$account.6.outbound_proxy_secondary}
{$account.6.sip_port}
+ 0
{if isset($account.6.outbound_proxy_secondary)}1{else}0{/if}
1800
0
3
- 0
0
@@ -932,15 +971,15 @@
0
0
1
- 0
+ {if isset($account.6.user_id)}1{else}{/if}
{$account.6.register_expires}
0
0
1
0
0
- 0
- 0
+ {if $account.6.sip_transport == 'dns srv'}1 {/if}
+ {if $account.6.sip_transport == 'dns srv'}1 {/if}
0
0
0
@@ -951,7 +990,7 @@
5060
{if $account.6.sip_transport == 'udp'}0 {/if}
{if $account.6.sip_transport == 'tcp'}1 {/if}
- {if $account.6.sip_transport == 'tls'}2 {/if}
+ {if $account.6.sip_transport == 'tls'}3 {/if}
0
0
@@ -959,10 +998,11 @@
1
0
-
+ {if isset($account.6.user_id)}*97{else}{/if}
+ 0
0
@@ -985,13 +1025,14 @@
- OPUS,PCMU,PCMA,G726-32,G729,iLBC,G722
+ PCMU,PCMA,G726-32,G729,iLBC,G722
{if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
0
4
+ 0
0
1
@@ -1008,7 +1049,7 @@
0
0
1
- 0
+ 2
0
@@ -1030,17 +1071,22 @@
500
4000
5000
+ 0
+ 0
0
30
1
0
+ 0
+ 0
+ 1
-
+ 1
0
0
.
@@ -1085,7 +1131,7 @@
1
0
0
- 0
+ 1
{$fanvil_default_answer_mode}
{$fanvil_default_dial_mode}
0
@@ -1109,6 +1155,10 @@
0
+ 0
+ 120
+ 120
+ 0
1
@@ -1189,13 +1239,17 @@
0
1
1
- $name@$protocol$instance
+ $name
0
0
1
1
30
+ 0
+ 0
+ 0
+
{$fanvil_greeting}
5
@@ -1216,6 +1270,7 @@
0
0
3
+ 1
0
@@ -1224,25 +1279,36 @@
0
1
+ terminated
1
2
- 1
- 1
+ early
+ 1
+ 0
+
+ 1
+ 1
+ confirmed
+ 1
+ 0
+
0
0
+ failed
0
3
+ parked
-
-
-
-
-
-
-
-
- {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 1{/if}
+ 5
+ 3
+ 5
+ 3
+ 5
+ 8
+ 3
+ 4
+ {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 2{/if}
{if isset($fanvil_enable_sntp)}{$fanvil_enable_sntp}{else}1{/if}
@@ -1274,7 +1340,7 @@
0
- {if isset($fanvil_softkey_exit)}{$fanvil_softkey_exit}{else}2{/if}
+ {if isset($fanvil_softkey_exit)}{$fanvil_softkey_exit}{else}2{/if}
{if isset($fanvil_softkey_desktopsoftkey)}{$fanvil_softkey_desktopsoftkey}{else}history;contact;dnd;menu;{/if}
{if isset($fanvil_softkey_talkingsoftkey)}{$fanvil_softkey_talkingsoftkey}{else}hold;xfer;conf;end;{/if}
{if isset($fanvil_softkey_ringingsoftkey)}{$fanvil_softkey_ringingsoftkey}{else}accept;none;forward;reject;{/if}
@@ -1289,6 +1355,7 @@
send;2aB;delete;exit;
{if isset($fanvil_softkey_desktopclick)}{$fanvil_softkey_desktopclick}{else}history;status;none;none;none;{/if}
pline;nline;none;none;none;
+ none;none;none;none;none;
none;none;none;none;none;
status;none;none;none;reset;
contact;clogs;redial;video;cancel;
@@ -1529,6 +1596,8 @@
120
0
+ 2
+ 6
1
@@ -1544,6 +1613,7 @@
1
1
+ 0
@@ -1554,6 +1624,8 @@
+
+
@@ -1578,6 +1650,7 @@
+
@@ -1649,6 +1722,9 @@
0
0
+
+ 60
+
0
@@ -1656,10 +1732,12 @@
1
1
0
+ 0
0
16
360
1080
+ 1
0
0
0
@@ -1725,7 +1803,7 @@
1
- 00100400FV02001000000c383e3aaf78
+
1
0
0.0.0.0
@@ -1737,12 +1815,14 @@
dps
dps
3600
- 2
+ 0
020
0
{$fanvil_stun_server}
{$fanvil_stun_port}
30000
+ 30
+ 30
0
@@ -1751,23 +1831,32 @@
224.0.2.0
16360
SIP Hotspot
+ 0
+ 0
+ 0
1
+
1
+
1
+
1
+
1
+
1
+
@@ -1794,7 +1883,7 @@
1
- 0
+ 1
5
{if isset($fanvil_provision_url)}{$fanvil_provision_url}{else}https://{$domain_name}/app/provision{/if}
{$fanvil_firmware_config}
@@ -1814,6 +1903,8 @@
66
0
0
+ 0
+ 1
@@ -1839,7 +1930,7 @@
{if isset($fanvil_lldp_refresh)}{$fanvil_lldp_refresh}{else}60{/if}
{if isset($fanvil_lldp_learn)}{$fanvil_lldp_learn}{else}0{/if}
0
- 0
+ 1
60
132
@@ -1867,6 +1958,7 @@
0.0.0.0
10000
+
0
0
@@ -1878,5 +1970,19 @@
1
1
0
+ 0
+ 1,1,1,1
+ 0
+ 0x262626
+ 0xffffff
+ 0xffffff
+ 0x262626
+ 0x5a9dba
+ 0xc4012f
+ 0x007bb0
+ 0xffffff
+ 0x262626
+ 1
+
diff --git a/resources/templates/provision/fanvil/x4u/{$mac}.cfg b/resources/templates/provision/fanvil/x4u/{$mac}.cfg
index 9059dd5148..f9a24bd673 100644
--- a/resources/templates/provision/fanvil/x4u/{$mac}.cfg
+++ b/resources/templates/provision/fanvil/x4u/{$mac}.cfg
@@ -59,7 +59,7 @@
1
1
0
-
+ Fanvil X4U
10
@@ -187,7 +187,7 @@
0
0
1
- 0
+ {if isset($account.1.user_id)}1{else}{/if}
{$account.1.register_expires}
0
0
@@ -214,7 +214,7 @@
1
0
-
+ {if isset($account.1.user_id)}*97{else}{/if}
@@ -263,7 +263,7 @@
0
0
1
- 0
+ 2
0
@@ -349,7 +349,7 @@
0
0
1
- 0
+ {if isset($account.2.user_id)}1{else}{/if}
{$account.2.register_expires}
0
0
@@ -376,7 +376,7 @@
1
0
-
+ {if isset($account.2.user_id)}*97{else}{/if}
@@ -425,7 +425,7 @@
0
0
1
- 0
+ 2
0
@@ -511,7 +511,7 @@
0
0
1
- 0
+ {if isset($account.3.user_id)}1{else}{/if}
{$account.3.register_expires}
0
0
@@ -538,7 +538,7 @@
1
0
-
+ {if isset($account.3.user_id)}*97{else}{/if}
@@ -587,7 +587,7 @@
0
0
1
- 0
+ 2
0
@@ -673,7 +673,7 @@
0
0
1
- 0
+ {if isset($account.4.user_id)}1{else}{/if}
{$account.4.register_expires}
0
0
@@ -700,7 +700,7 @@
1
0
-
+ {if isset($account.4.user_id)}*97{else}{/if}
@@ -749,7 +749,7 @@
0
0
1
- 0
+ 2
0
@@ -835,15 +835,15 @@
0
0
1
- 0
+ {if isset($account.5.user_id)}1{else}{/if}
{$account.5.register_expires}
0
0
1
0
0
- 0
- 0
+ {if $account.5.sip_transport == 'dns srv'}1 {/if}
+ {if $account.5.sip_transport == 'dns srv'}1 {/if}
0
0
0
@@ -862,7 +862,7 @@
1
0
-
+ {if isset($account.5.user_id)}*97{else}{/if}
@@ -911,7 +911,7 @@
0
0
1
- 0
+ 2
0
@@ -983,7 +983,7 @@
- {if isset($fanvil_ringtone_line)}{$fanvil_ringtone_line6}{else}default{/if}
+ {if isset($fanvil_ringtone_line6)}{$fanvil_ringtone_line6}{else}default{/if}
2
30
0
@@ -997,7 +997,7 @@
0
0
1
- 0
+ {if isset($account.6.user_id)}1{else}{/if}
{$account.6.register_expires}
0
0
@@ -1020,11 +1020,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.6.user_id)}*97{else}{/if}
@@ -1035,7 +1035,7 @@
5
1
- 0
+ 1
@@ -1051,7 +1051,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1073,7 +1073,7 @@
0
0
1
- 0
+ 2
0
@@ -1159,7 +1159,7 @@
0
0
1
- 0
+ {if isset($account.7.user_id)}1{else}{/if}
{$account.7.register_expires}
0
0
@@ -1182,11 +1182,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.7.user_id)}*97{else}{/if}
@@ -1197,7 +1197,7 @@
5
1
- 0
+ 1
@@ -1213,7 +1213,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1235,7 +1235,7 @@
0
0
1
- 0
+ 2
0
@@ -1321,7 +1321,7 @@
0
0
1
- 0
+ {if isset($account.8.user_id)}1{else}{/if}
{$account.8.register_expires}
0
0
@@ -1344,11 +1344,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.8.user_id)}*97{else}{/if}
@@ -1359,7 +1359,7 @@
5
1
- 0
+ 1
@@ -1375,7 +1375,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1397,7 +1397,7 @@
0
0
1
- 0
+ 2
0
@@ -1483,7 +1483,7 @@
0
0
1
- 0
+ {if isset($account.9.user_id)}1{else}{/if}
{$account.9.register_expires}
0
0
@@ -1506,11 +1506,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.9.user_id)}*97{else}{/if}
@@ -1521,7 +1521,7 @@
5
1
- 0
+ 1
@@ -1537,7 +1537,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1559,7 +1559,7 @@
0
0
1
- 0
+ 2
0
@@ -1645,7 +1645,7 @@
0
0
1
- 0
+ {if isset($account.10.user_id)}1{else}{/if}
{$account.10.register_expires}
0
0
@@ -1668,11 +1668,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.10.user_id)}*97{else}{/if}
@@ -1683,7 +1683,7 @@
5
1
- 0
+ 1
@@ -1699,7 +1699,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1721,7 +1721,7 @@
0
0
1
- 0
+ 2
0
@@ -1807,7 +1807,7 @@
0
0
1
- 0
+ {if isset($account.11.user_id)}1{else}{/if}
{$account.11.register_expires}
0
0
@@ -1830,11 +1830,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.11.user_id)}*97{else}{/if}
@@ -1845,7 +1845,7 @@
5
1
- 0
+ 1
@@ -1861,7 +1861,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -1883,7 +1883,7 @@
0
0
1
- 0
+ 2
0
@@ -1969,7 +1969,7 @@
0
0
1
- 0
+ {if isset($account.12.user_id)}1{else}{/if}
{$account.12.register_expires}
0
0
@@ -1992,11 +1992,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.12.user_id)}*97{else}{/if}
@@ -2007,7 +2007,7 @@
5
1
- 0
+ 1
@@ -2023,7 +2023,7 @@
PCMU,PCMA,G726-32,G729,G723,iLBC,AMR,G722,AMR-WB
-
+ {if isset($fanvil_video_codec)}{$fanvil_video_codec}{else}{/if}
0
@@ -2045,7 +2045,7 @@
0
0
1
- 0
+ 2
0
@@ -2295,15 +2295,15 @@
parked
-
-
-
-
-
-
-
-
- {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 1{/if}
+ 5
+ 3
+ 5
+ 3
+ 5
+ 8
+ 3
+ 4
+ {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 2{/if}
{if isset($fanvil_enable_sntp)}{$fanvil_enable_sntp}{else}1{/if}
@@ -2348,7 +2348,7 @@
send;2aB;delete;exit;
delete;xfer;send;exit;
send;2aB;delete;exit;
- history;status;none;none;none;
+ {if isset($fanvil_softkey_desktopclick)}{$fanvil_softkey_desktopclick}{else}history;status;none;none;none;{/if}
pline;nline;none;none;none;
none;none;none;none;none;
none;none;voldown;volup;none;
@@ -2755,7 +2755,6 @@
{/foreach}
-
{strip}{*-- Each Internal Index contains 6 keys --*}{/strip}
{foreach $keys["memory"] as $row}
diff --git a/resources/templates/provision/fanvil/x5u/{$mac}.cfg b/resources/templates/provision/fanvil/x5u/{$mac}.cfg
index cd5e37a823..353930b5cc 100644
--- a/resources/templates/provision/fanvil/x5u/{$mac}.cfg
+++ b/resources/templates/provision/fanvil/x5u/{$mac}.cfg
@@ -59,7 +59,7 @@
1
1
0
-
+ Fanvil X5U
10
@@ -187,7 +187,7 @@
0
0
1
- 0
+ {if isset($account.1.user_id)}1{else}{/if}
{$account.1.register_expires}
0
0
@@ -214,7 +214,7 @@
1
0
-
+ {if isset($account.1.user_id)}*97{else}{/if}
@@ -263,7 +263,7 @@
0
0
1
- 0
+ 2
0
@@ -312,7 +312,6 @@
{$account.2.outbound_proxy_secondary}
{$account.2.sip_port}
{if isset($account.2.outbound_proxy_secondary)}1{else}0{/if}
- 1
1800
0
3
@@ -349,7 +348,7 @@
0
0
1
- 0
+ {if isset($account.2.user_id)}1{else}{/if}
{$account.2.register_expires}
0
0
@@ -376,7 +375,7 @@
1
0
-
+ {if isset($account.2.user_id)}*97{else}{/if}
@@ -425,7 +424,7 @@
0
0
1
- 0
+ 2
0
@@ -511,7 +510,7 @@
0
0
1
- 0
+ {if isset($account.3.user_id)}1{else}{/if}
{$account.3.register_expires}
0
0
@@ -538,7 +537,7 @@
1
0
-
+ {if isset($account.3.user_id)}*97{else}{/if}
@@ -587,7 +586,7 @@
0
0
1
- 0
+ 2
0
@@ -673,7 +672,7 @@
0
0
1
- 0
+ {if isset($account.4.user_id)}1{else}{/if}
{$account.4.register_expires}
0
0
@@ -700,7 +699,7 @@
1
0
-
+ {if isset($account.4.user_id)}*97{else}{/if}
@@ -749,7 +748,7 @@
0
0
1
- 0
+ 2
0
@@ -835,7 +834,7 @@
0
0
1
- 0
+ {if isset($account.5.user_id)}1{else}{/if}
{$account.5.register_expires}
0
0
@@ -862,7 +861,7 @@
1
0
-
+ {if isset($account.5.user_id)}*97{else}{/if}
@@ -911,7 +910,7 @@
0
0
1
- 0
+ 2
0
@@ -997,7 +996,7 @@
0
0
1
- 0
+ {if isset($account.6.user_id)}1{else}{/if}
{$account.6.register_expires}
0
0
@@ -1020,11 +1019,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.6.user_id)}*97{else}{/if}
@@ -1035,7 +1034,7 @@
5
1
- 0
+ 1
@@ -1073,7 +1072,7 @@
0
0
1
- 0
+ 2
0
@@ -1159,7 +1158,7 @@
0
0
1
- 0
+ {if isset($account.7.user_id)}1{else}{/if}
{$account.7.register_expires}
0
0
@@ -1182,11 +1181,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.7.user_id)}*97{else}{/if}
@@ -1197,7 +1196,7 @@
5
1
- 0
+ 1
@@ -1235,7 +1234,7 @@
0
0
1
- 0
+ 2
0
@@ -1321,7 +1320,7 @@
0
0
1
- 0
+ {if isset($account.8.user_id)}1{else}{/if}
{$account.8.register_expires}
0
0
@@ -1344,11 +1343,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.8.user_id)}*97{else}{/if}
@@ -1359,7 +1358,7 @@
5
1
- 0
+ 1
@@ -1397,7 +1396,7 @@
0
0
1
- 0
+ 2
0
@@ -1483,7 +1482,7 @@
0
0
1
- 0
+ {if isset($account.9.user_id)}1{else}{/if}
{$account.9.register_expires}
0
0
@@ -1506,11 +1505,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.9.user_id)}*97{else}{/if}
@@ -1521,7 +1520,7 @@
5
1
- 0
+ 1
@@ -1559,7 +1558,7 @@
0
0
1
- 0
+ 2
0
@@ -1645,7 +1644,7 @@
0
0
1
- 0
+ {if isset($account.10.user_id)}1{else}{/if}
{$account.10.register_expires}
0
0
@@ -1668,11 +1667,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.10.user_id)}*97{else}{/if}
@@ -1683,7 +1682,7 @@
5
1
- 0
+ 1
@@ -1721,7 +1720,7 @@
0
0
1
- 0
+ 2
0
@@ -1807,7 +1806,7 @@
0
0
1
- 0
+ {if isset($account.11.user_id)}1{else}{/if}
{$account.11.register_expires}
0
0
@@ -1830,11 +1829,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.11.user_id)}*97{else}{/if}
@@ -1845,7 +1844,7 @@
5
1
- 0
+ 1
@@ -1883,7 +1882,7 @@
0
0
1
- 0
+ 2
0
@@ -1969,7 +1968,7 @@
0
0
1
- 0
+ {if isset($account.12.user_id)}1{else}{/if}
{$account.12.register_expires}
0
0
@@ -1992,11 +1991,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.12.user_id)}*97{else}{/if}
@@ -2007,7 +2006,7 @@
5
1
- 0
+ 1
@@ -2045,7 +2044,7 @@
0
0
1
- 0
+ 2
0
@@ -2131,7 +2130,7 @@
0
0
1
- 0
+ {if isset($account.13.user_id)}1{else}{/if}
{$account.13.register_expires}
0
0
@@ -2154,11 +2153,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.13.user_id)}*97{else}{/if}
@@ -2169,7 +2168,7 @@
5
1
- 0
+ 1
@@ -2207,7 +2206,7 @@
0
0
1
- 0
+ 2
0
@@ -2293,7 +2292,7 @@
0
0
1
- 0
+ {if isset($account.14.user_id)}1{else}{/if}
{$account.14.register_expires}
0
0
@@ -2316,11 +2315,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.14.user_id)}*97{else}{/if}
@@ -2331,7 +2330,7 @@
5
1
- 0
+ 1
@@ -2369,7 +2368,7 @@
0
0
1
- 0
+ 2
0
@@ -2455,7 +2454,7 @@
0
0
1
- 0
+ {if isset($account.15.user_id)}1{else}{/if}
{$account.15.register_expires}
0
0
@@ -2478,11 +2477,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.15.user_id)}*97{else}{/if}
@@ -2493,7 +2492,7 @@
5
1
- 0
+ 1
@@ -2531,7 +2530,7 @@
0
0
1
- 0
+ 2
0
@@ -2617,7 +2616,7 @@
0
0
1
- 0
+ {if isset($account.16.user_id)}1{else}{/if}
{$account.16.register_expires}
0
0
@@ -2640,11 +2639,11 @@
0
0
- 0
+ 1
1
0
-
+ {if isset($account.16.user_id)}*97{else}{/if}
@@ -2655,7 +2654,7 @@
5
1
- 0
+ 1
@@ -2693,7 +2692,7 @@
0
0
1
- 0
+ 2
0
@@ -2943,15 +2942,15 @@
parked
-
-
-
-
-
-
-
-
- {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 1{/if}
+ 5
+ 3
+ 5
+ 3
+ 5
+ 8
+ 3
+ 4
+ {if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 2{/if}
{if isset($fanvil_enable_sntp)}{$fanvil_enable_sntp}{else}1{/if}
diff --git a/resources/templates/provision/fanvil/x6u/{$mac}.cfg b/resources/templates/provision/fanvil/x6u/{$mac}.cfg
index e01b216bd7..6b597071e8 100644
--- a/resources/templates/provision/fanvil/x6u/{$mac}.cfg
+++ b/resources/templates/provision/fanvil/x6u/{$mac}.cfg
@@ -192,7 +192,7 @@
0
0
1
- 0
+ {if isset($account.1.user_id)}1{else}{/if}
{$account.1.register_expires}
0
0
@@ -219,7 +219,7 @@
1
0
-
+ {if isset($account.1.user_id)}*97{else}{/if}
@@ -268,7 +268,7 @@
0
0
1
- 0
+ 2
0
@@ -354,7 +354,7 @@
0
0
1
- 0
+ {if isset($account.2.user_id)}1{else}{/if}
{$account.2.register_expires}
0
0
@@ -381,7 +381,7 @@
1
0
-
+ {if isset($account.2.user_id)}*97{else}{/if}
@@ -430,7 +430,7 @@
0
0
1
- 0
+ 2
0
@@ -516,7 +516,7 @@
0
0
1
- 0
+ {if isset($account.3.user_id)}1{else}{/if}
{$account.3.register_expires}
0
0
@@ -543,7 +543,7 @@
1
0
-
+ {if isset($account.3.user_id)}*97{else}{/if}
@@ -592,7 +592,7 @@
0
0
1
- 0
+ 2
0
@@ -678,7 +678,7 @@
0
0
1
- 0
+ {if isset($account.4.user_id)}1{else}{/if}
{$account.4.register_expires}
0
0
@@ -705,7 +705,7 @@
1
0
-
+ {if isset($account.4.user_id)}*97{else}{/if}
@@ -754,7 +754,7 @@
0
0
1
- 0
+ 2
0
@@ -840,7 +840,7 @@
0
0
1
- 0
+ {if isset($account.5.user_id)}1{else}{/if}
{$account.5.register_expires}
0
0
@@ -867,7 +867,7 @@
1
0
-
+ {if isset($account.5.user_id)}*97{else}{/if}
@@ -916,7 +916,7 @@
0
0
1
- 0
+ 2
0
@@ -1002,7 +1002,7 @@
0
0
1
- 0
+ {if isset($account.6.user_id)}1{else}{/if}
{$account.6.register_expires}
0
0
@@ -1029,7 +1029,7 @@
1
0
-
+ {if isset($account.6.user_id)}*97{else}{/if}
@@ -1078,7 +1078,7 @@
0
0
1
- 0
+ 2
0
@@ -1164,7 +1164,7 @@
0
0
1
- 0
+ {if isset($account.7.user_id)}1{else}{/if}
{$account.7.register_expires}
0
0
@@ -1191,7 +1191,7 @@
1
0
-
+ {if isset($account.7.user_id)}*97{else}{/if}
@@ -1240,7 +1240,7 @@
0
0
1
- 0
+ 2
0
@@ -1326,7 +1326,7 @@
0
0
1
- 0
+ {if isset($account.8.user_id)}1{else}{/if}
{$account.8.register_expires}
0
0
@@ -1353,7 +1353,7 @@
1
0
-
+ {if isset($account.8.user_id)}*97{else}{/if}
@@ -1402,7 +1402,7 @@
0
0
1
- 0
+ 2
0
@@ -1488,7 +1488,7 @@
0
0
1
- 0
+ {if isset($account.9.user_id)}1{else}{/if}
{$account.9.register_expires}
0
0
@@ -1515,7 +1515,7 @@
1
0
-
+ {if isset($account.9.user_id)}*97{else}{/if}
@@ -1564,7 +1564,7 @@
0
0
1
- 0
+ 2
0
@@ -1650,7 +1650,7 @@
0
0
1
- 0
+ {if isset($account.10.user_id)}1{else}{/if}
{$account.10.register_expires}
0
0
@@ -1677,7 +1677,7 @@
1
0
-
+ {if isset($account.10.user_id)}*97{else}{/if}
@@ -1726,7 +1726,7 @@
0
0
1
- 0
+ 2
0
@@ -1812,7 +1812,7 @@
0
0
1
- 0
+ {if isset($account.11.user_id)}1{else}{/if}
{$account.11.register_expires}
0
0
@@ -1839,7 +1839,7 @@
1
0
-
+ {if isset($account.11.user_id)}*97{else}{/if}
@@ -1888,7 +1888,7 @@
0
0
1
- 0
+ 2
0
@@ -1974,7 +1974,7 @@
0
0
1
- 0
+ {if isset($account.12.user_id)}1{else}{/if}
{$account.12.register_expires}
0
0
@@ -2001,7 +2001,7 @@
1
0
-
+ {if isset($account.12.user_id)}*97{else}{/if}
@@ -2050,7 +2050,7 @@
0
0
1
- 0
+ 2
0
@@ -2135,7 +2135,7 @@
0
0
1
- 0
+ {if isset($account.13.user_id)}1{else}{/if}
{$account.13.register_expires}
0
0
@@ -2162,7 +2162,7 @@
1
0
-
+ {if isset($account.13.user_id)}*97{else}{/if}
@@ -2211,7 +2211,7 @@
0
0
1
- 0
+ 2
0
@@ -2297,7 +2297,7 @@
0
0
1
- 0
+ {if isset($account.14.user_id)}1{else}{/if}
{$account.14.register_expires}
0
0
@@ -2324,7 +2324,7 @@
1
0
-
+ {if isset($account.14.user_id)}*97{else}{/if}
@@ -2373,7 +2373,7 @@
0
0
1
- 0
+ 2
0
@@ -2459,7 +2459,7 @@
0
0
1
- 0
+ {if isset($account.15.user_id)}1{else}{/if}
{$account.15.register_expires}
0
0
@@ -2486,7 +2486,7 @@
1
0
-
+ {if isset($account.15.user_id)}*97{else}{/if}
@@ -2535,7 +2535,7 @@
0
0
1
- 0
+ 2
0
@@ -2621,7 +2621,7 @@
0
0
1
- 0
+ {if isset($account.16.user_id)}1{else}{/if}
{$account.16.register_expires}
0
0
@@ -2648,7 +2648,7 @@
1
0
-
+ {if isset($account.16.user_id)}*97{else}{/if}
@@ -2697,7 +2697,7 @@
0
0
1
- 0
+ 2
0
@@ -2783,14 +2783,13 @@
0
0
1
- 0
+ {if isset($account.17.user_id)}1{else}{/if}
{$account.17.register_expires}
0
0
1
0
0
- 0
{if $account.17.sip_transport == 'dns srv'}1 {/if}
{if $account.17.sip_transport == 'dns srv'}1 {/if}
0
@@ -2811,7 +2810,7 @@
1
0
-
+ {if isset($account.17.user_id)}*97{else}{/if}
@@ -2860,7 +2859,7 @@
0
0
1
- 0
+ 2
0
@@ -2946,14 +2945,13 @@
0
0
1
- 0
+ {if isset($account.18.user_id)}1{else}{/if}
{$account.18.register_expires}
0
0
1
0
0
- 0
{if $account.18.sip_transport == 'dns srv'}1 {/if}
{if $account.18.sip_transport == 'dns srv'}1 {/if}
0
@@ -2974,7 +2972,7 @@
1
0
-
+ {if isset($account.18.user_id)}*97{else}{/if}
@@ -3023,7 +3021,7 @@
0
0
1
- 0
+ 2
0
@@ -3109,14 +3107,13 @@
0
0
1
- 0
+ {if isset($account.19.user_id)}1{else}{/if}
{$account.19.register_expires}
0
0
1
0
0
- 0
{if $account.19.sip_transport == 'dns srv'}1 {/if}
{if $account.19.sip_transport == 'dns srv'}1 {/if}
0
@@ -3137,7 +3134,7 @@
1
0
-
+ {if isset($account.19.user_id)}*97{else}{/if}
@@ -3186,7 +3183,7 @@
0
0
1
- 0
+ 2
0
@@ -3272,14 +3269,13 @@
0
0
1
- 0
+ {if isset($account.20.user_id)}1{else}{/if}
{$account.20.register_expires}
0
0
1
0
0
- 0
{if $account.20.sip_transport == 'dns srv'}1 {/if}
{if $account.20.sip_transport == 'dns srv'}1 {/if}
0
@@ -3300,7 +3296,7 @@
1
0
-
+ {if isset($account.20.user_id)}*97{else}{/if}
@@ -3349,7 +3345,7 @@
0
0
1
- 0
+ 2
0
@@ -3599,14 +3595,14 @@
parked
-
-
-
-
-
-
-
-
+ 5
+ 3
+ 5
+ 3
+ 5
+ 8
+ 3
+ 4
{if isset($fanvil_default_ringtone)}{$fanvil_default_ringtone}{else}Type 2{/if}
diff --git a/resources/templates/provision/fanvil/x7/{$mac}.cfg b/resources/templates/provision/fanvil/x7/{$mac}.cfg
index 89ca982271..656ec9b74a 100644
--- a/resources/templates/provision/fanvil/x7/{$mac}.cfg
+++ b/resources/templates/provision/fanvil/x7/{$mac}.cfg
@@ -3637,9 +3637,9 @@
0
{if isset($fanvil_softkey_exit)}{$fanvil_softkey_exit}{else}2{/if}
- {if isset($fanvil_softkey_desktopsoftkey)}{$fanvil_softkey_desktopsoftkey}{else}history;contact;dnd;menu;
- {if isset($fanvil_softkey_talkingsoftkey)}{$fanvil_softkey_talkingsoftkey}{else}hold;xfer;conf;end;
- {if isset($fanvil_softkey_ringingsoftkey)}{$fanvil_softkey_ringingsoftkey}{else}accept;none;forward;reject;
+ {if isset($fanvil_softkey_desktopsoftkey)}{$fanvil_softkey_desktopsoftkey}{else}history;contact;dnd;menu;{/if}
+ {if isset($fanvil_softkey_talkingsoftkey)}{$fanvil_softkey_talkingsoftkey}{else}hold;xfer;conf;end;{/if}
+ {if isset($fanvil_softkey_ringingsoftkey)}{$fanvil_softkey_ringingsoftkey}{else}accept;none;forward;reject;{/if}
end;none;none;none;
end;none;none;xfer;
hold;none;split;end;
@@ -3649,7 +3649,7 @@
send;2aB;delete;exit;
delete;xfer;send;exit;
send;2aB;delete;exit;
- {if isset($fanvil_softkey_desktopclick)}{$fanvil_softkey_desktopclick}{else}history;status;none;none;none;
+ {if isset($fanvil_softkey_desktopclick)}{$fanvil_softkey_desktopclick}{else}history;status;none;none;none;{/if}
pline;nline;none;none;none;
none;none;none;none;none;
none;none;voldown;volup;none;
diff --git a/resources/templates/provision/grandstream/gac2500/{$mac}.xml b/resources/templates/provision/grandstream/gac2500/{$mac}.xml
index 841f113a0a..1715e9fee0 100644
--- a/resources/templates/provision/grandstream/gac2500/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gac2500/{$mac}.xml
@@ -488,7 +488,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
{if isset($grandstream_account_ring_tone_1)}
@@ -502,7 +502,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -510,7 +510,7 @@
-
+ {$grandstream_distinctive_ringtone_name_2}
@@ -518,7 +518,7 @@
-
+ {$grandstream_distinctive_ringtone_name_3}
@@ -1056,7 +1056,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1624,7 +1624,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1632,7 +1632,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
content://settings/system/ringtone
@@ -2193,7 +2193,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -2764,7 +2764,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -3335,7 +3335,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
diff --git a/resources/templates/provision/grandstream/grp2612/{$mac}.xml b/resources/templates/provision/grandstream/grp2612/{$mac}.xml
index a1c853a549..228d1f35b6 100644
--- a/resources/templates/provision/grandstream/grp2612/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2612/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -3654,7 +3654,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -3917,17 +3917,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -4156,9 +4160,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -4170,8 +4172,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 2
{/if}
@@ -4179,8 +4179,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp2612w/{$mac}.xml b/resources/templates/provision/grandstream/grp2612w/{$mac}.xml
index 1a1cd241e1..d548293f61 100644
--- a/resources/templates/provision/grandstream/grp2612w/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2612w/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -3749,7 +3749,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -4012,17 +4012,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -4251,9 +4255,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -4265,8 +4267,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 2
{/if}
@@ -4274,8 +4274,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp2613/{$mac}.xml b/resources/templates/provision/grandstream/grp2613/{$mac}.xml
index 4cab49735a..d82ed4cadd 100644
--- a/resources/templates/provision/grandstream/grp2613/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2613/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -4482,7 +4482,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -4753,22 +4753,22 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- {if isset ($grandstream_EHS)}
- {$grandstream_EHS}
- {$grandstream_EHS}
- {else}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
- {/if}
+ {$grandstream_headset_type}
+{/if}
+
@@ -4971,9 +4971,7 @@
{if isset($grandstream2135_wallpaper_url)}
1
{$grandstream2135_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -4985,8 +4983,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -4994,8 +4990,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp2614/{$mac}.xml b/resources/templates/provision/grandstream/grp2614/{$mac}.xml
index 0928140e6d..ecd02c1682 100644
--- a/resources/templates/provision/grandstream/grp2614/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2614/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -5745,7 +5745,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -6072,17 +6072,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -6286,9 +6290,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -6300,8 +6302,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 2
{/if}
@@ -6309,8 +6309,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp2615/{$mac}.xml b/resources/templates/provision/grandstream/grp2615/{$mac}.xml
index e3d2626e5f..c93b38aa22 100644
--- a/resources/templates/provision/grandstream/grp2615/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2615/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -6680,7 +6680,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7007,17 +7007,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -7220,9 +7224,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -7234,8 +7236,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 2
{/if}
@@ -7243,8 +7243,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp2616/{$mac}.xml b/resources/templates/provision/grandstream/grp2616/{$mac}.xml
index c5857ad26f..351d2b1174 100644
--- a/resources/templates/provision/grandstream/grp2616/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp2616/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -795,7 +795,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -805,87 +805,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -7644,7 +7644,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7971,17 +7971,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8185,9 +8189,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8199,8 +8201,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 2
{/if}
@@ -8208,8 +8208,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/grp26xx/{$mac}.xml b/resources/templates/provision/grandstream/grp26xx/{$mac}.xml
index 3bea13d1bb..20351d820e 100644
--- a/resources/templates/provision/grandstream/grp26xx/{$mac}.xml
+++ b/resources/templates/provision/grandstream/grp26xx/{$mac}.xml
@@ -350,7 +350,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -802,7 +802,7 @@
- 5
+ {$grandstream_distinctive_ringtone_1}
@@ -812,87 +812,87 @@
- 2
+ {$grandstream_distinctive_ringtone_2}
- ring3
+ {$grandstream_distinctive_ringtone_name_3}
- 3
+ {$grandstream_distinctive_ringtone_3}
-
+ {$grandstream_distinctive_ringtone_name_4}
- 5
+ {$grandstream_distinctive_ringtone_4}
-
+ {$grandstream_distinctive_ringtone_name_5}
- 5
+ {$grandstream_distinctive_ringtone_5}
-
+ {$grandstream_distinctive_ringtone_name_6}
- 5
+ {$grandstream_distinctive_ringtone_6}
-
+ {$grandstream_distinctive_ringtone_name_7}
- 5
+ {$grandstream_distinctive_ringtone_7}
-
+ {$grandstream_distinctive_ringtone_name_8}
- 5
+ {$grandstream_distinctive_ringtone_8}
-
+ {$grandstream_distinctive_ringtone_name_9}
- 5
+ {$grandstream_distinctive_ringtone_9}
-
+ {$grandstream_distinctive_ringtone_name_10}
- 5
+ {$grandstream_distinctive_ringtone_10}
@@ -1326,7 +1326,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2293,7 +2293,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2733,7 +2733,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3262,7 +3262,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4233,7 +4233,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -6999,7 +6999,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7249,17 +7249,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
-
+
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -7473,16 +7477,14 @@
- 0
+
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -7494,8 +7496,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -7503,8 +7503,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp110x/{$mac}.xml b/resources/templates/provision/grandstream/gxp110x/{$mac}.xml
index 5b166acd4a..ecb28b3e4c 100644
--- a/resources/templates/provision/grandstream/gxp110x/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp110x/{$mac}.xml
@@ -353,7 +353,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -609,33 +609,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
diff --git a/resources/templates/provision/grandstream/gxp116x/{$mac}.xml b/resources/templates/provision/grandstream/gxp116x/{$mac}.xml
index 52b8eccfd1..7d9ce41884 100644
--- a/resources/templates/provision/grandstream/gxp116x/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp116x/{$mac}.xml
@@ -227,7 +227,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -478,33 +478,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
@@ -1279,12 +1279,21 @@
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
-
-
-
-0
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp140x/{$mac}.xml b/resources/templates/provision/grandstream/gxp140x/{$mac}.xml
index 654bf96fe5..18977b16ed 100644
--- a/resources/templates/provision/grandstream/gxp140x/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp140x/{$mac}.xml
@@ -302,7 +302,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -504,28 +504,28 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
- 0
+ {$grandstream_distinctive_ringtone_1}
-
+ {$grandstream_distinctive_ringtone_name_2}
- 0
+ {$grandstream_distinctive_ringtone_2}
-
+ {$grandstream_distinctive_ringtone_name_3}
- 0
+ {$grandstream_distinctive_ringtone_3}
@@ -736,7 +736,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1550,7 +1550,9 @@
- 0
+ {if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp140xbk/{$mac}.xml b/resources/templates/provision/grandstream/gxp140xbk/{$mac}.xml
index db3979a52d..248e5623fa 100644
--- a/resources/templates/provision/grandstream/gxp140xbk/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp140xbk/{$mac}.xml
@@ -302,7 +302,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -504,28 +504,28 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
- 0
+ {$grandstream_distinctive_ringtone_1}
-
+ {$grandstream_distinctive_ringtone_name_2}
- 0
+ {$grandstream_distinctive_ringtone_2}
-
+ {$grandstream_distinctive_ringtone_name_3}
- 0
+ {$grandstream_distinctive_ringtone_3}
@@ -736,7 +736,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1550,7 +1550,9 @@
- 0
+ {if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp1450/{$mac}.xml b/resources/templates/provision/grandstream/gxp1450/{$mac}.xml
index f6346b76cf..8cd4fd550e 100644
--- a/resources/templates/provision/grandstream/gxp1450/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp1450/{$mac}.xml
@@ -417,7 +417,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -673,33 +673,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
@@ -974,7 +974,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2055,7 +2055,9 @@
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp1450bk/{$mac}.xml b/resources/templates/provision/grandstream/gxp1450bk/{$mac}.xml
index 101ab84d48..49d81cf5e3 100644
--- a/resources/templates/provision/grandstream/gxp1450bk/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp1450bk/{$mac}.xml
@@ -226,7 +226,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -482,33 +482,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
@@ -783,7 +783,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1862,7 +1862,9 @@
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp16xx/{$mac}.xml b/resources/templates/provision/grandstream/gxp16xx/{$mac}.xml
index 656d33b3be..191766a91a 100644
--- a/resources/templates/provision/grandstream/gxp16xx/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp16xx/{$mac}.xml
@@ -264,7 +264,7 @@
0
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -872,7 +872,7 @@
0
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1445,7 +1445,7 @@
0
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1686,7 +1686,7 @@
0
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -2694,11 +2694,21 @@
-0
-
-
-
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp17xx/{$mac}.xml b/resources/templates/provision/grandstream/gxp17xx/{$mac}.xml
index e2acafe9ba..6257158e76 100644
--- a/resources/templates/provision/grandstream/gxp17xx/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp17xx/{$mac}.xml
@@ -1034,7 +1034,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1361,33 +1361,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
@@ -1745,7 +1745,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2445,7 +2445,7 @@
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2764,7 +2764,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -3859,12 +3859,21 @@
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
-
-
-
-0
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp20xx/{$mac}.xml b/resources/templates/provision/grandstream/gxp20xx/{$mac}.xml
index 40f841561c..16c3c84a6d 100644
--- a/resources/templates/provision/grandstream/gxp20xx/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp20xx/{$mac}.xml
@@ -1991,7 +1991,9 @@
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
0
diff --git a/resources/templates/provision/grandstream/gxp2100/{$mac}.xml b/resources/templates/provision/grandstream/gxp2100/{$mac}.xml
index f3457360c9..4dea5864c1 100644
--- a/resources/templates/provision/grandstream/gxp2100/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2100/{$mac}.xml
@@ -263,7 +263,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -540,33 +540,33 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
- 0
+ {$grandstream_distinctive_ringtone_1}
-
+ {$grandstream_distinctive_ringtone_name_2}
- 0
+ {$grandstream_distinctive_ringtone_2}
-
+ {$grandstream_distinctive_ringtone_name_3}
- 0
+ {$grandstream_distinctive_ringtone_3}
@@ -893,7 +893,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1521,7 +1521,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1796,7 +1796,7 @@
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -2147,7 +2147,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -3472,7 +3472,9 @@
- 0
+ {if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp2124/{$mac}.xml b/resources/templates/provision/grandstream/gxp2124/{$mac}.xml
index 4bcf7a47f3..d180e429c2 100644
--- a/resources/templates/provision/grandstream/gxp2124/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2124/{$mac}.xml
@@ -178,7 +178,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -380,28 +380,28 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
- 0
+ {$grandstream_distinctive_ringtone_1}
- 0
+ {$grandstream_distinctive_ringtone_name_2}
- 0
+ {$grandstream_distinctive_ringtone_2}
-
+ {$grandstream_distinctive_ringtone_name_3}
- 0
+ {$grandstream_distinctive_ringtone_3}
@@ -616,7 +616,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1049,7 +1049,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1243,7 +1243,7 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -1480,7 +1480,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -2285,11 +2285,21 @@
- 0
-
-
-
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp2130/{$mac}.xml b/resources/templates/provision/grandstream/gxp2130/{$mac}.xml
index 20458608a6..44bb563784 100644
--- a/resources/templates/provision/grandstream/gxp2130/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2130/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
- grandstream_distinctive_ringtone_name_1
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -6056,50 +6056,66 @@
+{if isset($grandstream_openvpn_enable)}
+ {$grandstream_openvpn_enable}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_server}
-
+
+{if isset($grandstream_openvpn_port)}
+ {$grandstream_openvpn_port}
+{else}
1194
+{/if}
+{if isset($grandstream_openvpn_transport)}
+ {$grandstream_openvpn_transport}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_ca}
-
+ {$grandstream_openvpn_cert}
-
+ {$grandstream_openvpn_key}
+{if isset($grandstream_openvpn_cipher)}
+ {$grandstream_openvpn_cipher}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_username}
-
+ {$grandstream_openvpn_password}
-
+ {$grandstream_openvpn_options}
@@ -7591,7 +7607,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7918,17 +7934,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8132,9 +8152,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8146,8 +8164,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -8155,8 +8171,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp2135/{$mac}.xml b/resources/templates/provision/grandstream/gxp2135/{$mac}.xml
index 215603c896..eed4e495a7 100644
--- a/resources/templates/provision/grandstream/gxp2135/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2135/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
- grandstream_distinctive_ringtone_name_1
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -6056,50 +6056,66 @@
+{if isset($grandstream_openvpn_enable)}
+ {$grandstream_openvpn_enable}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_server}
+{if isset($grandstream_openvpn_port)}
+ {$grandstream_openvpn_port}
+{else}
1194
+{/if}
+{if isset($grandstream_openvpn_transport)}
+ {$grandstream_openvpn_transport}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_ca}
-
+ {$grandstream_openvpn_cert}
-
+ {$grandstream_openvpn_key}
+{if isset($grandstream_openvpn_cipher)}
+ {$grandstream_openvpn_cipher}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_username}
-
+ {$grandstream_openvpn_password}
-
+ {$grandstream_openvpn_options}
@@ -7583,7 +7599,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7910,17 +7926,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8125,9 +8145,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8139,8 +8157,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -8148,8 +8164,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp2140/{$mac}.xml b/resources/templates/provision/grandstream/gxp2140/{$mac}.xml
index dec0278e19..131813c209 100644
--- a/resources/templates/provision/grandstream/gxp2140/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2140/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
- grandstream_distinctive_ringtone_name_1
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -6056,50 +6056,66 @@
+{if isset($grandstream_openvpn_enable)}
+ {$grandstream_openvpn_enable}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_server}
+{if isset($grandstream_openvpn_port)}
+ {$grandstream_openvpn_port}
+{else}
1194
+{/if}
+{if isset($grandstream_openvpn_transport)}
+ {$grandstream_openvpn_transport}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_ca}
-
+ {$grandstream_openvpn_cert}
-
+ {$grandstream_openvpn_key}
+{if isset($grandstream_openvpn_cipher)}
+ {$grandstream_openvpn_cipher}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_username}
-
+ {$grandstream_openvpn_password}
-
+ {$grandstream_openvpn_options}
@@ -7583,7 +7599,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7910,17 +7926,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8125,9 +8145,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8139,8 +8157,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -8148,8 +8164,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp2160/{$mac}.xml b/resources/templates/provision/grandstream/gxp2160/{$mac}.xml
index 138cf8188b..802852d4ec 100644
--- a/resources/templates/provision/grandstream/gxp2160/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2160/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
- grandstream_distinctive_ringtone_name_1
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -6056,50 +6056,66 @@
+{if isset($grandstream_openvpn_enable)}
+ {$grandstream_openvpn_enable}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_server}
+{if isset($grandstream_openvpn_port)}
+ {$grandstream_openvpn_port}
+{else}
1194
+{/if}
+{if isset($grandstream_openvpn_transport)}
+ {$grandstream_openvpn_transport}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_ca}
-
+ {$grandstream_openvpn_cert}
-
+ {$grandstream_openvpn_key}
+{if isset($grandstream_openvpn_cipher)}
+ {$grandstream_openvpn_cipher}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_username}
-
+ {$grandstream_openvpn_password}
-
+ {$grandstream_openvpn_options}
@@ -7595,7 +7611,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7922,17 +7938,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8137,9 +8157,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8151,8 +8169,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -8160,8 +8176,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp2170/{$mac}.xml b/resources/templates/provision/grandstream/gxp2170/{$mac}.xml
index 10eec38c43..d4346f02e8 100644
--- a/resources/templates/provision/grandstream/gxp2170/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2170/{$mac}.xml
@@ -354,7 +354,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1308,7 +1308,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -2256,7 +2256,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -2615,7 +2615,7 @@
- grandstream_distinctive_ringtone_name_1
+ {$grandstream_distinctive_ringtone_name_1}
@@ -3205,7 +3205,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -4155,7 +4155,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -5105,7 +5105,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -6056,50 +6056,66 @@
+{if isset($grandstream_openvpn_enable)}
+ {$grandstream_openvpn_enable}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_server}
-
+
+{if isset($grandstream_openvpn_port)}
+ {$grandstream_openvpn_port}
+{else}
1194
+{/if}
+{if isset($grandstream_openvpn_transport)}
+ {$grandstream_openvpn_transport}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_ca}
-
+ {$grandstream_openvpn_cert}
-
+ {$grandstream_openvpn_key}
+{if isset($grandstream_openvpn_cipher)}
+ {$grandstream_openvpn_cipher}
+{else}
0
+{/if}
-
+ {$grandstream_openvpn_username}
-
+ {$grandstream_openvpn_password}
-
+ {$grandstream_openvpn_options}
@@ -7583,7 +7599,7 @@
- 0
+ {$grandstream_blf_remote_status}
@@ -7910,17 +7926,21 @@
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
- 0
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
- 0
+ {$grandstream_headset_type}
+{/if}
@@ -8125,9 +8145,7 @@
{if isset($grandstream_wallpaper_url)}
1
{$grandstream_wallpaper_url}
-{else}
- 0
-
+
{/if}
@@ -8139,8 +8157,6 @@
{if isset($grandstream_screensaver)}
{$grandstream_screensaver}
-{else}
- 1
{/if}
@@ -8148,8 +8164,6 @@
{if isset($grandstream_screensaver_source)}
{$grandstream_screensaver_source}
-{else}
- 0
{/if}
diff --git a/resources/templates/provision/grandstream/gxp21xx/{$mac}.xml b/resources/templates/provision/grandstream/gxp21xx/{$mac}.xml
index 06291563af..932b41e83e 100644
--- a/resources/templates/provision/grandstream/gxp21xx/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp21xx/{$mac}.xml
@@ -122,7 +122,7 @@
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -324,28 +324,28 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
- 0
+ {$grandstream_distinctive_ringtone_1}
-
+ {$grandstream_distinctive_ringtone_name_2}
- 0
+ {$grandstream_distinctive_ringtone_2}
-
+ {$grandstream_distinctive_ringtone_name_3}
- 0
+ {$grandstream_distinctive_ringtone_3}
@@ -559,7 +559,7 @@
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -991,7 +991,7 @@
-
+ {if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1185,7 +1185,7 @@
0
-
+ {$grandstream_distinctive_ringtone_name_1}
@@ -1421,7 +1421,7 @@
-
+ {if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -1845,7 +1845,7 @@
-
+ {if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -2276,7 +2276,7 @@
-
+ {if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -3062,7 +3062,21 @@ Outgoing calls. 0 - No, 1 - Yes. Default is 0 -->
- 0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp21xxbk/{$mac}.xml b/resources/templates/provision/grandstream/gxp21xxbk/{$mac}.xml
index 66bde7e9f3..fb21b136ec 100644
--- a/resources/templates/provision/grandstream/gxp21xxbk/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp21xxbk/{$mac}.xml
@@ -272,7 +272,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -530,33 +530,33 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-0
+{$grandstream_distinctive_ringtone_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
@@ -836,7 +836,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1399,7 +1399,7 @@
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1647,7 +1647,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -1955,7 +1955,7 @@
-
+{if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -2505,7 +2505,7 @@
-
+{if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -3062,7 +3062,7 @@
-
+{if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -3772,7 +3772,21 @@ Outgoing calls. 0 - No, 1 - Yes. Default is 0 -->
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp2200/{$mac}.xml b/resources/templates/provision/grandstream/gxp2200/{$mac}.xml
index 9b1cf9c7ef..3daed2bfba 100644
--- a/resources/templates/provision/grandstream/gxp2200/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp2200/{$mac}.xml
@@ -344,7 +344,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -367,7 +367,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -375,7 +375,7 @@
-
+{$grandstream_distinctive_ringtone_name_2}
@@ -383,7 +383,7 @@
-
+{$grandstream_distinctive_ringtone_name_3}
@@ -762,7 +762,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1190,7 +1190,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1214,7 +1214,7 @@ VNumber: 0, 1, 2. -->
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -1620,7 +1620,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
content://settings/system/ringtone
@@ -2045,7 +2045,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -2471,7 +2471,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -3337,13 +3337,23 @@ Account 5 Codec Settings
0
{/if}
-
-
-0
-
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxp3240/{$mac}.xml b/resources/templates/provision/grandstream/gxp3240/{$mac}.xml
index ad6099c077..c2123cf046 100644
--- a/resources/templates/provision/grandstream/gxp3240/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxp3240/{$mac}.xml
@@ -555,7 +555,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -578,7 +578,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -586,7 +586,7 @@
-
+{$grandstream_distinctive_ringtone_name_2}
@@ -594,7 +594,7 @@
-
+{$grandstream_distinctive_ringtone_name_3}
@@ -973,7 +973,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1401,7 +1401,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1425,7 +1425,7 @@ VNumber: 0, 1, 2. -->
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -1831,7 +1831,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
content://settings/system/ringtone
@@ -2256,7 +2256,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -2682,7 +2682,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -3547,13 +3547,23 @@ Account 5 Codec Settings
0
{/if}
-
-
-0
-
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxv3240/{$mac}.xml b/resources/templates/provision/grandstream/gxv3240/{$mac}.xml
index e20791bf76..aac3d95b55 100644
--- a/resources/templates/provision/grandstream/gxv3240/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxv3240/{$mac}.xml
@@ -600,7 +600,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1255,7 +1255,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1893,7 +1893,7 @@
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1924,7 +1924,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -2534,7 +2534,7 @@
-
+{if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
@@ -3173,7 +3173,7 @@
-
+{if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -3814,7 +3814,7 @@
-
+{if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -5408,14 +5408,18 @@
{if isset($grandstream_headset_type)}
+{$grandstream_headset_type}
+
+
+
{$grandstream_headset_type}
-{else}
-0
{/if}
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
diff --git a/resources/templates/provision/grandstream/gxv3275/{$mac}.xml b/resources/templates/provision/grandstream/gxv3275/{$mac}.xml
index d3c41f54f2..8afee5dfec 100644
--- a/resources/templates/provision/grandstream/gxv3275/{$mac}.xml
+++ b/resources/templates/provision/grandstream/gxv3275/{$mac}.xml
@@ -560,7 +560,7 @@
-
+{if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -583,7 +583,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -591,7 +591,7 @@
-
+{$grandstream_distinctive_ringtone_name_2}
@@ -599,7 +599,7 @@
-
+{$grandstream_distinctive_ringtone_name_3}
@@ -978,7 +978,7 @@
-
+{if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
@@ -1406,7 +1406,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.3.user_id}@{$account.3.server_address}{/if}
@@ -1430,7 +1430,7 @@ VNumber: 0, 1, 2. -->
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -1836,7 +1836,7 @@ VNumber: 0, 1, 2. -->
-
+{if $nway_conference == true}nway{$account.4.user_id}@{$account.4.server_address}{/if}
content://settings/system/ringtone
@@ -2261,7 +2261,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.5.user_id}@{$account.5.server_address}{/if}
@@ -2687,7 +2687,7 @@ Account 5 Codec Settings
-
+{if $nway_conference == true}nway{$account.6.user_id}@{$account.6.server_address}{/if}
@@ -3551,13 +3551,23 @@ Account 5 Codec Settings
0
{/if}
-
-
-0
-
-0
+{if isset($grandstream_headset_key_mode)}
+ {$grandstream_headset_key_mode}
+{/if}
+
+
+
+
+{if isset($grandstream_headset_type)}
+ {$grandstream_headset_type}
+
+
+
+
+ {$grandstream_headset_type}
+{/if}
diff --git a/resources/templates/provision/grandstream/ht802/{$mac}.xml b/resources/templates/provision/grandstream/ht802/{$mac}.xml
index cc6672c368..63526f3143 100644
--- a/resources/templates/provision/grandstream/ht802/{$mac}.xml
+++ b/resources/templates/provision/grandstream/ht802/{$mac}.xml
@@ -1109,7 +1109,7 @@
0
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
@@ -1987,7 +1987,7 @@
0
-
+ {if $nway_conference == true}nway{$account.2.user_id}@{$account.2.server_address}{/if}
diff --git a/resources/templates/provision/grandstream/ht818/{$mac}.xml b/resources/templates/provision/grandstream/ht818/{$mac}.xml
index fae40cd009..88f170f8d4 100644
--- a/resources/templates/provision/grandstream/ht818/{$mac}.xml
+++ b/resources/templates/provision/grandstream/ht818/{$mac}.xml
@@ -1048,7 +1048,7 @@
0
-
+ {if $nway_conference == true}nway{$account.1.user_id}@{$account.1.server_address}{/if}
diff --git a/resources/templates/provision/grandstream/wp820/{$mac}.xml b/resources/templates/provision/grandstream/wp820/{$mac}.xml
index 2408aafad6..d6ac56350b 100644
--- a/resources/templates/provision/grandstream/wp820/{$mac}.xml
+++ b/resources/templates/provision/grandstream/wp820/{$mac}.xml
@@ -556,19 +556,19 @@
-
+{$grandstream_distinctive_ringtone_name_1}
-
+{$grandstream_distinctive_ringtone_name_2}
-
+{$grandstream_distinctive_ringtone_name_3}
@@ -1185,7 +1185,7 @@
-
+{$grandstream_distinctive_ringtone_name_1}
@@ -1195,23 +1195,23 @@
-
+{$grandstream_distinctive_ringtone_name_2}
-0
+{$grandstream_distinctive_ringtone_2}
-
+{$grandstream_distinctive_ringtone_name_3}
-0
+{$grandstream_distinctive_ringtone_3}
diff --git a/resources/templates/provision/polycom/3.x/{$mac}.cfg b/resources/templates/provision/polycom/3.x/{$mac}.cfg
index d90ce262b1..c049239c40 100644
--- a/resources/templates/provision/polycom/3.x/{$mac}.cfg
+++ b/resources/templates/provision/polycom/3.x/{$mac}.cfg
@@ -1,17 +1,19 @@
-
-
-
diff --git a/resources/templates/provision/polycom/4.x/{$mac}.cfg b/resources/templates/provision/polycom/4.x/{$mac}.cfg
index 3b6538db33..7a5ed10116 100644
--- a/resources/templates/provision/polycom/4.x/{$mac}.cfg
+++ b/resources/templates/provision/polycom/4.x/{$mac}.cfg
@@ -217,9 +217,12 @@
up.headsetMode="1"
voice.aec.hf.enable="1"
voice.aec.hs.enable="1"
-
- msg.mwi.{$row.line_number}.callBackMode="contact"
- msg.mwi.{$row.line_number}.callBack="{$voicemail_number}"
+ {foreach $lines as $row}
+ msg.mwi.{$row.line_number}.callBackMode="contact"
+ msg.mwi.{$row.line_number}.callBack="{$voicemail_number}"
+ {/foreach}
+ reg.1.server.1.subscribe.expires="2592000"
+ {if isset($polycom_contacts_directory)}contacts_directory="{$polycom_contacts_directory}/{$domain_name}/"{/if}
/>
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+{if $row.contact_name_given != ""}
+{if $row.contact_organization != ""}
+ {$row.contact_organization} {$row.contact_name_given} {$row.contact_name_family}
+{else}
+ {$row.contact_name_given} {$row.contact_name_family}
+{/if}
+{else}
+{$row.effective_caller_id_name}
+{/if}
+{foreach $row.numbers as $number}
+{if $number.phone_number != ""}
+ {$number.phone_number}
+{else}
+ {$number.phone_extension}
+{/if}
+{/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+{if $row.contact_name_given != ""}
+{if $row.contact_organization != ""}
+ {$row.contact_organization} {$row.contact_name_given} {$row.contact_name_family}
+{else}
+ {$row.contact_name_given} {$row.contact_name_family}
+{/if}
+{else}
+ {$row.effective_caller_id_name}
+{/if}
+{foreach $row.numbers as $number}
+{if $number.phone_number != ""}
+ {$number.phone_number}
+{else}
+ {$number.phone_extension}
+{/if}
+{/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+{if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+{else}
+ {$row.effective_caller_id_name}
+{/if}
+{if $row.phone_number != ""}
+ {$row.phone_number}
+{else}
+ {$row.phone_extension}
+{/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+{if $row.contact_name_given != ""}
+{if $row.contact_organization != ""}
+ {$row.contact_organization} {$row.contact_name_given} {$row.contact_name_family}
+{else}
+ {$row.contact_name_given} {$row.contact_name_family}
+{/if}
+{else}
+ {$row.effective_caller_id_name}
+{/if}
+{if $row.category == "extensions"}
+{if $row.phone_number != ""}
+ {$row.phone_number}
+{else}
+ {$row.phone_extension}
+{/if}
+{else}
+{foreach $row.numbers as $number}
+{if $number.phone_number != ""}
+ {$number.phone_number}
+{else}
+ {$number.phone_extension}
+{/if}
+{/foreach}
+{/if}
+
+{/if}
+{/foreach}
+
diff --git a/resources/templates/provision/yealink/vp59/favorite_setting.xml b/resources/templates/provision/yealink/vp59/favorite_setting.xml
new file mode 100644
index 0000000000..ba7275358e
--- /dev/null
+++ b/resources/templates/provision/yealink/vp59/favorite_setting.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/resources/templates/provision/yealink/vp59/y000000000000.boot b/resources/templates/provision/yealink/vp59/y000000000000.boot
new file mode 100644
index 0000000000..178973c04a
--- /dev/null
+++ b/resources/templates/provision/yealink/vp59/y000000000000.boot
@@ -0,0 +1,7 @@
+#!version:1.0.0.1
+## The header above must appear as-is in the first line
+
+include:config "y000000000091.cfg"
+include:config "{$mac}.cfg"
+
+overwrite_mode = {$yealink_overwrite_mode}
diff --git a/resources/templates/provision/yealink/vp59/y000000000091.cfg b/resources/templates/provision/yealink/vp59/y000000000091.cfg
new file mode 100644
index 0000000000..34d8cde266
--- /dev/null
+++ b/resources/templates/provision/yealink/vp59/y000000000091.cfg
@@ -0,0 +1,1777 @@
+#!version:1.0.0.1
+
+##File header "#!version:1.0.0.1" can not be edited or deleted, and must be placed in the first line.##
+
+
+#######################################################################################
+## Network CDP ##
+#######################################################################################
+static.network.cdp.enable =
+static.network.cdp.packet_interval =
+
+#######################################################################################
+## Network IPv6 ##
+#######################################################################################
+static.network.ipv6_static_dns_enable =
+static.network.ipv6_icmp_v6.enable =
+static.network.ipv6_secondary_dns =
+static.network.ipv6_primary_dns =
+static.network.ipv6_internet_port.gateway =
+static.network.ipv6_internet_port.ip =
+static.network.ipv6_internet_port.type =
+static.network.ipv6_prefix =
+
+
+#######################################################################################
+## Hostname ##
+#######################################################################################
+static.network.dhcp_host_name =
+
+#######################################################################################
+## Network Internet ##
+#######################################################################################
+static.network.ip_address_mode =
+static.network.vlan.pc_port_mode =
+static.network.static_dns_enable =
+static.network.pc_port.enable =
+static.network.primary_dns =
+static.network.secondary_dns =
+static.network.internet_port.gateway =
+static.network.internet_port.mask =
+static.network.internet_port.ip =
+static.network.internet_port.type =
+
+
+#######################################################################################
+## Network Advanced ##
+#######################################################################################
+
+##It configures the transmission mode and speed of the Internet (WAN) port.
+##0-Auto Negotiate
+##1-Full Duplex 10Mbps
+##2-Full Duplex 100Mbps
+##3-Half Duplex 10Mbps
+##4-Half Duplex 100Mbps
+##5-Full Duplex 1000Mbps (only applicable to SIP-T42G and SIP-T46G IP phones)
+##The default value is 0.It takes effect after a reboot.
+static.network.internet_port.speed_duplex =
+
+##It configures the transmission mode and speed of the PC (LAN) port.
+##0-Auto Negotiate
+##1-Full Duplex 10Mbps
+##2-Full Duplex 100Mbps
+##3-Half Duplex 10Mbps
+##4-Half Duplex 100Mbps
+##5-Full Duplex 1000Mbps (only applicable to SIP-T42G and SIP-T46G IP phones)
+##The default value is 0.It takes effect after a reboot.
+static.network.pc_port.speed_duplex =
+
+##It enable or disable to use A record of TTL
+##The defalue value is 1;0-Disable 1-Enable
+static.network.dns.ttl_enable =
+
+##It configures the LAN MTU
+##The default value is 1500,.Integer from 128 to 1500.It takes effect after a reboot.
+static.network.mtu_value =
+
+static.network.dhcp.option60type =
+
+static.network.dns.last_cache_expired.enable =
+static.network.dns.last_cache_expired =
+static.network.dns.query_timeout =
+
+#######################################################################################
+## VLAN ##
+#######################################################################################
+static.network.vlan.internet_port_enable =
+static.network.vlan.internet_port_vid =
+static.network.vlan.internet_port_priority =
+static.network.vlan.pc_port_enable =
+static.network.vlan.pc_port_vid =
+static.network.vlan.pc_port_priority =
+static.network.vlan.dhcp_enable =
+static.network.vlan.dhcp_option =
+##It configures LLDP or manually VLAN can't obtain IP, whether to switch to other methods of VLAN or closed VLAN to get IP
+##(Except T19P/T21P Models) 0-Disable 1-Enable
+static.network.vlan.vlan_change.enable =
+
+#######################################################################################
+## WEB Port ##
+#######################################################################################
+##It configures the HTTP port for web server access.
+##The default value is 80.It takes effect after a reboot.
+static.network.port.http =
+
+##It configures the HTTPS port for web server access.
+##The default value is 443.It takes effect after a reboot.
+static.network.port.https =
+
+static.wui.https_enable =
+static.wui.http_enable =
+
+#######################################################################################
+## QoS ##
+#######################################################################################
+##It configures the audio QoS.
+##The default value is 46.It takes effect after a reboot.Integer from 0 to 63
+static.network.qos.audiotos =
+
+##It configures the SIP QoS.
+##The default value is 26.It takes effect after a reboot.Integer from 0 to 63
+static.network.qos.signaltos =
+
+##It configures the video QoS.
+##The default value is 34.It takes effect after a reboot.Integer from 0 to 63
+static.network.qos.videotos =
+
+#######################################################################################
+## 802.1X ##
+#######################################################################################
+static.network.802_1x.mode =
+static.network.802_1x.identity =
+static.network.802_1x.md5_password =
+static.network.802_1x.root_cert_url =
+static.network.802_1x.client_cert_url =
+
+##It configure the mouth of the PC 802.1 x - logoff function.It takes effect after a reboot.
+##The default value is 0-Dsable , 1-Enable
+static.network.802_1x.proxy_eap_logoff.enable =
+
+static.network.802_1x.eap_fast_provision_mode =
+static.network.802_1x.anonymous_identity =
+#######################################################################################
+## OpenVPN(Except T19P Model) ##
+#######################################################################################
+static.network.vpn_enable =
+static.openvpn.url =
+
+#######################################################################################
+## LLDP ##
+#######################################################################################
+static.network.lldp.enable =
+static.network.lldp.packet_interval =
+
+#######################################################################################
+## Span to PC ##
+#######################################################################################
+static.network.span_to_pc_port =
+
+#######################################################################################
+## RTP Port ##
+#######################################################################################
+static.sip.min_udp_port =
+static.sip.max_udp_port =
+static.sip.min_tcp_port =
+static.sip.max_tcp_port =
+
+#######################################################################################
+## Syslog ##
+#######################################################################################
+static.syslog.enable =
+static.syslog.server =
+static.syslog.level =
+static.syslog.server_port =
+static.syslog.transport_type =
+static.syslog.facility =
+static.syslog.prepend_mac_address.enable =
+static.local_log.enable =
+static.local_log.level =
+static.local_log.max_file_size =
+
+#######################################################################################
+## TR069 ##
+#######################################################################################
+static.managementserver.enable =
+static.managementserver.username =
+static.managementserver.password =
+static.managementserver.url =
+static.managementserver.connection_request_username =
+static.managementserver.connection_request_password =
+static.managementserver.periodic_inform_enable =
+static.managementserver.periodic_inform_interval =
+
+#######################################################################################
+## Autoprovision ## ##
+#######################################################################################
+### It enables or disables the phone to synchronize personalized configuration settings with the auto provisioning server.
+### If it is set to 1 (Enabled), personalized configuration settings via web/phone user interface are saved in the MAC-local.cfg file on the phone,
+### and then the phone will upload the MAC-local.cfg file to the provisioning server. During auto provisioning, the phone requests to download the MAC-local.cfg file on the provisioning server.
+### 0-Disabled, 1-Enabled. The default value is 0.
+static.auto_provision.custom.sync =
+
+### It enables or disables the phone to protect personalized configuration settings even after auto provisioning.
+### If it is set to 1 (Enabled), personalized configuration settings via web/phone user interface will be protected and remained after auto provisioning.
+### 0-Disabled, 1-Enabled. The default value is 0.
+static.auto_provision.custom.protect =
+static.auto_provision.custom.sync.path =
+static.auto_provision.custom.upload_method =
+static.auto_provision.attempt_expired_time =
+
+##V83 Add
+static.auto_provision.authentication.expired_time =
+static.auto_provision.connect.keep_alive =
+
+static.auto_provision.inactivity_time_expire =
+
+custom.auto_provision.save_rps_info.enable =
+static.auto_provision.attempt_before_failed =
+static.auto_provision.retry_delay_after_file_transfer_failed =
+static.auto_provision.server.type =
+static.auto_provision.update_file_mode =
+static.auto_provision.prompt.enable =
+#######################################################################################
+## Autop Mode ##
+#######################################################################################
+static.auto_provision.power_on =
+
+#######################################################################################
+## Autop PNP ##
+#######################################################################################
+static.auto_provision.pnp_enable =
+
+#######################################################################################
+## Autop DHCP ##
+#######################################################################################
+static.auto_provision.dhcp_option.enable =
+static.auto_provision.dhcp_option.list_user_options =
+
+#######################################################################################
+## Autop Repeat ##
+#######################################################################################
+static.auto_provision.repeat.enable =
+static.auto_provision.repeat.minutes =
+
+#######################################################################################
+## Autop Weekly ##
+#######################################################################################
+static.auto_provision.weekly.enable =
+static.auto_provision.weekly.dayofweek =
+static.auto_provision.weekly.begin_time =
+static.auto_provision.weekly.end_time =
+static.auto_provision.weekly_upgrade_interval =
+#######################################################################################
+## Autop URL ##
+#######################################################################################
+static.auto_provision.server.url =
+static.auto_provision.server.username =
+static.auto_provision.server.password =
+
+#######################################################################################
+## Autop AES Key ##
+#######################################################################################
+##It configures the AES key for decrypting the Common CFG file. The valid characters contain: 0 ~ 9, A ~ Z, a ~ z.
+##The default value is blank.
+static.auto_provision.aes_key_16.com =
+
+##It configures the AES key for decrypting the MAC-Oriented CFG file. The valid characters contain: 0 ~ 9, A ~ Z, a ~ z.
+##The default value is blank.
+
+static.auto_provision.aes_key_16.mac =
+static.auto_provision.aes_key_in_file =
+
+##It configures the access URL of the custom MAC-Oriented CFG file.
+##The default value is blank.
+static.custom_mac_cfg.url =
+
+##It configures the value (vendor name of the device) of DHCP option 60.
+##The default value is yealink.
+static.auto_provision.dhcp_option.option60_value =
+##It configuration phone update to restart automatically.It takes effect after a reboot.
+##0-Disable 1-Enable
+static.auto_provision.reboot_force.enable =
+
+#######################################################################################
+## Autop wildcard ##
+#######################################################################################
+
+static.auto_provision.url_wildcard.pn =
+
+#######################################################################################
+## Autop Code ##
+#######################################################################################
+##It configures the name of the code for triggering auto provisioning.
+##The default value is blank.It takes effect after a reboot.
+static.autoprovision.1.name =
+
+##It configures the code for triggering auto provisioning.
+##Valid characters are digits, # and *.Example:static.autoprovision.1.code = *99The default value is blank.
+##It takes effect after a reboot.
+static.autoprovision.1.code =
+
+##It configures the access URL of auto provisioning server.The default value is blank.
+##It takes effect after a reboot.
+static.autoprovision.1.url =
+
+##It configures the user name for authentication during auto provisioning.
+##The default value is blank.It takes effect after a reboot.
+static.autoprovision.1.user =
+
+##It configures the password for authentication during auto provisioning.
+##The default value is blank.It takes effect after a reboot.
+static.autoprovision.1.password =
+
+##It configures the AES key for decrypting the Common CFG file.
+##The default value is blank.It takes effect after a reboot.
+static.autoprovision.1.com_aes =
+
+##It configures the AES key for decrypting the MAC-Oriented CFG file.
+##The default value is blank.It takes effect after a reboot.
+static.autoprovision.1.mac_aes =
+
+#######################################################################################
+## Watch Dog ##
+#######################################################################################
+static.watch_dog.enable =
+
+#######################################################################################
+## SIP Advanced ##
+#######################################################################################
+sip.use_23_as_pound =
+sip.rfc2543_hold =
+sip.use_out_bound_in_dialog =
+sip.reg_surge_prevention =
+sip.send_response_by_request =
+sip.notify_reboot_enable =
+sip.disp_incall_to_info =
+sip.listen_port =
+sip.tls_listen_port =
+sip.trust_ctrl =
+static.sip.nat_stun.enable =
+static.sip.nat_stun.server =
+static.sip.nat_stun.port =
+sip.timer_t1 =
+sip.timer_t2 =
+sip.timer_t4 =
+
+##It is ASCII conversion into corresponding symbols.
+##The defalult value is blank. 0-Disable 1-Enable
+sip.escape_characters.enable =
+
+sip.reserve_characters =
+
+##The default value is 0 ( said according to the transmission mode configured to listen on port),1-
+##1-said at the same time to monitor TCP and UDP
+##2-said to monitor TCP and UDP at the same time, and from the BLF - the LIST to subscribe to the contact with a transport = TCP parameters
+sip.listen_mode =
+
+##The default value is 0.(contracting out the random contact, via port to carry fixed port).It takes effect after a reboot.
+##1-the out-contracting port random contact, via port to carry
+##2-the out-contracting ports fixed contact, via carry fix
+sip.tcp_port_random_mode =
+
+sip.call_fail_use_reason.enable =
+sip.cid_source.preference =
+
+##V83 Add
+sip.request_validation.event =
+sip.request_validation.digest.realm =
+sip.request_validation.digest.list =
+sip.request_validation.source.list =
+
+#######################################################################################
+## Echo Cancellation ##
+#######################################################################################
+voice.vad =
+voice.cng =
+voice.echo_cancellation =
+voice.ans_nb.enable =
+voice.tns.enable =
+
+#######################################################################################
+## Jitter Buffer ##
+#######################################################################################
+voice.jib.adaptive =
+voice.jib.min =
+voice.jib.max =
+voice.jib.normal =
+
+#######################################################################################
+## Tones ##
+#######################################################################################
+voice.tone.country =
+voice.tone.dial =
+voice.tone.ring =
+voice.tone.busy =
+voice.tone.congestion =
+voice.tone.callwaiting =
+voice.tone.dialrecall =
+voice.tone.info =
+voice.tone.stutter =
+voice.tone.autoanswer =
+
+#######################################################################################
+## Volume ##
+#######################################################################################
+voice.handfree_send =
+voice.handset_send =
+voice.headset_send =
+
+voice.headset.autoreset_spk_vol =
+voice.handset.autoreset_spk_vol =
+voice.handfree.autoreset_spk_vol =
+
+#######################################################################################
+## Transfer ##
+#######################################################################################
+##It enables or disables the transferee party¡¯s phone to prompt a missed call on the LCD screen before displaying
+##the caller ID when performing a semi-attended transfer.0-Enabled,1-Disabled
+##The default value is 1.
+transfer.semi_attend_tran_enable =
+
+##It enables or disables the phone to complete the blind transfer through on-hook.0-Disabled,1-Enabled .
+##The default value is 1.
+transfer.blind_tran_on_hook_enable =
+
+##It enables or disables the phone to transfer call to the two parties after a local conference call hangs up.
+##0-Disabled,1-Enabled.
+##The default value is 0.
+transfer.tran_others_after_conf_enable =
+
+##It enables or disables the phone to complete the attended transfer through on-hook.
+##0-Disabled,1-Enabled.
+##The default value is 1.
+transfer.on_hook_trans_enable =
+
+##It configures the DSS key behavior during an active call when user presses the DSS
+##key and the DSS key is configured as a speed dial, transfer or BLF/BLF list key.
+##0-New Call,1-Attended Transfer,2-Blind Transfer.
+##The default value is 2.
+transfer.dsskey_deal_type =
+
+##It enables or disables the phone to enter Transfer to menu during multiple calls when pressing the transfer soft key or TRAN key.
+##0-Disabled,1-Enabled.
+##The default value is 1.
+transfer.multi_call_trans_enable =
+
+#######################################################################################
+## Language Settings ##
+#######################################################################################
+##It configures the language of the web user interface.
+lang.wui =
+
+##It configures the language of the phone user interface.
+##The default value is English.
+lang.gui =
+
+gui_lang.url =
+gui_lang.delete =
+wui_lang.url =
+wui_lang_note.url =
+wui_lang.delete =
+
+#######################################################################################
+## Auto Redial ##
+#######################################################################################
+auto_redial.enable =
+auto_redial.interval =
+auto_redial.times =
+
+#######################################################################################
+## Zero Touch ##
+#######################################################################################
+static.zero_touch.enable =
+static.zero_touch.wait_time =
+static.features.hide_zero_touch_url.enable =
+static.zero_touch.network_fail_wait_times =
+static.zero_touch.network_fail_delay_times =
+
+
+#######################################################################################
+## Dial Plan ##
+#######################################################################################
+dialplan.area_code.code =
+dialplan.area_code.min_len =
+dialplan.area_code.max_len =
+dialplan.area_code.line_id =
+
+### X ranges from 1 to 10
+###dialplan.block_out.number.x =
+###dialplan.block_out.line_id.x =
+
+dialplan.block_out.number.1 =
+dialplan.block_out.line_id.1 =
+
+###X ranges from 1 to 100
+###dialplan.dialnow.rule.X =
+###dialplan.dialnow.line_id.X =
+
+dialplan.dialnow.rule.1 =
+dialplan.dialnow.line_id.1 =
+
+###X ranges from 1 to 100
+###dialplan.replace.prefix.X =
+###dialplan.replace.replace.X =
+###dialplan.replace.line_id.X =
+
+dialplan.replace.prefix.1 =
+dialplan.replace.replace.1 =
+dialplan.replace.line_id.1 =
+
+dialplan_dialnow.url =
+phone_setting.dialnow_delay =
+dialplan_replace_rule.url =
+
+
+#######################################################################################
+## Remote Phonebook(Except T20P Model) ##
+#######################################################################################
+###X ranges from 1 to 5
+###remote_phonebook.data.X.url =
+###remote_phonebook.data.X.name =
+
+remote_phonebook.data.1.url =
+remote_phonebook.data.1.name =
+remote_phonebook.display_name =
+
+###It enables or disables the phone to update the data of the remote phone book at a time when accessing the remote phone book.
+###0-Disabled, 1-Enabled. The default value is 0.
+features.remote_phonebook.enter_update_enable =
+
+##It enables or disables the phone to perform a remote phone book search when receiving an incoming call.
+##0-Disabled,1-Enabled.
+##The default value is 0.
+features.remote_phonebook.enable =
+
+##It configures the interval (in seconds) for the phone to update the data of the remote phone book from the remote phone book server.
+##The value 0 means the phone will not regularly update the data of the remote phone book from the remote phone book server.
+##The default value is 21600.Integer from 3600 to 2592000,and 0.
+features.remote_phonebook.flash_time =
+
+#######################################################################################
+## LDAP ##
+#######################################################################################
+##It enables or disables LDAP feature.0-Disabled,1-Enabled.
+##The default value is 0.
+ldap.enable =
+
+##It configures the criteria for searching the contact name attributes.
+##Example:ldap.name_filter = (|(cn=%)(sn=%)).
+##The default value is blank.
+ldap.name_filter =
+
+##It configures the criteria for searching the contact number attributes.
+##Example:ldap.number_filter = (|(telephoneNumber=%)(mobile=%)(ipPhone=%))
+##The default value is blank.
+ldap.number_filter =
+
+##It configures the IP address or domain name of the LDAP server.
+##The default value is blank.
+ldap.host =
+
+##It configures the port of the LDAP server.
+##The default value is 389.Integer from 1 to 65535.
+ldap.port =
+
+##It configures the LDAP search base which corresponds to the location of the LDAP phonebook.
+##Example:ldap.base = dc=yealink,dc=cn.
+##The default value is blank.
+ldap.base =
+
+##It configures the user name for accessing the LDAP server.
+##The default value is blank.
+ldap.user =
+
+##It configures the password for accessing the LDAP server.
+##The default value is blank.
+ldap.password =
+
+##It configures the maximum of the search results returned by the LDAP server to be displayed.
+##The default value is 50.Integer from 1 to 32000.
+ldap.max_hits =
+
+##It configures the name attributes of each record to be returned by the LDAP server.
+##Multiple attributes are separated by spaces.Example:ldap.name_attr =sn cn.
+##The default value is blank.
+ldap.name_attr =
+
+##It configures the number attributes of each record to be returned by the LDAP server.
+##Multiple attributes are separated by spaces.Example:ldap.numb_attr = Mobile ipPhone.
+##The default value is blank.
+ldap.numb_attr =
+
+##It configures the display name of the contact record displayed on the LCD screen. The value of this parameter must start with ¡°%¡± symbol.
+##Example:ldap.display_name = %cn
+##The default value is blank.
+ldap.display_name =
+
+##It configures the LDAP version.
+##The default value is 3.
+ldap.version =
+
+##It enables or disables the phone to perform an LDAP search when receiving an incoming call.
+##0-Disabled,1-Enabled.
+##The default value is 0.
+ldap.call_in_lookup =
+
+##It enables or disables the phone to sort the search results in alphabetical order or numerical order.
+##0-Disabled,1-Enabled.
+##The default value is 0.
+ldap.ldap_sort =
+##It is the electricity + start, automatic search + 00 the beginning and the beginning of the numbe
+##The default value is 0.(0-Disable,1-Enable )(Except T19P/T21P Models)
+ldap.incoming_call_special_search.enable =
+##The default value is 0,value of 0 to 2, respectively the ldap, ldap + StarTLS and ldaps
+ldap.tls_mode =
+ldap.call_out_lookup =
+ldap.customize_label=
+#######################################################################################
+## Features ##
+#######################################################################################
+features.normal_refuse_code =
+features.auto_answer_delay =
+features.allow_mute =
+features.group_listen_in_talking_enable =
+features.call_completion_enable =
+features.call_num_filter =
+features.direct_ip_call_enable =
+features.relog_offtime =
+features.ringer_device.is_use_headset =
+features.factory_pwd_enable =
+features.anonymous_response_code =
+features.show_action_uri_option =
+features.reset_by_long_press_enable =
+features.upload_server =
+features.call_log_show_num =
+features.call_invite_format =
+
+phone_setting.logon_wizard_forever_wait =
+features.caller_name_type_on_dialing =
+features.off_hook_answer.enable =
+features.auto_linekeys.enable =
+
+
+features.blf_pickup_only_send_code =
+##It is configured in the middle of the screen shows the current default at the bottom of the account name.
+##The default is 0.CNT version 1.
+features.reboot_in_talk_enable =
+features.barge_in_via_username.enable =
+features.flash_url_dsskey_led.enable =
+static.features.default_account =
+features.linekey_call_with_default_account =
+
+
+#######################################################################################
+## Features Forward ##
+#######################################################################################
+
+features.fwd_mode =
+features.fwd_diversion_enable =
+
+#######################################################################################
+## Features DND ##
+#######################################################################################
+
+features.dnd_mode =
+features.dnd.enable =
+features.dnd.on_code =
+features.dnd.off_code =
+features.dnd_refuse_code =
+features.dnd.emergency_enable =
+features.dnd.emergency_authorized_number =
+
+#######################################################################################
+## Features Bluetooth ##
+#######################################################################################
+features.bluetooth_enable =
+static.bluetooth.function.enable =
+features.bluetooth_adapter_name=
+
+voice.bluetooth_headset_send=
+#######################################################################################
+## Features BLF ##
+#######################################################################################
+
+##It enables or disables the phone to deal with the Version header in the BLF NOTIFY message sent by the server.
+##0-Disabled,1-Enabled.
+##The default value is 0.It takes effect after a reboot.
+features.blf_list_version =
+
+#######################################################################################
+## Features Intercom ##
+#######################################################################################
+features.intercom.allow =
+features.intercom.mute =
+features.intercom.tone =
+features.intercom.barge =
+features.intercom.led.enable =
+features.intercom.subscribe.enable =
+features.intercom.barge_in_dialing.enable=
+sip.intercom_sub.enable =
+#######################################################################################
+## Features Hotline ##
+#######################################################################################
+##It configures the hotline number.
+##The default value is blank.
+features.hotline_number =
+
+##It configures the delay time (in seconds) for the phone to dial out the hotline number automatically.
+##The default value of delay time is 4.Integer from 0 to 10
+features.hotline_delay =
+
+#######################################################################################
+## Features DTMF ##
+#######################################################################################
+features.dtmf.hide =
+
+###Except T20P Model
+features.dtmf.hide_delay =
+
+features.dtmf.repetition =
+features.dtmf.transfer =
+features.dtmf.replace_tran =
+features.dtmf.duration =
+features.dtmf.volume =
+features.play_local_dtmf_tone_enable =
+
+#######################################################################################
+## Features Audio Settings ##
+#######################################################################################
+features.headset_prior =
+features.headset_training =
+features.alert_info_tone =
+features.busy_tone_delay =
+features.send_pound_key =
+features.key_as_send =
+features.send_key_tone =
+features.key_tone =
+features.play_hold_tone.enable =
+features.play_hold_tone.delay =
+features.redial_tone =
+features.partition_tone =
+
+#######################################################################################
+## Features Action URI ##
+#######################################################################################
+features.action_uri_limit_ip =
+
+
+#######################################################################################
+## Features Prefix ##
+#######################################################################################
+features.password_dial.enable =
+features.password_dial.prefix =
+features.password_dial.length =
+
+#######################################################################################
+## Features History ##
+#######################################################################################
+features.save_call_history =
+features.redial_via_local_sip_server.enable=
+features.local_calllog.received.replace_rule=
+##V83 Add
+features.calllog_detailed_information =
+
+static.auto_provision.local_calllog.write_delay.terminated=
+static.auto_provision.local_calllog.backup.path=
+static.auto_provision.local_calllog.backup.enable=
+
+#######################################################################################
+## Notification Popups ##
+#######################################################################################
+features.voice_mail_popup.enable=
+features.missed_call_popup.enable=
+features.forward_call_popup.enable=
+
+#######################################################################################
+## Ringtone ##
+#######################################################################################
+ringtone.url =
+ringtone.delete =
+
+#######################################################################################
+## Phone Settings ##
+#######################################################################################
+phone_setting.inter_digit_time =
+phone_setting.ring_type =
+
+phone_setting.ring_for_tranfailed =
+phone_setting.is_deal180 =
+phone_setting.show_code403 =
+
+phone_setting.ringback_timeout =
+phone_setting.ringing_timeout =
+
+phone_setting.page_tip =
+phone_setting.predial_autodial =
+phone_setting.headsetkey_mode =
+
+static.phone_setting.reserve_certs_enable =
+phone_setting.called_party_info_display.enable =
+phone_setting.call_info_display_method =
+
+
+
+#######################################################################################
+## Power Led Settings ##
+#######################################################################################
+phone_setting.common_power_led_enable =
+phone_setting.talk_and_dial_power_led_enable =
+phone_setting.mail_power_led_flash_enable =
+phone_setting.ring_power_led_flash_enable =
+phone_setting.mute_power_led_flash_enable=
+phone_setting.hold_and_held_power_led_flash_enable =
+phone_setting.missed_call_power_led_flash.enable =
+
+##It configures the level of the active backlight intensity.
+##The default value is 8.
+phone_setting.active_backlight_level =
+
+
+
+#######################################################################################
+## Phone Setting Display ##
+#######################################################################################
+
+##It configures the backlight time (in seconds).0, 1, 15, 30, 60, 120, 300, 600 or 1800.
+phone_setting.backlight_time =
+phone_setting.backgrounds =
+wallpaper_upload.url =
+
+
+#######################################################################################
+## Phone Setting BLF ##
+#######################################################################################
+###It enables or disables the phone to automatically configure the BLF list keys in order.
+###0-Disabled,1-Enabled.
+###The default value is 1.
+
+phone_setting.auto_blf_list_enable =
+
+#######################################################################################
+## Key Lock ##
+#######################################################################################
+###It enables or disables keypad lock feature.
+###0-Disabled,1-Enabled.
+###The default value is 0.
+phone_setting.phone_lock.enable =
+
+
+###It configures the password for unlocking the keypad.
+###The default value is 123.
+phone_setting.phone_lock.unlock_pin =
+
+###It configures the interval (in seconds) to automatically lock the keypad.
+###The default value is 0 (the keypad is locked only by long pressing the pound key or pressing the keypad lock key)
+phone_setting.phone_lock.lock_time_out =
+phone_setting.emergency.number =
+
+#######################################################################################
+## Multicast ##
+#######################################################################################
+
+multicast.codec =
+
+multicast.receive_priority.enable =
+multicast.receive_priority.priority =
+
+###X ranges from 1 to 31
+###multicast.listen_address.X.label =
+###multicast.listen_address.X.ip_address =
+
+multicast.listen_address.1.label =
+multicast.listen_address.1.ip_address =
+
+multicast.paging_address.1.ip_address =
+multicast.paging_address.1.label =
+
+multicast.receive.ignore_dnd.priority=
+
+#######################################################################################
+## Super Search ##
+#######################################################################################
+super_search.recent_call =
+super_search.url =
+
+#######################################################################################
+## Security ##
+#######################################################################################
+###Define the login username and password of the user, var and administrator.
+###If you change the username of the administrator from "admin" to "admin1", your new administrator's username should be configured as: security.user_name.admin = admin1.
+###If you change the password of the administrator from "admin" to "admin1pwd", your new administrator's password should be configured as: security.user_password = admin1:admin1pwd.
+
+###The following examples change the user's username to "user23" and the user's password to "user23pwd".
+###static.security.user_name.user = user23
+###static.security.user_password = user23:user23pwd
+###The following examples change the var's username to "var55" and the var's password to "var55pwd".
+###static.security.user_name.var = var55
+###static.security.user_password = var55:var55pwd
+static.security.user_name.user =
+static.security.user_name.admin =
+static.security.user_name.var =
+static.security.user_password =
+
+{if isset($admin_name)}
+static.security.user_name.admin = {$admin_name}
+static.security.user_password = {$admin_name}:{$admin_password}
+{/if}
+
+###It enables or disables the phone to only accept the certificates in the Trusted Certificates list.
+###0-Disabled,1-Enabled.
+###The default value is 1.It takes effect after a reboot.
+static.security.trust_certificates = {if $yealink_trust_certificates == "false"}0{elseif $yealink_trust_certificates == "true"}1{/if}
+
+###It configures the source certificates for the phone to authenticate for TLS connection.
+###0-Default certificates,1-Custom certificates,2-All certificates.
+###The default value is 0.It takes effect after a reboot.
+static.security.ca_cert =
+
+###It configures the device certificates for the phone to send for TLS authentication.
+###0-Default certificates,1-Custom certificates.
+###The default value is 0.It takes effect after a reboot.
+static.security.dev_cert =
+
+###It enables or disables the phone to mandatorily validate the CommonName or SubjectAltName of the certificate received from the connecting server.
+###0-Disabled,1-Enabled.
+###The default value is 0.It takes effect after a reboot.
+static.security.cn_validation =
+
+##V83 Add
+phone_setting.reserve_certs_config.enable =
+#######################################################################################
+## User Mode ##
+#######################################################################################
+###It enables or disables the 3-level permissions (admin, user, var).
+###0-Disabled,1-Enabled.
+###The default value is 0.It takes effect after a reboot.
+static.security.var_enable =
+
+static.web_item_level.url =
+
+#######################################################################################
+## Trusted Certificates ##
+#######################################################################################
+static.trusted_certificates.url =
+static.trusted_certificates.delete =
+
+#######################################################################################
+## Server Certificates ##
+#######################################################################################
+static.server_certificates.url =
+static.server_certificates.delete =
+
+#######################################################################################
+## Conference ##
+#######################################################################################
+features.local_conf.combine_with_one_press.enable=
+
+#######################################################################################
+## Line Key ##
+#######################################################################################
+###T58V/VP59 X ranges from 1 to 27
+
+#linekey.X.type--Customize the linekey type.
+#The valid types are:
+
+#0-NA 1-Conference 2-Forward 3-Transfer 4-Hold 5-DND 7-Call Return 8-SMS 9-Directed Pickup 10-Call Park 11-DTMF 12-Voice Mail 13-Speed Dial
+#14-Intercom 15-Line 16-BLF 17-URL 18-Group Listening 20-Private Hold 22-XML Group 23-Group Pickup 24-Multicast Paging 25-Record 27-XML Browser
+#34-Hot Desking 35-URL Record 38-LDAP 39-BLF List 40-Prefix 41-Zero Touch 42-ACD 45-Local Group 46-Network Group 49-Custom Button 50-Keypad Lock
+#55-Meet-Me Conference 56-Retrieve Park 57-Hoteling 58-ACD Grace 59-Sisp Code 60-Emergency 61-Directory 84-open door 85-video monitoring
+
+#0-NA
+#22-XML Group
+#38-LDAP
+#46-Network Group
+#17-URL
+
+###linekey.X.line =
+###linekey.X.value =
+###linekey.X.type =
+###linekey.X.xml_phonebook =
+###linekey.X.label =
+###linekey.X.extension
+
+{foreach $keys['line'] as $row}
+#Configure Line Key {$row.device_key_id}
+linekey.{$row.device_key_id}.line = {$row.device_key_line}
+linekey.{$row.device_key_id}.value = {$row.device_key_value}
+{if $row.device_key_type == "1" || $row.device_key_type == "16"}
+linekey.{$row.device_key_id}.pickup_value = {$row.device_key_extension}
+{else}
+linekey.{$row.device_key_id}.extension = {$row.device_key_extension}
+{/if}
+linekey.{$row.device_key_id}.type = {$row.device_key_type}
+linekey.{$row.device_key_id}.xml_phonebook =
+linekey.{$row.device_key_id}.label = {$row.device_key_label}
+
+{/foreach}
+
+##########################################################################################
+## Programmable Key ##
+##########################################################################################
+#T58VT56A/VP59 X ranges from 1 to 4,12 to 14
+#programablekey.x.value =
+#programablekey.x.xml_phonebook--Specify the desired remote phonebook/local group/BSFT phonebook for the programmable key. This parameter is only appilicable to the feature XML Group/Local Group/Broadsoft Group.
+#programablekey.x.history_type =
+#programablekey.x.label--This parameter is only available to the key 1 to key 4.
+
+programablekey.X.type =
+programablekey.X.line =
+programablekey.X.value =
+programablekey.X.history_type =
+programablekey.X.label =
+programablekey.X.xml_phonebook =
+programablekey.X.extension
+
+#######################################################################################
+## Forward Always ##
+#######################################################################################
+forward.always.enable =
+forward.always.target =
+forward.always.on_code =
+forward.always.off_code =
+
+#######################################################################################
+## Forward Busy ##
+#######################################################################################
+forward.busy.enable =
+forward.busy.target =
+forward.busy.on_code =
+forward.busy.off_code =
+
+#######################################################################################
+## Forward No Answer ##
+#######################################################################################
+forward.no_answer.enable =
+forward.no_answer.target =
+forward.no_answer.timeout =
+forward.no_answer.on_code =
+forward.no_answer.off_code =
+
+#######################################################################################
+## Forward International ##
+#######################################################################################
+###It enables or disables the phone to forward incoming calls to international numbers.
+###0-Disabled,1-Enabled.
+###The default value is 1.
+forward.international.enable =
+
+
+
+#######################################################################################
+## Hotdesking Startup ##
+#######################################################################################
+phone_setting.logon_wizard =
+
+
+##############
+hotdesking.startup_register_name_enable =
+hotdesking.startup_username_enable =
+hotdesking.startup_password_enable =
+hotdesking.startup_sip_server_enable =
+hotdesking.startup_outbound_enable =
+
+#######################################################################################
+## Hotdesking Dsskey ##
+#######################################################################################
+hotdesking.dsskey_register_name_enable =
+hotdesking.dsskey_username_enable =
+hotdesking.dsskey_password_enable =
+hotdesking.dsskey_sip_server_enable =
+hotdesking.dsskey_outbound_enable =
+
+#######################################################################################
+## Alert Info ##
+#######################################################################################
+###X ranges from 1 to 100
+###distinctive_ring_tones.alert_info.x.text =
+###distinctive_ring_tones.alert_info.x.ringer =
+
+###It configures the internal ringer text for distinctive ringtone.
+###Example: distinctive_ring_tones.alert_info.1.text = Family
+###The default value is blank.
+distinctive_ring_tones.alert_info.1.text =
+
+###It configures the desired ring tones for each text.
+###The value ranges from 1 to 8, the digit stands for the appropriate ringtone.
+###Ring tones 6-8 are only applicable to SIP-T46G IP phones.
+###The default value is 1.
+distinctive_ring_tones.alert_info.1.ringer =
+
+#######################################################################################
+## Call Waiting ##
+#######################################################################################
+call_waiting.enable =
+call_waiting.tone =
+call_waiting.on_code =
+call_waiting.off_code =
+
+#######################################################################################
+## Action URL ##
+#######################################################################################
+action_url.setup_completed =
+action_url.registered =
+action_url.unregistered =
+action_url.register_failed =
+action_url.off_hook =
+action_url.on_hook =
+action_url.incoming_call =
+action_url.outgoing_call =
+action_url.call_established =
+action_url.dnd_on =
+action_url.dnd_off =
+action_url.always_fwd_on =
+action_url.always_fwd_off =
+action_url.busy_fwd_on =
+action_url.busy_fwd_off =
+action_url.no_answer_fwd_on =
+action_url.no_answer_fwd_off =
+action_url.transfer_call =
+action_url.blind_transfer_call =
+action_url.attended_transfer_call =
+action_url.hold =
+action_url.unhold =
+action_url.mute =
+action_url.unmute =
+action_url.missed_call =
+action_url.call_terminated =
+action_url.busy_to_idle =
+action_url.idle_to_busy =
+action_url.ip_change =
+action_url.forward_incoming_call =
+action_url.reject_incoming_call =
+action_url.answer_new_incoming_call =
+action_url.transfer_finished =
+action_url.transfer_failed =
+action_url.setup_autop_finish =
+action_url.held =
+action_url.unheld =
+
+
+
+#######################################################################################
+## Contact ##
+#######################################################################################
+local_contact.data.url =
+local_contact.image.url =
+local_contact.icon.url =
+local_contact.data_photo_tar.url =
+
+local_contact.photo.url =
+static.directory_setting.url=
+#######################################################################################
+## Custom Factory Configuration ##
+#######################################################################################
+
+static.custom_factory_configuration.url =
+static.features.custom_factory_config.enable =
+
+#######################################################################################
+## Custom Configuration ##
+#######################################################################################
+
+static.configuration.url =
+
+#######################################################################################
+## Custom Softkey ##
+#######################################################################################
+phone_setting.custom_softkey_enable =
+custom_softkey_call_failed.url =
+custom_softkey_call_in.url =
+custom_softkey_connecting.url =
+custom_softkey_ring_back.url =
+custom_softkey_talking.url =
+
+
+
+#######################################################################################
+## Configure the access URL of firmware ##
+#######################################################################################
+###It configures the access URL of the firmware file.
+###The default value is blank.It takes effect after a reboot.
+static.firmware.url =
+
+#######################################################################################
+## RTCP ##
+#######################################################################################
+phone_setting.vq_rtcpxr.interval_report.enable =
+phone_setting.vq_rtcpxr.session_report.enable =
+phone_setting.vq_rtcpxr.states_show_on_gui.enable =
+phone_setting.vq_rtcpxr.states_show_on_web.enable =
+phone_setting.vq_rtcpxr_delay_threshold_critical =
+phone_setting.vq_rtcpxr_delay_threshold_warning =
+phone_setting.vq_rtcpxr_display_jitter.enable =
+phone_setting.vq_rtcpxr_display_jitter_buffer_max.enable =
+phone_setting.vq_rtcpxr_display_local_call_id.enable =
+phone_setting.vq_rtcpxr_display_local_codec.enable =
+phone_setting.vq_rtcpxr_display_moscq.enable =
+phone_setting.vq_rtcpxr_display_moslq.enable =
+phone_setting.vq_rtcpxr_display_packets_lost.enable =
+phone_setting.vq_rtcpxr_display_remote_call_id.enable =
+phone_setting.vq_rtcpxr_display_remote_codec.enable =
+phone_setting.vq_rtcpxr_display_round_trip_delay.enable =
+phone_setting.vq_rtcpxr_display_start_time.enable =
+phone_setting.vq_rtcpxr_display_stop_time.enable =
+phone_setting.vq_rtcpxr_display_symm_oneway_delay.enable =
+phone_setting.vq_rtcpxr_interval_period =
+phone_setting.vq_rtcpxr_moslq_threshold_critical =
+phone_setting.vq_rtcpxr_moslq_threshold_warning =
+voice.rtcp.enable =
+voice.rtcp_xr.enable =
+voice.rtcp_cname =
+
+
+
+#######################################################################################
+## DNS ##
+#######################################################################################
+dns_cache_a.1.name =
+dns_cache_a.1.ip =
+dns_cache_a.1.ttl =
+dns_cache_srv.1.name =
+dns_cache_srv.1.port =
+dns_cache_srv.1.priority =
+dns_cache_srv.1.target =
+dns_cache_srv.1.weight =
+dns_cache_srv.1.ttl =
+dns_cache_naptr.1.name =
+dns_cache_naptr.1.order =
+dns_cache_naptr.1.preference =
+dns_cache_naptr.1.replace =
+dns_cache_naptr.1.service =
+dns_cache_naptr.1.ttl =
+
+
+#######################################################################################
+## V80 Add ##
+#######################################################################################
+## Add Time 2015.6.26
+static.network.attempt_expired_time =
+features.action_uri_force_autop =
+features.save_init_num_to_history.enable =
+features.action_uri.enable =
+features.forward.emergency.enable =
+features.forward.emergency.authorized_number =
+features.auto_answer_tone.enable =
+features.ip_call.auto_answer.enable =
+action_url.headset =
+action_url.handfree
+action_url.cancel_callout =
+action_url.remote_busy =
+action_url.call_remote_canceled =
+action_url.call_waiting_on =
+action_url.call_waiting_off =
+sip.terminate_notify_sub_delay_time =
+voice.side_tone =
+static.security.default_access_level =
+
+#######################################################################################
+## Network WiFi ##
+#######################################################################################
+##static.wifi.X.label=
+##static.wifi.X.ssid=
+##static.wifi.X.priority=
+##static.wifi.X.security_mode=
+##static.wifi.X.cipher_type=
+##static.wifi.X.password=
+##static.wifi.X.eap_type=
+##static.wifi.X.eap_user_name=
+##static.wifi.x.eap_password=
+##(X ranges from 1 to 5)
+
+static.wifi.enable =
+static.wifi.1.label =
+static.wifi.1.ssid =
+static.wifi.1.priority =
+static.wifi.1.security_mode =
+static.wifi.1.cipher_type =
+static.wifi.1.password =
+static.wifi.1.eap_type =
+static.wifi.1.eap_user_name =
+static.wifi.1.eap_password =
+
+##V83 Add
+static.wifi.function.enable =
+
+#######################################################################################
+## V80-SP2 Add ##
+#######################################################################################
+##Add Time 2016.5.26
+features.power_saving.enable=
+features.power_saving.office_hour.idle_timeout =
+features.power_saving.off_hour.idle_timeout =
+features.power_saving.user_input_ext.idle_timeout=
+features.power_saving.office_hour.monday =
+features.power_saving.office_hour.tuesday =
+features.power_saving.office_hour.wednesday =
+features.power_saving.office_hour.thursday =
+features.power_saving.office_hour.friday =
+features.power_saving.office_hour.saturday =
+features.power_saving.office_hour.sunday =
+screensaver.wait_time=
+
+##V83 Add
+features.power_saving.power_led_flash.off_time=
+features.power_saving.power_led_flash.on_time=
+screensaver.type=
+
+#######################################################################################
+## Digitmap ##
+#######################################################################################
+dialplan.digitmap.enable=
+dialplan.digitmap.string=
+dialplan.digitmap.no_match_action=
+dialplan.digitmap.interdigit_short_timer=
+dialplan.digitmap.interdigit_long_timer=
+dialplan.digitmap.apply_to.press_send=
+dialplan.digitmap.apply_to.forward=
+dialplan.digitmap.apply_to.history_dial=
+dialplan.digitmap.apply_to.directory_dial=
+dialplan.digitmap.apply_to.on_hook_dial=
+dialplan.digitmap.active.on_hook_dialing=
+
+##V83 Add
+dialplan.digitmap.apply_to.prefix_key =
+
+#######################################################################################
+## Emergency Dialplan ##
+#######################################################################################
+dialplan.emergency.enable=
+dialplan.emergency.1.value=
+dialplan.emergency.server.1.address=
+dialplan.emergency.server.1.transport_type=
+dialplan.emergency.server.1.port=
+dialplan.emergency.1.server_priority=
+dialplan.emergency.custom_asserted_id=
+dialplan.emergency.asserted_id_source=
+
+#######################################################################################
+## V81 Add ##
+#######################################################################################
+
+static.auto_provision.flexible.enable =
+static.auto_provision.flexible.interval=
+static.auto_provision.flexible.begin_time =
+static.auto_provision.flexible.end_time =
+voice.jib.wifi.adaptive =
+voice.jib.wifi.min =
+voice.jib.wifi.max =
+voice.jib.wifi.normal =
+wui.quick_login =
+
+##Multicast(X ranges from 1 to 31.)
+multicast.receive.use_speaker =
+multicast.listen_address.1.channel =
+multicast.paging_address.1.channel =
+
+features.keep_mute.enable =
+voice.tone.secondary_dial =
+features.power_saving.intelligent_mode =
+features.blf_active_backlight.enable =
+features.intercom.headset_prior.enable =
+
+#######################################################################################
+## Time&Date ##
+#######################################################################################
+auto_dst.url =
+local_time.manual_time_enable =
+local_time.manual_ntp_srv_prior =
+local_time.time_format =
+local_time.date_format =
+local_time.dhcp_time =
+
+local_time.summer_time =
+local_time.dst_time_type =
+local_time.start_time =
+local_time.end_time =
+local_time.offset_time =
+local_time.interval =
+
+local_time.ntp_server1 =
+local_time.ntp_server2 =
+local_time.time_zone =
+local_time.time_zone_name =
+
+
+#######################################################################################
+## Broadsoft ACD ##
+#######################################################################################
+acd.enable=
+acd.auto_available_timer=
+
+#######################################################################################
+## Broadsoft Call Recording ##
+#######################################################################################
+bw.call_recording.mode =
+
+#######################################################################################
+## Broadsoft Network Directory ##
+#######################################################################################
+bw.calllog_and_dir =
+bw_phonebook.custom=
+bw_phonebook.enterprise_common_enable=
+bw_phonebook.enterprise_common_displayname=
+bw_phonebook.enterprise_enable=
+bw_phonebook.enterprise_displayname=
+bw_phonebook.group_common_enable=
+bw_phonebook.group_common_displayname=
+bw_phonebook.personal_enable=
+bw_phonebook.personal_displayname=
+bw_phonebook.group_enable=
+bw_phonebook.group_displayname =
+directory.update_time_interval
+
+##V83 Add
+search_in_dialing.bw_directory.enable=
+search_in_dialing.bw_directory.priority=
+directory_setting.bw_directory.enable =
+directory_setting.bw_directory.priority =
+
+#######################################################################################
+## BSFT Setting ##
+#######################################################################################
+bw.enable =
+
+
+#######################################################################################
+## Broadsoft Visual Voice Mail ##
+#######################################################################################
+bw.voice_mail.visual.enable=
+voice_mail.message_key.mode=
+bw.voice_mail.visual.display_videomail.enable=
+
+
+#######################################################################################
+## Broadsoft XSI ##
+#######################################################################################
+bw.xsi.enable=
+sip.authentication_for_xsi =
+
+#######################################################################################
+## Features Sync ##
+#######################################################################################
+call_waiting.mode =
+features.feature_key_sync.enable = {$yealink_feature_key_sync}
+features.dnd.feature_key_sync.local_processing.enable =
+features.dnd.feature_key_sync.enable =
+features.forward.feature_key_sync.enable =
+features.forward.feature_key_sync.local_processing.enable =
+
+#######################################################################################
+## Broadsoft Call Decline ##
+#######################################################################################
+features.call_decline.enable =
+
+
+#######################################################################################
+## Call Park ##
+#######################################################################################
+features.call_park.enable=
+features.call_park.park_mode=
+features.call_park.park_code=
+features.call_park.park_retrieve_code=
+features.call_park.park_visual_notify_enable=
+features.call_park.park_ring=
+features.call_park.group_enable=
+features.call_park.group_park_code=
+sip.call_park_without_blf=
+
+#######################################################################################
+## Broadsoft UC ##
+#######################################################################################
+bw.xmpp.enable =
+features.uc_password =
+features.uc_username =
+bw.xmpp.presence_icon.mode =
+bw.xmpp.change_presence.force_manual.enable =
+bw.xmpp.change_presence.enable =
+features.uc_dir.match_tail_number=
+phone_setting.dsskey_directory_auto.enable=
+
+##V83 Add
+directory_setting.bw_uc_buddies.enable =
+directory_setting.bw_uc_buddies.priority =
+search_in_dialing.bw_uc_buddies.enable =
+search_in_dialing.bw_uc_buddies.priority =
+
+#######################################################################################
+## Features Pickup ##
+#######################################################################################
+
+features.pickup.group_pickup_enable =
+features.pickup.group_pickup_code =
+features.pickup.direct_pickup_enable =
+features.pickup.direct_pickup_code =
+features.pickup.blf_visual_enable =
+features.pickup.blf_audio_enable =
+
+#######################################################################################
+## Encryption ##
+#######################################################################################
+static.auto_provision.encryption.config =
+
+#######################################################################################
+## Android phone-T58V Add ##
+#######################################################################################
+##Add Time 2016.9.2
+
+static.wifi.802_11e.enable =
+phone_setting.permit_silent_mode.enable =
+sip.h264.peer_resolution.default =
+features.doorphone.%d.display_name =
+features.doorphone.%d.full_screen =
+features.doorphone.%d.phone_number =
+features.doorphone.%d.send_audio =
+features.doorphone.%d.send_video =
+features.doorphone.%d.unlock_pin =
+features.doorphone.%d.autopreview.enable =
+features.doorphone.%d.httpapi.password =
+features.doorphone.%d.httpapi.username =
+features.doorphone.%d.video.stream.httpurl =
+features.doorphone.%d.videopreview.enable =
+features.doorphone.x.device_model =
+features.doorphone.amount =
+
+features.csta_control.enable =
+static.network.ethernet_as_wifi.enable =
+
+static.security.default_ssl_method =
+features.video_call_bandwidth =
+video.enable =
+features.default_layout =
+
+#######################################################################################
+## APP ##
+#######################################################################################
+app.install_url =
+app.uninstall =
+app.unavailable =
+app.autorun =
+custom.static.system_mode =
+custom.static.system_mode_selection =
+custom.static.system_mode_enable =
+features.action_call_answer =
+features.action_contact =
+features.action_dialer =
+features.action_dsskey =
+features.action_history =
+
+
+#######################################################################################
+## Broadsoft Emergency Call ##
+#######################################################################################
+##V83 Add
+bw.emergency_calling.enable =
+
+#######################################################################################
+## Broadsoft Network Calllog ##
+#######################################################################################
+##V83 Add
+bw.xsi.call_log.delete.enable =
+bw.xsi.call_log.multiple_accounts.enable =
+bw.xsi.call_log.enable=
+
+#######################################################################################
+## Broadsoft Network Directory ##
+#######################################################################################
+bw.xsi.directory.enable=
+bw.xsi.directory.update.enable=
+
+#######################################################################################
+## EDK ##
+#######################################################################################
+
+##EDK Soft Keys(X ranges from 1 to 10)
+
+features.enhanced_dss_keys.enable=
+edk.id_mode.enable=
+softkey.X.position=
+softkey.X.use.conferenced=
+softkey.X.use.held=
+softkey.X.use.hold=
+softkey.X.use.transfer_ring_back=
+softkey.X.use.ring_back=
+softkey.X.use.call_failed=
+softkey.X.use.on_talk=
+softkey.X.use.transfer_connecting=
+softkey.X.use.connecting=
+softkey.X.use.incoming_call=
+softkey.X.use.idle=
+softkey.X.action=
+softkey.X.label=
+softkey.X.enable=
+edk.edklist.X.action=
+edk.edklist.X.mname=
+edk.edklist.X.enable=
+edk.edkprompt.X.enable=
+edk.edkprompt.X.label=
+edk.edkprompt.X.type=
+edk.edkprompt.X.userfeedback=
+edk.edkprompt.X.title =
+
+#######################################################################################
+## Voice Mail ##
+#######################################################################################
+features.voice_mail_alert.enable=
+features.voice_mail_tone_enable=
+features.hide_feature_access_codes.enable=
+
+#######################################################################################
+## XML ##
+#######################################################################################
+push_xml.server=
+push_xml.sip_notify=
+push_xml.block_in_calling=
+features.xml_browser.loading_tip.delay =
+
+#######################################################################################
+## Features USB ##
+#######################################################################################
+##V83 Add
+static.usb.power.enable =
+static.usbdisk.function.enable =
+
+#######################################################################################
+## Acoustic Shield ##
+#######################################################################################
+##V83 Add
+features.acoustic_shield.level=
+features.acoustic_shield.mode=
+
+#######################################################################################
+## Camera ##
+#######################################################################################
+camera.flicker =
+camera.status_bar_icon.enable=
+
+##V83 Add
+static.camera.function.enable=
+
+#######################################################################################
+## Contact Other ##
+#######################################################################################
+##V83 Add
+phone_setting.search.highlight_keywords.enable =
+
+#######################################################################################
+## dsskey icon ##
+#######################################################################################
+##V83 Add
+dsskey.icon.url=
+dsskey.icon.delete=
+programablekey.1.icon=
+programablekey.2.icon=
+programablekey.3.icon=
+programablekey.4.icon=
+
+#######################################################################################
+## Call Recording ##
+#######################################################################################
+features.usb_call_recording.enable=
+
+#######################################################################################
+## Log Backup ##
+#######################################################################################
+static.auto_provision.local_log.backup.enable =
+static.auto_provision.local_log.backup.path =
+static.auto_provision.local_log.backup.upload_period =
+static.auto_provision.local_log.backup.append =
+static.auto_provision.local_log.backup.bootlog.upload_wait_time=
+static.auto_provision.local_log.backup.append.max_file_size =
+static.auto_provision.local_log.backup.append.limit_mode=
+
+#######################################################################################
+## Secure Domain List ##
+#######################################################################################
+wui.secure_domain_list =
+
+##V83 Add
+features.full_screen_in_call_enable=
+features.status_bar.hide=
+features.system_funtion_bar.hide=
+
+
+
+phone_setting.warnings_display.mode=
+phone_setting.browser.url=
+features.hide_world_clock.enable =
+#######################################################################################
+## Dect ##
+#######################################################################################
+##V83 Add
+base.pin_code=
+static.base.repeater_mode.enable=
+base.pin_code_for_register=
+base.double_pin_code.enable=
+
+custom.handset.auto_answer.enable=
+custom.handset.auto_intercom=
+custom.handset.backlight_in_charger.enable=
+custom.handset.backlight_out_of_charger.enable=
+custom.handset.confirmation_tone.enable=
+custom.handset.date_format=
+custom.handset.eco_mode.enable=-
+custom.handset.keypad_light.enable=
+custom.handset.keypad_tone.enable=
+custom.handset.language=
+custom.handset.low_battery_tone.enable=
+custom.handset.missed_call_notify_light.enable=
+custom.handset.screen_saver.enable=
+custom.handset.time_format=
+custom.handset.voice_mail_notify_light.enable=
+custom.handset.wallpaper=
+
+handset.X.dial_out_default_line=
+handset.X.dial_out_lines=
+handset.X.hac.enable=
+handset.X.incoming_lines=
+handset.X.name=
+handset.X.contact_list.url=
+## X rang from 1 to 5
+
+over_the_air.base_trigger=
+over_the_air.handset_tip=
+over_the_air.handset_trigger=
+over_the_air.url=
+over_the_air.url.w52h=
+over_the_air.url.w56h=
+over_the_air.url.w53h=
+
+static.auto_provision.custom.handset.protect=
+static.auto_provision.handset_configured.enable=
+
+phone_setting.end_call_on_hook.enable=
+
+static.directory_setting.shared_contact.enable=
+shared_contact_list.url=
+
+features.ms.x.mode =
+features.ms.x.slave_handset_number =
+
+
+#######################################################################################
+## Metaswitch Setting ##
+#######################################################################################
+meta.enable =
+meta.login_mode =
+meta.comm_portal.server.token =
+meta.comm_portal.server.username =
+meta.comm_portal.server.password =
+meta.comm_portal.server.url =
+meta.comm_portal.enable =
+meta.comm_portal.contacts.update_interval =
+meta.comm_portal.replace_local_call_list.enable=
+meta.comm_portal.contacts.group.mlhgs.label=
+meta.comm_portal.contacts.group.extensions.label=
+meta.comm_portal.contacts.group.contacts.label=
+meta.comm_portal.contacts.group.mlhgs.enable=
+meta.comm_portal.contacts.group.extensions.enable=
+meta.comm_portal.contacts.group.contacts.enable=
+meta.comm_portal.call_list.enable=
+meta.comm_portal.contacts.enable=
+meta.comm_portal.message.enable=
+meta.comm_portal.logout.enable =
+meta.comm_portal.keep_alive_interval_time =
+directory_setting.meta_directory.enable=
+directory_setting.meta_directory.priority=
+directory_setting.meta_call_log.enable=
+directory_setting.meta_call_log.priority=
+search_in_dialing.meta_call_log.priority =
+search_in_dialing.meta_call_log.enable =
+search_in_dialing.meta_directory.priority =
+search_in_dialing.meta_directory.enable =
+
+#######################################################################################
+## Contact Backup ##
+#######################################################################################
+static.auto_provision.local_contact.backup.path =
+static.auto_provision.local_contact.backup.enable=
diff --git a/resources/templates/provision/yealink/vp59/{$mac}.cfg b/resources/templates/provision/yealink/vp59/{$mac}.cfg
new file mode 100644
index 0000000000..e32c8f80c5
--- /dev/null
+++ b/resources/templates/provision/yealink/vp59/{$mac}.cfg
@@ -0,0 +1,541 @@
+#!version:1.0.0.1
+
+##File header "#!version:1.0.0.1" can not be edited or deleted, and must be placed in the first line.##
+
+{foreach $lines as $row}
+
+#######################################################################################
+## Account Basic Settings ##
+#######################################################################################
+
+{if isset({$row.password})}
+account.{$row.line_number}.enable = 1
+{else}
+account.{$row.line_number}.enable = 0
+{/if}
+account.{$row.line_number}.label = {$row.display_name}
+account.{$row.line_number}.display_name = {$row.display_name}
+account.{$row.line_number}.auth_name = {$row.auth_id}
+account.{$row.line_number}.user_name = {$row.user_id}
+account.{$row.line_number}.password = {$row.password}
+{if isset($account.{$row.line_number}.outbound_proxy_primary)}
+account.{$row.line_number}.outbound_proxy_enable = 1
+{else}
+account.{$row.line_number}.outbound_proxy_enable = 0
+{/if}
+account.{$row.line_number}.outbound_proxy.1.address = {$row.outbound_proxy_primary}
+{if isset($outbound_proxy_1_port)}
+account.{$row.line_number}.outbound_proxy.1.port = {$outbound_proxy_1_port}
+{else}
+account.{$row.line_number}.outbound_proxy.1.port = {$row.sip_port}
+{/if}
+account.{$row.line_number}.dial_tone =
+account.{$row.line_number}.outbound_proxy.2.address = {$row.outbound_proxy_secondary}
+{if isset($outbound_proxy_2_port)}
+account.{$row.line_number}.outbound_proxy.2.port = {$outbound_proxy_2_port}
+{else}
+account.{$row.line_number}.outbound_proxy.2.port = {$row.sip_port}
+{/if}
+account.{$row.line_number}.outbound_proxy_fallback_interval =
+
+##It configures the transport type for account 1. 0-UDP,1-TCP,2-TLS,3-DNS-NAPTR
+##The default value is 0.
+{if $row.sip_transport == 'udp'}account.{$row.line_number}.sip_server.1.transport_type = 0{/if}
+{if $row.sip_transport == 'tcp'}account.{$row.line_number}.sip_server.1.transport_type = 1{/if}
+{if $row.sip_transport == 'tls'}account.{$row.line_number}.sip_server.1.transport_type = 2{/if}
+{if $row.sip_transport == 'dns srv'}account.{$row.line_number}.sip_server.1.transport_type = 3{/if}
+
+##It configures the backup server transport type for account 1. 0-UDP,1-TCP,2-TLS,3-DNS-NAPTR
+##The default value is 0.
+{if $row.sip_transport == 'udp'}account.{$row.line_number}.sip_server.2.transport_type = 0{/if}
+{if $row.sip_transport == 'tcp'}account.{$row.line_number}.sip_server.2.transport_type = 1{/if}
+{if $row.sip_transport == 'tls'}account.{$row.line_number}.sip_server.2.transport_type = 2{/if}
+{if $row.sip_transport == 'dns srv'}account.{$row.line_number}.sip_server.2.transport_type = 3{/if}
+
+
+#######################################################################################
+## Failback ##
+#######################################################################################
+
+account.{$row.line_number}.naptr_build = 0
+account.{$row.line_number}.fallback.redundancy_type = 0
+account.{$row.line_number}.fallback.timeout = {$yealink_outbound_proxy_fallback_interval}
+{if isset($row.server_address_primary)}
+account.{$row.line_number}.sip_server.1.address = {$row.server_address_primary}
+{else}
+account.{$row.line_number}.sip_server.1.address = {$row.server_address}
+{/if}
+account.{$row.line_number}.sip_server.1.port = {$row.sip_port}
+account.{$row.line_number}.sip_server.1.expires = {$row.register_expires}
+account.{$row.line_number}.sip_server.1.retry_counts = 3
+account.{$row.line_number}.sip_server.1.failback_mode = 0
+account.{$row.line_number}.sip_server.1.failback_timeout = 3600
+account.{$row.line_number}.sip_server.1.register_on_enable = 0
+{if isset($row.server_address_secondary)}
+account.{$row.line_number}.sip_server.2.address = {$row.server_address_secondary}
+{/if}
+account.{$row.line_number}.sip_server.2.port = {$row.sip_port}
+account.{$row.line_number}.sip_server.2.expires = {$row.register_expires}
+account.{$row.line_number}.sip_server.2.retry_counts = 3
+account.{$row.line_number}.sip_server.2.failback_mode = 0
+account.{$row.line_number}.sip_server.2.failback_timeout = 3600
+account.{$row.line_number}.sip_server.2.register_on_enable = 0
+
+account.{$row.line_number}.dns_cache_type = 1
+account.{$row.line_number}.static_cache_pri = 0
+account.{$row.line_number}.register_expires_overlap =
+account.{$row.line_number}.subscribe_expires_overlap =
+
+#######################################################################################
+## Register Advanced ##
+#######################################################################################
+##It configures the SIP server type for account X.0-Default,2-BroadSoft,4-Cosmocom,6-UCAP
+##The default value is 0.
+
+account.{$row.line_number}.sip_server_type =
+
+account.{$row.line_number}.unregister_on_reboot =
+account.{$row.line_number}.register_mac =
+account.{$row.line_number}.register_line =
+account.{$row.line_number}.reg_fail_retry_interval =
+account.{$row.line_number}.srtp_encryption =
+
+######################################################################################
+## NAT Settings ##
+######################################################################################
+##It enables or disables the NAT traversal for account X.0-Disabled,1-Enabled
+##The default value is 0.
+account.{$row.line_number}.nat.nat_traversal = {if isset($stun_server)}1{else}0{/if}
+
+##It configures the type of keep-alive packets sent by the phone to the NAT static to keep the communication port open so that NAT can continue to function for account X.
+##0-Dsiabled,1-Default: the phone sends UDP packets to the server,2-Option: the phone sends SIP OPTION packets to the server,3-Notify: the phone sends SIP NOTIFY packets to the server.
+##The default value is 1.
+account.{$row.line_number}.nat.udp_update_enable = 3
+
+##It configures the keep-alive interval (in seconds) for account X.
+##The default value is 30.Integer from 15 to 2147483647
+account.{$row.line_number}.nat.udp_update_time = 30
+
+##It enables or disables NAT Rport feature for account X.0-Disabled,1-Enabled
+##The default value is 0.
+account.{$row.line_number}.nat.rport = {$yealink_rport}
+
+
+#######################################################################################
+## Account Advance Settings ##
+#######################################################################################
+
+
+##It configures the voice mail number for account X.
+##The default value is blank.
+voice_mail.number.{$row.line_number} = {$voicemail_number}
+
+##Except T19P/T21P Models
+account.{$row.line_number}.auto_dial_enable =
+account.{$row.line_number}.auto_dial_num =
+
+account.{$row.line_number}.call_id_mode =
+account.{$row.line_number}.call_info =
+
+account.{$row.line_number}.invite_with_pani_header.enable =
+
+#######################################################################################
+## Subscribe ##
+#######################################################################################
+##It enables or disables the phone to subscribe the message waiting indicator for account X.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.subscribe_mwi =
+
+
+##It is configuration MWI is NOTIFY messages, whether in Terminated status attributes.
+##The default value is 0(Don't handle terminated values)
+account.{$row.line_number}.mwi_parse_terminated =
+
+##It configures the interval (in seconds) of MWI subscription for account X.
+##The default value is 3600.
+account.{$row.line_number}.subscribe_mwi_expires =
+
+
+##It enables or disables the phone to subscribe to the voice mail number for the message waiting indicator for account X.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.subscribe_mwi_to_vm =
+
+##It configures the period (in seconds) of ACD subscription for account X.
+##The default value is 1800.Except T19P/T21P Models
+account.{$row.line_number}.subscribe_acd_expires =
+
+
+account.{$row.line_number}.display_mwi.enable =
+account.{$row.line_number}.subscribe_register =
+#######################################################################################
+## Broadsoft ACD ##
+#######################################################################################
+account.{$row.line_number}.acd.enable =
+account.{$row.line_number}.acd.unavailable_reason_enable =
+account.{$row.line_number}.acd.initial_state =
+
+##account.X.reason_code.Y=
+##account.X.reason_code_name.Y=
+##The value Y must be continuous.
+account.{$row.line_number}.reason_code.1 =
+account.{$row.line_number}.reason_code_name.1 =
+
+#######################################################################################
+## BLF List(Except T19D Model) ##
+#######################################################################################
+##It configures the BLF List URI to monitor a list of users for account X.
+##The default value is blank.
+account.{$row.line_number}.blf.blf_list_uri =
+
+##It configures the feature access code for directed call pickup (default: *97) for account X.
+##The default value is blank.
+account.{$row.line_number}.blf_list_code =
+
+##It configures the feature access code for directed call pickup with barge-in (default: *33) for account X.
+##The default value is blank.
+account.{$row.line_number}.blf_list_barge_in_code =
+
+##It configures the period (in seconds) of the BLF subscription for account X.
+##The default value is 1800.Integer from 30 to 2147483647.
+account.{$row.line_number}.blf.subscribe_period =
+
+##It configures the event of the BLF subscription for account X.0-Dialog,1-Presence.
+##The default value is 0.
+account.{$row.line_number}.blf.subscribe_event =
+
+##It enables or disables the phone to handle NOTIFY messages out of the BLF dialog for account X.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.out_dialog_blf_enable =
+
+##It configures the BLF List Retrieve call parked code for account X.
+##The default value is blank
+account.{$row.line_number}.blf_list_retrieve_call_parked_code =
+
+account.{$row.line_number}.blf.match_host.enable =
+
+#######################################################################################
+## BLA/SCA ##
+#######################################################################################
+##It enables or disables Broadsoft SCA feature for account X.0-Disabled,1-Broadsoft SCA.
+##The default value is 0.
+account.{$row.line_number}.shared_line =
+
+##It configures the Call Pull Feature access code for account X.
+##The default value is blank.
+account.{$row.line_number}.shared_line_callpull_code =
+##It configures number of linekey for line.
+##The default value is 1,you should enable auto line keys first.
+account.{$row.line_number}.number_of_linekey =
+##It config whether you can retrieve the remote hold call through line key
+##The default value is 1
+account.{$row.line_number}.shared_line_one_touch_retrieve.enable =
+##It config whether you can barge in the active call through line key
+##The default value is 1
+account.{$row.line_number}.shared_line_one_touch_bargein.enable =
+
+account.{$row.line_number}.share_line.barge_in.enable =
+#######################################################################################
+## Brosoft Callpark ##
+#######################################################################################
+##It enables or disables Broadsoft Callpark for account X.0-Disabled,1-Broadsoft SCA.
+##The default value is 0.
+account.{$row.line_number}.callpark_enable =
+
+#######################################################################################
+## Audio Codec ##
+#######################################################################################
+
+account.{$row.line_number}.codec.g722.enable =
+account.{$row.line_number}.codec.g722.priority =
+
+account.{$row.line_number}.codec.g729.enable =
+account.{$row.line_number}.codec.g729.priority =
+
+account.{$row.line_number}.codec.g723_53.enable =
+account.{$row.line_number}.codec.g723_53.priority =
+
+account.{$row.line_number}.codec.g723_63.enable =
+account.{$row.line_number}.codec.g723_63.priority =
+
+account.{$row.line_number}.codec.g726_16.enable =
+account.{$row.line_number}.codec.g726_16.priority =
+
+account.{$row.line_number}.codec.g726_24.enable =
+account.{$row.line_number}.codec.g726_24.priority =
+
+account.{$row.line_number}.codec.g726_32.enable =
+account.{$row.line_number}.codec.g726_32.priority =
+
+account.{$row.line_number}.codec.g726_40.enable =
+account.{$row.line_number}.codec.g726_40.priority =
+
+account.{$row.line_number}.codec.ilbc.enable =
+account.{$row.line_number}.codec.ilbc.priority =
+
+account.{$row.line_number}.codec.opus.enable =
+account.{$row.line_number}.codec.opus.priority =
+account.{$row.line_number}.codec.opus.para =
+
+account.{$row.line_number}.codec.pcmu.enable =
+account.{$row.line_number}.codec.pcmu.priority =
+
+account.{$row.line_number}.codec.pcma.enable =
+account.{$row.line_number}.codec.pcma.priority =
+
+account.{$row.line_number}.codec.g722_1_24kpbs.enable =
+account.{$row.line_number}.codec.g722_1_24kpbs.priority =
+
+account.{$row.line_number}.codec.g722_1c_24kpbs.enable =
+account.{$row.line_number}.codec.g722_1c_24kpbs.priority =
+
+account.{$row.line_number}.codec.g722_1c_32kpbs.enable =
+account.{$row.line_number}.codec.g722_1c_32kpbs.priority =
+
+account.{$row.line_number}.codec.g722_1c_48kpbs.enable =
+account.{$row.line_number}.codec.g722_1c_48kpbs.priority =
+
+#######################################################################################
+## Video Codec ##
+#######################################################################################
+
+account.{$row.line_number}.video.h264.enable =
+account.{$row.line_number}.video.h264.priority =
+
+account.{$row.line_number}.video.h264hp.enable =
+account.{$row.line_number}.video.h264hp.priority =
+
+account.{$row.line_number}.video.vp8.enable =
+account.{$row.line_number}.video.vp8.priority =
+
+account.{$row.line_number}.video.h263.enable =
+account.{$row.line_number}.video.h263.priority =
+
+#######################################################################################
+## Audio Advanced ##
+#######################################################################################
+##It configures the RTP packet time for account X.0 (Disabled), 10, 20, 30, 40, 50 or 60.
+##The default value is 20.
+account.{$row.line_number}.ptime =
+#######################################################################################
+## Anonymous Call ##
+#######################################################################################
+account.{$row.line_number}.send_anonymous_code =
+account.{$row.line_number}.anonymous_call =
+account.{$row.line_number}.anonymous_call_oncode =
+account.{$row.line_number}.anonymous_call_offcode =
+account.{$row.line_number}.reject_anonymous_call =
+account.{$row.line_number}.anonymous_reject_oncode =
+account.{$row.line_number}.anonymous_reject_offcode =
+account.{$row.line_number}.send_anonymous_rejection_code =
+
+
+#######################################################################################
+## Pickup Code ##
+#######################################################################################
+##It enables or disables the phone to pick up a call according to the SIP header of dialog-info for account X.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.dialoginfo_callpickup =
+
+##It configures the group pickup code for account X.
+##The default value is blank.
+account.{$row.line_number}.group_pickup_code =
+
+##It configures the directed pickup code for account X.
+##The default value is blank.
+account.{$row.line_number}.direct_pickup_code =
+
+account.{$row.line_number}.refresh_remote_id.enable =
+
+#######################################################################################
+## DTMF ##
+#######################################################################################
+account.{$row.line_number}.dtmf.type =
+account.{$row.line_number}.dtmf.info_type =
+account.{$row.line_number}.dtmf.dtmf_payload =
+
+#######################################################################################
+## Alert info ##
+#######################################################################################
+##It enables or disables the distinctive ringtones by the Alert-Info SIP header for account X.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.alert_info_url_enable =
+
+##Except T19P/T21P Models
+##The default value is blank.Values range 256 characters in length
+account.{$row.line_number}.alert_info =
+account.{$row.line_number}.ringtone.ring_type =
+
+###Only for T46G Model
+##It enables or disables the phone to download the picture information for account X when receiving an incoming call or during a call.0-Disabled,1-Enabled.
+##The default value is 0.
+account.{$row.line_number}.picture_info_enable =
+
+#######################################################################################
+## Conference ##
+#######################################################################################
+##It configures the conference type for account X.0-Local Conference,2-Network Conference.
+##The default value is 0.
+account.{$row.line_number}.conf_type =
+
+##It configures the network conference URI for account X.
+##The default value is blank.
+account.{$row.line_number}.conf_uri =
+
+#######################################################################################
+## CID Source ##
+#######################################################################################
+account.{$row.line_number}.cid_source = {$yealink_cid_source}
+account.{$row.line_number}.cid_source_privacy =
+account.{$row.line_number}.cid_source_ppi =
+account.{$row.line_number}.cp_source =
+
+#######################################################################################
+## Session Timer ##
+#######################################################################################
+account.{$row.line_number}.session_timer.enable = {$yealink_session_timer}
+account.{$row.line_number}.session_timer.expires =
+account.{$row.line_number}.session_timer.refresher =
+
+#######################################################################################
+## Music on Hold ##
+#######################################################################################
+##It configures the way on how the phone processes Music On Hold when placing an active call on hold for account X.
+##0-Calling the music server before holding
+##1-Calling the music server after holding
+##The default value is 0.
+account.{$row.line_number}.music_on_hold_type =
+
+##It configures the URI of the Music On Hold server for account X.
+##The default value is blank.
+account.{$row.line_number}.music_server_uri =
+
+#######################################################################################
+## Advanced ##
+#######################################################################################
+account.{$row.line_number}.auto_answer =
+account.{$row.line_number}.missed_calllog =
+account.{$row.line_number}.100rel_enable = {$yealink_retransmission}
+account.{$row.line_number}.enable_user_equal_phone =
+account.{$row.line_number}.compact_header_enable =
+account.{$row.line_number}.custom_ua =
+
+#######################################################################################
+## DND(Except T19 Model) ##
+#######################################################################################
+account.{$row.line_number}.dnd.enable =
+account.{$row.line_number}.dnd.on_code =
+account.{$row.line_number}.dnd.off_code =
+
+#######################################################################################
+## Call Forward(Except T19 Model) ##
+#######################################################################################
+account.{$row.line_number}.always_fwd.enable =
+account.{$row.line_number}.always_fwd.target =
+account.{$row.line_number}.always_fwd.off_code =
+account.{$row.line_number}.always_fwd.on_code =
+account.{$row.line_number}.busy_fwd.enable =
+account.{$row.line_number}.busy_fwd.target =
+account.{$row.line_number}.busy_fwd.off_code =
+account.{$row.line_number}.busy_fwd.on_code =
+account.{$row.line_number}.timeout_fwd.enable =
+account.{$row.line_number}.timeout_fwd.target =
+account.{$row.line_number}.timeout_fwd.timeout =
+account.{$row.line_number}.timeout_fwd.off_code =
+account.{$row.line_number}.timeout_fwd.on_code =
+
+#######################################################################################
+## Voice Monitoring (Except T19P/T21P Models) ##
+#######################################################################################
+account.{$row.line_number}.vq_rtcpxr.collector_name =
+account.{$row.line_number}.vq_rtcpxr.collector_server_host =
+account.{$row.line_number}.vq_rtcpxr.collector_server_port =
+
+
+#######################################################################################
+## Broadsoft XSI ##
+#######################################################################################
+##It configures the user name for XSI authentication for account X.Example:account.{$row.line_number}.xsi.user = 3502@as.iop1.broadworks.net.
+##The default value is blank.
+account.{$row.line_number}.xsi.user =
+
+##It configures the password for XSI authentication for account X.Example:account.{$row.line_number}.xsi.password = 123456.
+##The default value is blank.
+account.{$row.line_number}.xsi.password =
+
+##It configures the access URL of the Xtended Services Platform server for account X.Example:account.{$row.line_number}.xsi.host = xsp1.iop1.broadworks.net.
+##The default value is blank.
+account.{$row.line_number}.xsi.host =
+
+##It configures the server type of the Xtended Services Platform server for account X.Example:account.{$row.line_number}.xsi.server_type = http.
+##The default value is http.
+account.{$row.line_number}.xsi.server_type =
+
+##It configures the server port of the Xtended Services Platform server for account X.Example:account.{$row.line_number}.xsi.port = 80.
+##The default value is 80.Integer from 1 to 65535
+account.{$row.line_number}.xsi.port =
+
+#######################################################################################
+## V80 Add ##
+#######################################################################################
+## Add Time 2015.6.26
+account.X.callerid_in_support_header.enable =
+account.x.transfer_refer_to_contact_header.enable =
+account.x.sub_fail_retry_interval =
+account.X.update_ack_while_dialing =
+account.x.end_call_when_transferred.enable =
+account.x.contact_take_line_param =
+#######################################################################################
+## V80-SP2 Add ##
+#######################################################################################
+
+account.x.instance_id.enable =
+account.{$row.line_number}.reg_with_pani_header.enable =
+
+#######################################################################################
+## V81 Add ##
+#######################################################################################
+account.{$row.line_number}.dialplan.digitmap.active.on_hook_dialing =
+account.{$row.line_number}.dialplan.digitmap.apply_to.directory_dial =
+account.{$row.line_number}.dialplan.digitmap.apply_to.forward =
+account.{$row.line_number}.dialplan.digitmap.apply_to.on_hook_dial =
+account.{$row.line_number}.dialplan.digitmap.apply_to.press_send =
+account.{$row.line_number}.dialplan.digitmap.enable =
+account.{$row.line_number}.dialplan.digitmap.interdigit_long_timer =
+account.{$row.line_number}.dialplan.digitmap.interdigit_short_timer =
+account.{$row.line_number}.dialplan.digitmap.no_match_action =
+account.{$row.line_number}.dialplan.digitmap.string =
+account.{$row.line_number}.dialplan.digitmap.apply_to.history_dial =
+#######################################################################################
+## V40 Add ##
+#######################################################################################
+account.{$row.line_number}.hold_use_inactive =
+account.{$row.line_number}.call_recording.enable =
+account.{$row.line_number}.features.call_decline.enable =
+account.{$row.line_number}.line_seize.expires =
+account.{$row.line_number}.security_classification.enable =
+
+#######################################################################################
+## Features Sync ##
+#######################################################################################
+account.{$row.line_number}.features.forward.feature_key_sync.local_processing.enable =
+account.{$row.line_number}.features.dnd.feature_key_sync.local_processing.enable =
+
+#######################################################################################
+## Broadsoft Flexible Seating ##
+#######################################################################################
+##V40 Add
+account.{$row.line_number}.flexible_seating.enable =
+account.{$row.line_number}.hoteling.pin =
+account.{$row.line_number}.hoteling.mode =
+
+#######################################################################################
+## Broadsoft Hoteling ##
+#######################################################################################
+##V40 Add
+account.{$row.line_number}.hoteling.enable =
+account.{$row.line_number}.hoteling.user_id =
+account.{$row.line_number}.hoteling.password =
+account.{$row.line_number}.hoteling.expires =
+account.{$row.line_number}.hoteling.auto_login_enable =
+
+{/foreach}