Portions created by the Initial Developer are Copyright (C) 2008-2022 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('extension_add') || permission_exists('extension_edit')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //set the action as an add or an update if (is_uuid($_REQUEST["id"])) { $action = "update"; $extension_uuid = $_REQUEST["id"]; $page = $_REQUEST['page']; } else { $action = "add"; } //get total extension count from the database, check limit, if defined if ($action == 'add') { if ($_SESSION['limit']['extensions']['numeric'] != '') { $sql = "select count(*) "; $sql .= "from v_extensions "; $sql .= "where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $database = new database; $total_extensions = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); if ($total_extensions >= $_SESSION['limit']['extensions']['numeric']) { message::add($text['message-maximum_extensions'].' '.$_SESSION['limit']['extensions']['numeric'], 'negative'); header('Location: extensions.php'.(is_numeric($page) ? '?page='.$page : null)); exit; } } } //get the http values and set them as php variables if (count($_POST) > 0) { //get the values from the HTTP POST and save them as PHP variables if ($action == 'add' || permission_exists("extension_extension")) { $extension = str_replace(' ','-',$_POST["extension"]); } else { //lookup extension based on submitted uuid $sql = "select extension from v_extensions where extension_uuid = :extension_uuid"; $parameters['extension_uuid'] = $extension_uuid; $database = new database; $extension = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); } $number_alias = $_POST["number_alias"]; $password = $_POST["password"]; //server verification on account code $accountcode = $_POST["accountcode"]; $effective_caller_id_name = $_POST["effective_caller_id_name"]; $effective_caller_id_number = $_POST["effective_caller_id_number"]; $outbound_caller_id_name = $_POST["outbound_caller_id_name"]; $outbound_caller_id_number = $_POST["outbound_caller_id_number"]; $emergency_caller_id_name = $_POST["emergency_caller_id_name"]; $emergency_caller_id_number = $_POST["emergency_caller_id_number"]; $directory_first_name = $_POST["directory_first_name"]; $directory_last_name = $_POST["directory_last_name"]; $directory_visible = $_POST["directory_visible"]; $directory_exten_visible = $_POST["directory_exten_visible"]; $max_registrations = $_POST["max_registrations"]; $limit_max = $_POST["limit_max"]; $limit_destination = $_POST["limit_destination"]; //$device_uuid = $_POST["device_uuid"]; //$device_line = $_POST["device_line"]; $voicemail_password = $_POST["voicemail_password"]; $voicemail_enabled = $_POST["voicemail_enabled"]; $voicemail_mail_to = $_POST["voicemail_mail_to"]; $voicemail_transcription_enabled = $_POST["voicemail_transcription_enabled"]; $voicemail_file = $_POST["voicemail_file"]; $voicemail_local_after_email = $_POST["voicemail_local_after_email"]; $user_context = $_POST["user_context"]; $range = $_POST["range"]; $missed_call_app = $_POST["missed_call_app"]; $missed_call_data = $_POST["missed_call_data"]; $toll_allow = $_POST["toll_allow"]; $call_timeout = $_POST["call_timeout"]; $call_group = $_POST["call_group"]; $call_screen_enabled = $_POST["call_screen_enabled"]; $user_record = $_POST["user_record"]; $hold_music = $_POST["hold_music"]; $auth_acl = $_POST["auth_acl"]; $cidr = $_POST["cidr"]; $sip_force_contact = $_POST["sip_force_contact"]; $sip_force_expires = $_POST["sip_force_expires"]; $nibble_account = $_POST["nibble_account"]; $mwi_account = $_POST["mwi_account"]; $sip_bypass_media = $_POST["sip_bypass_media"]; $absolute_codec_string = $_POST["absolute_codec_string"]; $force_ping = $_POST["force_ping"]; $dial_string = $_POST["dial_string"]; $enabled = $_POST["enabled"]; $description = $_POST["description"]; //Yea i think i will have to recycle some code from here to get automatic extension assignment working //outbound caller id number - only allow numeric and + if (strlen($outbound_caller_id_number) > 0) { $outbound_caller_id_number = preg_replace('#[^\+0-9]#', '', $outbound_caller_id_number); } $voicemail_id = $extension; if (permission_exists('number_alias') && strlen($number_alias) > 0) { $voicemail_id = $number_alias; } if (!is_numeric($voicemail_id)) { $voicemail_id = null; } $cidrs = preg_split("/[\s,]+/", $cidr); $ips = array(); foreach ($cidrs as $ipaddr){ $cx = strpos($ipaddr, '/'); if ($cx){ $subnet = (int)(substr($ipaddr, $cx+1)); $ipaddr = substr($ipaddr, 0, $cx); } else{ $subnet = 32; } if(($addr = inet_pton($ipaddr)) !== false){ $ips[] = $ipaddr.'/'.$subnet; } } $cidr = implode(',',$ips); //change toll allow delimiter $toll_allow = str_replace(',',':', $toll_allow); //set assigned user variables $user_uuid = $_POST["extension_users"][0]["user_uuid"]; //device provisioning variables if (is_array($_POST["devices"]) && @sizeof($_POST["devices"]) != 0) { foreach ($_POST["devices"] as $d => $device) { $device_mac_address = strtolower($device["device_mac_address"]); $device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address); $line_numbers[$d] = $device["line_number"]; $device_mac_addresses[$d] = $device_mac_address; $device_templates[$d] = $device["device_template"]; } } //get or set the device_uuid if (is_array($device_mac_addresses) && @sizeof($device_mac_addresses) != 0) { foreach ($device_mac_addresses as $d => $device_mac_address) { $device_mac_address = strtolower($device_mac_address); $device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address); $sql = "select "; $sql .= "d1.device_uuid, "; $sql .= "d1.domain_uuid, "; $sql .= "d2.domain_name "; $sql .= "from "; $sql .= "v_devices as d1, "; $sql .= "v_domains as d2 "; $sql .= "where "; $sql .= "d1.domain_uuid = d2.domain_uuid and "; $sql .= "d1.device_mac_address = :device_mac_address "; $parameters['device_mac_address'] = $device_mac_address; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row)) { if ($_SESSION['domain_uuid'] == $row['domain_uuid']) { $device_uuid = $row['device_uuid']; $device_domain_name = $row['device_domain_name']; $device_unique = true; } else { $device_domain_name = $row['device_domain_name']; $device_unique = false; } } else { $device_unique = true; } unset($sql, $parameters); $device_uuids[$d] = is_uuid($device_uuid) ? $device_uuid : uuid(); } } } //delete the user from the v_extension_users if ($_REQUEST["delete_type"] == "user" && is_uuid($_REQUEST["delete_uuid"]) && permission_exists("extension_delete")) { //set the variables $extension_uuid = $_REQUEST["id"]; $user_uuid = $_REQUEST["delete_uuid"]; //delete the group from the users $array['extension_users'][0]['extension_uuid'] = $extension_uuid; $array['extension_users'][0]['user_uuid'] = $user_uuid; //add temporary permission $p = new permissions; $p->add('extension_user_delete', 'temp'); //save the array $database = new database; $database->app_name = 'extensions'; $database->app_uuid = 'e68d9689-2769-e013-28fa-6214bf47fca3'; $database->delete($array); unset($array); //remove temporary permission $p->delete('extension_user_delete', 'temp'); //redirect header("Location: extension_edit.php?id=".$extension_uuid); exit; } //delete the line from the v_device_lines if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/devices')) { if ($_REQUEST["delete_type"] == "device_line" && is_uuid($_REQUEST["delete_uuid"]) && permission_exists("extension_delete")) { //set the variables $device_line_uuid = $_REQUEST["delete_uuid"]; //delete device_line $array['device_lines'][0]['device_line_uuid'] = $device_line_uuid; //add temporary permission $p = new permissions; $p->add('device_line_delete', 'temp'); //save the array $database = new database; $database->app_name = 'extensions'; $database->app_uuid = 'e68d9689-2769-e013-28fa-6214bf47fca3'; $database->delete($array); unset($array); //remove temporary permission $p->delete('device_line_delete', 'temp'); //redirect header("Location: extension_edit.php?id=".$extension_uuid); exit; } } //process the user data and save it to the database if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) { //set the domain_uuid if (permission_exists('extension_domain') && is_uuid($_POST["domain_uuid"])) { $domain_uuid = $_POST["domain_uuid"]; } else { $domain_uuid = $_SESSION['domain_uuid']; } //validate the token $token = new token; if (!$token->validate($_SERVER['PHP_SELF'])) { message::add($text['message-invalid_token'],'negative'); header('Location: extensions.php'); exit; } //check for all required data $msg = ''; if (strlen($extension) == 0) { $msg .= $text['message-required'].$text['label-extension']."
\n"; } if (permission_exists('extension_enabled')) { if (strlen($enabled) == 0) { $msg .= $text['message-required'].$text['label-enabled']."
\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; } //prevent users from bypassing extension limit by using range if ($_SESSION['limit']['extensions']['numeric'] != '') { if ($total_extensions + $range > $_SESSION['limit']['extensions']['numeric']){ $range = $_SESSION['limit']['extensions']['numeric'] - $total_extensions; } } //add or update the database if ($_POST["persistformvar"] != "true") { //prep missed call values for db insert/update switch ($missed_call_app) { case 'email': $missed_call_data = str_replace(';',',',$missed_call_data); $missed_call_data = str_replace(' ','',$missed_call_data); if (substr_count($missed_call_data, ',') > 0) { $missed_call_data_array = explode(',', $missed_call_data); foreach ($missed_call_data_array as $array_index => $email_address) { if (!valid_email($email_address)) { unset($missed_call_data_array[$array_index]); } } //echo "
".print_r($missed_call_data_array, true)."


