From 134a16a9255d721147d35ccde65a46ba41731207 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Sun, 28 Apr 2013 07:24:41 +0000 Subject: [PATCH] Make the provisioning use device extension table. --- app/extensions/extension_edit.php | 269 ++++++++++++++++++------------ app/provision/index.php | 41 +++-- app/provision/provision_write.php | 84 ++++------ 3 files changed, 213 insertions(+), 181 deletions(-) diff --git a/app/extensions/extension_edit.php b/app/extensions/extension_edit.php index e7d15b1696..28520a1419 100644 --- a/app/extensions/extension_edit.php +++ b/app/extensions/extension_edit.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Copyright (C) 2008-2012 All Rights Reserved. + Copyright (C) 2008-2013 All Rights Reserved. Contributor(s): Mark J Crane @@ -49,23 +49,6 @@ else { $number_alias = check_str($_POST["number_alias"]); $password = check_str($_POST["password"]); - //prepare the provisioning list for the database - $provisioning_list = $_POST["provisioning_list"]; - if (strlen($provisioning_list) > 0) { - $provisioning_list_array = explode("\n", $provisioning_list); - if (count($provisioning_list_array) == 0) { - $provisioning_list = ''; - } - else { - $provisioning_list = '|'; - foreach($provisioning_list_array as $value){ - if(strlen(trim($value)) > 0) { - $provisioning_list .= check_str(trim($value))."|"; - } - } - } - } - //get the values from the HTTP POST and save them as PHP variables $vm_password = check_str($_POST["vm_password"]); $accountcode = check_str($_POST["accountcode"]); @@ -79,6 +62,8 @@ else { $directory_exten_visible = check_str($_POST["directory_exten_visible"]); $limit_max = check_str($_POST["limit_max"]); $limit_destination = check_str($_POST["limit_destination"]); + $device_uuid = check_str($_POST["device_uuid"]); + $device_line = check_str($_POST["device_line"]); $vm_enabled = check_str($_POST["vm_enabled"]); $vm_mailto = check_str($_POST["vm_mailto"]); $vm_attach_file = check_str($_POST["vm_attach_file"]); @@ -103,7 +88,7 @@ else { } //delete the user from the v_extension_users - if ($_GET["a"] == "delete" && permission_exists("user_delete")) { + if ($_GET["a"] == "delete" && strlen($_REQUEST["user_uuid"]) > 0 && permission_exists("extension_delete")) { //set the variables $user_uuid = check_str($_REQUEST["user_uuid"]); $extension_uuid = check_str($_REQUEST["id"]); @@ -121,6 +106,25 @@ else { return; } +//delete the user from the v_extension_users + if ($_GET["a"] == "delete" && strlen($_REQUEST["device_extension_uuid"]) > 0 && permission_exists("extension_delete")) { + //set the variables + $device_extension_uuid = check_str($_REQUEST["device_extension_uuid"]); + $extension_uuid = check_str($_REQUEST["id"]); + //delete the group from the users + $sql = "delete from v_device_extensions "; + $sql .= "where domain_uuid = '".$domain_uuid."' "; + $sql .= "and extension_uuid = '".$extension_uuid."' "; + $sql .= "and device_extension_uuid = '".$device_extension_uuid."' "; + $db->exec(check_sql($sql)); + //redirect the browser + require_once "includes/header.php"; + echo "\n"; + echo "
Delete Complete
"; + require_once "includes/footer.php"; + return; + } + //assign the extension to the user if (strlen($_REQUEST["user_uuid"]) > 0 && strlen($_REQUEST["id"]) > 0 && $_GET["a"] != "delete") { //set the variables @@ -150,6 +154,38 @@ else { return; } +//assign the device to the extension + if (strlen($_REQUEST["device_uuid"]) > 0 && strlen($_REQUEST["id"]) > 0 && $_GET["a"] != "delete") { + //set the variables + $extension_uuid = check_str($_REQUEST["id"]); + + //assign the user to the extension + $sql_insert = "insert into v_device_extensions "; + $sql_insert .= "("; + $sql_insert .= "device_extension_uuid, "; + $sql_insert .= "domain_uuid, "; + $sql_insert .= "extension_uuid, "; + $sql_insert .= "device_uuid, "; + $sql_insert .= "device_line "; + $sql_insert .= ")"; + $sql_insert .= "values "; + $sql_insert .= "("; + $sql_insert .= "'".uuid()."', "; + $sql_insert .= "'".$_SESSION['domain_uuid']."', "; + $sql_insert .= "'".$extension_uuid."', "; + $sql_insert .= "'".$device_uuid."', "; + $sql_insert .= "'".$device_line."' "; + $sql_insert .= ")"; + $db->exec($sql_insert); + + //redirect the browser + require_once "includes/header.php"; + echo "\n"; + echo "
Add Complete
"; + require_once "includes/footer.php"; + return; + } + if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $msg = ''; @@ -248,7 +284,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql .= "extension, "; $sql .= "number_alias, "; $sql .= "password, "; - $sql .= "provisioning_list, "; + //$sql .= "provisioning_list, "; $sql .= "vm_password, "; $sql .= "accountcode, "; $sql .= "effective_caller_id_name, "; @@ -298,7 +334,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql .= "'$extension', "; $sql .= "'$number_alias', "; $sql .= "'$password', "; - $sql .= "'$provisioning_list', "; + //$sql .= "'$provisioning_list', "; $sql .= "'user-choose', "; $sql .= "'$accountcode', "; $sql .= "'$effective_caller_id_name', "; @@ -393,7 +429,7 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $sql .= "extension = '$extension', "; $sql .= "number_alias = '$number_alias', "; $sql .= "password = '$password', "; - $sql .= "provisioning_list = '$provisioning_list', "; + //$sql .= "provisioning_list = '$provisioning_list', "; $sql .= "vm_password = '$vm_password', "; $sql .= "accountcode = '$accountcode', "; $sql .= "effective_caller_id_name = '$effective_caller_id_name', "; @@ -483,10 +519,8 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { } //write the provision files - if (strlen($provisioning_list) > 0) { - require_once "app/provision/provision_write.php"; - $ext = new extension; - } + require_once "app/provision/provision_write.php"; + $ext = new extension; //delete extension from memcache $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']); @@ -581,8 +615,6 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { $extension = $row["extension"]; $number_alias = $row["number_alias"]; $password = $row["password"]; - $provisioning_list = $row["provisioning_list"]; - $provisioning_list = strtolower($provisioning_list); $vm_password = $row["vm_password"]; $vm_password = str_replace("#", "", $vm_password); //preserves leading zeros $accountcode = $row["accountcode"]; @@ -1020,94 +1052,109 @@ if (count($_POST)>0 && strlen($_POST["persistformvar"]) == 0) { echo "\n"; echo "\n"; - echo "\n"; - echo "\n"; - echo " Phone Provisioning:\n"; - echo "\n"; - echo "\n"; + if ($action == "update") { + echo "\n"; + echo "\n"; + echo " Phone Provisioning:\n"; + echo "\n"; + echo "\n"; - $onchange = "document.getElementById('provisioning_list').value += document.getElementById('select_mac_address').value;"; - $onchange .= "document.getElementById('provisioning_list').value += ':'+document.getElementById('prov_line').value + '\\n'"; - - $sql = "select * from v_devices "; - $sql .= "where domain_uuid = '".$domain_uuid."' "; - $prep_statement = $db->prepare(check_sql($sql)); - $prep_statement->execute(); - $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - $result_count = count($result); - unset ($prep_statement, $sql); - echo "\n"; - echo "
\n"; - echo "Select a device to assign to this extension by its MAC addresses.\n"; + echo " \n"; + echo "
\n"; - echo "
\n"; - echo "
\n"; + $sql = "SELECT * FROM v_devices "; + $sql .= "WHERE domain_uuid = '".$domain_uuid."' "; + $sql .= "ORDER BY device_mac_address asc "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + unset ($prep_statement, $sql); + echo "\n"; - echo " \n"; - echo "
\n"; - echo "Select a line number.
\n"; - echo "
\n"; - //replace the vertical bar with a line feed to display in the textarea - $provisioning_list = trim($provisioning_list, "|"); - $provisioning_list_array = explode("|", $provisioning_list); - $provisioning_list = ''; - foreach($provisioning_list_array as $value){ - $provisioning_list .= trim($value)."\n"; + echo " \n"; + echo " \n"; + echo "
\n"; + echo "Select a device and line number to assign to this extension.\n"; + + echo "\n"; + echo "\n"; } - echo " \n"; - echo "
\n"; - echo "If a MAC address is not in the select list it can be added manually.
MAC Address:Line Number\n"; - echo "
\n"; - echo "\n"; - echo "\n"; echo "\n"; echo "\n"; diff --git a/app/provision/index.php b/app/provision/index.php index 5e445ffb71..1d92ce2eb5 100644 --- a/app/provision/index.php +++ b/app/provision/index.php @@ -125,6 +125,7 @@ require_once "includes/require.php"; $prep_statement_2->bindParam(':mac', $mac); $prep_statement_2->execute(); $row = $prep_statement_2->fetch(); + $device_uuid = $row["device_uuid"]; $device_label = $row["device_label"]; if (strlen($row["device_vendor"]) > 0) { $device_vendor = $row["device_vendor"]; @@ -288,29 +289,25 @@ require_once "includes/require.php"; $mac_dash = substr($mac, 0,2).'-'.substr($mac, 2,2).'-'.substr($mac, 4,2).'-'.substr($mac, 6,2).'-'.substr($mac, 8,2).'-'.substr($mac, 10,2); //lookup the provisioning information for this MAC address. - $sql = "select * from v_extensions "; - $sql .= "where domain_uuid = '$domain_uuid' "; - $sql .= "and (provisioning_list like '%|".$mac.":%' or provisioning_list like '%|".$mac_dash.":%') "; - $sql .= "and enabled = 'true' "; + $sql = "SELECT e.extension, e.password, e.effective_caller_id_name, d.device_extension_uuid, d.extension_uuid, d.device_line "; + $sql .= "FROM v_device_extensions as d, v_extensions as e "; + $sql .= "WHERE e.extension_uuid = d.extension_uuid "; + $sql .= "AND d.device_uuid = '".$device_uuid."' "; + $sql .= "AND d.domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and e.enabled = 'true' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); - foreach ($result as &$row) { - $provisioning_list = $row["provisioning_list"]; - $provisioning_list_array = explode("|", $provisioning_list); - foreach ($provisioning_list_array as &$prov_row) { - $prov_row_array = explode(":", $prov_row); - $prov_mac = strtolower($prov_row_array[0]); - $prov_mac = preg_replace('#[^a-fA-F0-9./]#', '', $prov_mac); - if ($prov_mac == $mac) { - $line_number = $prov_row_array[1]; - $file_contents = str_replace("{v_line".$line_number."_server_address}", $_SESSION['domain_name'], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_displayname}", $row["effective_caller_id_name"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_shortname}", $row["extension"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_user_id}", $row["extension"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_user_password}", $row["password"], $file_contents); - } - } + $result_count = count($result); + foreach($result as $row) { + $line_number = $row['device_line']; + + $file_contents = str_replace("{v_line".$line_number."_server_address}", $_SESSION['domain_name'], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_displayname}", $row["effective_caller_id_name"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_shortname}", $row["extension"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_user_id}", $row["extension"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_user_password}", $row["password"], $file_contents); + //$vm_password = $row["vm_password"]; //$vm_password = str_replace("#", "", $vm_password); //preserves leading zeros //$accountcode = $row["accountcode"]; @@ -385,8 +382,8 @@ require_once "includes/require.php"; function mac_exists_in_devices($db, $mac) { global $domain_uuid; $sql = "SELECT count(*) as count FROM v_devices "; - $sql .= "where domain_uuid=:domain_uuid "; - $sql .= "and device_mac_address=:mac "; + $sql .= "WHERE domain_uuid=:domain_uuid "; + $sql .= "AND device_mac_address=:mac "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->bindParam(':domain_uuid', $domain_uuid); diff --git a/app/provision/provision_write.php b/app/provision/provision_write.php index ff3c19dddf..57b4c98287 100644 --- a/app/provision/provision_write.php +++ b/app/provision/provision_write.php @@ -181,54 +181,42 @@ else { $mac_dash = substr($device_mac_address, 0,2).'-'.substr($device_mac_address, 2,2).'-'.substr($device_mac_address, 4,2).'-'.substr($device_mac_address, 6,2).'-'.substr($device_mac_address, 8,2).'-'.substr($device_mac_address, 10,2); //lookup the provisioning information for this MAC address. - $sql2 = "select * from v_extensions "; - $sql2 .= "where domain_uuid = '$domain_uuid' "; - $sql2 .= "and (provisioning_list like '%|".$device_mac_address.":%' or provisioning_list like '%|".$mac_dash.":%') "; - $sql2 .= "and enabled = 'true' "; - $prep_statement_2 = $db->prepare(check_sql($sql2)); - $prep_statement_2->execute(); - $result2 = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); - foreach ($result2 as &$row2) { - $provisioning_list = $row2["provisioning_list"]; - if (strlen($provisioning_list) > 1) { - $provisioning_list_array = explode("|", $provisioning_list); - foreach ($provisioning_list_array as $prov_row) { - $prov_row_array = explode(":", $prov_row); - if (strlen($prov_row_array[0]) > 0) { - //echo "mac address: ".$prov_row_array[0]."
"; - //echo "line_number: ".$prov_row_array[1]."
"; - if ($prov_row_array[0] == $device_mac_address) { - $line_number = $prov_row_array[1]; - //echo "prov_row: ".$prov_row."
"; - //echo "line_number: ".$line_number."
"; - //echo "

