fusionpbx/app/hot_desking/extension_edit.php

335 lines
11 KiB
PHP

<?php
/*
FusionPBX
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
for the specific language governing rights and limitations under the
License.
The Original Code is FusionPBX
The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com>
Copyright (C) 2008-2012 All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('extension_add') || permission_exists('extension_edit')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
require_once "app_languages.php";
foreach($text as $key => $value) {
$text[$key] = $value[$_SESSION['domain']['language']['code']];
}
//set the action as an add or an update
if (isset($_REQUEST["id"])) {
$action = "update";
$extension_uuid = check_str($_REQUEST["id"]);
}
else {
$action = "add";
}
//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
$extension_uuid = check_str($_POST["extension_uuid"]);
$unique_id = check_str($_POST["unique_id"]);
$vm_password = check_str($_POST["vm_password"]);
$dial_string = check_str($_POST["dial_string"]);
}
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//check for all required data
if (strlen($extension_uuid) == 0) { $msg .= $text['message-required'].$text['label-extension']."<br>\n"; }
if (strlen($unique_id) == 0) { $msg .= $text['message-required'].$text['label-unique_id']."<br>\n"; }
//get the number of rows in v_extensions
$sql = "select count(*) as num_rows from v_extensions ";
$sql .= "where unique_id = '".$unique_id."' and ";
$sql .= "extension_uuid <> '".$extension_uuid."'";
$prep_statement = $db->prepare(check_sql($sql));
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$msg .= $text['message-unique']."<br>\n";
}
}
unset($prep_statement, $result);
if (strlen($msg) > 0 && strlen($_POST["persistformvar"]) == 0) {
require_once "resources/header.php";
require_once "resources/persist_form_var.php";
echo "<div align='center'>\n";
echo "<table><tr><td>\n";
echo $msg."<br />";
echo "</td></tr></table>\n";
persistformvar($_POST);
echo "</div>\n";
require_once "resources/footer.php";
return;
}
//set the default user context
if (if_group("superadmin")) {
//allow a user assigned to super admin to change the user_context
}
else {
//if the user_context was not set then set the default value
if (strlen($user_context) == 0) {
if (count($_SESSION["domains"]) > 1) {
$user_context = $_SESSION['domain_name'];
}
else {
$user_context = "default";
}
}
}
//add or update the database
if ($_POST["persistformvar"] != "true") {
//get the extension
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and extension_uuid = '$extension_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$extension = $row["extension"];
$number_alias = $row["number_alias"];
}
unset ($prep_statement);
//update the extension and voicemail
if (($action == "add" && permission_exists('extension_add')) || ($action == "update" && permission_exists('extension_edit'))) {
//update the extension
$sql = "update v_extensions set ";
$sql .= "unique_id = '$unique_id' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and extension_uuid = '$extension_uuid'";
$db->exec(check_sql($sql));
unset($sql);
//update the voicemail
if (strlen($vm_password) > 0) {
$sql = "update v_voicemails set ";
$sql .= "voicemail_password = '$vm_password' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
if (is_numeric($extension)) {
$sql .= "and voicemail_id = '$extension'";
}
else {
$sql .= "and voicemail_id = '$number_alias'";
}
$db->exec(check_sql($sql));
unset($sql);
}
}
//delete extension from memcache
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_cmd = "memcache delete directory:".$extension."@".$_SESSION['domain_name'];
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
}
//set message and redirect user
if ($action == "add") {
$_SESSION["message"] = $text['message-add'];
}
if ($action == "update") {
$_SESSION["message"] = $text['message-update'];
}
header("Location: index.php");
return;
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//pre-populate the form
if ($_POST["persistformvar"] != "true") {
//get the extension data
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and extension_uuid = '$extension_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$extension = $row["extension"];
$dial_string = $row["dial_string"];
$unique_id = $row["unique_id"];
}
unset ($prep_statement);
//get the voicemail data
$sql = "select * from v_voicemails ";
$sql .= "where domain_uuid = '$domain_uuid' ";
if (is_numeric($extension)) {
$sql .= "and voicemail_id = '$extension' ";
}
else {
$sql .= "and voicemail_id = '$number_alias' ";
}
//$sql .= "and voicemail_enabled = 'true' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$vm_password = $row["voicemail_password"];
}
unset ($prep_statement);
}
//set the defaults
if (strlen($limit_max) == 0) { $limit_max = '5'; }
//begin the page content
require_once "resources/header.php";
echo "<script type=\"text/javascript\" language=\"JavaScript\">\n";
echo "\n";
echo "function enable_change(enable_over) {\n";
echo " var endis;\n";
echo " endis = !(document.iform.enable.checked || enable_over);\n";
echo " document.iform.range_from.disabled = endis;\n";
echo " document.iform.range_to.disabled = endis;\n";
echo "}\n";
echo "\n";
echo "function show_advanced_config() {\n";
echo " document.getElementById(\"show_advanced_box\").innerHTML='';\n";
echo " aodiv = document.getElementById('show_advanced');\n";
echo " aodiv.style.display = \"block\";\n";
echo "}\n";
echo "\n";
echo "function hide_advanced_config() {\n";
echo " document.getElementById(\"show_advanced_box\").innerHTML='';\n";
echo " aodiv = document.getElementById('show_advanced');\n";
echo " aodiv.style.display = \"none\";\n";
echo "}\n";
echo "</script>";
echo "<div align='center'>";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>\n";
echo "<tr class='border'>\n";
echo " <td align=\"left\">\n";
echo " <br>";
echo "<form method='post' name='frm' action=''>\n";
echo "<div align='center'>\n";
echo "<table width='100%' border='0' cellpadding='6' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' nowrap='nowrap' align='left' valign='top'>\n";
echo " <b>".$text['header-hot_desking']."</b>\n";
echo " </td>\n";
echo " <td width='70%' align='right' valign='top'>\n";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='index.php'\" value='".$text['button-back']."'>\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-extension'].":\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if ($action == "add") {
echo "<select id=\"extension_uuid\" name=\"extension_uuid\" class='formfld' \">\n";
echo "<option value=''></option>\n";
$sql = "select extension, extension_uuid, description FROM v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "order by extension asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
if ($result_count > 0) {
foreach($result as $row) {
if ($extension_uuid == $row['extension_uuid']) {
echo "<option value=\"".$row['extension_uuid']."\" selected>".$row['extension']." ".$row['description']."</option>\n";
}
else {
echo "<option value=\"".$row['extension_uuid']."\">".$row['extension']." ".$row['description']."</option>\n";
}
}
}
unset($sql, $result, $result_count);
echo "</select><br />\n";
echo $text['description-extension-add']."\n";
}
if ($action == "update") {
echo " $extension<br />\n";
echo $text['description-extension-edit']."\n";
}
echo "<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-unique_id'].":\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='unique_id' autocomplete='off' maxlength='255' value=\"$unique_id\">\n";
echo "<br />\n";
echo $text['description-unique_id']."\n";
echo "</td>\n";
echo "</tr>\n";
if ($action == "update") {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-voicemail_password'].":\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='password' name='vm_password' id='vm_password' onfocus=\"document.getElementById('show_vm_password').innerHTML = '".$text['description-password'].": '+document.getElementById('vm_password').value;\" maxlength='255' value='$vm_password'>\n";
echo "<br />\n";
echo "<span onclick=\"document.getElementById('show_vm_password').innerHTML = ''\">".$text['description-voicemail_password']." </span><span id='show_vm_password'></span>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-dial_string'].":\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='dial_string' maxlength='255' value=\"$dial_string\">\n";
echo "<br />\n";
echo $text['description-dial_string']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<input type='hidden' name='extension_uuid' maxlength='255' value=\"$extension_uuid\">\n";
}
echo "</table>";
echo "</form>";
echo " </td>";
echo " </tr>";
echo "</table>";
echo "</div>";
require_once "resources/footer.php";
?>