"; if (sizeof($missed_call_data_array) > 0) { $missed_call_data = implode(',', $missed_call_data_array); } else { unset($missed_call_app, $missed_call_data); } //echo "Multiple Emails = ".$missed_call_data; } else { //echo "Single Email = ".$missed_call_data."
"; if (!valid_email($missed_call_data)) { //echo "Invalid Email

"; unset($missed_call_app, $missed_call_data); } } break; case 'text': $missed_call_data = str_replace('-','',$missed_call_data); $missed_call_data = str_replace('.','',$missed_call_data); $missed_call_data = str_replace('(','',$missed_call_data); $missed_call_data = str_replace(')','',$missed_call_data); $missed_call_data = str_replace(' ','',$missed_call_data); if (!is_numeric($missed_call_data)) { unset($missed_call_app, $missed_call_data); } break; } //build the data array if (!isset($range)) { $range = 1; } $j = 0; for ($i=0; $i<$range; $i++) { //check if the extension exists if ($action == "add" && extension_exists($extension)) { //extension exists } else { //get the password length and strength $password_length = $_SESSION["extension"]["password_length"]["numeric"]; $password_strength = $_SESSION["extension"]["password_strength"]["numeric"]; //extension does not exist add it if ($action == "add" || $range > 1) { $extension_uuid = uuid(); $voicemail_uuid = uuid(); $password = generate_password($password_length, $password_strength); } //prepare the values for mwi account if (strlen($mwi_account) > 0) { if (strpos($mwi_account, '@') === false) { $mwi_account .= "@".$_SESSION['domain_name']; } } //generate a password if ($action == "add" && strlen($password) == 0) { $password = generate_password($password_length, $password_strength); } if ($action == "update" && permission_exists('extension_password') && strlen($password) == 0) { $password = generate_password($password_length, $password_strength); } //create the data array $array["extensions"][$i]["domain_uuid"] = $domain_uuid; $array["extensions"][$i]["extension_uuid"] = $extension_uuid; $array["extensions"][$i]["extension"] = $extension; if (permission_exists('number_alias')) { $array["extensions"][$i]["number_alias"] = $number_alias; } if (strlen($password) > 0) { $array["extensions"][$i]["password"] = $password; } if (permission_exists('extension_accountcode')) { $array["extensions"][$i]["accountcode"] = $accountcode; } else { if ($action == "add") { $array["extensions"][$i]["accountcode"] = get_accountcode(); } } if (permission_exists("effective_caller_id_name")) { $array["extensions"][$i]["effective_caller_id_name"] = $effective_caller_id_name; } if (permission_exists("effective_caller_id_number")) { $array["extensions"][$i]["effective_caller_id_number"] = $effective_caller_id_number; } if (permission_exists("outbound_caller_id_name")) { $array["extensions"][$i]["outbound_caller_id_name"] = $outbound_caller_id_name; } if (permission_exists("outbound_caller_id_number")) { $array["extensions"][$i]["outbound_caller_id_number"] = $outbound_caller_id_number; } if (permission_exists("emergency_caller_id_name")) { $array["extensions"][$i]["emergency_caller_id_name"] = $emergency_caller_id_name; } if (permission_exists("emergency_caller_id_number")) { $array["extensions"][$i]["emergency_caller_id_number"] = $emergency_caller_id_number; } if (permission_exists("extension_directory")) { $array["extensions"][$i]["directory_first_name"] = $directory_first_name; $array["extensions"][$i]["directory_last_name"] = $directory_last_name; $array["extensions"][$i]["directory_visible"] = $directory_visible; $array["extensions"][$i]["directory_exten_visible"] = $directory_exten_visible; } if (permission_exists("extension_max_registrations")) { $array["extensions"][$i]["max_registrations"] = $max_registrations; } else { if ($action == "add") { $array["extensions"][$i]["max_registrations"] = $_SESSION['extension']['max_registrations']['numeric']; } } if (permission_exists("extension_limit")) { $array["extensions"][$i]["limit_max"] = $limit_max; $array["extensions"][$i]["limit_destination"] = $limit_destination; } if (permission_exists("extension_user_context")) { $array["extensions"][$i]["user_context"] = $user_context; } else { if ($action == "add") { $array["extensions"][$i]["user_context"] = $_SESSION['domain_name']; } } if (permission_exists('extension_missed_call')) { $array["extensions"][$i]["missed_call_app"] = $missed_call_app; $array["extensions"][$i]["missed_call_data"] = $missed_call_data; } if (permission_exists('extension_toll')) { $array["extensions"][$i]["toll_allow"] = $toll_allow; } if (strlen($call_timeout) > 0) { $array["extensions"][$i]["call_timeout"] = $call_timeout; } if (permission_exists("extension_call_group")) { $array["extensions"][$i]["call_group"] = $call_group; } $array["extensions"][$i]["call_screen_enabled"] = $call_screen_enabled; if (permission_exists('extension_user_record')) { $array["extensions"][$i]["user_record"] = $user_record; } if (permission_exists('extension_hold_music')) { $array["extensions"][$i]["hold_music"] = $hold_music; } $array["extensions"][$i]["auth_acl"] = $auth_acl; if (permission_exists("extension_cidr")) { $array["extensions"][$i]["cidr"] = $cidr; } $array["extensions"][$i]["sip_force_contact"] = $sip_force_contact; $array["extensions"][$i]["sip_force_expires"] = $sip_force_expires; if (permission_exists('extension_nibble_account')) { if (strlen($nibble_account) > 0) { $array["extensions"][$i]["nibble_account"] = $nibble_account; } } $array["extensions"][$i]["mwi_account"] = $mwi_account; $array["extensions"][$i]["sip_bypass_media"] = $sip_bypass_media; if (permission_exists('extension_absolute_codec_string')) { $array["extensions"][$i]["absolute_codec_string"] = $absolute_codec_string; } if (permission_exists('extension_force_ping')) { $array["extensions"][$i]["force_ping"] = $force_ping; } if (permission_exists('extension_dial_string')) { $array["extensions"][$i]["dial_string"] = $dial_string; } if (permission_exists('extension_enabled')) { $array["extensions"][$i]["enabled"] = $enabled; } $array["extensions"][$i]["description"] = $description; //assign the user to the extension if (is_uuid($user_uuid)) { $array["extension_users"][$i]["extension_user_uuid"] = uuid(); $array["extension_users"][$i]["domain_uuid"] = $domain_uuid; $array["extension_users"][$i]["user_uuid"] = $user_uuid; $array["extension_users"][$i]["extension_uuid"] = $extension_uuid; } //assign the device to the extension(s) if (is_array($device_mac_addresses) && @sizeof($device_mac_addresses) != 0) { foreach ($device_mac_addresses as $d => $device_mac_address) { if (is_mac($device_mac_address)) { //get the device vendor if (isset($device_templates[$d])) { //use the the template to get the vendor $template_array = explode("/", $device_templates[$d]); $device_vendor = $template_array[0]; } else { //use the mac address to get the vendor $device_vendor = device::get_vendor($device_mac_address); } //determine the name if (strlen($effective_caller_id_name) > 0) { $name = $effective_caller_id_name; } elseif (strlen($directory_first_name) > 0 && strlen($directory_last_name) > 0) { $name = $directory_first_name.' '.$directory_last_name; } elseif (strlen($directory_first_name) > 0) { $name = $directory_first_name; } elseif (strlen($directory_first_name) > 0) { $name = $directory_first_name.' '.$directory_last_name; } else { $name = ''; } //get the dislplay label if ($_SESSION['provision']['line_label']['text'] == 'auto') { $line_label = $extension; } else { $line_label = $_SESSION['provision']['line_label']['text']; $line_label = str_replace("\${name}", $name, $line_label); $line_label = str_replace("\${effective_caller_id_name}", $effective_caller_id_name, $line_label); $line_label = str_replace("\${first_name}", $directory_first_name, $line_label); $line_label = str_replace("\${last_name}", $directory_last_name, $line_label); $line_label = str_replace("\${user_id}", $extension, $line_label); $line_label = str_replace("\${auth_id}", $extension, $line_label); $line_label = str_replace("\${extension}", $extension, $line_label); $line_label = str_replace("\${description}", $description, $line_label); } //get the dislplay name if ($_SESSION['provision']['line_display_name']['text'] == 'auto') { $line_display_name = $name; } else { $line_display_name = $_SESSION['provision']['line_display_name']['text']; $line_display_name = str_replace("\${name}", $name, $line_display_name); $line_display_name = str_replace("\${effective_caller_id_name}", $effective_caller_id_name, $line_display_name); $line_display_name = str_replace("\${first_name}", $directory_first_name, $line_display_name); $line_display_name = str_replace("\${last_name}", $directory_last_name, $line_display_name); $line_display_name = str_replace("\${user_id}", $extension, $line_display_name); $line_display_name = str_replace("\${auth_id}", $extension, $line_display_name); $line_display_name = str_replace("\${extension}", $extension, $line_display_name); $line_display_name = str_replace("\${description}", $description, $line_display_name); } //send a message to the user the device is not unique if (!$device_unique) { $message = $text['message-duplicate'].(if_group("superadmin") && $_SESSION["domain_name"] != $device_domain_name ? ": ".$device_domain_name : null); message::add($message,'negative'); } //build the devices array if ($device_unique && $device_mac_address != '000000000000') { $array["devices"][$j]["device_uuid"] = $device_uuids[$d]; $array["devices"][$j]["domain_uuid"] = $_SESSION['domain_uuid']; $array["devices"][$j]["device_mac_address"] = $device_mac_address; $array["devices"][$j]["device_label"] = $extension; $array["devices"][$j]["device_vendor"] = $device_vendor; if (strlen($device_templates[$d]) > 0) { $array["devices"][$j]["device_template"] = $device_templates[$d]; } $array["devices"][$j]["device_enabled"] = "true"; $array["devices"][$j]["device_lines"][0]["device_uuid"] = $device_uuids[$d]; $array["devices"][$j]["device_lines"][0]["device_line_uuid"] = uuid(); $array["devices"][$j]["device_lines"][0]["domain_uuid"] = $_SESSION['domain_uuid']; $array["devices"][$j]["device_lines"][0]["server_address"] = $_SESSION['domain_name']; $array["devices"][$j]["device_lines"][0]["outbound_proxy_primary"] = $_SESSION['provision']['outbound_proxy_primary']['text']; $array["devices"][$j]["device_lines"][0]["outbound_proxy_secondary"] = $_SESSION['provision']['outbound_proxy_secondary']['text']; $array["devices"][$j]["device_lines"][0]["server_address_primary"] = $_SESSION['provision']['server_address_primary']['text']; $array["devices"][$j]["device_lines"][0]["server_address_secondary"] = $_SESSION['provision']['server_address_secondary']['text']; $array["devices"][$j]["device_lines"][0]["label"] = $line_label; $array["devices"][$j]["device_lines"][0]["display_name"] = $line_display_name; $array["devices"][$j]["device_lines"][0]["user_id"] = $extension; $array["devices"][$j]["device_lines"][0]["auth_id"] = $extension; $array["devices"][$j]["device_lines"][0]["password"] = $password; $array["devices"][$j]["device_lines"][0]["line_number"] = is_numeric($line_numbers[$d]) ? $line_numbers[$d] : '1'; $array["devices"][$j]["device_lines"][0]["sip_port"] = $_SESSION['provision']['line_sip_port']['numeric']; $array["devices"][$j]["device_lines"][0]["sip_transport"] = $_SESSION['provision']['line_sip_transport']['text']; $array["devices"][$j]["device_lines"][0]["register_expires"] = $_SESSION['provision']['line_register_expires']['numeric']; $array["devices"][$j]["device_lines"][0]["enabled"] = "true"; } //increment $j++; } } } } //add or update voicemail if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/voicemails')) { //set the voicemail password if (strlen($voicemail_password) == 0) { $voicemail_password = generate_password($_SESSION['voicemail']['password_length']['numeric'], 1); } //add the voicemail to the array if ($voicemail_id !== NULL) { //get the voicemail_uuid $sql = "select voicemail_uuid from v_voicemails "; $sql .= "where voicemail_id = :voicemail_id "; $sql .= "and domain_uuid = :domain_uuid "; $parameters['voicemail_id'] = $voicemail_id; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $voicemail_uuid = $row["voicemail_uuid"]; } unset($sql, $parameters, $row); //if voicemail_uuid does not exist then get a new uuid if (!is_uuid($voicemail_uuid)) { $voicemail_uuid = uuid(); $voicemail_tutorial = 'true'; //if adding a mailbox and don't have the transcription permission, set the default transcribe behavior if (!permission_exists('voicemail_transcription_enabled') && isset($_SESSION['voicemail']['transcription_enabled_default']['boolean'])) { $voicemail_transcription_enabled = $_SESSION['voicemail']['transcription_enabled_default']['boolean']; } } //add the voicemail to the array $array["voicemails"][$i]["domain_uuid"] = $domain_uuid; $array["voicemails"][$i]["voicemail_uuid"] = $voicemail_uuid; $array["voicemails"][$i]["voicemail_id"] = $voicemail_id; $array["voicemails"][$i]["voicemail_password"] = $voicemail_password; //$array["voicemails"][$i]["greeting_id"] = $greeting_id; //$array["voicemails"][$i]["voicemail_alternate_greet_id"] = $alternate_greet_id; $array["voicemails"][$i]["voicemail_mail_to"] = $voicemail_mail_to; //$array["voicemails"][$i]["voicemail_attach_file"] = $voicemail_attach_file; if (permission_exists('voicemail_file')) { $array["voicemails"][$i]["voicemail_file"] = $voicemail_file; } if (permission_exists('voicemail_local_after_email')) { $array["voicemails"][$i]["voicemail_local_after_email"] = $voicemail_local_after_email; } $array["voicemails"][$i]["voicemail_transcription_enabled"] = $voicemail_transcription_enabled; $array["voicemails"][$i]["voicemail_tutorial"] = $voicemail_tutorial; $array["voicemails"][$i]["voicemail_enabled"] = $voicemail_enabled; $array["voicemails"][$i]["voicemail_description"] = $description; //make sure the voicemail directory exists if (is_numeric($voicemail_id)) { if (!file_exists($_SESSION['switch']['voicemail']['dir']."/default/".$_SESSION['domain_name']."/".$voicemail_id)) { mkdir($_SESSION['switch']['voicemail']['dir']."/default/".$_SESSION['domain_name']."/".$voicemail_id, 0770, true); } } } } //increment the extension number if ($action != "update") { $extension++; $voicemail_id = $extension; if (strlen($number_alias) > 0) { $number_alias++; $voicemail_id = $number_alias; } if (strlen($mwi_account) > 0) { $mwi_account_array = explode('@', $mwi_account); $mwi_account_array[0]++; $mwi_account = implode('@', $mwi_account_array); unset($mwi_account_array); } } } //update devices having extension assigned to line(s) with new password if ($action == "update" && $range == 1 && permission_exists('extension_password')) { $sql = "update v_device_lines set "; $sql .= "password = :password "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and server_address = :server_address "; $sql .= "and user_id = :user_id "; $parameters['password'] = $password; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['server_address'] = $_SESSION['domain_name']; $parameters['user_id'] = $extension; $database = new database; $database->execute($sql, $parameters); unset($sql, $parameters); } //update device key label if (strlen($effective_caller_id_name) > 0) { $sql = "update v_device_keys set "; $sql .= "device_key_label = :device_key_label "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and device_key_value = :device_key_value "; $parameters['device_key_label'] = $effective_caller_id_name; $parameters['domain_uuid'] = $_SESSION['domain_uuid']; $parameters['device_key_value'] = $extension; $database = new database; $database->execute($sql, $parameters); unset($sql, $parameters); } //save to the data $database = new database; $database->app_name = 'extensions'; $database->app_uuid = 'e68d9689-2769-e013-28fa-6214bf47fca3'; $database->save($array); $message = $database->message; unset($array); //reload acl if allowed if (permission_exists("extension_cidr")) { $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); if ($fp) { event_socket_request($fp, "api reloadacl"); } } //check the permissions if (permission_exists('extension_add') || permission_exists('extension_edit')) { //synchronize configuration if (is_writable($_SESSION['switch']['extensions']['dir'])) { require_once "app/extensions/resources/classes/extension.php"; $ext = new extension; $ext->xml(); unset($ext); } //write the provision files if (strlen($_SESSION['provision']['path']['text']) > 0) { if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/provision')) { $prov = new provision; $prov->domain_uuid = $domain_uuid; $response = $prov->write(); } } //clear the cache if (!permission_exists("extension_user_context") && $action == "update") { $sql = "select user_context from v_extensions "; $sql .= "where extension_uuid = :extension_uuid "; $parameters['extension_uuid'] = $extension_uuid; $database = new database; $user_context = $database->select($sql, $parameters, 'column'); } $cache = new cache; $cache->delete("directory:".$extension."@".$user_context); if (permission_exists('number_alias') && strlen($number_alias) > 0) { $cache->delete("directory:".$number_alias."@".$user_context); } //clear the destinations session array if (isset($_SESSION['destinations']['array'])) { unset($_SESSION['destinations']['array']); } } //set the message and redirect if ($action == "add") { message::add($text['message-add']); } if ($action == "update") { message::add($text['message-update']); } if ($range > 1) { header("Location: extensions.php"); } else { header("Location: extension_edit.php?id=".$extension_uuid.(is_numeric($page) ? '&page='.$page : null)); } exit; } } //pre-populate the form Hmmm this seems like something I will need if (count($_GET) > 0 && $_POST["persistformvar"] != "true") { $extension_uuid = $_GET["id"]; $sql = "select * from v_extensions "; $sql .= "where extension_uuid = :extension_uuid "; $parameters['extension_uuid'] = $extension_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $domain_uuid = $row["domain_uuid"]; $extension = $row["extension"]; $number_alias = $row["number_alias"]; $password = $row["password"]; $accountcode = $row["accountcode"]; $effective_caller_id_name = $row["effective_caller_id_name"]; $effective_caller_id_number = $row["effective_caller_id_number"]; $outbound_caller_id_name = $row["outbound_caller_id_name"]; $outbound_caller_id_number = $row["outbound_caller_id_number"]; $emergency_caller_id_name = $row["emergency_caller_id_name"]; $emergency_caller_id_number = $row["emergency_caller_id_number"]; $directory_first_name = $row["directory_first_name"]; $directory_last_name = $row["directory_last_name"]; $directory_visible = $row["directory_visible"]; $directory_exten_visible = $row["directory_exten_visible"]; $max_registrations = $row["max_registrations"]; $limit_max = $row["limit_max"]; $limit_destination = $row["limit_destination"]; $user_context = $row["user_context"]; $missed_call_app = $row["missed_call_app"]; $missed_call_data = $row["missed_call_data"]; $toll_allow = $row["toll_allow"]; $call_timeout = $row["call_timeout"]; $call_group = $row["call_group"]; $call_screen_enabled = $row["call_screen_enabled"]; $user_record = $row["user_record"]; $hold_music = $row["hold_music"]; $auth_acl = $row["auth_acl"]; $cidr = $row["cidr"]; $sip_force_contact = $row["sip_force_contact"]; $sip_force_expires = $row["sip_force_expires"]; $nibble_account = $row["nibble_account"]; $mwi_account = $row["mwi_account"]; $sip_bypass_media = $row["sip_bypass_media"]; $absolute_codec_string = $row["absolute_codec_string"]; $force_ping = $row["force_ping"]; $dial_string = $row["dial_string"]; $enabled = $row["enabled"]; $description = $row["description"]; } unset($sql, $parameters, $row); //outbound caller id number - only allow numeric and + if (strlen($outbound_caller_id_number) > 0) { $outbound_caller_id_number = preg_replace('#[^\+0-9]#', '', $outbound_caller_id_number); } //get the voicemail data if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/voicemails')) { $sql = "select * from v_voicemails "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and voicemail_id = :voicemail_id "; $parameters['domain_uuid'] = $domain_uuid; $parameters['voicemail_id'] = is_numeric($number_alias) ? $number_alias : $extension; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && @sizeof($row) != 0) { $voicemail_password = str_replace("#", "", $row["voicemail_password"]); $voicemail_mail_to = str_replace(" ", "", $row["voicemail_mail_to"]); $voicemail_transcription_enabled = $row["voicemail_transcription_enabled"]; $voicemail_tutorial = $row["voicemail_tutorial"]; $voicemail_file = $row["voicemail_file"]; $voicemail_local_after_email = $row["voicemail_local_after_email"]; $voicemail_enabled = $row["voicemail_enabled"]; } unset($sql, $parameters, $row); } } else { $voicemail_file = $_SESSION['voicemail']['voicemail_file']['text']; $voicemail_local_after_email = $_SESSION['voicemail']['keep_local']['boolean']; } //get the device lines $sql = "select d.device_mac_address, d.device_template, d.device_description, l.device_line_uuid, l.device_uuid, l.line_number "; $sql .= "from v_device_lines as l, v_devices as d "; $sql .= "where (l.user_id = :user_id_1 or l.user_id = :user_id_2)"; $sql .= "and l.domain_uuid = :domain_uuid "; $sql .= "and l.device_uuid = d.device_uuid "; $sql .= "order by l.line_number, d.device_mac_address asc "; $parameters['user_id_1'] = $extension; $parameters['user_id_2'] = $number_alias; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $device_lines = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the devices $sql = "select * from v_devices "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "order by device_mac_address asc "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $devices = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the device vendors $sql = "select name "; $sql .= "from v_device_vendors "; $sql .= "where enabled = 'true' "; $sql .= "order by name asc "; $database = new database; $device_vendors = $database->select($sql, null, 'all'); unset($sql); //get assigned users if (is_uuid($extension_uuid)) { $sql = "select u.username, e.user_uuid "; $sql .= "from v_extension_users as e, v_users as u "; $sql .= "where e.user_uuid = u.user_uuid "; $sql .= "and u.user_enabled = 'true' "; $sql .= "and e.domain_uuid = :domain_uuid "; $sql .= "and e.extension_uuid = :extension_uuid "; $sql .= "order by u.username asc "; $parameters['domain_uuid'] = $domain_uuid; $parameters['extension_uuid'] = $extension_uuid; $database = new database; $assigned_users = $database->select($sql, $parameters, 'all'); if (is_array($assigned_users) && @sizeof($assigned_users) != 0) { foreach($assigned_users as $row) { $assigned_user_uuids[] = $row['user_uuid']; } } unset($sql, $parameters, $row); } //get the users $sql = "select * from v_users "; $sql .= "where domain_uuid = :domain_uuid "; if (is_array($assigned_user_uuids) && @sizeof($assigned_user_uuids) != 0) { foreach ($assigned_user_uuids as $index => $assigned_user_uuid) { $sql .= "and user_uuid <> :user_uuid_".$index." "; $parameters['user_uuid_'.$index] = $assigned_user_uuid; } } $sql .= "and user_enabled = 'true' "; $sql .= "order by username asc "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $users = $database->select($sql, $parameters, 'all'); unset($sql, $parameters, $assigned_user_uuids, $assigned_user_uuid); //get the destinations $sql = "select * from v_destinations "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and destination_type = 'inbound' "; $sql .= "order by destination_number asc "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $destinations = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); //get the emergency destinations if (permission_exists('emergency_caller_id_select')) { $sql = "select * from v_destinations "; $sql .= "where domain_uuid = :domain_uuid "; $sql .= "and destination_type = 'inbound' "; $sql .= "and destination_type_emergency = 1 "; $sql .= "order by destination_number asc "; $parameters['domain_uuid'] = $domain_uuid; $database = new database; $emergency_destinations = $database->select($sql, $parameters, 'all'); unset($sql, $parameters); } //change toll allow delimiter $toll_allow = str_replace(':',',', $toll_allow); //set the defaults if (strlen($user_context) == 0) { $user_context = $_SESSION['domain_name']; } if (strlen($max_registrations) == 0) { $max_registrations = $_SESSION['extension']['max_registrations']['numeric']; } if (strlen($accountcode) == 0) { $accountcode = get_accountcode(); } if (strlen($limit_max) == 0) { $limit_max = '5'; } if (strlen($limit_destination) == 0) { $limit_destination = '!USER_BUSY'; } if (strlen($call_timeout) == 0) { $call_timeout = '30'; } if (strlen($call_screen_enabled) == 0) { $call_screen_enabled = 'false'; } if (strlen($user_record) == 0) { $user_record = $_SESSION['extension']['user_record_default']['text']; } if (strlen($voicemail_transcription_enabled) == 0) { $voicemail_transcription_enabled = $_SESSION['voicemail']['transcription_enabled_default']['boolean']; } if (strlen($voicemail_enabled) == 0) { $voicemail_enabled = $_SESSION['voicemail']['enabled_default']['boolean']; } //create token $object = new token; $token = $object->create($_SERVER['PHP_SELF']); //begin the page content require_once "resources/header.php"; if ($action == "update") { $document['title'] = $text['title-extension-edit']; } elseif ($action == "add") { $document['title'] = $text['title-extension-add']; } echo ""; echo "
\n"; echo "
\n"; echo "
"; if ($action == "add") { echo "".$text['header-extension-add'].""; } if ($action == "update") { echo "".$text['header-extension-edit'].""; } echo "
\n"; echo "
\n"; echo button::create(['type'=>'button','label'=>$text['button-back'],'icon'=>$_SESSION['theme']['button_icon_back'],'id'=>'btn_back','link'=>'extensions.php'.(is_numeric($page) ? '?page='.$page : null)]); if ($action == 'update') { $button_margin = 'margin-left: 15px;'; if (permission_exists('xml_cdr_view')) { echo button::create(['type'=>'button','label'=>$text['button-cdr'],'icon'=>'info-circle','style'=>$button_margin,'link'=>'../xml_cdr/xml_cdr.php?extension_uuid='.urlencode($extension_uuid)]); unset($button_margin); } if (permission_exists('follow_me') || permission_exists('call_forward') || permission_exists('do_not_disturb')) { echo button::create(['type'=>'button','label'=>$text['button-call_forward'],'icon'=>'project-diagram','style'=>$button_margin,'link'=>'../call_forward/call_forward_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();"]); } } 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"; echo "
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('number_alias')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_password') && $action == "update") { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if ($action == "add") { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_user_edit')) { echo " "; echo " "; echo " "; echo " "; } if (permission_exists('voicemail_edit') && is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/voicemails')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_accountcode')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('device_edit')) { if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/devices')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } } if (permission_exists("effective_caller_id_name")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("effective_caller_id_number")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("outbound_caller_id_name")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("outbound_caller_id_number")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("emergency_caller_id_name")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("emergency_caller_id_number")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("extension_directory")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("extension_max_registrations")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("extension_limit")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('voicemail_edit') && is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/voicemails')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('voicemail_transcription_enabled')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('voicemail_file')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('voicemail_local_after_email')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } } if (permission_exists('extension_missed_call')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_toll')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists("extension_call_group")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_call_screen')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_user_record')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/music_on_hold') && permission_exists('extension_hold_music')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_domain')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists("extension_user_context")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } //--- begin: show_advanced ----------------------- if (permission_exists("extension_advanced")) { echo "\n"; echo "\n"; echo "\n"; } //--- end: show_advanced ----------------------- if (permission_exists('extension_enabled')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo " ".$text['label-extension']."\n"; echo "\n"; if ($action == "add" || permission_exists("extension_extension")) { echo " \n"; echo " \n"; //help defeat browser auto-fill echo "
\n"; echo $text['description-extension']."\n"; } else { echo escape($extension); } echo "
\n"; echo " ".$text['label-number_alias']."\n"; echo "\n"; echo " \n"; echo " \n"; //help defeat browser auto-fill echo "
\n"; echo $text['description-number_alias']."\n"; echo "
\n"; echo " ".$text['label-password']."\n"; echo "\n"; echo " \n"; //help defeat browser auto-fill echo " \n"; echo "
\n"; echo " ".$text['description-password']."\n"; echo "
\n"; echo " ".$text['label-range']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-range']."\n"; echo "
".($action == "update" ? $text['label-users'] : $text['label-user']).""; if (is_array($assigned_users) && @sizeof($assigned_users) != 0 && $action == "update") { echo " \n"; foreach($assigned_users as $field) { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } echo "
".escape($field['username'])."\n"; echo " $v_link_label_delete\n"; echo "
\n"; echo "
\n"; } if (is_array($users) && @sizeof($users) != 0) { echo " "; if ($action == "update") { echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add']]); } echo "
\n"; } echo " ".$text['description-user_list']."\n"; echo "
\n"; echo "
\n"; echo " ".$text['label-voicemail_password']."\n"; echo "\n"; echo " \n"; //help defeat browser auto-fill echo " \n"; echo "
\n"; echo " ".$text['description-voicemail_password']."\n"; echo "
\n"; echo " ".$text['label-accountcode']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo " ".$text['description-accountcode']."\n"; echo "
\n"; echo " ".$text['label-provisioning']."\n"; echo "\n"; echo " "; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($action == 'update') { echo " \n"; } echo " \n"; if ($action == 'update') { if (is_array($device_lines) && @sizeof($device_lines) != 0) { foreach ($device_lines as $row) { $device_mac_address = format_mac($row['device_mac_address']); echo " \n"; echo " \n"; echo " \n"; echo " \n"; //echo " \n"; echo " \n"; echo " \n"; } } } for ($d = 0; $d <= 4; $d++) { echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (is_array($device_lines) && @sizeof($device_lines) != 0) { echo " \n"; } echo " \n"; break; //show one empty row whether adding or editing } echo "
\n"; echo " ".$text['label-line']." \n"; echo " \n"; echo " ".$text['label-device_mac_address']." \n"; echo " \n"; echo " ".$text['label-device_template']." \n"; echo "  
".escape($row['line_number'])."".escape($device_mac_address)."".escape($row['device_template'])." ".$row['device_description']." \n"; echo " $v_link_label_delete\n"; echo "
"; echo " \n"; echo " "; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
\n"; ?> \n"; echo " \n"; if (is_array($devices) && @sizeof($devices) != 0) { foreach ($devices as $field) { if (strlen($field["device_mac_address"]) > 0) { $selected = $field_current_value == $field["device_mac_address"] ? "selected='selected'" : null; echo " \n"; } } } echo " \n"; echo " \n"; echo "
\n"; echo "
"; $device = new device; $template_dir = $device->get_template_dir(); echo " \n"; echo " \n"; echo button::create(['type'=>'submit','label'=>$text['button-add'],'icon'=>$_SESSION['theme']['button_icon_add']]); echo "
\n"; echo "
\n"; echo $text['description-provisioning']."\n"; echo "
\n"; echo " ".$text['label-effective_caller_id_name']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-effective_caller_id_name']."\n"; echo "
\n"; echo " ".$text['label-effective_caller_id_number']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-effective_caller_id_number']."\n"; echo "
\n"; echo " ".$text['label-outbound_caller_id_name']."\n"; echo "\n"; if (permission_exists('outbound_caller_id_select')) { if (count($destinations) > 0) { echo " \n"; echo "
\n"; echo $text['description-outbound_caller_id_name-select']."\n"; } else { echo " \n"; } } else { echo " \n"; echo "
\n"; echo $text['description-outbound_caller_id_name-custom']."\n"; } echo "
\n"; echo " ".$text['label-outbound_caller_id_number']."\n"; echo "\n"; if (permission_exists('outbound_caller_id_select')) { if (count($destinations) > 0) { echo " \n"; echo "
\n"; echo $text['description-outbound_caller_id_number-select']."\n"; } else { echo " \n"; } } else { echo " \n"; echo "
\n"; echo $text['description-outbound_caller_id_number-custom']."\n"; } echo "
\n"; echo " ".$text['label-emergency_caller_id_name']."\n"; echo "\n"; if (permission_exists('emergency_caller_id_select')) { if (count($emergency_destinations) > 0) { echo " \n"; } else { echo " \n"; } } else { echo " \n"; } echo "
\n"; if (permission_exists('outbound_caller_id_select') && count($destinations) > 0) { echo $text['description-emergency_caller_id_name-select']."\n"; } else { echo $text['description-emergency_caller_id_name']."\n"; } echo "
\n"; echo " ".$text['label-emergency_caller_id_number']."\n"; echo "\n"; if (permission_exists('emergency_caller_id_select')) { if (count($emergency_destinations) > 0) { echo " \n"; } else { echo " \n"; } } else { echo " \n"; } echo "
\n"; if (permission_exists('emergency_caller_id_select') && count($emergency_destinations) > 0){ echo $text['description-emergency_caller_id_number-select']."\n"; } elseif (permission_exists('outbound_caller_id_select') && count($destinations) > 0) { echo $text['description-emergency_caller_id_number-select']."\n"; } else { echo $text['description-emergency_caller_id_number']."\n"; } echo "
\n"; echo " ".$text['label-directory_full_name']."\n"; echo "\n"; echo " \n"; echo " \n"; echo "
\n"; echo $text['description-directory_full_name']."\n"; echo "
\n"; echo " ".$text['label-directory_visible']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo "
\n"; echo $text['description-directory_visible']."\n"; echo "
\n"; echo " ".$text['label-directory_exten_visible']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo "
\n"; echo $text['description-directory_exten_visible']."\n"; echo "
\n"; echo " ".$text['label-max_registrations']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-max_registrations']."\n"; echo "
\n"; echo " ".$text['label-limit_max']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-limit_max']."\n"; echo "
\n"; echo " ".$text['label-limit_destination']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-limit_destination']."\n"; echo "
\n"; echo " ".$text['label-voicemail_enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-voicemail_enabled']."\n"; echo "
\n"; echo " ".$text['label-voicemail_mail_to']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-voicemail_mail_to']."\n"; echo "
\n"; echo " ".$text['label-voicemail_transcription_enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-voicemail_transcription_enabled']."\n"; echo "
\n"; echo " ".$text['label-voicemail_file']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-voicemail_file']."\n"; echo "
\n"; echo " ".$text['label-voicemail_local_after_email']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-voicemail_local_after_email']."\n"; echo "
\n"; echo " ".$text['label-missed_call']."\n"; echo "\n"; echo " \n"; $missed_call_data = ($missed_call_app == 'text') ? format_phone($missed_call_data) : $missed_call_data; echo " \n"; echo "
\n"; echo $text['description-missed_call']."\n"; echo "
\n"; echo " ".$text['label-toll_allow']."\n"; echo "\n"; if (is_array($_SESSION['toll allow']['name'])) { echo " \n"; } else { echo " \n"; } echo "
\n"; echo $text['description-toll_allow']."\n"; echo "
\n"; echo " ".$text['label-call_timeout']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-call_timeout']."\n"; echo "
\n"; echo " ".$text['label-call_group']."\n"; echo "\n"; if (is_array($_SESSION['call group']['name'])) { echo " \n"; } else { echo " \n"; } echo "
\n"; echo $text['description-call_group']."\n"; echo "
\n"; echo " ".$text['label-call_screen_enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-call_screen_enabled']."\n"; echo "
\n"; echo " ".$text['label-user_record']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-user_record']."\n"; echo "
\n"; echo " ".$text['label-hold_music']."\n"; echo "\n"; require_once "app/music_on_hold/resources/classes/switch_music_on_hold.php"; $options = ''; $moh = new switch_music_on_hold; echo $moh->select('hold_music', $hold_music, $options); echo "
\n"; echo $text['description-hold_music']."\n"; echo "
\n"; echo " ".$text['label-domain']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-domain_name']."\n"; echo "
\n"; echo " ".$text['label-user_context']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-user_context']."\n"; echo "
\n"; echo "
\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
 \n"; echo button::create(['type'=>'button','label'=>$text['button-advanced'],'icon'=>'tools','onclick'=>'show_advanced_config();']); echo "