\n"; - } - $file_contents = str_replace("{v_line".$line_number."_server_address}", $_SESSION['domain_name'], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_displayname}", $row2["effective_caller_id_name"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_shortname}", $row2["extension"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_user_id}", $row2["extension"], $file_contents); - $file_contents = str_replace("{v_line".$line_number."_user_password}", $row2["password"], $file_contents); - } - } - //$vm_password = $row["vm_password"]; - //$vm_password = str_replace("#", "", $vm_password); //preserves leading zeros - //$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"]; - //$vm_enabled = $row["vm_enabled"]; - //$vm_mailto = $row["vm_mailto"]; - //$vm_attach_file = $row["vm_attach_file"]; - //$vm_keep_local_after_email = $row["vm_keep_local_after_email"]; - //$user_context = $row["user_context"]; - //$call_group = $row["call_group"]; - //$auth_acl = $row["auth_acl"]; - //$cidr = $row["cidr"]; - //$sip_force_contact = $row["sip_force_contact"]; - //$enabled = $row["enabled"]; - //$description = $row["description"] - } + $sql = "SELECT e.extension, e.password, e.effective_caller_id_name, d.device_extension_uuid, d.extension_uuid, d.device_line "; + $sql .= "FROM v_device_extensions as d, v_extensions as e "; + $sql .= "WHERE e.extension_uuid = d.extension_uuid "; + $sql .= "AND d.device_uuid = '".$device_uuid."' "; + $sql .= "AND d.domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and e.enabled = 'true' "; + $prep_statement = $db->prepare(check_sql($sql)); + $prep_statement->execute(); + $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); + $result_count = count($result); + foreach($result as $row) { + $line_number = $row['device_line']; + $file_contents = str_replace("{v_line".$line_number."_server_address}", $_SESSION['domain_name'], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_displayname}", $row["effective_caller_id_name"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_shortname}", $row["extension"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_user_id}", $row["extension"], $file_contents); + $file_contents = str_replace("{v_line".$line_number."_user_password}", $row["password"], $file_contents); + + //$vm_password = $row["vm_password"]; + //$vm_password = str_replace("#", "", $vm_password); //preserves leading zeros + //$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"]; + //$vm_enabled = $row["vm_enabled"]; + //$vm_mailto = $row["vm_mailto"]; + //$vm_attach_file = $row["vm_attach_file"]; + //$vm_keep_local_after_email = $row["vm_keep_local_after_email"]; + //$user_context = $row["user_context"]; + //$call_group = $row["call_group"]; + //$auth_acl = $row["auth_acl"]; + //$cidr = $row["cidr"]; + //$sip_force_contact = $row["sip_force_contact"]; + //$enabled = $row["enabled"]; + //$description = $row["description"] } unset ($prep_statement_2);