Fix. Add extension with non numeric extension number. (#2508)

This commit is contained in:
Alexey Melnichuk 2017-04-14 11:12:24 +03:00 committed by FusionPBX
parent 5d436e2baf
commit c4111082f6
1 changed files with 199 additions and 187 deletions

View File

@ -123,6 +123,14 @@
$dial_string = $_POST["dial_string"];
$enabled = $_POST["enabled"];
$description = $_POST["description"];
$voicemail_id = $extension;
if (permission_exists('number_alias') && strlen($number_alias) > 0) {
$voicemail_id = $number_alias;
}
if (!is_numeric($voicemail_id)) {
$voicemail_id = NULL;
}
}
//delete the user from the v_extension_users
@ -243,19 +251,19 @@
//add the user to the database
$user_email = '';
if ($_SESSION["user"]["unique"]["text"] != "global") {
if ($autogen_users == "true") {
$auto_user = $extension;
for ($i=1; $i<=$range; $i++) {
$user_last_name = $auto_user;
$user_password = generate_password();
user_add($auto_user, $user_password, $user_email);
$generated_users[$i]['username'] = $auto_user;
$generated_users[$i]['password'] = $user_password;
$auto_user++;
if ($autogen_users == "true") {
$auto_user = $extension;
for ($i=1; $i<=$range; $i++) {
$user_last_name = $auto_user;
$user_password = generate_password();
user_add($auto_user, $user_password, $user_email);
$generated_users[$i]['username'] = $auto_user;
$generated_users[$i]['password'] = $user_password;
$auto_user++;
}
unset($auto_user);
}
unset($auto_user);
}
}
//build the data array
if (!isset($range)) { $range = 1; }
@ -371,40 +379,43 @@
$voicemail_password = generate_password($_SESSION['voicemail']['password_length']['numeric'], 1);
}
//get the voicemail_uuid
$sql = "select voicemail_uuid from v_voicemails ";
$sql .= "where voicemail_id = '".check_str($extension)."' ";
$sql .= "and domain_uuid = '".check_str($_SESSION["domain_uuid"])."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$voicemail_uuid = $row["voicemail_uuid"];
}
// build voicemail
if ($voicemail_id !== NULL) {
//get the voicemail_uuid
$sql = "select voicemail_uuid from v_voicemails ";
$sql .= "where voicemail_id = '".check_str($voicemail_id)."' ";
$sql .= "and domain_uuid = '".check_str($_SESSION["domain_uuid"])."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$voicemail_uuid = $row["voicemail_uuid"];
}
//if voicemail_uuid does not exist then get a new uuid
if (!isset($voicemail_uuid)) {
$voicemail_uuid = uuid();
$voicemail_tutorial = 'true';
}
//if voicemail_uuid does not exist then get a new uuid
if (!isset($voicemail_uuid)) {
$voicemail_uuid = uuid();
$voicemail_tutorial = 'true';
}
//add the voicemail
$array["voicemails"][$i]["domain_uuid"] = $domain_uuid;
$array["voicemails"][$i]["voicemail_uuid"] = $voicemail_uuid;
$array["voicemails"][$i]["voicemail_id"] = $extension;
$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;
$array["voicemails"][$i]["voicemail_file"] = $voicemail_file;
$array["voicemails"][$i]["voicemail_local_after_email"] = $voicemail_local_after_email;
$array["voicemails"][$i]["voicemail_enabled"] = $voicemail_enabled;
if ( empty($voicemail_description)){
$voicemail_description = $description;
//add the voicemail
$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;
$array["voicemails"][$i]["voicemail_file"] = $voicemail_file;
$array["voicemails"][$i]["voicemail_local_after_email"] = $voicemail_local_after_email;
$array["voicemails"][$i]["voicemail_enabled"] = $voicemail_enabled;
if ( empty($voicemail_description)){
$voicemail_description = $description;
}
$array["voicemails"][$i]["voicemail_description"] = $voicemail_description;
$array["voicemails"][$i]["voicemail_tutorial"] = $voicemail_tutorial;
}
$array["voicemails"][$i]["voicemail_description"] = $voicemail_description;
$array["voicemails"][$i]["voicemail_tutorial"] = $voicemail_tutorial;
}
//increment the extension number
@ -424,165 +435,166 @@
}
}
//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 = '".check_str($password)."' ";
$sql .= "where domain_uuid = '".check_str($_SESSION['domain_uuid'])."' ";
$sql .= "and server_address = '".check_str($_SESSION['domain_name'])."' ";
$sql .= "and user_id = '".check_str($extension)."' ";
$sql .= "and password = '".check_str($extension)."' ";
$db->exec(check_sql($sql));
unset($sql);
}
//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 = '".check_str($password)."' ";
$sql .= "where domain_uuid = '".check_str($_SESSION['domain_uuid'])."' ";
$sql .= "and server_address = '".check_str($_SESSION['domain_name'])."' ";
$sql .= "and user_id = '".check_str($extension)."' ";
$sql .= "and password = '".check_str($extension)."' ";
$db->exec(check_sql($sql));
unset($sql);
}
//assign the user to the extension
if ($action == "update" && strlen($_POST["extension_users"][0]["user_uuid"]) > 0) {
$array["extension_users"][0]["extension_user_uuid"] = uuid();
$array["extension_users"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["extension_users"][0]["user_uuid"] = $_POST["extension_users"][0]["user_uuid"];
$array["extension_users"][0]["extension_uuid"] = $extension_uuid;
}
//assign the user to the extension
if ($action == "update" && strlen($_POST["extension_users"][0]["user_uuid"]) > 0) {
$array["extension_users"][0]["extension_user_uuid"] = uuid();
$array["extension_users"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["extension_users"][0]["user_uuid"] = $_POST["extension_users"][0]["user_uuid"];
$array["extension_users"][0]["extension_uuid"] = $extension_uuid;
}
//assign the device to the extension
if ($action == "update" && strlen($_POST["devices"][0]["device_mac_address"]) > 0) {
//assign the device to the extension
if ($action == "update" && strlen($_POST["devices"][0]["device_mac_address"]) > 0) {
//set the variables
$device_uuid = uuid();
$device_line_uuid = uuid();
$device_mac_address = $_POST["devices"][0]["device_mac_address"];
$device_template = $_POST["devices"][0]["device_template"];
$line_number = $_POST["devices"][0]["line_number"];
//set the variables
$device_uuid = uuid();
$device_line_uuid = uuid();
$device_mac_address = $_POST["devices"][0]["device_mac_address"];
$device_template = $_POST["devices"][0]["device_template"];
$line_number = $_POST["devices"][0]["line_number"];
//normalize the mac address
$device_mac_address = strtolower($device_mac_address);
$device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address);
//normalize the mac address
$device_mac_address = strtolower($device_mac_address);
$device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address);
//get the device_uuid
$sql = "SELECT device_uuid FROM v_devices ";
$sql .= "WHERE device_mac_address = '".check_str($device_mac_address)."' ";
$sql .= "AND domain_uuid = '".check_str($domain_uuid)."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result as $field) {
$device_uuid = $field['device_uuid'];
}
unset($sql, $prep_statement);
//set a default line number
if (strlen($line_number) == 0) { $line_number = '1'; }
//add the device and device lines to the array
$array["devices"][0]["device_uuid"] = $device_uuid;
$array["devices"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["devices"][0]["device_mac_address"] = $device_mac_address;
if (strlen($device_template) > 0) {
$array["devices"][0]["device_template"] = $device_template;
}
$array["devices"][0]["device_enabled"] = "true";
$array["devices"][0]["device_lines"][0]["device_uuid"] = $device_uuid;
$array["devices"][0]["device_lines"][0]["device_line_uuid"] = $device_line_uuid;
$array["devices"][0]["device_lines"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["devices"][0]["device_lines"][0]["server_address"] = $_SESSION['domain_name'];
$array["devices"][0]["device_lines"][0]["display_name"] = $extension;
$array["devices"][0]["device_lines"][0]["user_id"] = $extension;
$array["devices"][0]["device_lines"][0]["auth_id"] = $extension;
$array["devices"][0]["device_lines"][0]["password"] = $password;
$array["devices"][0]["device_lines"][0]["line_number"] = $line_number;
$array["devices"][0]["device_lines"][0]["sip_port"] = $_SESSION['provision']['line_sip_port']['numeric'];
$array["devices"][0]["device_lines"][0]["sip_transport"] = $_SESSION['provision']['line_sip_transport']['text'];
$array["devices"][0]["device_lines"][0]["register_expires"] = $_SESSION['provision']['line_register_expires']['numeric'];
$array["devices"][0]["device_lines"][0]["enabled"] = "true";
}
//save to the data
$database = new database;
$database->app_name = 'extensions';
$database->app_uuid = null;
$database->save($array);
$message = $database->message;
//echo "<pre>".print_r($message, true)."<pre>\n";
//exit;
//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();
//get the device_uuid
$sql = "SELECT device_uuid FROM v_devices ";
$sql .= "WHERE device_mac_address = '".check_str($device_mac_address)."' ";
$sql .= "AND domain_uuid = '".check_str($domain_uuid)."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result as $field) {
$device_uuid = $field['device_uuid'];
}
}
unset($sql, $prep_statement);
//clear the cache
$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);
}
}
//set a default line number
if (strlen($line_number) == 0) { $line_number = '1'; }
//show the action and redirect the user
if ($action == "add") {
//prepare for alternating the row style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//add the device and device lines to the array
$array["devices"][0]["device_uuid"] = $device_uuid;
$array["devices"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["devices"][0]["device_mac_address"] = $device_mac_address;
if (strlen($device_template) > 0) {
$array["devices"][0]["device_template"] = $device_template;
}
$array["devices"][0]["device_enabled"] = "true";
$array["devices"][0]["device_lines"][0]["device_uuid"] = $device_uuid;
$array["devices"][0]["device_lines"][0]["device_line_uuid"] = $device_line_uuid;
$array["devices"][0]["device_lines"][0]["domain_uuid"] = $_SESSION['domain_uuid'];
$array["devices"][0]["device_lines"][0]["server_address"] = $_SESSION['domain_name'];
$array["devices"][0]["device_lines"][0]["display_name"] = $extension;
$array["devices"][0]["device_lines"][0]["user_id"] = $extension;
$array["devices"][0]["device_lines"][0]["auth_id"] = $extension;
$array["devices"][0]["device_lines"][0]["password"] = $password;
$array["devices"][0]["device_lines"][0]["line_number"] = $line_number;
$array["devices"][0]["device_lines"][0]["sip_port"] = $_SESSION['provision']['line_sip_port']['numeric'];
$array["devices"][0]["device_lines"][0]["sip_transport"] = $_SESSION['provision']['line_sip_transport']['text'];
$array["devices"][0]["device_lines"][0]["register_expires"] = $_SESSION['provision']['line_register_expires']['numeric'];
$array["devices"][0]["device_lines"][0]["enabled"] = "true";
//show the action and redirect the user
if (count($generated_users) == 0) {
//action add
$_SESSION["message"] = $text['message-add'];
header("Location: extension_edit.php?id=".$extension_uuid);
}
//save to the data
$database = new database;
$database->app_name = 'extensions';
$database->app_uuid = null;
$database->save($array);
$message = $database->message;
// echo "<pre>".print_r($array, true)."<pre>\n";
// echo "<pre>".print_r($message, true)."<pre>\n";
// die();
//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
$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);
}
}
//show the action and redirect the user
if ($action == "add") {
//prepare for alternating the row style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//show the action and redirect the user
if (count($generated_users) == 0) {
//action add
$_SESSION["message"] = $text['message-add'];
header("Location: extension_edit.php?id=".$extension_uuid);
}
else {
//auto-generate user with extension as login name
require_once "resources/header.php";
echo "<br />\n";
echo "<div align='center'>\n";
echo " <table width='40%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td colspan='2'><strong>New User Accounts</strong></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <th>Username</th>\n";
echo " <th>Password</th>\n";
echo " </tr>\n";
foreach($generated_users as $tmp_user){
echo " <tr>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$tmp_user['username']."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$tmp_user['password']."</td>\n";
echo " </tr>\n";
}
if ($c==0) { $c=1; } else { $c=0; }
echo " </table>";
echo "</div>\n";
require_once "resources/footer.php";
}
return;
}
if ($action == "update") {
if ($action == "update") {
$_SESSION["message"] = $text['message-update'];
}
else {
//auto-generate user with extension as login name
require_once "resources/header.php";
echo "<br />\n";
echo "<div align='center'>\n";
echo " <table width='40%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td colspan='2'><strong>New User Accounts</strong></td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <th>Username</th>\n";
echo " <th>Password</th>\n";
echo " </tr>\n";
foreach($generated_users as $tmp_user){
echo " <tr>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$tmp_user['username']."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$tmp_user['password']."</td>\n";
echo " </tr>\n";
}
if ($c==0) { $c=1; } else { $c=0; }
echo " </table>";
echo "</div>\n";
require_once "resources/footer.php";
$_SESSION["message"] = $text['message-add'];
}
header("Location: extension_edit.php?id=".$extension_uuid);
return;
}
if ($action == "update") {
if ($action == "update") {
$_SESSION["message"] = $text['message-update'];
}
else {
$_SESSION["message"] = $text['message-add'];
}
header("Location: extension_edit.php?id=".$extension_uuid);
return;
}
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)