\n"; echo "
\n"; echo "
\n"; echo " \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists("extension_cidr")) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('extension_nibble_account')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; if (permission_exists('extension_absolute_codec_string')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_force_ping')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } if (permission_exists('extension_dial_string')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } echo "
\n"; echo " ".$text['label-auth_acl']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-auth_acl']."\n"; echo "
\n"; echo " ".$text['label-cidr']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-cidr']."\n"; echo "
\n"; echo " ".$text['label-sip_force_contact']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_force_contact']."\n"; echo "
\n"; echo " ".$text['label-sip_force_expires']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_force_expires']."\n"; echo "
\n"; echo " ".$text['label-nibble_account']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-nibble_account']."\n"; echo "
\n"; echo " ".$text['label-mwi_account']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-mwi_account']."\n"; echo "
\n"; echo " ".$text['label-sip_bypass_media']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-sip_bypass_media']."\n"; echo "
\n"; echo " ".$text['label-absolute_codec_string']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-absolute_codec_string']."\n"; echo "
\n"; echo " ".$text['label-force_ping']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-force_ping']."\n"; echo "
\n"; echo " ".$text['label-dial_string']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-dial_string']."\n"; echo "
\n"; echo "
"; echo "
\n"; echo " ".$text['label-enabled']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enabled']."\n"; echo "
\n"; echo " ".$text['label-description']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-description']."\n"; echo "
"; echo "

"; if (is_numeric($page)) { echo "\n"; } if ($action == "update") { echo "\n"; echo ""; if (!permission_exists('extension_domain')) { echo ""; } echo ""; echo ""; } echo "\n"; echo "
"; echo "\n"; //include the footer require_once "resources/footer.php"; ?>