\r\n --> \n

Cause all the .php files containing lines ending with \r\n to instead end with \n.

DYI with:

find fusionpbx -type f -name '*.php' -exec dos2unix '{}' \;
This commit is contained in:
Harry G. Coin
2016-04-25 20:30:23 -05:00
parent 8abe003a71
commit bda6861f88
118 changed files with 40760 additions and 40760 deletions

View File

@@ -1,19 +1,19 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Adminer";
$apps[$x]['menu'][0]['title']['es-cl'] = "Administrador";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Admin BDD";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Administrador";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "1f59d07b-b4f7-4f9e-bde9-312cf491d66e";
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][0]['category'] = "external";
$apps[$x]['menu'][0]['path'] = "<!--{project_path}-->/app/adminer/index.php";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Adminer";
$apps[$x]['menu'][0]['title']['es-cl'] = "Administrador";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Admin BDD";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Administrador";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "1f59d07b-b4f7-4f9e-bde9-312cf491d66e";
$apps[$x]['menu'][0]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][0]['category'] = "external";
$apps[$x]['menu'][0]['path'] = "<!--{project_path}-->/app/adminer/index.php";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,258 +1,258 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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("backup_download")) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//download the backup
if ($_GET['a'] == "download" && permission_exists('backup_download')) {
$file_format = $_GET['file_format'];
$file_format = ($file_format != '') ? $file_format : 'tgz';
//build the backup file
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
$backup_file = 'backup_'.date('Ymd_His').'.'.$file_format;
if (count($_SESSION['backup']['path']) > 0) {
//determine compression method
switch ($file_format) {
case "rar" : $cmd = 'rar a -ow -r '; break;
case "zip" : $cmd = 'zip -r '; break;
case "tbz" : $cmd = 'tar -jvcf '; break;
default : $cmd = 'tar -zvcf ';
}
$cmd .= $backup_path.'/'.$backup_file.' ';
foreach ($_SESSION['backup']['path'] as $value) {
$cmd .= $value.' ';
}
exec($cmd);
//download the file
session_cache_limiter('public');
if (file_exists($backup_path."/".$backup_file)) {
$fd = fopen($backup_path."/".$backup_file, 'rb');
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename='.$backup_file);
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".filesize($backup_path."/".$backup_file));
header("Pragma: no-cache");
header("Expires: 0");
ob_clean();
fpassthru($fd);
exit;
}
else {
//set response message
$_SESSION["message"] = $text['message-backup_failed_format'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
else {
//set response message
$_SESSION["message"] = $text['message-backup_failed_paths'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
//script a backup (cron)
if ($_GET['a'] == "script" && permission_exists('backup_download')) {
$file_format = $_GET['file_format'];
$target_type = "script";
$backup = new backup;
$command = $backup->command("backup", $file_format);
}
//restore a backup
if ($_POST['a'] == "restore" && permission_exists('backup_upload')) {
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
$backup_file = $_FILES['backup_file']['name'];
if (is_uploaded_file($_FILES['backup_file']['tmp_name'])) {
//move temp file to backup path
move_uploaded_file($_FILES['backup_file']['tmp_name'], $backup_path.'/'.$backup_file);
//determine file format and restore backup
$file_format = pathinfo($_FILES['backup_file']['name'], PATHINFO_EXTENSION);
$valid_format = true;
switch ($file_format) {
case "rar" : $cmd = 'rar x -ow -o+ '.$backup_path.'/'.$backup_file.' /'; break;
case "zip" : $cmd = 'umask 755; unzip -o -qq -X -K '.$backup_path.'/'.$backup_file.' -d /'; break;
case "tbz" : $cmd = 'tar -xvpjf '.$backup_path.'/'.$backup_file.' -C /'; break;
case "tgz" : $cmd = 'tar -xvpzf '.$backup_path.'/'.$backup_file.' -C /'; break;
default: $valid_format = false;
}
if (!$valid_format) {
@unlink($backup_path.'/'.$backup_file);
$_SESSION["message"] = $text['message-restore_failed_format'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
else {
exec($cmd);
//set response message
$_SESSION["message"] = $text['message-restore_completed'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
else {
//set response message
$_SESSION["message"] = $text['message-restore_failed_upload'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
//add the header
require_once "resources/header.php";
$document['title'] = $text['title-destinations'];
// backup type switch javascript
echo "<script language='javascript' type='text/javascript'>";
echo " var fade_speed = 400;";
echo " function toggle_target(first_elem, second_elem) {";
echo " $('#command').fadeOut(fade_speed);";
echo " $('#'+first_elem).fadeToggle(fade_speed, function() {";
echo " $('#command').slideUp(fade_speed, function() {";
echo " $('#'+second_elem).fadeToggle(fade_speed);";
echo " });";
echo " });";
echo " }";
echo "</script>";
//show the content
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td width='50%' valign='top'>\n";
echo "<b>".$text['header-backup']."</b>\n";
echo "<br><br>";
echo $text['description-backup']."\n";
echo "<br><br><br>";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-source_paths']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
foreach ($_SESSION['backup']['path'] as $backup_path) {
echo $backup_path."<br>\n";
}
echo "</td>";
echo "</tr>";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-file_format']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='file_format' id='file_format'>";
echo " <option value='tgz' ".(($file_format == 'tgz') ? 'selected' : null).">TAR GZIP</option>";
echo " <option value='tbz' ".(($file_format == 'tbz') ? 'selected' : null).">TAR BZIP</option>";
echo " <option value='rar' ".(($file_format == 'rar') ? 'selected' : null).">RAR</option>";
echo " <option value='zip' ".(($file_format == 'zip') ? 'selected' : null).">ZIP</option>";
echo " </select>";
echo "</td>";
echo "</tr>";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-target_type']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='target_type' id='target_type' onchange=\"(this.selectedIndex == 0) ? toggle_target('btn_script','btn_download') : toggle_target('btn_download','btn_script');\">";
echo " <option value='download'>".$text['option-file_download']."</option>";
echo " <option value='script' ".(($target_type == 'script') ? 'selected' : null).">".$text['option-command']."</option>";
echo " </select>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<div id='command' ".(($command == '') ? "style='display: none;'" : null).">";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-command']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <textarea class='formfld' style='width: 100%; height: 200px; font-family: courier;'>".$command."</textarea>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<br>";
echo "<div align='right'>";
echo "<input type='button' id='btn_script' class='btn' ".(($target_type != 'script') ? "style='display: none;'" : null)." value='".$text['button-generate']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=script&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
echo "<input type='button' id='btn_download' class='btn' ".(($target_type == 'script') ? "style='display: none;'" : null)." value='".$text['button-download']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=download&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
echo "</div>";
echo "<br><br>";
if (permission_exists("backup_upload")) {
echo " </td>\n";
echo " <td width='20'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
echo " <td width='50%' valign='top'>\n";
echo " <b>".$text['header-restore']."</b>\n";
echo " <br><br>";
echo $text['description-restore']."\n";
echo " <br><br><br>";
echo " <div align='center'>";
echo " <form name='frmrestore' method='post' enctype='multipart/form-data' action=''>";
echo " <input type='hidden' name='a' value='restore'>";
echo " <table>";
echo " <tr>";
echo " <td nowrap>".$text['label-select_backup']."&nbsp;</td>";
echo " <td><input type='file' class='formfld fileinput' name='backup_file'></td>";
echo " <td><input type='submit' class='btn' value='".$text['button-restore']."'></td>";
echo " </tr>";
echo " </table>";
echo " <br>";
echo " <span style='font-weight: bold; text-decoration: underline; color: #000;'>".$text['description-restore_warning']."</span>";
echo " </form>\n";
echo " </div>";
echo " </td>\n";
}
echo " </tr>\n";
echo "</table>\n";
echo "<br><br>";
//show the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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("backup_download")) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//download the backup
if ($_GET['a'] == "download" && permission_exists('backup_download')) {
$file_format = $_GET['file_format'];
$file_format = ($file_format != '') ? $file_format : 'tgz';
//build the backup file
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
$backup_file = 'backup_'.date('Ymd_His').'.'.$file_format;
if (count($_SESSION['backup']['path']) > 0) {
//determine compression method
switch ($file_format) {
case "rar" : $cmd = 'rar a -ow -r '; break;
case "zip" : $cmd = 'zip -r '; break;
case "tbz" : $cmd = 'tar -jvcf '; break;
default : $cmd = 'tar -zvcf ';
}
$cmd .= $backup_path.'/'.$backup_file.' ';
foreach ($_SESSION['backup']['path'] as $value) {
$cmd .= $value.' ';
}
exec($cmd);
//download the file
session_cache_limiter('public');
if (file_exists($backup_path."/".$backup_file)) {
$fd = fopen($backup_path."/".$backup_file, 'rb');
header("Content-Type: application/octet-stream");
header("Content-Transfer-Encoding: binary");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename='.$backup_file);
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".filesize($backup_path."/".$backup_file));
header("Pragma: no-cache");
header("Expires: 0");
ob_clean();
fpassthru($fd);
exit;
}
else {
//set response message
$_SESSION["message"] = $text['message-backup_failed_format'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
else {
//set response message
$_SESSION["message"] = $text['message-backup_failed_paths'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
//script a backup (cron)
if ($_GET['a'] == "script" && permission_exists('backup_download')) {
$file_format = $_GET['file_format'];
$target_type = "script";
$backup = new backup;
$command = $backup->command("backup", $file_format);
}
//restore a backup
if ($_POST['a'] == "restore" && permission_exists('backup_upload')) {
$backup_path = ($_SESSION['server']['backup']['path'] != '') ? $_SESSION['server']['backup']['path'] : '/tmp';
$backup_file = $_FILES['backup_file']['name'];
if (is_uploaded_file($_FILES['backup_file']['tmp_name'])) {
//move temp file to backup path
move_uploaded_file($_FILES['backup_file']['tmp_name'], $backup_path.'/'.$backup_file);
//determine file format and restore backup
$file_format = pathinfo($_FILES['backup_file']['name'], PATHINFO_EXTENSION);
$valid_format = true;
switch ($file_format) {
case "rar" : $cmd = 'rar x -ow -o+ '.$backup_path.'/'.$backup_file.' /'; break;
case "zip" : $cmd = 'umask 755; unzip -o -qq -X -K '.$backup_path.'/'.$backup_file.' -d /'; break;
case "tbz" : $cmd = 'tar -xvpjf '.$backup_path.'/'.$backup_file.' -C /'; break;
case "tgz" : $cmd = 'tar -xvpzf '.$backup_path.'/'.$backup_file.' -C /'; break;
default: $valid_format = false;
}
if (!$valid_format) {
@unlink($backup_path.'/'.$backup_file);
$_SESSION["message"] = $text['message-restore_failed_format'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
else {
exec($cmd);
//set response message
$_SESSION["message"] = $text['message-restore_completed'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
else {
//set response message
$_SESSION["message"] = $text['message-restore_failed_upload'];
header("Location: ".$_SERVER['PHP_SELF']);
exit;
}
}
//add the header
require_once "resources/header.php";
$document['title'] = $text['title-destinations'];
// backup type switch javascript
echo "<script language='javascript' type='text/javascript'>";
echo " var fade_speed = 400;";
echo " function toggle_target(first_elem, second_elem) {";
echo " $('#command').fadeOut(fade_speed);";
echo " $('#'+first_elem).fadeToggle(fade_speed, function() {";
echo " $('#command').slideUp(fade_speed, function() {";
echo " $('#'+second_elem).fadeToggle(fade_speed);";
echo " });";
echo " });";
echo " }";
echo "</script>";
//show the content
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td width='50%' valign='top'>\n";
echo "<b>".$text['header-backup']."</b>\n";
echo "<br><br>";
echo $text['description-backup']."\n";
echo "<br><br><br>";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-source_paths']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
foreach ($_SESSION['backup']['path'] as $backup_path) {
echo $backup_path."<br>\n";
}
echo "</td>";
echo "</tr>";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-file_format']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='file_format' id='file_format'>";
echo " <option value='tgz' ".(($file_format == 'tgz') ? 'selected' : null).">TAR GZIP</option>";
echo " <option value='tbz' ".(($file_format == 'tbz') ? 'selected' : null).">TAR BZIP</option>";
echo " <option value='rar' ".(($file_format == 'rar') ? 'selected' : null).">RAR</option>";
echo " <option value='zip' ".(($file_format == 'zip') ? 'selected' : null).">ZIP</option>";
echo " </select>";
echo "</td>";
echo "</tr>";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-target_type']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='target_type' id='target_type' onchange=\"(this.selectedIndex == 0) ? toggle_target('btn_script','btn_download') : toggle_target('btn_download','btn_script');\">";
echo " <option value='download'>".$text['option-file_download']."</option>";
echo " <option value='script' ".(($target_type == 'script') ? 'selected' : null).">".$text['option-command']."</option>";
echo " </select>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<div id='command' ".(($command == '') ? "style='display: none;'" : null).">";
echo "<table border='0' cellpadding='0' cellspacing='0' width='100%'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-command']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <textarea class='formfld' style='width: 100%; height: 200px; font-family: courier;'>".$command."</textarea>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
echo "<br>";
echo "<div align='right'>";
echo "<input type='button' id='btn_script' class='btn' ".(($target_type != 'script') ? "style='display: none;'" : null)." value='".$text['button-generate']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=script&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
echo "<input type='button' id='btn_download' class='btn' ".(($target_type == 'script') ? "style='display: none;'" : null)." value='".$text['button-download']."' onclick=\"document.location.href='".PROJECT_PATH."/app/backup/index.php?a=download&file_format='+document.getElementById('file_format').options[document.getElementById('file_format').selectedIndex].value;\">";
echo "</div>";
echo "<br><br>";
if (permission_exists("backup_upload")) {
echo " </td>\n";
echo " <td width='20'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
echo " <td width='50%' valign='top'>\n";
echo " <b>".$text['header-restore']."</b>\n";
echo " <br><br>";
echo $text['description-restore']."\n";
echo " <br><br><br>";
echo " <div align='center'>";
echo " <form name='frmrestore' method='post' enctype='multipart/form-data' action=''>";
echo " <input type='hidden' name='a' value='restore'>";
echo " <table>";
echo " <tr>";
echo " <td nowrap>".$text['label-select_backup']."&nbsp;</td>";
echo " <td><input type='file' class='formfld fileinput' name='backup_file'></td>";
echo " <td><input type='submit' class='btn' value='".$text['button-restore']."'></td>";
echo " </tr>";
echo " </table>";
echo " <br>";
echo " <span style='font-weight: bold; text-decoration: underline; color: #000;'>".$text['description-restore_warning']."</span>";
echo " </form>\n";
echo " </div>";
echo " </td>\n";
}
echo " </tr>\n";
echo "</table>\n";
echo "<br><br>";
//show the footer
require_once "resources/footer.php";
?>

View File

@@ -1,360 +1,360 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('call_center_active_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the queue_name and set it as a variable
$queue_name = $_GET[queue_name].'@'. $_SESSION['domains'][$domain_uuid]['domain_name'];
//convert the string to a named array
function str_to_named_array($tmp_str, $tmp_delimiter) {
$tmp_array = explode ("\n", $tmp_str);
$result = '';
if (trim(strtoupper($tmp_array[0])) != "+OK") {
$tmp_field_name_array = explode ($tmp_delimiter, $tmp_array[0]);
$x = 0;
foreach ($tmp_array as $row) {
if ($x > 0) {
$tmp_field_value_array = explode ($tmp_delimiter, $tmp_array[$x]);
$y = 0;
foreach ($tmp_field_value_array as $tmp_value) {
$tmp_name = $tmp_field_name_array[$y];
if (trim(strtoupper($tmp_value)) != "+OK") {
$result[$x][$tmp_name] = $tmp_value;
}
$y++;
}
}
$x++;
}
unset($row);
}
return $result;
}
//alternate the color of the row
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//create an event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//get the call center queue, agent and tiers list
if (!$fp) {
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
echo "<tr>\n";
echo "<th align='left'>Message</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='row_style1'><strong>$msg</strong></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
else {
//get the agent list
//show the title
echo "<b>".$text['header-agents']."</b><br />\n";
echo $text['description-agents']."<br /><br />\n";
//send the event socket command and get the response
//callcenter_config queue list tiers [queue_name] |
$switch_cmd = 'callcenter_config queue list tiers '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$result = str_to_named_array($event_socket_str, '|');
//prepare the result for array_multisort
$x = 0;
foreach ($result as $row) {
$tier_result[$x]['level'] = $row['level'];
$tier_result[$x]['position'] = $row['position'];
$tier_result[$x]['agent'] = $row['agent'];
$tier_result[$x]['state'] = trim($row['state']);
$tier_result[$x]['queue'] = $row['queue'];
$x++;
}
//sort the array //SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
array_multisort($tier_result, SORT_ASC);
//send the event socket command and get the response
//callcenter_config queue list agents [queue_name] [status] |
$switch_cmd = 'callcenter_config queue list agents '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$agent_result = str_to_named_array($event_socket_str, '|');
//list the agents
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-name']."</th>\n";
echo "<th>".$text['label-extension']."</th>\n";
echo "<th>".$text['label-status']."</th>\n";
echo "<th>".$text['label-state']."</th>\n";
echo "<th>".$text['label-status_change']."</th>\n";
echo "<th>".$text['label-missed']."</th>\n";
echo "<th>".$text['label-answered']."</th>\n";
echo "<th>".$text['label-tier_state']."</th>\n";
echo "<th>".$text['label-tier_level']."</th>\n";
echo "<th>".$text['label-tier_position']."</th>\n";
if (permission_exists('call_center_active_options')) {
echo "<th>".$text['label-options']."</th>\n";
}
echo "</tr>\n";
foreach ($tier_result as $tier_row) {
//$queue = $tier_row['queue'];
//$queue = str_replace('@'.$_SESSION['domain_name'], '', $queue);
$agent = $tier_row['agent'];
//$agent = str_replace('@'.$_SESSION['domain_name'], '', $agent);
$tier_state = $tier_row['state'];
$tier_level = $tier_row['level'];
$tier_position = $tier_row['position'];
foreach ($agent_result as $agent_row) {
if ($tier_row['agent'] == $agent_row['name']) {
$name = $agent_row['name'];
$name = str_replace('@'.$_SESSION['domain_name'], '', $name);
//$system = $agent_row['system'];
$a_uuid = $agent_row['uuid'];
//$type = $agent_row['type'];
$contact = $agent_row['contact'];
$a_exten = preg_replace("/user\//", "", $contact);
$a_exten = preg_replace("/@.*/", "", $a_exten);
$a_exten = preg_replace("/{.*}/", "", $a_exten);
$status = $agent_row['status'];
$state = $agent_row['state'];
$max_no_answer = $agent_row['max_no_answer'];
$wrap_up_time = $agent_row['wrap_up_time'];
$reject_delay_time = $agent_row['reject_delay_time'];
$busy_delay_time = $agent_row['busy_delay_time'];
$last_bridge_start = $agent_row['last_bridge_start'];
$last_bridge_end = $agent_row['last_bridge_end'];
//$last_offered_call = $agent_row['last_offered_call'];
$last_status_change = $agent_row['last_status_change'];
$no_answer_count = $agent_row['no_answer_count'];
$calls_answered = $agent_row['calls_answered'];
$talk_time = $agent_row['talk_time'];
$ready_time = $agent_row['ready_time'];
$last_offered_call_seconds = time() - $last_offered_call;
$last_offered_call_length_hour = floor($last_offered_call_seconds/3600);
$last_offered_call_length_min = floor($last_offered_call_seconds/60 - ($last_offered_call_length_hour * 60));
$last_offered_call_length_sec = $last_offered_call_seconds - (($last_offered_call_length_hour * 3600) + ($last_offered_call_length_min * 60));
$last_offered_call_length_min = sprintf("%02d", $last_offered_call_length_min);
$last_offered_call_length_sec = sprintf("%02d", $last_offered_call_length_sec);
$last_offered_call_length = $last_offered_call_length_hour.':'.$last_offered_call_length_min.':'.$last_offered_call_length_sec;
$last_status_change_seconds = time() - $last_status_change;
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$name."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$a_exten."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$status."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$last_status_change_length."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$no_answer_count."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$calls_answered."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_state."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_level."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_position."</td>\n";
if (permission_exists('call_center_active_options')) {
echo "<td valign='top' class='".$row_style[$c]."'>";
//need to check state to so only waiting gets call, and trying/answer gets eavesdrop
if ($tier_state == "Offering" || $tier_state == "Active Inbound") {
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$a_uuid.")";
//debug
//echo $orig_command;
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a>&nbsp;\n";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a>&nbsp;\n";
$xfer_command = $a_uuid." -bleg ".$_SESSION['user']['extension'][0]['user']." XML ".$_SESSION['domain_name'];
//$xfer_command = $a_uuid." ".$_SESSION['user']['extension'][0]['user']." XML default";
$xfer_command = urlencode($xfer_command);
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=uuid_transfer+".$xfer_command."');}\">".$text['label-transfer']."</a>&nbsp;\n";
}
else {
$orig_call="{origination_caller_id_name=c2c-".urlencode($name).",origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26bridge(user/".$a_exten."@".$_SESSION['domain_name'].")";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_call.")');}\">".$text['label-call']."</a>&nbsp;\n";
}
echo "</td>";
}
}
}
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</table>\n\n";
//add vertical spacing
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
//get the queue list
//send the event socket command and get the response
//callcenter_config queue list members [queue_name]
$switch_cmd = 'callcenter_config queue list members '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$result = str_to_named_array($event_socket_str, '|');
//show the title
$q_waiting=0;
$q_trying=0;
$q_answered=0;
echo "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'><b>".$text['label-queue'].": ".ucfirst($_GET[queue_name])."</b><br />\n";
echo " ".$text['description-queue']."<br />\n";
echo " </td>\n";
echo " <td align='right' valign='top'>";
foreach ($result as $row) {
$state = $row['state'];
$q_trying += ($state == "Trying") ? 1 : 0;
$q_waiting += ($state == "Waiting") ? 1 : 0;
$q_answered += ($state == "Answered") ? 1 : 0;
}
echo " <strong>".$text['label-waiting'].":</strong> <b>".$q_waiting."</b>&nbsp;&nbsp;&nbsp;";
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b>&nbsp;&nbsp;&nbsp; ";
echo " <strong>".$text['label-answered'].":</strong> <b>".$q_answered."</b>";
echo " </td>";
echo " </tr>\n";
echo "</table>\n";
echo "<br />\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-time']."</th>\n";
//echo "<th>".$text['label-system']."</th>\n";
echo "<th>".$text['label-name']."</th>\n";
echo "<th>".$text['label-number']."</th>\n";
echo "<th>".$text['label-status']."</th>\n";
if ((if_group("admin") || if_group("superadmin"))) {
echo "<th>".$text['label-options']."</th>\n";
}
echo "<th>".$text['label-agent']."</th>\n";
echo "</tr>\n";
foreach ($result as $row) {
$queue = $row['queue'];
$system = $row['system'];
$uuid = $row['uuid'];
$session_uuid = $row['session_uuid'];
$caller_number = $row['cid_number'];
$caller_name = $row['cid_name'];
$system_epoch = $row['system_epoch'];
$joined_epoch = $row['joined_epoch'];
$rejoined_epoch = $row['rejoined_epoch'];
$bridge_epoch = $row['bridge_epoch'];
$abandoned_epoch = $row['abandoned_epoch'];
$base_score = $row['base_score'];
$skill_score = $row['skill_score'];
$serving_agent = $row['serving_agent'];
$serving_system = $row['serving_system'];
$state = $row['state'];
$joined_seconds = time() - $joined_epoch;
$joined_length_hour = floor($joined_seconds/3600);
$joined_length_min = floor($joined_seconds/60 - ($joined_length_hour * 60));
$joined_length_sec = $joined_seconds - (($joined_length_hour * 3600) + ($joined_length_min * 60));
$joined_length_min = sprintf("%02d", $joined_length_min);
$joined_length_sec = sprintf("%02d", $joined_length_sec);
$joined_length = $joined_length_hour.':'.$joined_length_min.':'.$joined_length_sec;
//$system_seconds = time() - $system_epoch;
//$system_length_hour = floor($system_seconds/3600);
//$system_length_min = floor($system_seconds/60 - ($system_length_hour * 60));
//$system_length_sec = $system_seconds - (($system_length_hour * 3600) + ($system_length_min * 60));
//$system_length_min = sprintf("%02d", $system_length_min);
//$system_length_sec = sprintf("%02d", $system_length_sec);
//$system_length = $system_length_hour.':'.$system_length_min.':'.$system_length_sec;
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$joined_length."</td>\n";
//echo "<td valign='top' class='".$row_style[$c]."'>".$system_length."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_name."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_number."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
if (if_group("admin") || if_group("superadmin")) {
echo "<td valign='top' class='".$row_style[$c]."'>";
if ($state != "Abandoned") {
$q_caller_number = urlencode($caller_number);
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$q_caller_number."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$session_uuid.")";
//debug
//echo $orig_command;
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a>&nbsp;\n";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a>&nbsp;\n";
}
else {
echo "&nbsp;";
}
echo "</td>";
}
echo "<td valign='top' class='".$row_style[$c]."'>".$serving_agent."&nbsp;</td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</table>\n";
//add vertical spacing
echo "<br />\n";
echo "<br />\n";
echo "<br />\n";
}
?>
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('call_center_active_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the queue_name and set it as a variable
$queue_name = $_GET[queue_name].'@'. $_SESSION['domains'][$domain_uuid]['domain_name'];
//convert the string to a named array
function str_to_named_array($tmp_str, $tmp_delimiter) {
$tmp_array = explode ("\n", $tmp_str);
$result = '';
if (trim(strtoupper($tmp_array[0])) != "+OK") {
$tmp_field_name_array = explode ($tmp_delimiter, $tmp_array[0]);
$x = 0;
foreach ($tmp_array as $row) {
if ($x > 0) {
$tmp_field_value_array = explode ($tmp_delimiter, $tmp_array[$x]);
$y = 0;
foreach ($tmp_field_value_array as $tmp_value) {
$tmp_name = $tmp_field_name_array[$y];
if (trim(strtoupper($tmp_value)) != "+OK") {
$result[$x][$tmp_name] = $tmp_value;
}
$y++;
}
}
$x++;
}
unset($row);
}
return $result;
}
//alternate the color of the row
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//create an event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//get the call center queue, agent and tiers list
if (!$fp) {
$msg = "<div align='center'>Connection to Event Socket failed.<br /></div>";
echo "<div align='center'>\n";
echo "<table width='40%'>\n";
echo "<tr>\n";
echo "<th align='left'>Message</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='row_style1'><strong>$msg</strong></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
else {
//get the agent list
//show the title
echo "<b>".$text['header-agents']."</b><br />\n";
echo $text['description-agents']."<br /><br />\n";
//send the event socket command and get the response
//callcenter_config queue list tiers [queue_name] |
$switch_cmd = 'callcenter_config queue list tiers '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$result = str_to_named_array($event_socket_str, '|');
//prepare the result for array_multisort
$x = 0;
foreach ($result as $row) {
$tier_result[$x]['level'] = $row['level'];
$tier_result[$x]['position'] = $row['position'];
$tier_result[$x]['agent'] = $row['agent'];
$tier_result[$x]['state'] = trim($row['state']);
$tier_result[$x]['queue'] = $row['queue'];
$x++;
}
//sort the array //SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
array_multisort($tier_result, SORT_ASC);
//send the event socket command and get the response
//callcenter_config queue list agents [queue_name] [status] |
$switch_cmd = 'callcenter_config queue list agents '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$agent_result = str_to_named_array($event_socket_str, '|');
//list the agents
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-name']."</th>\n";
echo "<th>".$text['label-extension']."</th>\n";
echo "<th>".$text['label-status']."</th>\n";
echo "<th>".$text['label-state']."</th>\n";
echo "<th>".$text['label-status_change']."</th>\n";
echo "<th>".$text['label-missed']."</th>\n";
echo "<th>".$text['label-answered']."</th>\n";
echo "<th>".$text['label-tier_state']."</th>\n";
echo "<th>".$text['label-tier_level']."</th>\n";
echo "<th>".$text['label-tier_position']."</th>\n";
if (permission_exists('call_center_active_options')) {
echo "<th>".$text['label-options']."</th>\n";
}
echo "</tr>\n";
foreach ($tier_result as $tier_row) {
//$queue = $tier_row['queue'];
//$queue = str_replace('@'.$_SESSION['domain_name'], '', $queue);
$agent = $tier_row['agent'];
//$agent = str_replace('@'.$_SESSION['domain_name'], '', $agent);
$tier_state = $tier_row['state'];
$tier_level = $tier_row['level'];
$tier_position = $tier_row['position'];
foreach ($agent_result as $agent_row) {
if ($tier_row['agent'] == $agent_row['name']) {
$name = $agent_row['name'];
$name = str_replace('@'.$_SESSION['domain_name'], '', $name);
//$system = $agent_row['system'];
$a_uuid = $agent_row['uuid'];
//$type = $agent_row['type'];
$contact = $agent_row['contact'];
$a_exten = preg_replace("/user\//", "", $contact);
$a_exten = preg_replace("/@.*/", "", $a_exten);
$a_exten = preg_replace("/{.*}/", "", $a_exten);
$status = $agent_row['status'];
$state = $agent_row['state'];
$max_no_answer = $agent_row['max_no_answer'];
$wrap_up_time = $agent_row['wrap_up_time'];
$reject_delay_time = $agent_row['reject_delay_time'];
$busy_delay_time = $agent_row['busy_delay_time'];
$last_bridge_start = $agent_row['last_bridge_start'];
$last_bridge_end = $agent_row['last_bridge_end'];
//$last_offered_call = $agent_row['last_offered_call'];
$last_status_change = $agent_row['last_status_change'];
$no_answer_count = $agent_row['no_answer_count'];
$calls_answered = $agent_row['calls_answered'];
$talk_time = $agent_row['talk_time'];
$ready_time = $agent_row['ready_time'];
$last_offered_call_seconds = time() - $last_offered_call;
$last_offered_call_length_hour = floor($last_offered_call_seconds/3600);
$last_offered_call_length_min = floor($last_offered_call_seconds/60 - ($last_offered_call_length_hour * 60));
$last_offered_call_length_sec = $last_offered_call_seconds - (($last_offered_call_length_hour * 3600) + ($last_offered_call_length_min * 60));
$last_offered_call_length_min = sprintf("%02d", $last_offered_call_length_min);
$last_offered_call_length_sec = sprintf("%02d", $last_offered_call_length_sec);
$last_offered_call_length = $last_offered_call_length_hour.':'.$last_offered_call_length_min.':'.$last_offered_call_length_sec;
$last_status_change_seconds = time() - $last_status_change;
$last_status_change_length_hour = floor($last_status_change_seconds/3600);
$last_status_change_length_min = floor($last_status_change_seconds/60 - ($last_status_change_length_hour * 60));
$last_status_change_length_sec = $last_status_change_seconds - (($last_status_change_length_hour * 3600) + ($last_status_change_length_min * 60));
$last_status_change_length_min = sprintf("%02d", $last_status_change_length_min);
$last_status_change_length_sec = sprintf("%02d", $last_status_change_length_sec);
$last_status_change_length = $last_status_change_length_hour.':'.$last_status_change_length_min.':'.$last_status_change_length_sec;
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$name."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$a_exten."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$status."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$last_status_change_length."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$no_answer_count."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$calls_answered."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_state."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_level."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$tier_position."</td>\n";
if (permission_exists('call_center_active_options')) {
echo "<td valign='top' class='".$row_style[$c]."'>";
//need to check state to so only waiting gets call, and trying/answer gets eavesdrop
if ($tier_state == "Offering" || $tier_state == "Active Inbound") {
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$a_uuid.")";
//debug
//echo $orig_command;
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a>&nbsp;\n";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a>&nbsp;\n";
$xfer_command = $a_uuid." -bleg ".$_SESSION['user']['extension'][0]['user']." XML ".$_SESSION['domain_name'];
//$xfer_command = $a_uuid." ".$_SESSION['user']['extension'][0]['user']." XML default";
$xfer_command = urlencode($xfer_command);
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=uuid_transfer+".$xfer_command."');}\">".$text['label-transfer']."</a>&nbsp;\n";
}
else {
$orig_call="{origination_caller_id_name=c2c-".urlencode($name).",origination_caller_id_number=".$a_exten."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26bridge(user/".$a_exten."@".$_SESSION['domain_name'].")";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_call.")');}\">".$text['label-call']."</a>&nbsp;\n";
}
echo "</td>";
}
}
}
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</table>\n\n";
//add vertical spacing
echo "<br />";
echo "<br />";
echo "<br />";
echo "<br />";
//get the queue list
//send the event socket command and get the response
//callcenter_config queue list members [queue_name]
$switch_cmd = 'callcenter_config queue list members '.$queue_name;
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
$result = str_to_named_array($event_socket_str, '|');
//show the title
$q_waiting=0;
$q_trying=0;
$q_answered=0;
echo "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'><b>".$text['label-queue'].": ".ucfirst($_GET[queue_name])."</b><br />\n";
echo " ".$text['description-queue']."<br />\n";
echo " </td>\n";
echo " <td align='right' valign='top'>";
foreach ($result as $row) {
$state = $row['state'];
$q_trying += ($state == "Trying") ? 1 : 0;
$q_waiting += ($state == "Waiting") ? 1 : 0;
$q_answered += ($state == "Answered") ? 1 : 0;
}
echo " <strong>".$text['label-waiting'].":</strong> <b>".$q_waiting."</b>&nbsp;&nbsp;&nbsp;";
echo " <strong>".$text['label-trying'].":</strong> <b>".$q_trying."</b>&nbsp;&nbsp;&nbsp; ";
echo " <strong>".$text['label-answered'].":</strong> <b>".$q_answered."</b>";
echo " </td>";
echo " </tr>\n";
echo "</table>\n";
echo "<br />\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-time']."</th>\n";
//echo "<th>".$text['label-system']."</th>\n";
echo "<th>".$text['label-name']."</th>\n";
echo "<th>".$text['label-number']."</th>\n";
echo "<th>".$text['label-status']."</th>\n";
if ((if_group("admin") || if_group("superadmin"))) {
echo "<th>".$text['label-options']."</th>\n";
}
echo "<th>".$text['label-agent']."</th>\n";
echo "</tr>\n";
foreach ($result as $row) {
$queue = $row['queue'];
$system = $row['system'];
$uuid = $row['uuid'];
$session_uuid = $row['session_uuid'];
$caller_number = $row['cid_number'];
$caller_name = $row['cid_name'];
$system_epoch = $row['system_epoch'];
$joined_epoch = $row['joined_epoch'];
$rejoined_epoch = $row['rejoined_epoch'];
$bridge_epoch = $row['bridge_epoch'];
$abandoned_epoch = $row['abandoned_epoch'];
$base_score = $row['base_score'];
$skill_score = $row['skill_score'];
$serving_agent = $row['serving_agent'];
$serving_system = $row['serving_system'];
$state = $row['state'];
$joined_seconds = time() - $joined_epoch;
$joined_length_hour = floor($joined_seconds/3600);
$joined_length_min = floor($joined_seconds/60 - ($joined_length_hour * 60));
$joined_length_sec = $joined_seconds - (($joined_length_hour * 3600) + ($joined_length_min * 60));
$joined_length_min = sprintf("%02d", $joined_length_min);
$joined_length_sec = sprintf("%02d", $joined_length_sec);
$joined_length = $joined_length_hour.':'.$joined_length_min.':'.$joined_length_sec;
//$system_seconds = time() - $system_epoch;
//$system_length_hour = floor($system_seconds/3600);
//$system_length_min = floor($system_seconds/60 - ($system_length_hour * 60));
//$system_length_sec = $system_seconds - (($system_length_hour * 3600) + ($system_length_min * 60));
//$system_length_min = sprintf("%02d", $system_length_min);
//$system_length_sec = sprintf("%02d", $system_length_sec);
//$system_length = $system_length_hour.':'.$system_length_min.':'.$system_length_sec;
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$joined_length."</td>\n";
//echo "<td valign='top' class='".$row_style[$c]."'>".$system_length."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_name."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$caller_number."&nbsp;</td>\n";
echo "<td valign='top' class='".$row_style[$c]."'>".$state."</td>\n";
if (if_group("admin") || if_group("superadmin")) {
echo "<td valign='top' class='".$row_style[$c]."'>";
if ($state != "Abandoned") {
$q_caller_number = urlencode($caller_number);
$orig_command="{origination_caller_id_name=eavesdrop,origination_caller_id_number=".$q_caller_number."}user/".$_SESSION['user']['extension'][0]['user']."@".$_SESSION['domain_name']." %26eavesdrop(".$session_uuid.")";
//debug
//echo $orig_command;
//echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=log+".$orig_command.")');}\">log_cmd</a>&nbsp;\n";
echo " <a href='javascript:void(0);' style='color: #444444;' onclick=\"confirm_response = confirm('".$text['message-confirm']."');if (confirm_response){send_cmd('call_center_exec.php?cmd=originate+".$orig_command.")');}\">".$text['label-eavesdrop']."</a>&nbsp;\n";
}
else {
echo "&nbsp;";
}
echo "</td>";
}
echo "<td valign='top' class='".$row_style[$c]."'>".$serving_agent."&nbsp;</td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</table>\n";
//add vertical spacing
echo "<br />\n";
echo "<br />\n";
echo "<br />\n";
}
?>

View File

@@ -1,100 +1,100 @@
<?php
/* $Id$ */
/*
v_exec.php
Copyright (C) 2008 Mark J Crane
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('call_center_active_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//http get variables set to php variables
if (count($_GET)>0) {
$switch_cmd = trim($_GET["cmd"]);
$action = trim(check_str($_GET["action"]));
$data = trim(check_str($_GET["data"]));
$username = trim(check_str($_GET["username"]));
}
//authorized commands
if (stristr($switch_cmd, 'user_status') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'callcenter_config') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'eavesdrop') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'bridge') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'uuid_transfer') == true) {
//authorized;
} else {
//not found. this command is not authorized
echo "access denied";
exit;
}
//set the username
if (if_group("admin") || if_group("superadmin")) {
//use the username that was provided
}
else {
$username = $_SESSION['username'];
}
//get to php variables
if (count($_GET)>0) {
if ($action == "user_status") {
$user_status = $data;
$sql = "update v_users set ";
$sql .= "user_status = '".trim($user_status, "'")."' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and username = '".$username."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
}
//fs cmd
if (strlen($switch_cmd) > 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//ensure the connection exists
if ($fp) {
//send the command
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
//set the user state
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
}
}
}
?>
<?php
/* $Id$ */
/*
v_exec.php
Copyright (C) 2008 Mark J Crane
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('call_center_active_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//http get variables set to php variables
if (count($_GET)>0) {
$switch_cmd = trim($_GET["cmd"]);
$action = trim(check_str($_GET["action"]));
$data = trim(check_str($_GET["data"]));
$username = trim(check_str($_GET["username"]));
}
//authorized commands
if (stristr($switch_cmd, 'user_status') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'callcenter_config') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'eavesdrop') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'bridge') == true) {
//authorized;
} elseif (stristr($switch_cmd, 'uuid_transfer') == true) {
//authorized;
} else {
//not found. this command is not authorized
echo "access denied";
exit;
}
//set the username
if (if_group("admin") || if_group("superadmin")) {
//use the username that was provided
}
else {
$username = $_SESSION['username'];
}
//get to php variables
if (count($_GET)>0) {
if ($action == "user_status") {
$user_status = $data;
$sql = "update v_users set ";
$sql .= "user_status = '".trim($user_status, "'")."' ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and username = '".$username."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
}
//fs cmd
if (strlen($switch_cmd) > 0) {
//setup the event socket connection
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
//ensure the connection exists
if ($fp) {
//send the command
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
//set the user state
$cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
}
}
}
?>

View File

@@ -1,27 +1,27 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
?>

View File

@@ -1,224 +1,224 @@
<?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) 2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for call center
*/
//define the call center class
if (!class_exists('call_center')) {
class call_center {
/**
* define the variables
*/
public $domain_uuid;
public $call_center_queue_uuid;
public $dialplan_uuid;
public $queue_name;
public $queue_description;
public $destination_number;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a dialplan for call center
* @var string $domain_uuid the multi-tenant id
* @var string $value string to be cached
*/
public function dialplan() {
//delete previous dialplan
if (strlen($this->dialplan_uuid) > 0) {
//delete the previous dialplan
$sql = "delete from v_dialplans ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
}
unset($prep_statement);
//build the dialplan array
$dialplan["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
$dialplan["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_name"] = ($this->queue_name != '') ? $this->queue_name : format_phone($this->destination_number);
$dialplan["dialplan_number"] = $this->destination_number;
$dialplan["dialplan_context"] = $_SESSION['context'];
$dialplan["dialplan_continue"] = "false";
$dialplan["dialplan_order"] = "210";
$dialplan["dialplan_enabled"] = "true";
$dialplan["dialplan_description"] = $this->queue_description;
$dialplan_detail_order = 10;
//add the public condition
$y = 1;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "\${caller_id_name}";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^([^#]+#)(.*)$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "never";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "caller_id_name=$2";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "hangup_after_bridge=true";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
if (strlen($this->queue_cid_prefix) > 0) {
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "effective_caller_id_name=".$this->queue_cid_prefix."#\${caller_id_name}";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "callcenter";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $this->queue_name.'@'.$_SESSION["domain_name"];
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
if (strlen($this->queue_timeout_action) > 0) {
$action_array = explode(":",$this->queue_timeout_action);
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = $action_array[0];
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($this->queue_timeout_action, strlen($action_array[0])+1, strlen($this->queue_timeout_action));
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
//add the dialplan permission
$p = new permissions;
$p->add("dialplan_add", 'temp');
$p->add("dialplan_detail_add", 'temp');
$p->add("dialplan_edit", 'temp');
$p->add("dialplan_detail_edit", 'temp');
//save the dialplan
$orm = new orm;
$orm->name('dialplans');
$orm->save($dialplan);
$dialplan_response = $orm->message;
$this->dialplan_uuid = $dialplan_response['uuid'];
//if new dialplan uuid then update the call center queue
$sql = "update v_call_center_queues ";
$sql .= "set dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "where call_center_queue_uuid = '".$this->call_center_queue_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
//remove the temporary permission
$p->delete("dialplan_add", 'temp');
$p->delete("dialplan_detail_add", 'temp');
$p->delete("dialplan_edit", 'temp');
$p->delete("dialplan_detail_edit", 'temp');
//synchronize the xml config
save_dialplan_xml();
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION['context']);
//return the dialplan_uuid
return $dialplan_response;
}
}
}
/*
$o = new call_center;
$c->domain_uuid = "";
$c->dialplan_uuid = "";
$c->queue_name = "";
$c->queue_cid_prefix = "";
$c->queue_timeout_action = "";
$c->queue_description = "";
$c->destination_number = "";
$c->dialplan();
*/
<?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) 2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for call center
*/
//define the call center class
if (!class_exists('call_center')) {
class call_center {
/**
* define the variables
*/
public $domain_uuid;
public $call_center_queue_uuid;
public $dialplan_uuid;
public $queue_name;
public $queue_description;
public $destination_number;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a dialplan for call center
* @var string $domain_uuid the multi-tenant id
* @var string $value string to be cached
*/
public function dialplan() {
//delete previous dialplan
if (strlen($this->dialplan_uuid) > 0) {
//delete the previous dialplan
$sql = "delete from v_dialplans ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
}
unset($prep_statement);
//build the dialplan array
$dialplan["app_uuid"] = "95788e50-9500-079e-2807-fd530b0ea370";
$dialplan["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_name"] = ($this->queue_name != '') ? $this->queue_name : format_phone($this->destination_number);
$dialplan["dialplan_number"] = $this->destination_number;
$dialplan["dialplan_context"] = $_SESSION['context'];
$dialplan["dialplan_continue"] = "false";
$dialplan["dialplan_order"] = "210";
$dialplan["dialplan_enabled"] = "true";
$dialplan["dialplan_description"] = $this->queue_description;
$dialplan_detail_order = 10;
//add the public condition
$y = 1;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "\${caller_id_name}";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^([^#]+#)(.*)$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "never";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "caller_id_name=$2";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "hangup_after_bridge=true";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
if (strlen($this->queue_cid_prefix) > 0) {
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "effective_caller_id_name=".$this->queue_cid_prefix."#\${caller_id_name}";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "callcenter";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $this->queue_name.'@'.$_SESSION["domain_name"];
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
if (strlen($this->queue_timeout_action) > 0) {
$action_array = explode(":",$this->queue_timeout_action);
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = $action_array[0];
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($this->queue_timeout_action, strlen($action_array[0])+1, strlen($this->queue_timeout_action));
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "2";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
//add the dialplan permission
$p = new permissions;
$p->add("dialplan_add", 'temp');
$p->add("dialplan_detail_add", 'temp');
$p->add("dialplan_edit", 'temp');
$p->add("dialplan_detail_edit", 'temp');
//save the dialplan
$orm = new orm;
$orm->name('dialplans');
$orm->save($dialplan);
$dialplan_response = $orm->message;
$this->dialplan_uuid = $dialplan_response['uuid'];
//if new dialplan uuid then update the call center queue
$sql = "update v_call_center_queues ";
$sql .= "set dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "where call_center_queue_uuid = '".$this->call_center_queue_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
//remove the temporary permission
$p->delete("dialplan_add", 'temp');
$p->delete("dialplan_detail_add", 'temp');
$p->delete("dialplan_edit", 'temp');
$p->delete("dialplan_detail_edit", 'temp');
//synchronize the xml config
save_dialplan_xml();
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION['context']);
//return the dialplan_uuid
return $dialplan_response;
}
}
}
/*
$o = new call_center;
$c->domain_uuid = "";
$c->dialplan_uuid = "";
$c->queue_name = "";
$c->queue_cid_prefix = "";
$c->queue_timeout_action = "";
$c->queue_description = "";
$c->destination_number = "";
$c->dialplan();
*/
?>

View File

@@ -1,475 +1,475 @@
<?php
$text['title']['en-us'] = "Call Routing";
$text['title']['es-cl'] = "enrutamiento de llamadas";
$text['title']['pt-pt'] = "roteamento de chamadas";
$text['title']['fr-fr'] = "routage des appels";
$text['title']['uk'] = "маршрутизація викликів";
$text['title']['pl'] = "Call Routing";
$text['title']['sv-se'] = "Call Routing";
$text['title']['de-at'] = "Call Routing";
$text['title']['ro'] = "rutare de apel";
$text['title']['ar-eg'] = "توجيه الدعوة";
$text['title']['he'] = "ניתוב שיחות";
$text['table-tools']['en-us'] = "Tools";
$text['table-tools']['es-cl'] = "Herramientas";
$text['table-tools']['pt-pt'] = "Ferramentas";
$text['table-tools']['fr-fr'] = "Outils";
$text['table-tools']['pt-br'] = "Ferramentas";
$text['table-tools']['pl'] = "Narzędzia";
$text['table-tools']['sv-se'] = "Verktyg ";
$text['table-tools']['uk'] = "Інструменти";
$text['table-tools']['de-at'] = "Funktionen";
$text['table-extension']['en-us'] = "Extension";
$text['table-extension']['es-cl'] = "Extensión";
$text['table-extension']['pt-pt'] = "Extensão";
$text['table-extension']['fr-fr'] = "Extension";
$text['table-extension']['pt-br'] = "Ramal";
$text['table-extension']['pl'] = "Numer wewnętrzny";
$text['table-extension']['sv-se'] = "Anknytning ";
$text['table-extension']['uk'] = "Розширення (Extention)";
$text['table-extension']['de-at'] = "Nebenstelle";
$text['table-description']['en-us'] = "Description";
$text['table-description']['es-cl'] = "Descripción";
$text['table-description']['pt-pt'] = "Descrição";
$text['table-description']['fr-fr'] = "Description";
$text['table-description']['pt-br'] = "Descrição";
$text['table-description']['pl'] = "Opis";
$text['table-description']['sv-se'] = "Beskrivning ";
$text['table-description']['uk'] = "Опис";
$text['table-description']['de-at'] = "Beschreibung";
$text['label-select-cid-number']['en-us'] = "Select Caller ID Number";
$text['label-select-cid-number']['es-cl'] = "Seleccione Llamadas Número de Identificación";
$text['label-select-cid-number']['pt-pt'] = "Selecione Caller ID Number";
$text['label-select-cid-number']['fr-fr'] = "Sélectionnez Caller ID Number";
$text['label-select-cid-number']['pt-br'] = "Selecionar ID da chamada";
$text['label-select-cid-number']['pl'] = "Ustaw prezentację numeru dzwoniącego";
$text['label-select-cid-number']['sv-se'] = "Välj Nummerpresentation ";
$text['label-select-cid-number']['uk'] = "";
$text['label-select-cid-number']['de-at'] = "Anruferkennung (Nummer) wählen";
$text['label-ring-timeout']['en-us'] = "Timeout";
$text['label-ring-timeout']['es-cl'] = "Timeout";
$text['label-ring-timeout']['pt-pt'] = "Timeout";
$text['label-ring-timeout']['fr-fr'] = "Timeout";
$text['label-ring-timeout']['pt-br'] = "Tempo limite";
$text['label-ring-timeout']['pl'] = "Przekroczenie czasu oczekiwania ";
$text['label-ring-timeout']['sv-se'] = "Tidsgräns ";
$text['label-ring-timeout']['uk'] = "Таймаут";
$text['label-ring-timeout']['de-at'] = "Abwurfzeit";
$text['label-ring-order']['en-us'] = "Ring Order";
$text['label-ring-order']['es-cl'] = "Solicitar Llamado";
$text['label-ring-order']['pt-pt'] = "Pedir Chamada";
$text['label-ring-order']['fr-fr'] = "Ordre de sonnerie";
$text['label-ring-order']['pt-br'] = "Solicitar chamada";
$text['label-ring-order']['pl'] = "Kolejność dzwonienia";
$text['label-ring-order']['sv-se'] = "Ring Ordning ";
$text['label-ring-order']['uk'] = "Послідовність набору";
$text['label-ring-order']['de-at'] = "Ruf Reihenfolge";
$text['label-ring-delay']['en-us'] = "Delay";
$text['label-ring-delay']['es-cl'] = "Retardo";
$text['label-ring-delay']['pt-pt'] = "Atraso";
$text['label-ring-delay']['fr-fr'] = "Délais";
$text['label-ring-delay']['pt-br'] = "Delay";
$text['label-ring-delay']['pl'] = "Opóznienie";
$text['label-ring-delay']['sv-se'] = "Fördröjning ";
$text['label-ring-delay']['uk'] = "Затримка";
$text['label-ring-delay']['de-at'] = "Verzögerung";
$text['label-prompt']['en-us'] = "Prompt to accept the call";
$text['label-prompt']['es-cl'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['pt-pt'] = "Perguntar para aceitar a chamada";
$text['label-prompt']['fr-fr'] = "Annonce pour accepter l'appel";
$text['label-prompt']['pt-br'] = "Perguntar para aceitar a chamada";
$text['label-prompt']['pl'] = "Podpowiedz, aby odebrać rozmowę";
$text['label-prompt']['sv-se'] = "Kräv verifiering för att ta emot samtal. ";
$text['label-prompt']['uk'] = "";
$text['label-prompt']['de-at'] = "Ansage um den Anruf anzunehmen";
$text['label-on-busy']['en-us'] = "On Busy";
$text['label-on-busy']['es-cl'] = "Concurrida";
$text['label-on-busy']['pt-pt'] = "Movimentado";
$text['label-on-busy']['fr-fr'] = "Sur Occupé";
$text['label-on-busy']['it-it'] = "Su occupato";
$text['label-on-busy']['pt-br'] = "Ocupado";
$text['label-on-busy']['pl'] = "Kiedy zajęty";
$text['label-on-busy']['sv-se'] = "Vid Upptaget ";
$text['label-on-busy']['uk'] = "Якщо зайнято";
$text['label-on-busy']['de-at'] = "Bei Besetzt";
$text['label-number']['en-us'] = "Number";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['pt-pt'] = "Número";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['pt-br'] = "Número";
$text['label-number']['pl'] = "Numer";
$text['label-number']['sv-se'] = "Nummer ";
$text['label-number']['uk'] = "Номер";
$text['label-number']['de-at'] = "Nummer";
$text['label-no_answer']['en-us'] = "No Answer";
$text['label-no_answer']['es-cl'] = "Sin Respuesta";
$text['label-no_answer']['pt-pt'] = "Sem Resposta";
$text['label-no_answer']['fr-fr'] = "Sans Réponse";
$text['label-no_answer']['it-it'] = "Senza Risposta";
$text['label-no_answer']['pt-br'] = "Sem resposta";
$text['label-no_answer']['pl'] = "Brak odpowiedzi";
$text['label-no_answer']['sv-se'] = "Inget Svar ";
$text['label-no_answer']['uk'] = "Без відповіді";
$text['label-no_answer']['de-at'] = "Keine Antwort";
$text['label-not_registered']['en-us'] = "Not Registered";
$text['label-not_registered']['es-cl'] = "";
$text['label-not_registered']['pt-pt'] = "";
$text['label-not_registered']['fr-fr'] = "";
$text['label-not_registered']['it-it'] = "";
$text['label-not_registered']['pt-br'] = "";
$text['label-not_registered']['pl'] = "";
$text['label-not_registered']['sv-se'] = "";
$text['label-not_registered']['uk'] = "";
$text['label-not_registered']['de-at'] = "";
$text['label-ignore-busy']['en-us'] = "Ignore Busy";
$text['label-ignore-busy']['es-cl'] = "";
$text['label-ignore-busy']['pt-pt'] = "";
$text['label-ignore-busy']['fr-fr'] = "";
$text['label-ignore-busy']['it-it'] = "";
$text['label-ignore-busy']['pt-br'] = "";
$text['label-ignore-busy']['pl'] = "";
$text['label-ignore-busy']['sv-se'] = "";
$text['label-ignore-busy']['uk'] = "";
$text['label-ignore-busy']['de-at'] = "Ignorieren bei Besetzt";
$text['label-follow-me']['en-us'] = "Follow Me";
$text['label-follow-me']['es-cl'] = "Sígueme";
$text['label-follow-me']['pt-pt'] = "Segue-me";
$text['label-follow-me']['fr-fr'] = "Follow Me";
$text['label-follow-me']['pt-br'] = "Siga-me";
$text['label-follow-me']['pl'] = "Podążaj za mną";
$text['label-follow-me']['sv-se'] = "Följ Mig ";
$text['label-follow-me']['uk'] = "";
$text['label-follow-me']['de-at'] = "Anrufweiterschaltung";
$text['label-dnd']['en-us'] = "Do Not Disturb";
$text['label-dnd']['es-cl'] = "No Molestar";
$text['label-dnd']['pt-pt'] = "Não Perturbar";
$text['label-dnd']['fr-fr'] = "Ne pas déranger";
$text['label-dnd']['pt-br'] = "Não Pertube";
$text['label-dnd']['pl'] = "Nie przeszkadzaj (DND)";
$text['label-dnd']['sv-se'] = "Stör Ej ";
$text['label-dnd']['uk'] = "Не турбувати";
$text['label-dnd']['de-at'] = "Bitte nicht stören";
$text['label-destinations']['en-us'] = "Destinations";
$text['label-destinations']['es-cl'] = "Destinos";
$text['label-destinations']['fr-fr'] = "Destinations";
$text['label-destinations']['pt-pt'] = "Destinos";
$text['label-destinations']['pt-br'] = "Destinos";
$text['label-destinations']['pl'] = "Destynacje";
$text['label-destinations']['sv-se'] = "Destinationer ";
$text['label-destinations']['uk'] = "Номери";
$text['label-destinations']['de-at'] = "Ziele";
$text['label-destination_timeout']['en-us'] = "Timeout";
$text['label-destination_timeout']['es-cl'] = "Timeout";
$text['label-destination_timeout']['fr-fr'] = "Timeout";
$text['label-destination_timeout']['pt-pt'] = "Timeout";
$text['label-destination_timeout']['pt-br'] = "Tempo de saída";
$text['label-destination_timeout']['pl'] = "Limit czasowy";
$text['label-destination_timeout']['sv-se'] = "Tidsgräns ";
$text['label-destination_timeout']['uk'] = "Таймаут";
$text['label-destination_timeout']['de-at'] = "Abwurfzeit";
$text['label-destination_prompt_confirm']['en-us'] = "Confirm";
$text['label-destination_prompt_confirm']['es-cl'] = "Confirmar";
$text['label-destination_prompt_confirm']['fr-fr'] = "Confirmer";
$text['label-destination_prompt_confirm']['pt-pt'] = "Confirmar";
$text['label-destination_prompt_confirm']['pt-br'] = "Confirmar";
$text['label-destination_prompt_confirm']['pl'] = "Potwierdź";
$text['label-destination_prompt_confirm']['sv-se'] = "Bekräfta ";
$text['label-destination_prompt_confirm']['uk'] = "Підтвердити";
$text['label-destination_prompt_confirm']['de-at'] = "Bestätigen";
$text['label-destination_prompt_announce']['en-us'] = "Announce";
$text['label-destination_prompt_announce']['es-cl'] = "Anunciar";
$text['label-destination_prompt_announce']['fr-fr'] = "Annonce";
$text['label-destination_prompt_announce']['pt-pt'] = "Anunciar";
$text['label-destination_prompt_announce']['pt-br'] = "Anunciar";
$text['label-destination_prompt_announce']['pl'] = "Rozgłoś/powiadom";
$text['label-destination_prompt_announce']['sv-se'] = "Meddela ";
$text['label-destination_prompt_announce']['uk'] = "";
$text['label-destination_prompt_announce']['de-at'] = "Ankündigen";
$text['label-destination_prompt']['en-us'] = "Prompt";
$text['label-destination_prompt']['es-cl'] = "Prompt";
$text['label-destination_prompt']['fr-fr'] = "Prompt";
$text['label-destination_prompt']['pt-pt'] = "Prompt";
$text['label-destination_prompt']['pt-br'] = "Prompt";
$text['label-destination_prompt']['pl'] = "Potwierdź aby odebrac rozmowę";
$text['label-destination_prompt']['sv-se'] = "Verifiering ";
$text['label-destination_prompt']['uk'] = "";
$text['label-destination_prompt']['de-at'] = "Nachfragen";
$text['label-destination_number']['en-us'] = "Destination";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['fr-fr'] = "Destination";
$text['label-destination_number']['pt-pt'] = "Destino";
$text['label-destination_number']['pt-br'] = "Desvio";
$text['label-destination_number']['pl'] = "Destynacja";
$text['label-destination_number']['sv-se'] = "Destination Nummer ";
$text['label-destination_number']['uk'] = "Номер";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_delay']['en-us'] = "Delay";
$text['label-destination_delay']['es-cl'] = "Retraso";
$text['label-destination_delay']['fr-fr'] = "Délais";
$text['label-destination_delay']['pt-pt'] = "Atraso";
$text['label-destination_delay']['pt-br'] = "Delay";
$text['label-destination_delay']['pl'] = "Opóźnienie";
$text['label-destination_delay']['sv-se'] = "Fördröjning ";
$text['label-destination_delay']['uk'] = "Затримка";
$text['label-destination_delay']['de-at'] = "Verzögerung";
$text['label-destination']['en-us'] = "Destination";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['fr-fr'] = "Destination";
$text['label-destination']['pt-pt'] = "Destino";
$text['label-destination']['pt-br'] = "Número de destino";
$text['label-destination']['pl'] = "Destynacja";
$text['label-destination']['sv-se'] = "Destination ";
$text['label-destination']['uk'] = "Номер";
$text['label-destination']['de-at'] = "Ziel";
$text['label-cid-number-prefix']['en-us'] = "Caller ID Number";
$text['label-cid-number-prefix']['es-cl'] = "Número de Caller ID";
$text['label-cid-number-prefix']['pt-pt'] = "Número do Chamador";
$text['label-cid-number-prefix']['pt-br'] = "Número do discador";
$text['label-cid-number-prefix']['pl'] = "Prefiks prezentacji numeru dzwoniącego";
$text['label-cid-number-prefix']['sv-se'] = "Nummerpresentation ";
$text['label-cid-number-prefix']['uk'] = "Caller ID Номер";
$text['label-cid-number-prefix']['fr-fr'] = "CID Nombre Préfixe";
$text['label-cid-number-prefix']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-name-prefix']['en-us'] = "Caller ID Name";
$text['label-cid-name-prefix']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['pt-pt'] = "Nome do Chamador";
$text['label-cid-name-prefix']['fr-fr'] = "Préfixe de l'appelant";
$text['label-cid-name-prefix']['pt-br'] = "Nome do discador";
$text['label-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego";
$text['label-cid-name-prefix']['sv-se'] = "Namnpresentation ";
$text['label-cid-name-prefix']['uk'] = "Caller ID Ім’я";
$text['label-cid-name-prefix']['de-at'] = "Anruferkennung (Name)";
$text['label-call-prompt']['en-us'] = "Call Prompt";
$text['label-call-prompt']['es-cl'] = "Aviso de Llamadas";
$text['label-call-prompt']['pt-pt'] = "Espoletar Chamada";
$text['label-call-prompt']['fr-fr'] = "Annonce d'appel";
$text['label-call-prompt']['pt-br'] = "Prompt chamada";
$text['label-call-prompt']['pl'] = "Potwierdź przed odebraniem rozmowy";
$text['label-call-prompt']['sv-se'] = "Samtals Verifiering ";
$text['label-call-prompt']['uk'] = "";
$text['label-call-prompt']['de-at'] = "Nachfragen";
$text['label-call-forward']['en-us'] = "Call Forward";
$text['label-call-forward']['es-cl'] = "Reenvio de Llamadas";
$text['label-call-forward']['pt-pt'] = "Encaminhamento de Chamadas";
$text['label-call-forward']['fr-fr'] = "Renvoi d'appel";
$text['label-call-forward']['pt-br'] = "Encaminhamento de chamadas";
$text['label-call-forward']['pl'] = "Przekierowanie";
$text['label-call-forward']['sv-se'] = "Vidarekoppling ";
$text['label-call-forward']['uk'] = "Переадресація";
$text['label-call-forward']['de-at'] = "Rufumleitung";
$text['header-call_routing']['en-us'] = "Call Routing";
$text['header-call_routing']['es-cl'] = "Enrutamiento de Llamadas";
$text['header-call_routing']['pt-pt'] = "Roteamento de Chamadas";
$text['header-call_routing']['fr-fr'] = "Routage des Appels";
$text['header-call_routing']['pt-br'] = "Roteamento de Chamadas";
$text['header-call_routing']['pl'] = "Trasy połączeń";
$text['header-call_routing']['he'] = "ניתוב שיחות";
$text['header-call_routing']['uk'] = "маршрутизація викликів";
$text['header-call_routing']['sv-se'] = "samtals Rutter";
$text['header-call_routing']['de-at'] = "Anrufrouten";
$text['header-call_routing']['ro'] = "Маршрутизация вызовов";
$text['header-call_routing']['fa'] = "";
$text['header-call_routing']['ar-eg'] = "توجيه الدعوة";
$text['description-on-busy']['en-us'] = "If enabled, it overrides the value of voicemail enabling in extension.";
$text['description-on-busy']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-on-busy']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-on-busy']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver ocupado";
$text['description-on-busy']['pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen. ";
$text['description-on-busy']['uk'] = "";
$text['description-on-busy']['de-at'] = "Falls aktiv, wird der Wert 'Mailbox eingeschaltet' in der Nebenstelle überschrieben";
$text['description-no_answer']['en-us'] = "If enabled, it overrides the value of voicemail enabling in extension.";
$text['description-no_answer']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-no_answer']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-no_answer']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-no_answer']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver chamando";
$text['description-no_answer']['pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen. ";
$text['description-no_answer']['uk'] = "";
$text['description-no_answer']['de-at'] = "Falls aktiv, wird der Wert 'Mailbox eingeschaltet' in der Nebenstelle überschrieben";
$text['description-not_registered']['en-us'] = "If endpoint is not reachable, forward to this destination before going to voicemail.";
$text['description-not_registered']['es-cl'] = "";
$text['description-not_registered']['pt-pt'] = "";
$text['description-not_registered']['fr-fr'] = "";
$text['description-not_registered']['it-it'] = "";
$text['description-not_registered']['pt-br'] = "";
$text['description-not_registered']['pl'] = "";
$text['description-not_registered']['sv-se'] = "";
$text['description-not_registered']['uk'] = "";
$text['description-not_registered']['de-at'] = "";
$text['description-cid-number-prefix']['en-us'] = "Set the caller ID number prefix.";
$text['description-cid-number-prefix']['es-cl'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['pt-pt'] = "Defina o número do Chamador";
$text['description-cid-number-prefix']['pt-br'] = "Defina o número do prefixo";
$text['description-cid-number-prefix']['pl'] = "Prefiks prezentacji numeru dzwoniącego.";
$text['description-cid-number-prefix']['sv-se'] = "Ange nummerpresentation prefix. ";
$text['description-cid-number-prefix']['uk'] = "";
$text['description-cid-number-prefix']['fr-fr'] = "Définir un préfixe sur le nombre d'ID d'appelant.";
$text['description-cid-number-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-name-prefix']['en-us'] = "Set the caller ID name prefix.";
$text['description-cid-name-prefix']['es-cl'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['pt-pt'] = "Defina o nome do Chamador";
$text['description-cid-name-prefix']['fr-fr'] = "Choisr le péfixe du nom d'appelant.";
$text['description-cid-name-prefix']['pt-br'] = "Defina o nome do discador";
$text['description-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego.";
$text['description-cid-name-prefix']['sv-se'] = "Ange namnpresentation prefix. ";
$text['description-cid-name-prefix']['uk'] = "";
$text['description-cid-name-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-call-prompt']['en-us'] = "Prompt to accept the call for external destinations.";
$text['description-call-prompt']['es-cl'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['pt-pt'] = "Aceitar chamada para destinos externos.";
$text['description-call-prompt']['fr-fr'] = "Annonce pour accepter l'appel venant de destinations externes.";
$text['description-call-prompt']['pt-br'] = "Aceiter chamada para destinos externos";
$text['description-call-prompt']['pl'] = "Zapytaj czy akceptować rozmowę do zewnętrznych destynacji.";
$text['description-call-prompt']['sv-se'] = "Kräv verifiering för att ta emot samtal för externa destinationer. ";
$text['description-call-prompt']['uk'] = "";
$text['description-call-prompt']['de-at'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call_routing']['en-us'] = "Define alternate inbound call handling for the following extensions.";
$text['description-call_routing']['es-cl'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['pt-pt'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['fr-fr'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
$text['description-call_routing']['pt-br'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['pl'] = "Definiowanie alternatywnego połączenia przychodzącego obsługi dla następujących rozszerzeń.";
$text['description-call_routing']['sv-se'] = "Definiera alternativa inkommande samtalshantering för följande tillägg.";
$text['description-call_routing']['uk'] = "Визначити обробку для наступних розширень альтернативного вхідного дзвінка.";
$text['description-call_routing']['de-at'] = "Definieren Sie alternative eingehende Anruf für die folgenden Erweiterungen der Handhabung.";
$text['description']['en-us'] = "Directs incoming calls for extension:";
$text['description']['es-cl'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['pt-pt'] = "Direciona as chamadas recebidas para a extensão:";
$text['description']['fr-fr'] = "Rediriger les appels entrant pour l'extension:";
$text['description']['pt-br'] = "Editar informações da conta.";
$text['description']['pl'] = "Kieruj rozmowy przychodzące na numer wewnętrzny:";
$text['description']['sv-se'] = "Styr inkommande samtal för anknytning: ";
$text['description']['uk'] = "Керування вхідними дзвінками для розширення";
$text['description']['de-at'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['confirm-update']['en-us'] = "Update Complete";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['pt-pt'] = "Actualização Efectuada";
$text['confirm-update']['fr-fr'] = "Mis à jour";
$text['confirm-update']['pt-br'] = "Atualização Efetuada";
$text['confirm-update']['pl'] = "Aktualizacja zakonczona";
$text['confirm-update']['sv-se'] = "Uppdatering Klar ";
$text['confirm-update']['uk'] = "Оновлено";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['ckeck-true']['es-cl'] = "Verdadero";
$text['ckeck-true']['pt-pt'] = "Sim";
$text['ckeck-true']['fr-fr'] = "Oui";
$text['ckeck-true']['pt-br'] = "Sim";
$text['ckeck-true']['pl'] = "";
$text['ckeck-true']['sv-se'] = "";
$text['ckeck-true']['uk'] = "";
$text['ckeck-true']['de-at'] = "";
$text['ckeck-simultaneous']['es-cl'] = "simultaneo";
$text['ckeck-simultaneous']['pt-pt'] = "simultâneo";
$text['ckeck-simultaneous']['pt-br'] = "Simultâneo";
$text['ckeck-simultaneous']['pl'] = "";
$text['ckeck-simultaneous']['sv-se'] = "";
$text['ckeck-simultaneous']['uk'] = "";
$text['ckeck-simultaneous']['fr-fr'] = "";
$text['ckeck-simultaneous']['de-at'] = "";
$text['ckeck-sequence']['es-cl'] = "secuencia";
$text['ckeck-sequence']['pt-pt'] = "sequência";
$text['ckeck-sequence']['pt-br'] = "Sequência";
$text['ckeck-sequence']['pl'] = "";
$text['ckeck-sequence']['sv-se'] = "";
$text['ckeck-sequence']['uk'] = "";
$text['ckeck-sequence']['fr-fr'] = "";
$text['ckeck-sequence']['de-at'] = "";
$text['ckeck-false']['es-cl'] = "Falso";
$text['ckeck-false']['pt-pt'] = "Não";
$text['ckeck-false']['fr-fr'] = "Non";
$text['ckeck-false']['pt-br'] = "Não";
$text['ckeck-false']['pl'] = "";
$text['ckeck-false']['sv-se'] = "";
$text['ckeck-false']['uk'] = "";
$text['ckeck-false']['de-at'] = "";
$text['check-true']['en-us'] = "True";
$text['check-true']['pt-br'] = "";
$text['check-true']['pl'] = "Tak";
$text['check-true']['sv-se'] = "Sann ";
$text['check-true']['uk'] = "Так";
$text['check-true']['fr-fr'] = "";
$text['check-true']['de-at'] = "An";
$text['check-simultaneous']['en-us'] = "simultaneous";
$text['check-simultaneous']['fr-fr'] = "simultanément";
$text['check-simultaneous']['pt-br'] = "";
$text['check-simultaneous']['pl'] = "jednoczesne";
$text['check-simultaneous']['sv-se'] = "Samtidiga ";
$text['check-simultaneous']['uk'] = "одночасно";
$text['check-simultaneous']['de-at'] = "gleichzeitig";
$text['check-sequence']['en-us'] = "sequence";
$text['check-sequence']['fr-fr'] = "séquence";
$text['check-sequence']['pt-br'] = "";
$text['check-sequence']['pl'] = "kolejność";
$text['check-sequence']['sv-se'] = "sekvens ";
$text['check-sequence']['uk'] = "послідовно";
$text['check-sequence']['de-at'] = "sequenziell";
$text['check-false']['en-us'] = "False";
$text['check-false']['pt-br'] = "";
$text['check-false']['pl'] = "Nie";
$text['check-false']['sv-se'] = "Falsk ";
$text['check-false']['uk'] = "Ні";
$text['check-false']['fr-fr'] = "";
$text['check-false']['de-at'] = "Aus";
$text['button-view_all']['en-us'] = "View All";
$text['button-view_all']['es-cl'] = "Mostrar Todos";
$text['button-view_all']['pt-pt'] = "Mostrar Todos";
$text['button-view_all']['fr-fr'] = "Tout Montrer";
$text['button-view_all']['pl'] = "Pokaż wszystkie";
$text['button-view_all']['uk'] = "Показати всі";
$text['button-view_all']['sv-se'] = "Visa Allt";
$text['button-view_all']['ro'] = "";
$text['button-view_all']['de-at'] = "Alle anzeigen";
$text['button-view_all']['he'] = "הצג הכל";
<?php
$text['title']['en-us'] = "Call Routing";
$text['title']['es-cl'] = "enrutamiento de llamadas";
$text['title']['pt-pt'] = "roteamento de chamadas";
$text['title']['fr-fr'] = "routage des appels";
$text['title']['uk'] = "маршрутизація викликів";
$text['title']['pl'] = "Call Routing";
$text['title']['sv-se'] = "Call Routing";
$text['title']['de-at'] = "Call Routing";
$text['title']['ro'] = "rutare de apel";
$text['title']['ar-eg'] = "توجيه الدعوة";
$text['title']['he'] = "ניתוב שיחות";
$text['table-tools']['en-us'] = "Tools";
$text['table-tools']['es-cl'] = "Herramientas";
$text['table-tools']['pt-pt'] = "Ferramentas";
$text['table-tools']['fr-fr'] = "Outils";
$text['table-tools']['pt-br'] = "Ferramentas";
$text['table-tools']['pl'] = "Narzędzia";
$text['table-tools']['sv-se'] = "Verktyg ";
$text['table-tools']['uk'] = "Інструменти";
$text['table-tools']['de-at'] = "Funktionen";
$text['table-extension']['en-us'] = "Extension";
$text['table-extension']['es-cl'] = "Extensión";
$text['table-extension']['pt-pt'] = "Extensão";
$text['table-extension']['fr-fr'] = "Extension";
$text['table-extension']['pt-br'] = "Ramal";
$text['table-extension']['pl'] = "Numer wewnętrzny";
$text['table-extension']['sv-se'] = "Anknytning ";
$text['table-extension']['uk'] = "Розширення (Extention)";
$text['table-extension']['de-at'] = "Nebenstelle";
$text['table-description']['en-us'] = "Description";
$text['table-description']['es-cl'] = "Descripción";
$text['table-description']['pt-pt'] = "Descrição";
$text['table-description']['fr-fr'] = "Description";
$text['table-description']['pt-br'] = "Descrição";
$text['table-description']['pl'] = "Opis";
$text['table-description']['sv-se'] = "Beskrivning ";
$text['table-description']['uk'] = "Опис";
$text['table-description']['de-at'] = "Beschreibung";
$text['label-select-cid-number']['en-us'] = "Select Caller ID Number";
$text['label-select-cid-number']['es-cl'] = "Seleccione Llamadas Número de Identificación";
$text['label-select-cid-number']['pt-pt'] = "Selecione Caller ID Number";
$text['label-select-cid-number']['fr-fr'] = "Sélectionnez Caller ID Number";
$text['label-select-cid-number']['pt-br'] = "Selecionar ID da chamada";
$text['label-select-cid-number']['pl'] = "Ustaw prezentację numeru dzwoniącego";
$text['label-select-cid-number']['sv-se'] = "Välj Nummerpresentation ";
$text['label-select-cid-number']['uk'] = "";
$text['label-select-cid-number']['de-at'] = "Anruferkennung (Nummer) wählen";
$text['label-ring-timeout']['en-us'] = "Timeout";
$text['label-ring-timeout']['es-cl'] = "Timeout";
$text['label-ring-timeout']['pt-pt'] = "Timeout";
$text['label-ring-timeout']['fr-fr'] = "Timeout";
$text['label-ring-timeout']['pt-br'] = "Tempo limite";
$text['label-ring-timeout']['pl'] = "Przekroczenie czasu oczekiwania ";
$text['label-ring-timeout']['sv-se'] = "Tidsgräns ";
$text['label-ring-timeout']['uk'] = "Таймаут";
$text['label-ring-timeout']['de-at'] = "Abwurfzeit";
$text['label-ring-order']['en-us'] = "Ring Order";
$text['label-ring-order']['es-cl'] = "Solicitar Llamado";
$text['label-ring-order']['pt-pt'] = "Pedir Chamada";
$text['label-ring-order']['fr-fr'] = "Ordre de sonnerie";
$text['label-ring-order']['pt-br'] = "Solicitar chamada";
$text['label-ring-order']['pl'] = "Kolejność dzwonienia";
$text['label-ring-order']['sv-se'] = "Ring Ordning ";
$text['label-ring-order']['uk'] = "Послідовність набору";
$text['label-ring-order']['de-at'] = "Ruf Reihenfolge";
$text['label-ring-delay']['en-us'] = "Delay";
$text['label-ring-delay']['es-cl'] = "Retardo";
$text['label-ring-delay']['pt-pt'] = "Atraso";
$text['label-ring-delay']['fr-fr'] = "Délais";
$text['label-ring-delay']['pt-br'] = "Delay";
$text['label-ring-delay']['pl'] = "Opóznienie";
$text['label-ring-delay']['sv-se'] = "Fördröjning ";
$text['label-ring-delay']['uk'] = "Затримка";
$text['label-ring-delay']['de-at'] = "Verzögerung";
$text['label-prompt']['en-us'] = "Prompt to accept the call";
$text['label-prompt']['es-cl'] = "Preguntar para aceptar una llamada";
$text['label-prompt']['pt-pt'] = "Perguntar para aceitar a chamada";
$text['label-prompt']['fr-fr'] = "Annonce pour accepter l'appel";
$text['label-prompt']['pt-br'] = "Perguntar para aceitar a chamada";
$text['label-prompt']['pl'] = "Podpowiedz, aby odebrać rozmowę";
$text['label-prompt']['sv-se'] = "Kräv verifiering för att ta emot samtal. ";
$text['label-prompt']['uk'] = "";
$text['label-prompt']['de-at'] = "Ansage um den Anruf anzunehmen";
$text['label-on-busy']['en-us'] = "On Busy";
$text['label-on-busy']['es-cl'] = "Concurrida";
$text['label-on-busy']['pt-pt'] = "Movimentado";
$text['label-on-busy']['fr-fr'] = "Sur Occupé";
$text['label-on-busy']['it-it'] = "Su occupato";
$text['label-on-busy']['pt-br'] = "Ocupado";
$text['label-on-busy']['pl'] = "Kiedy zajęty";
$text['label-on-busy']['sv-se'] = "Vid Upptaget ";
$text['label-on-busy']['uk'] = "Якщо зайнято";
$text['label-on-busy']['de-at'] = "Bei Besetzt";
$text['label-number']['en-us'] = "Number";
$text['label-number']['es-cl'] = "Número";
$text['label-number']['pt-pt'] = "Número";
$text['label-number']['fr-fr'] = "Numéro";
$text['label-number']['pt-br'] = "Número";
$text['label-number']['pl'] = "Numer";
$text['label-number']['sv-se'] = "Nummer ";
$text['label-number']['uk'] = "Номер";
$text['label-number']['de-at'] = "Nummer";
$text['label-no_answer']['en-us'] = "No Answer";
$text['label-no_answer']['es-cl'] = "Sin Respuesta";
$text['label-no_answer']['pt-pt'] = "Sem Resposta";
$text['label-no_answer']['fr-fr'] = "Sans Réponse";
$text['label-no_answer']['it-it'] = "Senza Risposta";
$text['label-no_answer']['pt-br'] = "Sem resposta";
$text['label-no_answer']['pl'] = "Brak odpowiedzi";
$text['label-no_answer']['sv-se'] = "Inget Svar ";
$text['label-no_answer']['uk'] = "Без відповіді";
$text['label-no_answer']['de-at'] = "Keine Antwort";
$text['label-not_registered']['en-us'] = "Not Registered";
$text['label-not_registered']['es-cl'] = "";
$text['label-not_registered']['pt-pt'] = "";
$text['label-not_registered']['fr-fr'] = "";
$text['label-not_registered']['it-it'] = "";
$text['label-not_registered']['pt-br'] = "";
$text['label-not_registered']['pl'] = "";
$text['label-not_registered']['sv-se'] = "";
$text['label-not_registered']['uk'] = "";
$text['label-not_registered']['de-at'] = "";
$text['label-ignore-busy']['en-us'] = "Ignore Busy";
$text['label-ignore-busy']['es-cl'] = "";
$text['label-ignore-busy']['pt-pt'] = "";
$text['label-ignore-busy']['fr-fr'] = "";
$text['label-ignore-busy']['it-it'] = "";
$text['label-ignore-busy']['pt-br'] = "";
$text['label-ignore-busy']['pl'] = "";
$text['label-ignore-busy']['sv-se'] = "";
$text['label-ignore-busy']['uk'] = "";
$text['label-ignore-busy']['de-at'] = "Ignorieren bei Besetzt";
$text['label-follow-me']['en-us'] = "Follow Me";
$text['label-follow-me']['es-cl'] = "Sígueme";
$text['label-follow-me']['pt-pt'] = "Segue-me";
$text['label-follow-me']['fr-fr'] = "Follow Me";
$text['label-follow-me']['pt-br'] = "Siga-me";
$text['label-follow-me']['pl'] = "Podążaj za mną";
$text['label-follow-me']['sv-se'] = "Följ Mig ";
$text['label-follow-me']['uk'] = "";
$text['label-follow-me']['de-at'] = "Anrufweiterschaltung";
$text['label-dnd']['en-us'] = "Do Not Disturb";
$text['label-dnd']['es-cl'] = "No Molestar";
$text['label-dnd']['pt-pt'] = "Não Perturbar";
$text['label-dnd']['fr-fr'] = "Ne pas déranger";
$text['label-dnd']['pt-br'] = "Não Pertube";
$text['label-dnd']['pl'] = "Nie przeszkadzaj (DND)";
$text['label-dnd']['sv-se'] = "Stör Ej ";
$text['label-dnd']['uk'] = "Не турбувати";
$text['label-dnd']['de-at'] = "Bitte nicht stören";
$text['label-destinations']['en-us'] = "Destinations";
$text['label-destinations']['es-cl'] = "Destinos";
$text['label-destinations']['fr-fr'] = "Destinations";
$text['label-destinations']['pt-pt'] = "Destinos";
$text['label-destinations']['pt-br'] = "Destinos";
$text['label-destinations']['pl'] = "Destynacje";
$text['label-destinations']['sv-se'] = "Destinationer ";
$text['label-destinations']['uk'] = "Номери";
$text['label-destinations']['de-at'] = "Ziele";
$text['label-destination_timeout']['en-us'] = "Timeout";
$text['label-destination_timeout']['es-cl'] = "Timeout";
$text['label-destination_timeout']['fr-fr'] = "Timeout";
$text['label-destination_timeout']['pt-pt'] = "Timeout";
$text['label-destination_timeout']['pt-br'] = "Tempo de saída";
$text['label-destination_timeout']['pl'] = "Limit czasowy";
$text['label-destination_timeout']['sv-se'] = "Tidsgräns ";
$text['label-destination_timeout']['uk'] = "Таймаут";
$text['label-destination_timeout']['de-at'] = "Abwurfzeit";
$text['label-destination_prompt_confirm']['en-us'] = "Confirm";
$text['label-destination_prompt_confirm']['es-cl'] = "Confirmar";
$text['label-destination_prompt_confirm']['fr-fr'] = "Confirmer";
$text['label-destination_prompt_confirm']['pt-pt'] = "Confirmar";
$text['label-destination_prompt_confirm']['pt-br'] = "Confirmar";
$text['label-destination_prompt_confirm']['pl'] = "Potwierdź";
$text['label-destination_prompt_confirm']['sv-se'] = "Bekräfta ";
$text['label-destination_prompt_confirm']['uk'] = "Підтвердити";
$text['label-destination_prompt_confirm']['de-at'] = "Bestätigen";
$text['label-destination_prompt_announce']['en-us'] = "Announce";
$text['label-destination_prompt_announce']['es-cl'] = "Anunciar";
$text['label-destination_prompt_announce']['fr-fr'] = "Annonce";
$text['label-destination_prompt_announce']['pt-pt'] = "Anunciar";
$text['label-destination_prompt_announce']['pt-br'] = "Anunciar";
$text['label-destination_prompt_announce']['pl'] = "Rozgłoś/powiadom";
$text['label-destination_prompt_announce']['sv-se'] = "Meddela ";
$text['label-destination_prompt_announce']['uk'] = "";
$text['label-destination_prompt_announce']['de-at'] = "Ankündigen";
$text['label-destination_prompt']['en-us'] = "Prompt";
$text['label-destination_prompt']['es-cl'] = "Prompt";
$text['label-destination_prompt']['fr-fr'] = "Prompt";
$text['label-destination_prompt']['pt-pt'] = "Prompt";
$text['label-destination_prompt']['pt-br'] = "Prompt";
$text['label-destination_prompt']['pl'] = "Potwierdź aby odebrac rozmowę";
$text['label-destination_prompt']['sv-se'] = "Verifiering ";
$text['label-destination_prompt']['uk'] = "";
$text['label-destination_prompt']['de-at'] = "Nachfragen";
$text['label-destination_number']['en-us'] = "Destination";
$text['label-destination_number']['es-cl'] = "Destino";
$text['label-destination_number']['fr-fr'] = "Destination";
$text['label-destination_number']['pt-pt'] = "Destino";
$text['label-destination_number']['pt-br'] = "Desvio";
$text['label-destination_number']['pl'] = "Destynacja";
$text['label-destination_number']['sv-se'] = "Destination Nummer ";
$text['label-destination_number']['uk'] = "Номер";
$text['label-destination_number']['de-at'] = "Ziel";
$text['label-destination_delay']['en-us'] = "Delay";
$text['label-destination_delay']['es-cl'] = "Retraso";
$text['label-destination_delay']['fr-fr'] = "Délais";
$text['label-destination_delay']['pt-pt'] = "Atraso";
$text['label-destination_delay']['pt-br'] = "Delay";
$text['label-destination_delay']['pl'] = "Opóźnienie";
$text['label-destination_delay']['sv-se'] = "Fördröjning ";
$text['label-destination_delay']['uk'] = "Затримка";
$text['label-destination_delay']['de-at'] = "Verzögerung";
$text['label-destination']['en-us'] = "Destination";
$text['label-destination']['es-cl'] = "Destino";
$text['label-destination']['fr-fr'] = "Destination";
$text['label-destination']['pt-pt'] = "Destino";
$text['label-destination']['pt-br'] = "Número de destino";
$text['label-destination']['pl'] = "Destynacja";
$text['label-destination']['sv-se'] = "Destination ";
$text['label-destination']['uk'] = "Номер";
$text['label-destination']['de-at'] = "Ziel";
$text['label-cid-number-prefix']['en-us'] = "Caller ID Number";
$text['label-cid-number-prefix']['es-cl'] = "Número de Caller ID";
$text['label-cid-number-prefix']['pt-pt'] = "Número do Chamador";
$text['label-cid-number-prefix']['pt-br'] = "Número do discador";
$text['label-cid-number-prefix']['pl'] = "Prefiks prezentacji numeru dzwoniącego";
$text['label-cid-number-prefix']['sv-se'] = "Nummerpresentation ";
$text['label-cid-number-prefix']['uk'] = "Caller ID Номер";
$text['label-cid-number-prefix']['fr-fr'] = "CID Nombre Préfixe";
$text['label-cid-number-prefix']['de-at'] = "Anruferkennung (Nummer)";
$text['label-cid-name-prefix']['en-us'] = "Caller ID Name";
$text['label-cid-name-prefix']['es-cl'] = "Nombre de Caller ID";
$text['label-cid-name-prefix']['pt-pt'] = "Nome do Chamador";
$text['label-cid-name-prefix']['fr-fr'] = "Préfixe de l'appelant";
$text['label-cid-name-prefix']['pt-br'] = "Nome do discador";
$text['label-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego";
$text['label-cid-name-prefix']['sv-se'] = "Namnpresentation ";
$text['label-cid-name-prefix']['uk'] = "Caller ID Ім’я";
$text['label-cid-name-prefix']['de-at'] = "Anruferkennung (Name)";
$text['label-call-prompt']['en-us'] = "Call Prompt";
$text['label-call-prompt']['es-cl'] = "Aviso de Llamadas";
$text['label-call-prompt']['pt-pt'] = "Espoletar Chamada";
$text['label-call-prompt']['fr-fr'] = "Annonce d'appel";
$text['label-call-prompt']['pt-br'] = "Prompt chamada";
$text['label-call-prompt']['pl'] = "Potwierdź przed odebraniem rozmowy";
$text['label-call-prompt']['sv-se'] = "Samtals Verifiering ";
$text['label-call-prompt']['uk'] = "";
$text['label-call-prompt']['de-at'] = "Nachfragen";
$text['label-call-forward']['en-us'] = "Call Forward";
$text['label-call-forward']['es-cl'] = "Reenvio de Llamadas";
$text['label-call-forward']['pt-pt'] = "Encaminhamento de Chamadas";
$text['label-call-forward']['fr-fr'] = "Renvoi d'appel";
$text['label-call-forward']['pt-br'] = "Encaminhamento de chamadas";
$text['label-call-forward']['pl'] = "Przekierowanie";
$text['label-call-forward']['sv-se'] = "Vidarekoppling ";
$text['label-call-forward']['uk'] = "Переадресація";
$text['label-call-forward']['de-at'] = "Rufumleitung";
$text['header-call_routing']['en-us'] = "Call Routing";
$text['header-call_routing']['es-cl'] = "Enrutamiento de Llamadas";
$text['header-call_routing']['pt-pt'] = "Roteamento de Chamadas";
$text['header-call_routing']['fr-fr'] = "Routage des Appels";
$text['header-call_routing']['pt-br'] = "Roteamento de Chamadas";
$text['header-call_routing']['pl'] = "Trasy połączeń";
$text['header-call_routing']['he'] = "ניתוב שיחות";
$text['header-call_routing']['uk'] = "маршрутизація викликів";
$text['header-call_routing']['sv-se'] = "samtals Rutter";
$text['header-call_routing']['de-at'] = "Anrufrouten";
$text['header-call_routing']['ro'] = "Маршрутизация вызовов";
$text['header-call_routing']['fa'] = "";
$text['header-call_routing']['ar-eg'] = "توجيه الدعوة";
$text['description-on-busy']['en-us'] = "If enabled, it overrides the value of voicemail enabling in extension.";
$text['description-on-busy']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-on-busy']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-on-busy']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-on-busy']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-on-busy']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver ocupado";
$text['description-on-busy']['pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-on-busy']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen. ";
$text['description-on-busy']['uk'] = "";
$text['description-on-busy']['de-at'] = "Falls aktiv, wird der Wert 'Mailbox eingeschaltet' in der Nebenstelle überschrieben";
$text['description-no_answer']['en-us'] = "If enabled, it overrides the value of voicemail enabling in extension.";
$text['description-no_answer']['es-cl'] = "Si está habilitada, anula el valor del correo de voz que permite en la extensión.";
$text['description-no_answer']['pt-pt'] = "Se ativado, ele substitui o valor de correio de voz que permite em extensão.";
$text['description-no_answer']['fr-fr'] = "Remplace la messagerie vocale si activé.";
$text['description-no_answer']['it-it'] = "Se abilitato, esegue l'override del valore di abilitazione voicemail nell'estensione.";
$text['description-no_answer']['pt-br'] = "Se ativado, substitui o valor do correio de voz permitindo uma extensão quando estiver chamando";
$text['description-no_answer']['pl'] = "Jeżeli włączone, ustawienie włączenia poczty głosowej zostaje nadpisane.";
$text['description-no_answer']['sv-se'] = "Om aktiverad, så tar den överhand framför röstbrevlåda hos anknytningen. ";
$text['description-no_answer']['uk'] = "";
$text['description-no_answer']['de-at'] = "Falls aktiv, wird der Wert 'Mailbox eingeschaltet' in der Nebenstelle überschrieben";
$text['description-not_registered']['en-us'] = "If endpoint is not reachable, forward to this destination before going to voicemail.";
$text['description-not_registered']['es-cl'] = "";
$text['description-not_registered']['pt-pt'] = "";
$text['description-not_registered']['fr-fr'] = "";
$text['description-not_registered']['it-it'] = "";
$text['description-not_registered']['pt-br'] = "";
$text['description-not_registered']['pl'] = "";
$text['description-not_registered']['sv-se'] = "";
$text['description-not_registered']['uk'] = "";
$text['description-not_registered']['de-at'] = "";
$text['description-cid-number-prefix']['en-us'] = "Set the caller ID number prefix.";
$text['description-cid-number-prefix']['es-cl'] = "Configure el prefijo de número de caller ID.";
$text['description-cid-number-prefix']['pt-pt'] = "Defina o número do Chamador";
$text['description-cid-number-prefix']['pt-br'] = "Defina o número do prefixo";
$text['description-cid-number-prefix']['pl'] = "Prefiks prezentacji numeru dzwoniącego.";
$text['description-cid-number-prefix']['sv-se'] = "Ange nummerpresentation prefix. ";
$text['description-cid-number-prefix']['uk'] = "";
$text['description-cid-number-prefix']['fr-fr'] = "Définir un préfixe sur le nombre d'ID d'appelant.";
$text['description-cid-number-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Nummer)";
$text['description-cid-name-prefix']['en-us'] = "Set the caller ID name prefix.";
$text['description-cid-name-prefix']['es-cl'] = "Configure el prefijo de nombre de caller ID";
$text['description-cid-name-prefix']['pt-pt'] = "Defina o nome do Chamador";
$text['description-cid-name-prefix']['fr-fr'] = "Choisr le péfixe du nom d'appelant.";
$text['description-cid-name-prefix']['pt-br'] = "Defina o nome do discador";
$text['description-cid-name-prefix']['pl'] = "Prefiks prezentacji nazwy dzwoniącego.";
$text['description-cid-name-prefix']['sv-se'] = "Ange namnpresentation prefix. ";
$text['description-cid-name-prefix']['uk'] = "";
$text['description-cid-name-prefix']['de-at'] = "Setzen Sie ein Präfix für die Anruferkennung (Name)";
$text['description-call-prompt']['en-us'] = "Prompt to accept the call for external destinations.";
$text['description-call-prompt']['es-cl'] = "Preguntar para aceptar un llamado para destinos externos";
$text['description-call-prompt']['pt-pt'] = "Aceitar chamada para destinos externos.";
$text['description-call-prompt']['fr-fr'] = "Annonce pour accepter l'appel venant de destinations externes.";
$text['description-call-prompt']['pt-br'] = "Aceiter chamada para destinos externos";
$text['description-call-prompt']['pl'] = "Zapytaj czy akceptować rozmowę do zewnętrznych destynacji.";
$text['description-call-prompt']['sv-se'] = "Kräv verifiering för att ta emot samtal för externa destinationer. ";
$text['description-call-prompt']['uk'] = "";
$text['description-call-prompt']['de-at'] = "Nachfragen, ob der Anruf auch wirklich durchgestellt werden soll.";
$text['description-call_routing']['en-us'] = "Define alternate inbound call handling for the following extensions.";
$text['description-call_routing']['es-cl'] = "Definir alternativa para el manejo de las siguientes extensiones de llamadas entrantes.";
$text['description-call_routing']['pt-pt'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['fr-fr'] = "Définir la manipulation pour les extensions suivantes alternent appel entrant.";
$text['description-call_routing']['pt-br'] = "Definir alternativo chamada de entrada assistência para as seguintes extensões.";
$text['description-call_routing']['pl'] = "Definiowanie alternatywnego połączenia przychodzącego obsługi dla następujących rozszerzeń.";
$text['description-call_routing']['sv-se'] = "Definiera alternativa inkommande samtalshantering för följande tillägg.";
$text['description-call_routing']['uk'] = "Визначити обробку для наступних розширень альтернативного вхідного дзвінка.";
$text['description-call_routing']['de-at'] = "Definieren Sie alternative eingehende Anruf für die folgenden Erweiterungen der Handhabung.";
$text['description']['en-us'] = "Directs incoming calls for extension:";
$text['description']['es-cl'] = "Dirige las llamadas entrantes hacia una extensión:";
$text['description']['pt-pt'] = "Direciona as chamadas recebidas para a extensão:";
$text['description']['fr-fr'] = "Rediriger les appels entrant pour l'extension:";
$text['description']['pt-br'] = "Editar informações da conta.";
$text['description']['pl'] = "Kieruj rozmowy przychodzące na numer wewnętrzny:";
$text['description']['sv-se'] = "Styr inkommande samtal för anknytning: ";
$text['description']['uk'] = "Керування вхідними дзвінками для розширення";
$text['description']['de-at'] = "Leitet eingehende Gespräche für die Nebenstelle:";
$text['confirm-update']['en-us'] = "Update Complete";
$text['confirm-update']['es-cl'] = "Actualización Completa";
$text['confirm-update']['pt-pt'] = "Actualização Efectuada";
$text['confirm-update']['fr-fr'] = "Mis à jour";
$text['confirm-update']['pt-br'] = "Atualização Efetuada";
$text['confirm-update']['pl'] = "Aktualizacja zakonczona";
$text['confirm-update']['sv-se'] = "Uppdatering Klar ";
$text['confirm-update']['uk'] = "Оновлено";
$text['confirm-update']['de-at'] = "Aktualisierung durchgeführt";
$text['ckeck-true']['es-cl'] = "Verdadero";
$text['ckeck-true']['pt-pt'] = "Sim";
$text['ckeck-true']['fr-fr'] = "Oui";
$text['ckeck-true']['pt-br'] = "Sim";
$text['ckeck-true']['pl'] = "";
$text['ckeck-true']['sv-se'] = "";
$text['ckeck-true']['uk'] = "";
$text['ckeck-true']['de-at'] = "";
$text['ckeck-simultaneous']['es-cl'] = "simultaneo";
$text['ckeck-simultaneous']['pt-pt'] = "simultâneo";
$text['ckeck-simultaneous']['pt-br'] = "Simultâneo";
$text['ckeck-simultaneous']['pl'] = "";
$text['ckeck-simultaneous']['sv-se'] = "";
$text['ckeck-simultaneous']['uk'] = "";
$text['ckeck-simultaneous']['fr-fr'] = "";
$text['ckeck-simultaneous']['de-at'] = "";
$text['ckeck-sequence']['es-cl'] = "secuencia";
$text['ckeck-sequence']['pt-pt'] = "sequência";
$text['ckeck-sequence']['pt-br'] = "Sequência";
$text['ckeck-sequence']['pl'] = "";
$text['ckeck-sequence']['sv-se'] = "";
$text['ckeck-sequence']['uk'] = "";
$text['ckeck-sequence']['fr-fr'] = "";
$text['ckeck-sequence']['de-at'] = "";
$text['ckeck-false']['es-cl'] = "Falso";
$text['ckeck-false']['pt-pt'] = "Não";
$text['ckeck-false']['fr-fr'] = "Non";
$text['ckeck-false']['pt-br'] = "Não";
$text['ckeck-false']['pl'] = "";
$text['ckeck-false']['sv-se'] = "";
$text['ckeck-false']['uk'] = "";
$text['ckeck-false']['de-at'] = "";
$text['check-true']['en-us'] = "True";
$text['check-true']['pt-br'] = "";
$text['check-true']['pl'] = "Tak";
$text['check-true']['sv-se'] = "Sann ";
$text['check-true']['uk'] = "Так";
$text['check-true']['fr-fr'] = "";
$text['check-true']['de-at'] = "An";
$text['check-simultaneous']['en-us'] = "simultaneous";
$text['check-simultaneous']['fr-fr'] = "simultanément";
$text['check-simultaneous']['pt-br'] = "";
$text['check-simultaneous']['pl'] = "jednoczesne";
$text['check-simultaneous']['sv-se'] = "Samtidiga ";
$text['check-simultaneous']['uk'] = "одночасно";
$text['check-simultaneous']['de-at'] = "gleichzeitig";
$text['check-sequence']['en-us'] = "sequence";
$text['check-sequence']['fr-fr'] = "séquence";
$text['check-sequence']['pt-br'] = "";
$text['check-sequence']['pl'] = "kolejność";
$text['check-sequence']['sv-se'] = "sekvens ";
$text['check-sequence']['uk'] = "послідовно";
$text['check-sequence']['de-at'] = "sequenziell";
$text['check-false']['en-us'] = "False";
$text['check-false']['pt-br'] = "";
$text['check-false']['pl'] = "Nie";
$text['check-false']['sv-se'] = "Falsk ";
$text['check-false']['uk'] = "Ні";
$text['check-false']['fr-fr'] = "";
$text['check-false']['de-at'] = "Aus";
$text['button-view_all']['en-us'] = "View All";
$text['button-view_all']['es-cl'] = "Mostrar Todos";
$text['button-view_all']['pt-pt'] = "Mostrar Todos";
$text['button-view_all']['fr-fr'] = "Tout Montrer";
$text['button-view_all']['pl'] = "Pokaż wszystkie";
$text['button-view_all']['uk'] = "Показати всі";
$text['button-view_all']['sv-se'] = "Visa Allt";
$text['button-view_all']['ro'] = "";
$text['button-view_all']['de-at'] = "Alle anzeigen";
$text['button-view_all']['he'] = "הצג הכל";
?>

View File

@@ -1,21 +1,21 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Call Routing";
$apps[$x]['menu'][0]['title']['es-mx'] = "enrutamiento de llamadas";
$apps[$x]['menu'][0]['title']['de-de'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-ch'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-at'] = "Call Routing";
$apps[$x]['menu'][0]['title']['fr-fr'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ca'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ch'] = "routage des appels";
$apps[$x]['menu'][0]['title']['pt-pt'] = "roteamento de chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "roteamento de chamadas";
$apps[$x]['menu'][0]['uuid'] = "4e4df00b-aafb-45a8-82c1-cdabc921889c";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/calls/calls.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Call Routing";
$apps[$x]['menu'][0]['title']['es-mx'] = "enrutamiento de llamadas";
$apps[$x]['menu'][0]['title']['de-de'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-ch'] = "Call Routing";
$apps[$x]['menu'][0]['title']['de-at'] = "Call Routing";
$apps[$x]['menu'][0]['title']['fr-fr'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ca'] = "routage des appels";
$apps[$x]['menu'][0]['title']['fr-ch'] = "routage des appels";
$apps[$x]['menu'][0]['title']['pt-pt'] = "roteamento de chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "roteamento de chamadas";
$apps[$x]['menu'][0]['uuid'] = "4e4df00b-aafb-45a8-82c1-cdabc921889c";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/calls/calls.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,448 +1,448 @@
<?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) 2010 - 2014
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
Salvatore Caruso <salvatore.caruso@nems.it>
Riccardo Granchi <riccardo.granchi@nems.it>
Errol Samuels <voiptology@gmail.com>
*/
include "root.php";
//define the follow me class
class follow_me {
public $domain_uuid;
public $db_type;
public $follow_me_uuid;
public $cid_name_prefix;
public $cid_number_prefix;
public $accountcode;
public $follow_me_enabled;
public $follow_me_caller_id_uuid;
public $follow_me_ignore_busy;
public $outbound_caller_id_name;
public $outbound_caller_id_number;
private $extension;
private $toll_allow;
public $destination_data_1;
public $destination_type_1;
public $destination_delay_1;
public $destination_prompt_1;
public $destination_timeout_1;
public $destination_data_2;
public $destination_type_2;
public $destination_delay_2;
public $destination_prompt_2;
public $destination_timeout_2;
public $destination_data_3;
public $destination_type_3;
public $destination_delay_3;
public $destination_prompt_3;
public $destination_timeout_3;
public $destination_data_4;
public $destination_type_4;
public $destination_delay_4;
public $destination_prompt_4;
public $destination_timeout_4;
public $destination_data_5;
public $destination_type_5;
public $destination_delay_5;
public $destination_prompt_5;
public $destination_timeout_5;
public $destination_timeout = 0;
public $destination_order = 1;
public function add() {
//set the global variable
global $db;
//add a new follow me
$sql = "insert into v_follow_me ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "follow_me_uuid, ";
$sql .= "cid_name_prefix, ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "cid_number_prefix, ";
}
$sql .= "follow_me_caller_id_uuid, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_ignore_busy ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$this->domain_uuid', ";
$sql .= "'$this->follow_me_uuid', ";
$sql .= "'$this->cid_name_prefix', ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "'$this->cid_number_prefix', ";
}
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "'$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= 'null, ';
}
$sql .= "'$this->follow_me_enabled', ";
$sql .= "'$this->follow_me_ignore_busy' ";
$sql .= ")";
if ($v_debug) {
echo $sql."<br />";
}
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function update() {
//set the global variable
global $db;
//update follow me table
$sql = "update v_follow_me set ";
$sql .= "follow_me_enabled = '$this->follow_me_enabled', ";
$sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', ";
$sql .= "cid_name_prefix = '$this->cid_name_prefix', ";
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= "follow_me_caller_id_uuid = null, ";
}
$sql .= "cid_number_prefix = '$this->cid_number_prefix' ";
$sql .= "where domain_uuid = '$this->domain_uuid' ";
$sql .= "and follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function follow_me_destinations() {
//set the global variable
global $db;
//prepare insert statement
$stmt = $db->prepare(
"insert into v_follow_me_destinations("
. "follow_me_destination_uuid,"
. "domain_uuid,"
. "follow_me_uuid,"
. "follow_me_destination,"
. "follow_me_timeout,"
. "follow_me_delay,"
. "follow_me_prompt,"
. "follow_me_order"
. ")values(?,?,?,?,?,?,?,?)"
);
//delete related follow me destinations
$sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
//insert the follow me destinations
if (strlen($this->destination_data_1) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_1,
$this->destination_timeout_1,
$this->destination_delay_1,
$this->destination_prompt_1,
'1'
));
$this->destination_order++;
}
if (strlen($this->destination_data_2) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_2,
$this->destination_timeout_2,
$this->destination_delay_2,
$this->destination_prompt_2,
'2'
));
$this->destination_order++;
}
if (strlen($this->destination_data_3) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_3,
$this->destination_timeout_3,
$this->destination_delay_3,
$this->destination_prompt_3,
'3'
));
$this->destination_order++;
}
if (strlen($this->destination_data_4) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_4,
$this->destination_timeout_4,
$this->destination_delay_4,
$this->destination_prompt_4,
'4'
));
$this->destination_order++;
}
if (strlen($this->destination_data_5) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_5,
$this->destination_timeout_5,
$this->destination_delay_5,
$this->destination_prompt_5,
'5'
));
$this->destination_order++;
}
unset($stmt);
} //function
public function set() {
//set the global variable
global $db;
//determine whether to update the dial string
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
}
//determine whether to update the dial string
$sql = "select * from v_follow_me ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$follow_me_uuid = $row["follow_me_uuid"];
$this->cid_name_prefix = $row["cid_name_prefix"];
$this->cid_number_prefix = $row["cid_number_prefix"];
}
}
unset ($prep_statement);
//add follow me
if (strlen($follow_me_uuid) == 0) {
$this->add();
}
//set the extension dial string
$sql = "select * from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' ";
$sql .= "order by follow_me_order asc ";
$prep_statement_2 = $db->prepare(check_sql($sql));
$prep_statement_2->execute();
$result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED);
$dial_string = "{";
if ($this->follow_me_ignore_busy != 'true') {
$dial_string .= "fail_on_single_reject=USER_BUSY,";
}
$dial_string .= "instant_ringback=true,";
$dial_string .= "ignore_early_media=true";
$dial_string .= ",domain_uuid=".$_SESSION['domain_uuid'];
$dial_string .= ",sip_invite_domain=".$_SESSION['domain_name'];
$dial_string .= ",domain_name=".$_SESSION['domain_name'];
$dial_string .= ",domain=".$_SESSION['domain_name'];
$dial_string .= ",extension_uuid=".$this->extension_uuid;
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua";
$dial_string_caller_id_name = "\${caller_id_name}";
$dial_string_caller_id_number = "\${caller_id_number}";
if (strlen($this->follow_me_caller_id_uuid) > 0){
$sql_caller = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->follow_me_caller_id_uuid'";
$prep_statement_caller = $db->prepare($sql_caller);
if ($prep_statement_caller) {
$prep_statement_caller->execute();
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC);
$caller_id_number = $row_caller['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_caller['destination_number'];
}
$caller_id_name = $row_caller['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_caller['destination_description'];
}
if (strlen($caller_id_name) > 0) {
$dial_string_caller_id_name = $caller_id_name;
}
if (strlen($caller_id_number) > 0) {
$dial_string_caller_id_number = $caller_id_number;
}
}
}
if (strlen($this->cid_name_prefix) > 0) {
$dial_string .= ",origination_caller_id_name=".$this->cid_name_prefix."$dial_string_caller_id_name";
}
else {
$dial_string .= ",origination_caller_id_name=$dial_string_caller_id_name";
}
if (strlen($this->cid_number_prefix) > 0) {
//$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."";
$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."$dial_string_caller_id_number";
}
else {
$dial_string .= ",origination_caller_id_number=$dial_string_caller_id_number";
}
if (strlen($this->accountcode) > 0) {
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
$dial_string .= ",accountcode=".$this->accountcode;
}
$dial_string .= ",toll_allow='".$this->toll_allow."'";
$dial_string .= "}";
$x = 0;
foreach ($result as &$row) {
if ($x > 0) {
$dial_string .= ",";
}
if (extension_exists($row["follow_me_destination"])) {
//set the dial string
if (strlen($_SESSION['domain']['dial_string']['text']) == 0) {
$dial_string .= "[";
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number,";
$dial_string .= "presence_id=".$row["follow_me_destination"]."@".$_SESSION['domain_name'].",";
if ($row["follow_me_prompt"] == "1") {
$dial_string .= "group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= "leg_delay_start=".$row["follow_me_delay"].",";
$dial_string .= "leg_timeout=".$row["follow_me_timeout"]."]";
$dial_string .= "\${sofia_contact(".$row["follow_me_destination"]."@".$_SESSION['domain_name'].")}";
}
else {
$replace_value = $row["follow_me_destination"];
if ($row["follow_me_prompt"] == "1") {
$replace_value .= "[group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true]";
}
$local_dial_string = $_SESSION['domain']['dial_string']['text'];
$local_dial_string = str_replace("\${dialed_user}", $replace_value, $local_dial_string);
$local_dial_string = str_replace("\${dialed_domain}", $_SESSION['domain_name'], $local_dial_string);
$local_dial_string = str_replace("\${call_timeout}", $row["follow_me_timeout"], $local_dial_string);
$local_dial_string = str_replace("\${leg_timeout}", $row["follow_me_timeout"], $local_dial_string);
$dial_string .= $local_dial_string;
}
}
else {
$dial_string .= "[";
if ($_SESSION['cdr']['follow_me_fix']['boolean'] == "true"){
$dial_string .= "outbound_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",outbound_caller_id_number=".$this->outbound_caller_id_number;
$dial_string .= ",origination_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",origination_caller_id_number=".$this->outbound_caller_id_number;
}
else{
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number";
}
$dial_string .= ",presence_id=".$this->extension."@".$_SESSION['domain_name'];
if ($row["follow_me_prompt"] == "1") {
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= ",leg_delay_start=".$row["follow_me_delay"];
$dial_string .= ",leg_timeout=".$row["follow_me_timeout"]."]";
if (is_numeric($row["follow_me_destination"])) {
if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") {
$bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $row["follow_me_destination"]);
$dial_string .= $bridge[0];
}
elseif ($_SESSION['domain']['bridge']['text'] == "loopback") {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
elseif ($_SESSION['domain']['bridge']['text'] == "lcr") {
$dial_string .= "lcr/".$_SESSION['lcr']['profile']['text']."/".$_SESSION['domain_name']."/".$row["follow_me_destination"];
}
else {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
}
else {
$dial_string .= $row["follow_me_destination"];
}
}
$x++;
}
$this->dial_string = $dial_string;
$sql = "update v_follow_me set ";
$sql .= "dial_string = '".$this->dial_string."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
//is follow me enabled
$dial_string = '';
if ($this->follow_me_enabled == "true") {
$dial_string = $this->dial_string;
}
$sql = "update v_extensions set ";
$sql .= "dial_string = '".check_str($dial_string)."', ";
$sql .= "dial_domain = '".$_SESSION['domain_name']."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
} //function
} //class
?>
<?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) 2010 - 2014
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
Salvatore Caruso <salvatore.caruso@nems.it>
Riccardo Granchi <riccardo.granchi@nems.it>
Errol Samuels <voiptology@gmail.com>
*/
include "root.php";
//define the follow me class
class follow_me {
public $domain_uuid;
public $db_type;
public $follow_me_uuid;
public $cid_name_prefix;
public $cid_number_prefix;
public $accountcode;
public $follow_me_enabled;
public $follow_me_caller_id_uuid;
public $follow_me_ignore_busy;
public $outbound_caller_id_name;
public $outbound_caller_id_number;
private $extension;
private $toll_allow;
public $destination_data_1;
public $destination_type_1;
public $destination_delay_1;
public $destination_prompt_1;
public $destination_timeout_1;
public $destination_data_2;
public $destination_type_2;
public $destination_delay_2;
public $destination_prompt_2;
public $destination_timeout_2;
public $destination_data_3;
public $destination_type_3;
public $destination_delay_3;
public $destination_prompt_3;
public $destination_timeout_3;
public $destination_data_4;
public $destination_type_4;
public $destination_delay_4;
public $destination_prompt_4;
public $destination_timeout_4;
public $destination_data_5;
public $destination_type_5;
public $destination_delay_5;
public $destination_prompt_5;
public $destination_timeout_5;
public $destination_timeout = 0;
public $destination_order = 1;
public function add() {
//set the global variable
global $db;
//add a new follow me
$sql = "insert into v_follow_me ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "follow_me_uuid, ";
$sql .= "cid_name_prefix, ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "cid_number_prefix, ";
}
$sql .= "follow_me_caller_id_uuid, ";
$sql .= "follow_me_enabled, ";
$sql .= "follow_me_ignore_busy ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$this->domain_uuid', ";
$sql .= "'$this->follow_me_uuid', ";
$sql .= "'$this->cid_name_prefix', ";
if (strlen($this->cid_number_prefix) > 0) {
$sql .= "'$this->cid_number_prefix', ";
}
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "'$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= 'null, ';
}
$sql .= "'$this->follow_me_enabled', ";
$sql .= "'$this->follow_me_ignore_busy' ";
$sql .= ")";
if ($v_debug) {
echo $sql."<br />";
}
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function update() {
//set the global variable
global $db;
//update follow me table
$sql = "update v_follow_me set ";
$sql .= "follow_me_enabled = '$this->follow_me_enabled', ";
$sql .= "follow_me_ignore_busy = '$this->follow_me_ignore_busy', ";
$sql .= "cid_name_prefix = '$this->cid_name_prefix', ";
if (strlen($this->follow_me_caller_id_uuid) > 0) {
$sql .= "follow_me_caller_id_uuid = '$this->follow_me_caller_id_uuid', ";
}
else {
$sql .= "follow_me_caller_id_uuid = null, ";
}
$sql .= "cid_number_prefix = '$this->cid_number_prefix' ";
$sql .= "where domain_uuid = '$this->domain_uuid' ";
$sql .= "and follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
unset($sql);
$this->follow_me_destinations();
} //end function
public function follow_me_destinations() {
//set the global variable
global $db;
//prepare insert statement
$stmt = $db->prepare(
"insert into v_follow_me_destinations("
. "follow_me_destination_uuid,"
. "domain_uuid,"
. "follow_me_uuid,"
. "follow_me_destination,"
. "follow_me_timeout,"
. "follow_me_delay,"
. "follow_me_prompt,"
. "follow_me_order"
. ")values(?,?,?,?,?,?,?,?)"
);
//delete related follow me destinations
$sql = "delete from v_follow_me_destinations where follow_me_uuid = '$this->follow_me_uuid' ";
$db->exec(check_sql($sql));
//insert the follow me destinations
if (strlen($this->destination_data_1) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_1,
$this->destination_timeout_1,
$this->destination_delay_1,
$this->destination_prompt_1,
'1'
));
$this->destination_order++;
}
if (strlen($this->destination_data_2) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_2,
$this->destination_timeout_2,
$this->destination_delay_2,
$this->destination_prompt_2,
'2'
));
$this->destination_order++;
}
if (strlen($this->destination_data_3) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_3,
$this->destination_timeout_3,
$this->destination_delay_3,
$this->destination_prompt_3,
'3'
));
$this->destination_order++;
}
if (strlen($this->destination_data_4) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_4,
$this->destination_timeout_4,
$this->destination_delay_4,
$this->destination_prompt_4,
'4'
));
$this->destination_order++;
}
if (strlen($this->destination_data_5) > 0) {
$stmt->execute(array(
uuid(),
$this->domain_uuid,
$this->follow_me_uuid,
$this->destination_data_5,
$this->destination_timeout_5,
$this->destination_delay_5,
$this->destination_prompt_5,
'5'
));
$this->destination_order++;
}
unset($stmt);
} //function
public function set() {
//set the global variable
global $db;
//determine whether to update the dial string
$sql = "select * from v_extensions ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and extension_uuid = '".$this->extension_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$this->extension = $row["extension"];
$this->accountcode = $row["accountcode"];
$this->toll_allow = $row["toll_allow"];
$this->outbound_caller_id_name = $row["outbound_caller_id_name"];
$this->outbound_caller_id_number = $row["outbound_caller_id_number"];
}
}
//determine whether to update the dial string
$sql = "select * from v_follow_me ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$follow_me_uuid = $row["follow_me_uuid"];
$this->cid_name_prefix = $row["cid_name_prefix"];
$this->cid_number_prefix = $row["cid_number_prefix"];
}
}
unset ($prep_statement);
//add follow me
if (strlen($follow_me_uuid) == 0) {
$this->add();
}
//set the extension dial string
$sql = "select * from v_follow_me_destinations ";
$sql .= "where follow_me_uuid = '".$this->follow_me_uuid."' ";
$sql .= "order by follow_me_order asc ";
$prep_statement_2 = $db->prepare(check_sql($sql));
$prep_statement_2->execute();
$result = $prep_statement_2->fetchAll(PDO::FETCH_NAMED);
$dial_string = "{";
if ($this->follow_me_ignore_busy != 'true') {
$dial_string .= "fail_on_single_reject=USER_BUSY,";
}
$dial_string .= "instant_ringback=true,";
$dial_string .= "ignore_early_media=true";
$dial_string .= ",domain_uuid=".$_SESSION['domain_uuid'];
$dial_string .= ",sip_invite_domain=".$_SESSION['domain_name'];
$dial_string .= ",domain_name=".$_SESSION['domain_name'];
$dial_string .= ",domain=".$_SESSION['domain_name'];
$dial_string .= ",extension_uuid=".$this->extension_uuid;
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua";
$dial_string_caller_id_name = "\${caller_id_name}";
$dial_string_caller_id_number = "\${caller_id_number}";
if (strlen($this->follow_me_caller_id_uuid) > 0){
$sql_caller = "select destination_number, destination_description, destination_caller_id_number, destination_caller_id_name from v_destinations where domain_uuid = '$this->domain_uuid' and destination_type = 'inbound' and destination_uuid = '$this->follow_me_caller_id_uuid'";
$prep_statement_caller = $db->prepare($sql_caller);
if ($prep_statement_caller) {
$prep_statement_caller->execute();
$row_caller = $prep_statement_caller->fetch(PDO::FETCH_ASSOC);
$caller_id_number = $row_caller['destination_caller_id_number'];
if(strlen($caller_id_number) == 0){
$caller_id_number = $row_caller['destination_number'];
}
$caller_id_name = $row_caller['destination_caller_id_name'];
if(strlen($caller_id_name) == 0){
$caller_id_name = $row_caller['destination_description'];
}
if (strlen($caller_id_name) > 0) {
$dial_string_caller_id_name = $caller_id_name;
}
if (strlen($caller_id_number) > 0) {
$dial_string_caller_id_number = $caller_id_number;
}
}
}
if (strlen($this->cid_name_prefix) > 0) {
$dial_string .= ",origination_caller_id_name=".$this->cid_name_prefix."$dial_string_caller_id_name";
}
else {
$dial_string .= ",origination_caller_id_name=$dial_string_caller_id_name";
}
if (strlen($this->cid_number_prefix) > 0) {
//$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."";
$dial_string .= ",origination_caller_id_number=".$this->cid_number_prefix."$dial_string_caller_id_number";
}
else {
$dial_string .= ",origination_caller_id_number=$dial_string_caller_id_number";
}
if (strlen($this->accountcode) > 0) {
$dial_string .= ",sip_h_X-accountcode=".$this->accountcode;
$dial_string .= ",accountcode=".$this->accountcode;
}
$dial_string .= ",toll_allow='".$this->toll_allow."'";
$dial_string .= "}";
$x = 0;
foreach ($result as &$row) {
if ($x > 0) {
$dial_string .= ",";
}
if (extension_exists($row["follow_me_destination"])) {
//set the dial string
if (strlen($_SESSION['domain']['dial_string']['text']) == 0) {
$dial_string .= "[";
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number,";
$dial_string .= "presence_id=".$row["follow_me_destination"]."@".$_SESSION['domain_name'].",";
if ($row["follow_me_prompt"] == "1") {
$dial_string .= "group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= "leg_delay_start=".$row["follow_me_delay"].",";
$dial_string .= "leg_timeout=".$row["follow_me_timeout"]."]";
$dial_string .= "\${sofia_contact(".$row["follow_me_destination"]."@".$_SESSION['domain_name'].")}";
}
else {
$replace_value = $row["follow_me_destination"];
if ($row["follow_me_prompt"] == "1") {
$replace_value .= "[group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true]";
}
$local_dial_string = $_SESSION['domain']['dial_string']['text'];
$local_dial_string = str_replace("\${dialed_user}", $replace_value, $local_dial_string);
$local_dial_string = str_replace("\${dialed_domain}", $_SESSION['domain_name'], $local_dial_string);
$local_dial_string = str_replace("\${call_timeout}", $row["follow_me_timeout"], $local_dial_string);
$local_dial_string = str_replace("\${leg_timeout}", $row["follow_me_timeout"], $local_dial_string);
$dial_string .= $local_dial_string;
}
}
else {
$dial_string .= "[";
if ($_SESSION['cdr']['follow_me_fix']['boolean'] == "true"){
$dial_string .= "outbound_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",outbound_caller_id_number=".$this->outbound_caller_id_number;
$dial_string .= ",origination_caller_id_name=".$this->outbound_caller_id_name;
$dial_string .= ",origination_caller_id_number=".$this->outbound_caller_id_number;
}
else{
$dial_string .= "outbound_caller_id_number=$dial_string_caller_id_number";
}
$dial_string .= ",presence_id=".$this->extension."@".$_SESSION['domain_name'];
if ($row["follow_me_prompt"] == "1") {
$dial_string .= ",group_confirm_key=exec,group_confirm_file=lua confirm.lua,confirm=true,";
}
$dial_string .= ",leg_delay_start=".$row["follow_me_delay"];
$dial_string .= ",leg_timeout=".$row["follow_me_timeout"]."]";
if (is_numeric($row["follow_me_destination"])) {
if ($_SESSION['domain']['bridge']['text'] == "outbound" || $_SESSION['domain']['bridge']['text'] == "bridge") {
$bridge = outbound_route_to_bridge ($_SESSION['domain_uuid'], $row["follow_me_destination"]);
$dial_string .= $bridge[0];
}
elseif ($_SESSION['domain']['bridge']['text'] == "loopback") {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
elseif ($_SESSION['domain']['bridge']['text'] == "lcr") {
$dial_string .= "lcr/".$_SESSION['lcr']['profile']['text']."/".$_SESSION['domain_name']."/".$row["follow_me_destination"];
}
else {
$dial_string .= "loopback/".$row["follow_me_destination"]."/".$_SESSION['domain_name'];
}
}
else {
$dial_string .= $row["follow_me_destination"];
}
}
$x++;
}
$this->dial_string = $dial_string;
$sql = "update v_follow_me set ";
$sql .= "dial_string = '".$this->dial_string."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
//is follow me enabled
$dial_string = '';
if ($this->follow_me_enabled == "true") {
$dial_string = $this->dial_string;
}
$sql = "update v_extensions set ";
$sql .= "dial_string = '".check_str($dial_string)."', ";
$sql .= "dial_domain = '".$_SESSION['domain_name']."' ";
$sql .= "where domain_uuid = '".$this->domain_uuid."' ";
$sql .= "and follow_me_uuid = '".$this->follow_me_uuid."' ";
if ($this->debug) {
echo $sql."<br />";
}
$db->exec($sql);
unset($sql);
} //function
} //class
?>

View File

@@ -1,18 +1,18 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Click to Call";
$apps[$x]['menu'][0]['title']['es-cl'] = "Pulse para Llamar";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Cliquez pour Appeller";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Clicar para Chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "f862556f-9ddd-2697-fdf4-bed08ec63aa5";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/click_to_call/click_to_call.php";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Click to Call";
$apps[$x]['menu'][0]['title']['es-cl'] = "Pulse para Llamar";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Cliquez pour Appeller";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Clicar para Chamadas";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "f862556f-9ddd-2697-fdf4-bed08ec63aa5";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/click_to_call/click_to_call.php";
?>

View File

@@ -1,377 +1,377 @@
<?php
/* $Id$ */
/*
call.php
Copyright (C) 2008, 2009 Mark J Crane
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('click_to_call_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//include the header
require_once "resources/header.php";
if (is_array($_REQUEST) && !empty($_REQUEST['src']) && !empty($_REQUEST['dest'])) {
//retrieve submitted variables
$src = check_str($_REQUEST['src']);
$src_cid_name = check_str($_REQUEST['src_cid_name']);
$src_cid_number = check_str($_REQUEST['src_cid_number']);
$dest = check_str($_REQUEST['dest']);
$dest_cid_name = check_str($_REQUEST['dest_cid_name']);
$dest_cid_number = check_str($_REQUEST['dest_cid_number']);
$auto_answer = check_str($_REQUEST['auto_answer']); //true,false
$rec = check_str($_REQUEST['rec']); //true,false
$ringback = check_str($_REQUEST['ringback']);
$context = $_SESSION['context'];
//clean up variable values
$src = str_replace(array('.','(',')','-',' '), '', $src);
$dest = (strpbrk($dest, '@') != FALSE) ? str_replace(array('(',')',' '), '', $dest) : str_replace(array('.','(',')','-',' '), '', $dest); //don't strip periods or dashes in sip-uri calls, only phone numbers
//adjust variable values
$sip_auto_answer = ($auto_answer == "true") ? ",sip_auto_answer=true" : null;
//mozilla thunderbird TBDialout workaround (seems it can only handle the first %NUM%)
$dest = ($dest == "%NUM%") ? $src_cid_number : $dest;
//translate ringback
switch ($ringback) {
case "music": $ringback_value = "\'local_stream://moh\'"; break;
case "uk-ring": $ringback_value = "\'%(400,200,400,450);%(400,2200,400,450)\'"; break;
case "fr-ring": $ringback_value = "\'%(1500,3500,440.0,0.0)\'"; break;
case "pt-ring": $ringback_value = "\'%(1000,5000,400.0,0.0)\'"; break;
case "rs-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "it-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "us-ring":
default:
$ringback = 'us-ring';
$ringback_value = "\'%(2000,4000,440.0,480.0)\'";
}
//determine call direction
$dir = (strlen($dest) < 7) ? 'local' : 'outbound';
//define a leg - set source to display the defined caller id name and number
$source_common = "{".
"click_to_call=true".
",origination_caller_id_name='".$src_cid_name."'".
",origination_caller_id_number=".$src_cid_number.
",instant_ringback=true".
",ringback=".$ringback_value.
",presence_id=".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'].
",call_direction=".$dir;
if (strlen($src) < 7) {
//source is a local extension
$source = $source_common.$sip_auto_answer.
",domain_uuid=".$domain_uuid.
",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
//source is an external number
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $src);
$source = $source_common."}".$bridge_array[0];
}
unset($source_common);
//define b leg - set destination to display the defined caller id name and number
$destination_common = " &bridge({origination_caller_id_name='".$dest_cid_name."',origination_caller_id_number=".$dest_cid_number;
if (strlen($dest) < 7) {
//destination is a local extension
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
else {
//local extension (source) > external number (destination)
if (strlen($src) < 7 && strlen($dest_cid_number) == 0) {
//retrieve outbound caller id from the (source) extension
$sql = "select outbound_caller_id_name, outbound_caller_id_number from v_extensions where domain_uuid = '".$_SESSION['domain_uuid']."' and extension = '".$src."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dest_cid_name = $row["outbound_caller_id_name"];
$dest_cid_number = $row["outbound_caller_id_number"];
break; //limit to 1 row
}
unset ($prep_statement);
}
if (permission_exists('click_to_call_call')) {
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $dest);
//$switch_cmd = $destination_common."}".$bridge_array[0].")"; // wouldn't set cdr destination correctly, so below used instead
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
}
unset($destination_common);
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
else {
//display the last command
$switch_cmd = "api originate ".$source.$switch_cmd;
echo "<div align='center'>".$switch_cmd."<br /><br /><strong>".$src." has called ".$dest."</strong></div>\n";
//show the command result
$result = trim(event_socket_request($fp, $switch_cmd));
if (substr($result, 0,3) == "+OK") {
$uuid = substr($result, 4);
if ($rec == "true") {
//use the server's time zone to ensure it matches the time zone used by freeswitch
date_default_timezone_set($_SESSION['time_zone']['system']);
//create the api record command and send it over event socket
$switch_cmd = "api uuid_record ".$uuid." start ".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$uuid.".wav";
$result2 = trim(event_socket_request($fp, $switch_cmd));
}
}
echo "<div align='center'><br />".$result."<br /><br /></div>\n";
}
}
//show html form
echo " <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'>\n";
echo " <span class=\"title\">\n";
echo " <strong>".$text['label-click2call']."</strong>\n";
echo " </span>\n";
echo " </td>\n";
echo " <td align='right'>\n";
echo " &nbsp;\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " <span class=\"vexpl\">\n";
echo " ".$text['desc-click2call']."\n";
echo " </span>\n";
echo " </td>\n";
echo "\n";
echo " </tr>\n";
echo " </table>";
echo " <br />";
echo "<form>\n";
echo "<table border='0' width='100%' cellpadding='0' cellspacing='0'\n";
echo "<tr>\n";
echo " <td class='vncellreq' width='40%'>".$text['label-src-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_name\" value='$src_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_number\" value='$src_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell' width='40%'>".$text['label-dest-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_name\" value='$dest_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell'>".$text['label-dest-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_number\" value='$dest_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src\" value='$src' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-dest-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest\" value='$dest' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo" <tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-auto-answer']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='auto_answer'>\n";
echo " <option value=''></option>\n";
if ($auto_answer == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($auto_answer == "false") {
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
}
else {
echo " <option value='false'>".$text['label-false']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-auto-answer']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-record']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='rec'>\n";
echo " <option value=''></option>\n";
if ($rec == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($rec == "false") {
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
}
else {
echo " <option value='false'>".$text['label-false']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-record']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-ringback']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='ringback'>\n";
echo " <option value=''></option>\n";
if ($ringback == "us-ring") {
echo " <option value='us-ring' selected='selected'>".$text['opt-usring']."</option>\n";
}
else {
echo " <option value='us-ring'>".$text['opt-usring']."</option>\n";
}
if ($ringback == "fr-ring") {
echo " <option value='fr-ring' selected='selected'>".$text['opt-frring']."</option>\n";
}
else {
echo " <option value='fr-ring'>".$text['opt-frring']."</option>\n";
}
if ($ringback == "pt-ring") {
echo " <option value='pt-ring' selected='selected'>".$text['opt-ptring']."</option>\n";
}
else {
echo " <option value='pt-ring'>".$text['opt-ptring']."</option>\n";
}
if ($ringback == "uk-ring") {
echo " <option value='uk-ring' selected='selected'>".$text['opt-ukring']."</option>\n";
}
else {
echo " <option value='uk-ring'>".$text['opt-ukring']."</option>\n";
}
if ($ringback == "rs-ring") {
echo " <option value='rs-ring' selected='selected'>".$text['opt-rsring']."</option>\n";
}
else {
echo " <option value='rs-ring'>".$text['opt-rsring']."</option>\n";
}
if ($ringback == "it-ring") {
echo " <option value='it-ring' selected='selected'>".$text['opt-itring']."</option>\n";
}
else {
echo " <option value='it-ring'>".$text['opt-itring']."</option>\n";
}
if ($ringback == "music") {
echo " <option value='music' selected='selected'>".$text['opt-moh']."</option>\n";
}
else {
echo " <option value='music'>".$text['opt-moh']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-ringback']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " <input type=\"submit\" class='btn' value=\"".$text['button-call']."\">\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//show the footer
require_once "resources/footer.php";
?>
<?php
/* $Id$ */
/*
call.php
Copyright (C) 2008, 2009 Mark J Crane
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('click_to_call_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//include the header
require_once "resources/header.php";
if (is_array($_REQUEST) && !empty($_REQUEST['src']) && !empty($_REQUEST['dest'])) {
//retrieve submitted variables
$src = check_str($_REQUEST['src']);
$src_cid_name = check_str($_REQUEST['src_cid_name']);
$src_cid_number = check_str($_REQUEST['src_cid_number']);
$dest = check_str($_REQUEST['dest']);
$dest_cid_name = check_str($_REQUEST['dest_cid_name']);
$dest_cid_number = check_str($_REQUEST['dest_cid_number']);
$auto_answer = check_str($_REQUEST['auto_answer']); //true,false
$rec = check_str($_REQUEST['rec']); //true,false
$ringback = check_str($_REQUEST['ringback']);
$context = $_SESSION['context'];
//clean up variable values
$src = str_replace(array('.','(',')','-',' '), '', $src);
$dest = (strpbrk($dest, '@') != FALSE) ? str_replace(array('(',')',' '), '', $dest) : str_replace(array('.','(',')','-',' '), '', $dest); //don't strip periods or dashes in sip-uri calls, only phone numbers
//adjust variable values
$sip_auto_answer = ($auto_answer == "true") ? ",sip_auto_answer=true" : null;
//mozilla thunderbird TBDialout workaround (seems it can only handle the first %NUM%)
$dest = ($dest == "%NUM%") ? $src_cid_number : $dest;
//translate ringback
switch ($ringback) {
case "music": $ringback_value = "\'local_stream://moh\'"; break;
case "uk-ring": $ringback_value = "\'%(400,200,400,450);%(400,2200,400,450)\'"; break;
case "fr-ring": $ringback_value = "\'%(1500,3500,440.0,0.0)\'"; break;
case "pt-ring": $ringback_value = "\'%(1000,5000,400.0,0.0)\'"; break;
case "rs-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "it-ring": $ringback_value = "\'%(1000,4000,425.0,0.0)\'"; break;
case "us-ring":
default:
$ringback = 'us-ring';
$ringback_value = "\'%(2000,4000,440.0,480.0)\'";
}
//determine call direction
$dir = (strlen($dest) < 7) ? 'local' : 'outbound';
//define a leg - set source to display the defined caller id name and number
$source_common = "{".
"click_to_call=true".
",origination_caller_id_name='".$src_cid_name."'".
",origination_caller_id_number=".$src_cid_number.
",instant_ringback=true".
",ringback=".$ringback_value.
",presence_id=".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'].
",call_direction=".$dir;
if (strlen($src) < 7) {
//source is a local extension
$source = $source_common.$sip_auto_answer.
",domain_uuid=".$domain_uuid.
",domain_name=".$_SESSION['domains'][$domain_uuid]['domain_name']."}user/".$src."@".$_SESSION['domains'][$domain_uuid]['domain_name'];
}
else {
//source is an external number
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $src);
$source = $source_common."}".$bridge_array[0];
}
unset($source_common);
//define b leg - set destination to display the defined caller id name and number
$destination_common = " &bridge({origination_caller_id_name='".$dest_cid_name."',origination_caller_id_number=".$dest_cid_number;
if (strlen($dest) < 7) {
//destination is a local extension
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
else {
//local extension (source) > external number (destination)
if (strlen($src) < 7 && strlen($dest_cid_number) == 0) {
//retrieve outbound caller id from the (source) extension
$sql = "select outbound_caller_id_name, outbound_caller_id_number from v_extensions where domain_uuid = '".$_SESSION['domain_uuid']."' and extension = '".$src."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$dest_cid_name = $row["outbound_caller_id_name"];
$dest_cid_number = $row["outbound_caller_id_number"];
break; //limit to 1 row
}
unset ($prep_statement);
}
if (permission_exists('click_to_call_call')) {
if (strpbrk($dest, '@') != FALSE) { //sip-uri
$switch_cmd = $destination_common.",call_direction=outbound}sofia/external/".$dest.")";
}
else { //not sip-uri
$bridge_array = outbound_route_to_bridge($_SESSION['domain_uuid'], $dest);
//$switch_cmd = $destination_common."}".$bridge_array[0].")"; // wouldn't set cdr destination correctly, so below used instead
$switch_cmd = " &transfer('".$dest." XML ".$context."')";
}
}
}
unset($destination_common);
//create the even socket connection and send the event socket command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if (!$fp) {
//error message
echo "<div align='center'><strong>Connection to Event Socket failed.</strong></div>";
}
else {
//display the last command
$switch_cmd = "api originate ".$source.$switch_cmd;
echo "<div align='center'>".$switch_cmd."<br /><br /><strong>".$src." has called ".$dest."</strong></div>\n";
//show the command result
$result = trim(event_socket_request($fp, $switch_cmd));
if (substr($result, 0,3) == "+OK") {
$uuid = substr($result, 4);
if ($rec == "true") {
//use the server's time zone to ensure it matches the time zone used by freeswitch
date_default_timezone_set($_SESSION['time_zone']['system']);
//create the api record command and send it over event socket
$switch_cmd = "api uuid_record ".$uuid." start ".$_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$uuid.".wav";
$result2 = trim(event_socket_request($fp, $switch_cmd));
}
}
echo "<div align='center'><br />".$result."<br /><br /></div>\n";
}
}
//show html form
echo " <table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
echo " <tr>\n";
echo " <td align='left'>\n";
echo " <span class=\"title\">\n";
echo " <strong>".$text['label-click2call']."</strong>\n";
echo " </span>\n";
echo " </td>\n";
echo " <td align='right'>\n";
echo " &nbsp;\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " <span class=\"vexpl\">\n";
echo " ".$text['desc-click2call']."\n";
echo " </span>\n";
echo " </td>\n";
echo "\n";
echo " </tr>\n";
echo " </table>";
echo " <br />";
echo "<form>\n";
echo "<table border='0' width='100%' cellpadding='0' cellspacing='0'\n";
echo "<tr>\n";
echo " <td class='vncellreq' width='40%'>".$text['label-src-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_name\" value='$src_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src_cid_number\" value='$src_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell' width='40%'>".$text['label-dest-caller-id-nam']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_name\" value='$dest_cid_name' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-nam']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncell'>".$text['label-dest-caller-id-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest_cid_number\" value='$dest_cid_number' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-caller-id-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-src-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"src\" value='$src' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-src-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td class='vncellreq'>".$text['label-dest-num']."</td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input name=\"dest\" value='$dest' class='formfld'>\n";
echo " <br />\n";
echo " ".$text['desc-dest-num']."\n";
echo " </td>\n";
echo "</tr>\n";
echo" <tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-auto-answer']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='auto_answer'>\n";
echo " <option value=''></option>\n";
if ($auto_answer == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($auto_answer == "false") {
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
}
else {
echo " <option value='false'>".$text['label-false']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-auto-answer']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " ".$text['label-record']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='rec'>\n";
echo " <option value=''></option>\n";
if ($rec == "true") {
echo " <option value='true' selected='selected'>".$text['label-true']."</option>\n";
}
else {
echo " <option value='true'>".$text['label-true']."</option>\n";
}
if ($rec == "false") {
echo " <option value='false' selected='selected'>".$text['label-false']."</option>\n";
}
else {
echo " <option value='false'>".$text['label-false']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-record']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-ringback']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='ringback'>\n";
echo " <option value=''></option>\n";
if ($ringback == "us-ring") {
echo " <option value='us-ring' selected='selected'>".$text['opt-usring']."</option>\n";
}
else {
echo " <option value='us-ring'>".$text['opt-usring']."</option>\n";
}
if ($ringback == "fr-ring") {
echo " <option value='fr-ring' selected='selected'>".$text['opt-frring']."</option>\n";
}
else {
echo " <option value='fr-ring'>".$text['opt-frring']."</option>\n";
}
if ($ringback == "pt-ring") {
echo " <option value='pt-ring' selected='selected'>".$text['opt-ptring']."</option>\n";
}
else {
echo " <option value='pt-ring'>".$text['opt-ptring']."</option>\n";
}
if ($ringback == "uk-ring") {
echo " <option value='uk-ring' selected='selected'>".$text['opt-ukring']."</option>\n";
}
else {
echo " <option value='uk-ring'>".$text['opt-ukring']."</option>\n";
}
if ($ringback == "rs-ring") {
echo " <option value='rs-ring' selected='selected'>".$text['opt-rsring']."</option>\n";
}
else {
echo " <option value='rs-ring'>".$text['opt-rsring']."</option>\n";
}
if ($ringback == "it-ring") {
echo " <option value='it-ring' selected='selected'>".$text['opt-itring']."</option>\n";
}
else {
echo " <option value='it-ring'>".$text['opt-itring']."</option>\n";
}
if ($ringback == "music") {
echo " <option value='music' selected='selected'>".$text['opt-moh']."</option>\n";
}
else {
echo " <option value='music'>".$text['opt-moh']."</option>\n";
}
echo " </select>\n";
echo "<br />\n";
echo $text['desc-ringback']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " <input type=\"submit\" class='btn' value=\"".$text['button-call']."\">\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//show the footer
require_once "resources/footer.php";
?>

View File

@@ -1,21 +1,21 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Conferences";
$apps[$x]['menu'][0]['title']['es-cl'] = "Conferencias";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Conférences";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Conferencias";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "9f2a8c08-3e65-c41c-a716-3b53d42bc4d4";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/conferences/conferences.php";
//$apps[$x]['menu'][0]['groups'][] = "user";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Conferences";
$apps[$x]['menu'][0]['title']['es-cl'] = "Conferencias";
$apps[$x]['menu'][0]['title']['de-de'] = "";
$apps[$x]['menu'][0]['title']['de-ch'] = "";
$apps[$x]['menu'][0]['title']['de-at'] = "";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Conférences";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Conferencias";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "9f2a8c08-3e65-c41c-a716-3b53d42bc4d4";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/conferences/conferences.php";
//$apps[$x]['menu'][0]['groups'][] = "user";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,219 +1,219 @@
<?php
if ($domains_processed == 1) {
//populate new phone_label values, phone_type_* values
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contact_phones', 'phone_type'); //check if field exists
if ($field_exists) {
//add multi-lingual support
$language = new text;
$text = $language->get();
// populate phone_type_* values
$sql = "update v_contact_phones set phone_type_voice = '1' ";
$sql .= "where phone_type = 'home' ";
$sql .= "or phone_type = 'work' ";
$sql .= "or phone_type = 'voice' ";
$sql .= "or phone_type = 'voicemail' ";
$sql .= "or phone_type = 'cell' ";
$sql .= "or phone_type = 'pcs' ";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_fax = '1' where phone_type = 'fax'";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_video = '1' where phone_type = 'video'";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_text = '1' where phone_type = 'cell' or phone_type = 'pager'";
$db->exec(check_sql($sql));
unset($sql);
// migrate phone_type values to phone_label, correct case and make multilingual where appropriate
$default_phone_types = array('home','work','pref','voice','fax','msg','cell','pager','modem','car','isdn','video','pcs');
$default_phone_labels = array($text['option-home'],$text['option-work'],'Pref','Voice',$text['option-fax'],$text['option-voicemail'],$text['option-mobile'],$text['option-pager'],'Modem','Car','ISDN','Video','PCS');
foreach ($default_phone_types as $index => $old) {
$new = $default_phone_labels[$index];
$sql = "update v_contact_phones set phone_label = '".$new."' where phone_type = '".$old."'";
$db->exec(check_sql($sql));
unset($sql);
}
// empty phone_type field to prevent confusion in the future
$sql = "update v_contact_phones set phone_type = null";
$db->exec(check_sql($sql));
unset($sql);
}
unset($obj);
//populate primary email from deprecated field in v_contact table
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_email'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_email is not null and contact_email != ''";
$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);
if ($result_count > 0) {
foreach($result as $row) {
$sql = "insert into v_contact_emails ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "contact_email_uuid, ";
$sql .= "email_primary, ";
$sql .= "email_address";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$row['domain_uuid']."', ";
$sql .= "'".$row['contact_uuid']."', ";
$sql .= "'".uuid()."', ";
$sql .= "1, ";
$sql .= "'".$row['contact_email']."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//verify and remove value from old field
$sql2 = "select email_address from v_contact_emails ";
$sql2 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql2 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$sql2 .= "and email_address = '".$row['contact_email']."' ";
$prep_statement2 = $db->prepare(check_sql($sql2));
$prep_statement2->execute();
$result2 = $prep_statement2->fetchAll(PDO::FETCH_NAMED);
$result_count2 = count($result2);
if ($result_count2 > 0) {
$sql3 = "update v_contacts set contact_email = '' ";
$sql3 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql3 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$prep_statement3 = $db->prepare(check_sql($sql3));
$prep_statement3->execute();
unset($sql3, $prep_statement3);
}
unset($sql2, $result2, $prep_statement2);
}
}
}
unset($obj);
//populate primary url from deprecated field in v_contact table
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_url'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_url is not null and contact_url != ''";
$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);
if ($result_count > 0) {
foreach($result as $row) {
$sql = "insert into v_contact_urls ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "contact_url_uuid, ";
$sql .= "url_primary, ";
$sql .= "url_address";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$row['domain_uuid']."', ";
$sql .= "'".$row['contact_uuid']."', ";
$sql .= "'".uuid()."', ";
$sql .= "1, ";
$sql .= "'".$row['contact_url']."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//verify and remove value from old field
$sql2 = "select url_address from v_contact_urls ";
$sql2 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql2 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$sql2 .= "and url_address = '".$row['contact_url']."' ";
$prep_statement2 = $db->prepare(check_sql($sql2));
$prep_statement2->execute();
$result2 = $prep_statement2->fetchAll(PDO::FETCH_NAMED);
$result_count2 = count($result2);
if ($result_count2 > 0) {
$sql3 = "update v_contacts set contact_url = '' ";
$sql3 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql3 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$prep_statement3 = $db->prepare(check_sql($sql3));
$prep_statement3->execute();
unset($sql3, $prep_statement3);
}
unset($sql2, $result2, $prep_statement2);
}
}
}
unset($obj);
//set [name]_primary fields to 0 where null
$name_tables = array('phones','addresses','emails','urls');
$name_fields = array('phone','address','email','url');
foreach ($name_tables as $name_index => $name_table) {
$sql = "update v_contact_".$name_table." set ".$name_fields[$name_index]."_primary = 0 ";
$sql .= "where ".$name_fields[$name_index]."_primary is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql, $prep_statement);
}
unset($name_tables, $name_fields);
//move the users from the contact groups table into the contact users table
$sql = "select * from v_contact_groups ";
$sql .= "where group_uuid in (select user_uuid from v_users) ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$sql = "insert into v_contact_users ";
$sql .= "( ";
$sql .= "contact_user_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "user_uuid ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
$sql .= "'".uuid()."', ";
$sql .= "'".$row["domain_uuid"]."', ";
$sql .= "'".$row["contact_uuid"]."', ";
$sql .= "'".$row["group_uuid"]."' ";
$sql .= ");";
//echo $sql."\n";
$db->exec($sql);
unset($sql);
$sql = "delete from v_contact_groups ";
$sql .= "where contact_group_uuid = '".$row["contact_group_uuid"]."';";
//echo $sql."\n";
$db->exec($sql);
unset($sql);
}
unset ($prep_statement);
}
<?php
if ($domains_processed == 1) {
//populate new phone_label values, phone_type_* values
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contact_phones', 'phone_type'); //check if field exists
if ($field_exists) {
//add multi-lingual support
$language = new text;
$text = $language->get();
// populate phone_type_* values
$sql = "update v_contact_phones set phone_type_voice = '1' ";
$sql .= "where phone_type = 'home' ";
$sql .= "or phone_type = 'work' ";
$sql .= "or phone_type = 'voice' ";
$sql .= "or phone_type = 'voicemail' ";
$sql .= "or phone_type = 'cell' ";
$sql .= "or phone_type = 'pcs' ";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_fax = '1' where phone_type = 'fax'";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_video = '1' where phone_type = 'video'";
$db->exec(check_sql($sql));
unset($sql);
$sql = "update v_contact_phones set phone_type_text = '1' where phone_type = 'cell' or phone_type = 'pager'";
$db->exec(check_sql($sql));
unset($sql);
// migrate phone_type values to phone_label, correct case and make multilingual where appropriate
$default_phone_types = array('home','work','pref','voice','fax','msg','cell','pager','modem','car','isdn','video','pcs');
$default_phone_labels = array($text['option-home'],$text['option-work'],'Pref','Voice',$text['option-fax'],$text['option-voicemail'],$text['option-mobile'],$text['option-pager'],'Modem','Car','ISDN','Video','PCS');
foreach ($default_phone_types as $index => $old) {
$new = $default_phone_labels[$index];
$sql = "update v_contact_phones set phone_label = '".$new."' where phone_type = '".$old."'";
$db->exec(check_sql($sql));
unset($sql);
}
// empty phone_type field to prevent confusion in the future
$sql = "update v_contact_phones set phone_type = null";
$db->exec(check_sql($sql));
unset($sql);
}
unset($obj);
//populate primary email from deprecated field in v_contact table
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_email'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_email is not null and contact_email != ''";
$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);
if ($result_count > 0) {
foreach($result as $row) {
$sql = "insert into v_contact_emails ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "contact_email_uuid, ";
$sql .= "email_primary, ";
$sql .= "email_address";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$row['domain_uuid']."', ";
$sql .= "'".$row['contact_uuid']."', ";
$sql .= "'".uuid()."', ";
$sql .= "1, ";
$sql .= "'".$row['contact_email']."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//verify and remove value from old field
$sql2 = "select email_address from v_contact_emails ";
$sql2 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql2 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$sql2 .= "and email_address = '".$row['contact_email']."' ";
$prep_statement2 = $db->prepare(check_sql($sql2));
$prep_statement2->execute();
$result2 = $prep_statement2->fetchAll(PDO::FETCH_NAMED);
$result_count2 = count($result2);
if ($result_count2 > 0) {
$sql3 = "update v_contacts set contact_email = '' ";
$sql3 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql3 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$prep_statement3 = $db->prepare(check_sql($sql3));
$prep_statement3->execute();
unset($sql3, $prep_statement3);
}
unset($sql2, $result2, $prep_statement2);
}
}
}
unset($obj);
//populate primary url from deprecated field in v_contact table
$obj = new schema;
$obj->db = $db;
$obj->db_type = $db_type;
$obj->schema();
$field_exists = $obj->column_exists($db_name, 'v_contacts', 'contact_url'); //check if field exists
if ($field_exists) {
// get email records
$sql = "select * from v_contacts where contact_url is not null and contact_url != ''";
$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);
if ($result_count > 0) {
foreach($result as $row) {
$sql = "insert into v_contact_urls ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "contact_url_uuid, ";
$sql .= "url_primary, ";
$sql .= "url_address";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$row['domain_uuid']."', ";
$sql .= "'".$row['contact_uuid']."', ";
$sql .= "'".uuid()."', ";
$sql .= "1, ";
$sql .= "'".$row['contact_url']."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//verify and remove value from old field
$sql2 = "select url_address from v_contact_urls ";
$sql2 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql2 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$sql2 .= "and url_address = '".$row['contact_url']."' ";
$prep_statement2 = $db->prepare(check_sql($sql2));
$prep_statement2->execute();
$result2 = $prep_statement2->fetchAll(PDO::FETCH_NAMED);
$result_count2 = count($result2);
if ($result_count2 > 0) {
$sql3 = "update v_contacts set contact_url = '' ";
$sql3 .= "where domain_uuid = '".$row['domain_uuid']."' ";
$sql3 .= "and contact_uuid = '".$row['contact_uuid']."' ";
$prep_statement3 = $db->prepare(check_sql($sql3));
$prep_statement3->execute();
unset($sql3, $prep_statement3);
}
unset($sql2, $result2, $prep_statement2);
}
}
}
unset($obj);
//set [name]_primary fields to 0 where null
$name_tables = array('phones','addresses','emails','urls');
$name_fields = array('phone','address','email','url');
foreach ($name_tables as $name_index => $name_table) {
$sql = "update v_contact_".$name_table." set ".$name_fields[$name_index]."_primary = 0 ";
$sql .= "where ".$name_fields[$name_index]."_primary is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql, $prep_statement);
}
unset($name_tables, $name_fields);
//move the users from the contact groups table into the contact users table
$sql = "select * from v_contact_groups ";
$sql .= "where group_uuid in (select user_uuid from v_users) ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$sql = "insert into v_contact_users ";
$sql .= "( ";
$sql .= "contact_user_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "user_uuid ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
$sql .= "'".uuid()."', ";
$sql .= "'".$row["domain_uuid"]."', ";
$sql .= "'".$row["contact_uuid"]."', ";
$sql .= "'".$row["group_uuid"]."' ";
$sql .= ");";
//echo $sql."\n";
$db->exec($sql);
unset($sql);
$sql = "delete from v_contact_groups ";
$sql .= "where contact_group_uuid = '".$row["contact_group_uuid"]."';";
//echo $sql."\n";
$db->exec($sql);
unset($sql);
}
unset ($prep_statement);
}
?>

View File

@@ -1,122 +1,122 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
/*
echo "bang!";
exit;
*/
//add multi-lingual support
$language = new text;
$text = $language->get();
$_SESSION['contact_auth']['source'] = ($_SESSION['contact_auth']['source'] == '') ? $_REQUEST['source'] : $_SESSION['contact_auth']['source'];
$_SESSION['contact_auth']['target'] = ($_SESSION['contact_auth']['target'] == '') ? $_REQUEST['target'] : $_SESSION['contact_auth']['target'];
//google api authentication
if ($_SESSION['contact_auth']['source'] == 'google') {
if ($_REQUEST['error']) {
$_SESSION['message'] = ($text['message-'.$_REQUEST['error']] != '') ? $text['message-'.$_REQUEST['error']] : $_REQUEST['error'];
$_SESSION['message_mood'] = 'negative';
header("Location: ".$_SESSION['contact_auth']['referer']);
unset($_SESSION['contact_auth']);
exit;
}
if (isset($_REQUEST['signout'])) {
unset($_SESSION['contact_auth']['token']);
$_SESSION['message'] = $text['message-google_signed_out'];
header("Location: https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].PROJECT_PATH."/app/contacts/".$_SESSION['contact_auth']['referer']);
exit;
}
if ($_GET['code'] == '') {
header("Location: https://accounts.google.com/o/oauth2/auth?client_id=".$_SESSION['contact']['google_oauth_client_id']['text']."&redirect_uri=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."&scope=https://www.google.com/m8/feeds/&response_type=code");
exit;
}
else {
$auth_code = $_GET["code"];
}
/*******************************************************************************************/
// request access token
$fields = array(
'code' => urlencode($auth_code),
'client_id' => urlencode($_SESSION['contact']['google_oauth_client_id']['text']),
'client_secret' => urlencode($_SESSION['contact']['google_oauth_client_secret']['text']),
'redirect_uri' => urlencode((($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']),
'grant_type' => urlencode('authorization_code')
);
foreach($fields as $key => $value) {
$post_fields[] = $key.'='.$value;
}
$post_fields = implode("&", $post_fields);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token');
curl_setopt($curl, CURLOPT_POST, 5);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
$result = curl_exec($curl);
curl_close($curl);
$response = json_decode($result);
$access_token = $response->access_token;
if ($access_token != '') {
// redirect to target script
$_SESSION['contact_auth']['token'] = $access_token;
header("Location: ".$_SESSION['contact_auth']['target']);
exit;
}
}
else {
$_SESSION['message'] = $text['message-access_denied'];
$_SESSION['message_mood'] = 'negative';
header("Location: ".$_SESSION['contact_auth']['referer']);
unset($_SESSION['contact_auth']);
exit;
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
/*
echo "bang!";
exit;
*/
//add multi-lingual support
$language = new text;
$text = $language->get();
$_SESSION['contact_auth']['source'] = ($_SESSION['contact_auth']['source'] == '') ? $_REQUEST['source'] : $_SESSION['contact_auth']['source'];
$_SESSION['contact_auth']['target'] = ($_SESSION['contact_auth']['target'] == '') ? $_REQUEST['target'] : $_SESSION['contact_auth']['target'];
//google api authentication
if ($_SESSION['contact_auth']['source'] == 'google') {
if ($_REQUEST['error']) {
$_SESSION['message'] = ($text['message-'.$_REQUEST['error']] != '') ? $text['message-'.$_REQUEST['error']] : $_REQUEST['error'];
$_SESSION['message_mood'] = 'negative';
header("Location: ".$_SESSION['contact_auth']['referer']);
unset($_SESSION['contact_auth']);
exit;
}
if (isset($_REQUEST['signout'])) {
unset($_SESSION['contact_auth']['token']);
$_SESSION['message'] = $text['message-google_signed_out'];
header("Location: https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].PROJECT_PATH."/app/contacts/".$_SESSION['contact_auth']['referer']);
exit;
}
if ($_GET['code'] == '') {
header("Location: https://accounts.google.com/o/oauth2/auth?client_id=".$_SESSION['contact']['google_oauth_client_id']['text']."&redirect_uri=".(($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."&scope=https://www.google.com/m8/feeds/&response_type=code");
exit;
}
else {
$auth_code = $_GET["code"];
}
/*******************************************************************************************/
// request access token
$fields = array(
'code' => urlencode($auth_code),
'client_id' => urlencode($_SESSION['contact']['google_oauth_client_id']['text']),
'client_secret' => urlencode($_SESSION['contact']['google_oauth_client_secret']['text']),
'redirect_uri' => urlencode((($_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']),
'grant_type' => urlencode('authorization_code')
);
foreach($fields as $key => $value) {
$post_fields[] = $key.'='.$value;
}
$post_fields = implode("&", $post_fields);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token');
curl_setopt($curl, CURLOPT_POST, 5);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
$result = curl_exec($curl);
curl_close($curl);
$response = json_decode($result);
$access_token = $response->access_token;
if ($access_token != '') {
// redirect to target script
$_SESSION['contact_auth']['token'] = $access_token;
header("Location: ".$_SESSION['contact_auth']['target']);
exit;
}
}
else {
$_SESSION['message'] = $text['message-access_denied'];
$_SESSION['message_mood'] = 'negative';
header("Location: ".$_SESSION['contact_auth']['referer']);
unset($_SESSION['contact_auth']);
exit;
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,342 +1,342 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_relation_edit') || permission_exists('contact_relation_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//action add or update
if (isset($_REQUEST["id"])) {
$action = "update";
$contact_relation_uuid = check_str($_REQUEST["id"]);
}
else {
$action = "add";
}
//get the contact uuid
if (strlen($_GET["contact_uuid"]) > 0) {
$contact_uuid = check_str($_GET["contact_uuid"]);
}
//get http post variables and set them to php variables
if (count($_POST)>0) {
$relation_label = check_str($_POST["relation_label"]);
$relation_label_custom = check_str($_POST["relation_label_custom"]);
$relation_contact_uuid = check_str($_POST["relation_contact_uuid"]);
$relation_reciprocal = check_str($_POST["relation_reciprocal"]);
$relation_reciprocal_label = check_str($_POST["relation_reciprocal_label"]);
$relation_reciprocal_label_custom = check_str($_POST["relation_reciprocal_label_custom"]);
//use custom label(s), if set
$relation_label = ($relation_label_custom != '') ? $relation_label_custom : $relation_label;
$relation_reciprocal_label = ($relation_reciprocal_label_custom != '') ? $relation_reciprocal_label_custom : $relation_reciprocal_label;
}
//process the form data
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//set the uuid
if ($action == "update") {
$contact_relation_uuid = check_str($_POST["contact_relation_uuid"]);
}
//check for all required data
$msg = '';
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;
}
//add or update the database
if ($_POST["persistformvar"] != "true") {
//update last modified
$sql = "update v_contacts set ";
$sql .= "last_mod_date = now(), ";
$sql .= "last_mod_user = '".$_SESSION['username']."' ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
if ($action == "add") {
$contact_relation_uuid = uuid();
$sql = "insert into v_contact_relations ";
$sql .= "(";
$sql .= "contact_relation_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "relation_label, ";
$sql .= "relation_contact_uuid ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$contact_relation_uuid."', ";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'".$contact_uuid."', ";
$sql .= "'".$relation_label."', ";
$sql .= "'".$relation_contact_uuid."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
if ($relation_reciprocal) {
$contact_relation_uuid = uuid();
$sql = "insert into v_contact_relations ";
$sql .= "(";
$sql .= "contact_relation_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "relation_label, ";
$sql .= "relation_contact_uuid ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$contact_relation_uuid."', ";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'".$relation_contact_uuid."', ";
$sql .= "'".$relation_reciprocal_label."', ";
$sql .= "'".$contact_uuid."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
}
$_SESSION["message"] = $text['message-add'];
header("Location: contact_edit.php?id=".$contact_uuid);
return;
} //if ($action == "add")
if ($action == "update") {
$sql = "update v_contact_relations set ";
$sql .= "relation_label = '".$relation_label."', ";
$sql .= "relation_contact_uuid = '".$relation_contact_uuid."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_relation_uuid = '".$contact_relation_uuid."'";
$db->exec(check_sql($sql));
unset($sql);
$_SESSION["message"] = $text['message-update'];
header("Location: contact_edit.php?id=".$contact_uuid);
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//pre-populate the form
if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {
$contact_relation_uuid = $_GET["id"];
$sql = "select * from v_contact_relations ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_relation_uuid = '".$contact_relation_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$relation_label = $row["relation_label"];
$relation_contact_uuid = $row["relation_contact_uuid"];
break; //limit to 1 row
}
unset ($prep_statement);
}
//show the header
$document['title'] = $text['title-contact_relation'];
require_once "resources/header.php";
//javascript to toggle input/select boxes
echo "<script type='text/javascript'>";
echo " function toggle_custom(field) {";
echo " $('#'+field).toggle();";
echo " document.getElementById(field).selectedIndex = 0;";
echo " document.getElementById(field+'_custom').value = '';";
echo " $('#'+field+'_custom').toggle();";
echo " if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').focus(); } else { $('#'+field).focus(); }";
echo " }";
echo "</script>";
//show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' valign='top' nowrap='nowrap'>";
echo " <b>".$text['header-contact_relation']."</b>";
echo "</td>\n";
echo "<td align='right' valign='top'>";
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='contact_edit.php?id=".$contact_uuid."'\" value='".$text['button-back']."'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br />\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_label']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
if (is_array($_SESSION["contact"]["relation_label"])) {
sort($_SESSION["contact"]["relation_label"]);
foreach($_SESSION["contact"]["relation_label"] as $row) {
$relation_label_options[] = "<option value='".$row."' ".(($row == $relation_label) ? "selected='selected'" : null).">".$row."</option>";
}
$relation_label_found = (in_array($relation_label, $_SESSION["contact"]["relation_label"])) ? true : false;
}
else {
$selected[$relation_label] = "selected";
$default_labels[] = $text['label-contact_relation_option_parent'];
$default_labels[] = $text['label-contact_relation_option_child'];
$default_labels[] = $text['label-contact_relation_option_employee'];
$default_labels[] = $text['label-contact_relation_option_member'];
$default_labels[] = $text['label-contact_relation_option_associate'];
$default_labels[] = $text['label-contact_relation_option_other'];
foreach ($default_labels as $default_label) {
$relation_label_options[] = "<option value='".$default_label."' ".$selected[$default_label].">".$default_label."</option>";
}
$relation_label_found = (in_array($relation_label, $default_labels)) ? true : false;
}
echo " <select class='formfld' ".((!$relation_label_found && $relation_label != '') ? "style='display: none;'" : null)." name='relation_label' id='relation_label' onchange=\"getElementById('relation_label_custom').value='';\">\n";
echo " <option value=''></option>\n";
echo (is_array($relation_label_options)) ? implode("\n", $relation_label_options) : null;
echo " </select>\n";
echo " <input type='text' class='formfld' ".(($relation_label_found || $relation_label == '') ? "style='display: none;'" : null)." name='relation_label_custom' id='relation_label_custom' value=\"".((!$relation_label_found) ? htmlentities($relation_label) : null)."\">\n";
echo " <input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_label');\">\n";
echo "<br />\n";
echo $text['description-relation_label']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_contact']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family from v_contacts ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_uuid <> '".$contact_uuid."' ";
$sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
echo "<select class='formfld' name='relation_contact_uuid' id='relation_contact_uuid'>\n";
echo "<option value=''></option>\n";
foreach($result as $row) {
$contact_name = $row['contact_name_given'].(($row['contact_name_given'] != '' && $row['contact_name_family'] != '') ? ' ' : null).$row['contact_name_family'];
if ($row['contact_organization'] != '') {
if ($contact_name != '') {
$contact_name = $row['contact_organization'].', '.$contact_name;
}
else {
$contact_name = $row['contact_organization'];
}
}
echo "<option value='".$row['contact_uuid']."' ".(($row['contact_uuid'] == $relation_contact_uuid) ? "selected='selected'" : null).">".$contact_name."</option>\n";
}
unset($sql, $result, $row_count);
echo "</select>\n";
// echo "<br />\n";
// echo $text['description-related_contact']."\n";
echo "</td>\n";
echo "</tr>\n";
if ($action == 'add') {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_reciprocal']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='relation_reciprocal' id='relation_reciprocal' onchange=\"$('#reciprocal_label').slideToggle(400);\">\n";
echo " <option value='0'>".$text['option-false']."</option>\n";
echo " <option value='1'>".$text['option-true']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-contact_relation_reciprocal']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<div id='reciprocal_label' style='display: none;'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_reciprocal_label']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <select class='formfld' name='relation_reciprocal_label' id='relation_reciprocal_label' onchange=\"getElementById('relation_reciprocal_label_custom').value='';\">\n";
echo " <option value=''></option>\n";
echo (is_array($relation_label_options)) ? implode("\n", $relation_label_options) : null;
echo " </select>\n";
echo " <input type='text' class='formfld' style='display: none;' name='relation_reciprocal_label_custom' id='relation_reciprocal_label_custom' value=''>\n";
echo " <input type='button' id='btn_toggle_reciprocal_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_reciprocal_label');\">\n";
echo "<br />\n";
echo $text['description-contact_relation_reciprocal_label']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
}
echo " <tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>\n";
echo " <input type='hidden' name='contact_uuid' value='".$contact_uuid."'>\n";
if ($action == "update") {
echo " <input type='hidden' name='contact_relation_uuid' value='".$contact_relation_uuid."'>\n";
}
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table>";
echo "<br><br>";
echo "</form>";
//include the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_relation_edit') || permission_exists('contact_relation_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//action add or update
if (isset($_REQUEST["id"])) {
$action = "update";
$contact_relation_uuid = check_str($_REQUEST["id"]);
}
else {
$action = "add";
}
//get the contact uuid
if (strlen($_GET["contact_uuid"]) > 0) {
$contact_uuid = check_str($_GET["contact_uuid"]);
}
//get http post variables and set them to php variables
if (count($_POST)>0) {
$relation_label = check_str($_POST["relation_label"]);
$relation_label_custom = check_str($_POST["relation_label_custom"]);
$relation_contact_uuid = check_str($_POST["relation_contact_uuid"]);
$relation_reciprocal = check_str($_POST["relation_reciprocal"]);
$relation_reciprocal_label = check_str($_POST["relation_reciprocal_label"]);
$relation_reciprocal_label_custom = check_str($_POST["relation_reciprocal_label_custom"]);
//use custom label(s), if set
$relation_label = ($relation_label_custom != '') ? $relation_label_custom : $relation_label;
$relation_reciprocal_label = ($relation_reciprocal_label_custom != '') ? $relation_reciprocal_label_custom : $relation_reciprocal_label;
}
//process the form data
if (count($_POST) > 0 && strlen($_POST["persistformvar"]) == 0) {
//set the uuid
if ($action == "update") {
$contact_relation_uuid = check_str($_POST["contact_relation_uuid"]);
}
//check for all required data
$msg = '';
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;
}
//add or update the database
if ($_POST["persistformvar"] != "true") {
//update last modified
$sql = "update v_contacts set ";
$sql .= "last_mod_date = now(), ";
$sql .= "last_mod_user = '".$_SESSION['username']."' ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
if ($action == "add") {
$contact_relation_uuid = uuid();
$sql = "insert into v_contact_relations ";
$sql .= "(";
$sql .= "contact_relation_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "relation_label, ";
$sql .= "relation_contact_uuid ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$contact_relation_uuid."', ";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'".$contact_uuid."', ";
$sql .= "'".$relation_label."', ";
$sql .= "'".$relation_contact_uuid."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
if ($relation_reciprocal) {
$contact_relation_uuid = uuid();
$sql = "insert into v_contact_relations ";
$sql .= "(";
$sql .= "contact_relation_uuid, ";
$sql .= "domain_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "relation_label, ";
$sql .= "relation_contact_uuid ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$contact_relation_uuid."', ";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'".$relation_contact_uuid."', ";
$sql .= "'".$relation_reciprocal_label."', ";
$sql .= "'".$contact_uuid."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
}
$_SESSION["message"] = $text['message-add'];
header("Location: contact_edit.php?id=".$contact_uuid);
return;
} //if ($action == "add")
if ($action == "update") {
$sql = "update v_contact_relations set ";
$sql .= "relation_label = '".$relation_label."', ";
$sql .= "relation_contact_uuid = '".$relation_contact_uuid."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_relation_uuid = '".$contact_relation_uuid."'";
$db->exec(check_sql($sql));
unset($sql);
$_SESSION["message"] = $text['message-update'];
header("Location: contact_edit.php?id=".$contact_uuid);
return;
} //if ($action == "update")
} //if ($_POST["persistformvar"] != "true")
} //(count($_POST)>0 && strlen($_POST["persistformvar"]) == 0)
//pre-populate the form
if (count($_GET) > 0 && $_POST["persistformvar"] != "true") {
$contact_relation_uuid = $_GET["id"];
$sql = "select * from v_contact_relations ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_relation_uuid = '".$contact_relation_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$relation_label = $row["relation_label"];
$relation_contact_uuid = $row["relation_contact_uuid"];
break; //limit to 1 row
}
unset ($prep_statement);
}
//show the header
$document['title'] = $text['title-contact_relation'];
require_once "resources/header.php";
//javascript to toggle input/select boxes
echo "<script type='text/javascript'>";
echo " function toggle_custom(field) {";
echo " $('#'+field).toggle();";
echo " document.getElementById(field).selectedIndex = 0;";
echo " document.getElementById(field+'_custom').value = '';";
echo " $('#'+field+'_custom').toggle();";
echo " if ($('#'+field+'_custom').is(':visible')) { $('#'+field+'_custom').focus(); } else { $('#'+field).focus(); }";
echo " }";
echo "</script>";
//show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' valign='top' nowrap='nowrap'>";
echo " <b>".$text['header-contact_relation']."</b>";
echo "</td>\n";
echo "<td align='right' valign='top'>";
echo " <input type='button' class='btn' name='' alt='".$text['button-back']."' onclick=\"window.location='contact_edit.php?id=".$contact_uuid."'\" value='".$text['button-back']."'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br />\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_label']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
if (is_array($_SESSION["contact"]["relation_label"])) {
sort($_SESSION["contact"]["relation_label"]);
foreach($_SESSION["contact"]["relation_label"] as $row) {
$relation_label_options[] = "<option value='".$row."' ".(($row == $relation_label) ? "selected='selected'" : null).">".$row."</option>";
}
$relation_label_found = (in_array($relation_label, $_SESSION["contact"]["relation_label"])) ? true : false;
}
else {
$selected[$relation_label] = "selected";
$default_labels[] = $text['label-contact_relation_option_parent'];
$default_labels[] = $text['label-contact_relation_option_child'];
$default_labels[] = $text['label-contact_relation_option_employee'];
$default_labels[] = $text['label-contact_relation_option_member'];
$default_labels[] = $text['label-contact_relation_option_associate'];
$default_labels[] = $text['label-contact_relation_option_other'];
foreach ($default_labels as $default_label) {
$relation_label_options[] = "<option value='".$default_label."' ".$selected[$default_label].">".$default_label."</option>";
}
$relation_label_found = (in_array($relation_label, $default_labels)) ? true : false;
}
echo " <select class='formfld' ".((!$relation_label_found && $relation_label != '') ? "style='display: none;'" : null)." name='relation_label' id='relation_label' onchange=\"getElementById('relation_label_custom').value='';\">\n";
echo " <option value=''></option>\n";
echo (is_array($relation_label_options)) ? implode("\n", $relation_label_options) : null;
echo " </select>\n";
echo " <input type='text' class='formfld' ".(($relation_label_found || $relation_label == '') ? "style='display: none;'" : null)." name='relation_label_custom' id='relation_label_custom' value=\"".((!$relation_label_found) ? htmlentities($relation_label) : null)."\">\n";
echo " <input type='button' id='btn_toggle_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_label');\">\n";
echo "<br />\n";
echo $text['description-relation_label']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_contact']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
$sql = "select contact_uuid, contact_organization, contact_name_given, contact_name_family from v_contacts ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and contact_uuid <> '".$contact_uuid."' ";
$sql .= "order by contact_organization desc, contact_name_given asc, contact_name_family asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
echo "<select class='formfld' name='relation_contact_uuid' id='relation_contact_uuid'>\n";
echo "<option value=''></option>\n";
foreach($result as $row) {
$contact_name = $row['contact_name_given'].(($row['contact_name_given'] != '' && $row['contact_name_family'] != '') ? ' ' : null).$row['contact_name_family'];
if ($row['contact_organization'] != '') {
if ($contact_name != '') {
$contact_name = $row['contact_organization'].', '.$contact_name;
}
else {
$contact_name = $row['contact_organization'];
}
}
echo "<option value='".$row['contact_uuid']."' ".(($row['contact_uuid'] == $relation_contact_uuid) ? "selected='selected'" : null).">".$contact_name."</option>\n";
}
unset($sql, $result, $row_count);
echo "</select>\n";
// echo "<br />\n";
// echo $text['description-related_contact']."\n";
echo "</td>\n";
echo "</tr>\n";
if ($action == 'add') {
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_reciprocal']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='relation_reciprocal' id='relation_reciprocal' onchange=\"$('#reciprocal_label').slideToggle(400);\">\n";
echo " <option value='0'>".$text['option-false']."</option>\n";
echo " <option value='1'>".$text['option-true']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-contact_relation_reciprocal']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<div id='reciprocal_label' style='display: none;'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-contact_relation_reciprocal_label']."\n";
echo "</td>\n";
echo "<td width='70%' class='vtable' align='left'>\n";
echo " <select class='formfld' name='relation_reciprocal_label' id='relation_reciprocal_label' onchange=\"getElementById('relation_reciprocal_label_custom').value='';\">\n";
echo " <option value=''></option>\n";
echo (is_array($relation_label_options)) ? implode("\n", $relation_label_options) : null;
echo " </select>\n";
echo " <input type='text' class='formfld' style='display: none;' name='relation_reciprocal_label_custom' id='relation_reciprocal_label_custom' value=''>\n";
echo " <input type='button' id='btn_toggle_reciprocal_label' class='btn' alt='".$text['button-back']."' value='&#9665;' onclick=\"toggle_custom('relation_reciprocal_label');\">\n";
echo "<br />\n";
echo $text['description-contact_relation_reciprocal_label']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
}
echo " <tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>\n";
echo " <input type='hidden' name='contact_uuid' value='".$contact_uuid."'>\n";
if ($action == "update") {
echo " <input type='hidden' name='contact_relation_uuid' value='".$contact_relation_uuid."'>\n";
}
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table>";
echo "<br><br>";
echo "</form>";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,113 +1,113 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_relation_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//show the content
echo "<table width='100%' border='0'>\n";
echo "<tr>\n";
echo "<td width='50%' align='left' nowrap='nowrap'><b>".$text['header-contact_relations']."</b></td>\n";
echo "<td width='50%' align='right'>&nbsp;</td>\n";
echo "</tr>\n";
echo "</table>\n";
//get the related contacts
$sql = "select ";
$sql .= "cr.contact_relation_uuid, ";
$sql .= "cr.relation_label, ";
$sql .= "c.contact_uuid, ";
$sql .= "c.contact_organization, ";
$sql .= "c.contact_name_given, ";
$sql .= "c.contact_name_family ";
$sql .= "from ";
$sql .= "v_contact_relations as cr, ";
$sql .= "v_contacts as c ";
$sql .= "where ";
$sql .= "cr.relation_contact_uuid = c.contact_uuid ";
$sql .= "and cr.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and cr.contact_uuid = '".$contact_uuid."' ";
$sql .= "order by ";
$sql .= "c.contact_organization desc, ";
$sql .= "c.contact_name_given asc, ";
$sql .= "c.contact_name_family asc ";
//echo $sql."<br><br>";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' style='margin-bottom: 20px;' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-contact_relation_label']."</th>\n";
echo "<th>".$text['label-contact_relation_organization']."</th>\n";
echo "<th>".$text['label-contact_relation_name']."</th>\n";
echo "<td class='list_control_icons'>";
if (permission_exists('contact_relation_add')) {
echo "<a href='contact_relation_edit.php?contact_uuid=".$contact_uuid."' alt='".$text['button-add']."'>$v_link_label_add</a>";
}
echo "</td>\n";
echo "</tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
if (permission_exists('contact_relation_edit')) {
$tr_link = "href='contact_relation_edit.php?contact_uuid=".$row['contact_uuid']."&id=".$row['contact_relation_uuid']."' ";
}
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['relation_label']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'><a href='contact_edit.php?id=".$row['contact_uuid']."'>".$row['contact_organization']."</a>&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'><a href='contact_edit.php?id=".$row['contact_uuid']."'>".$row['contact_name_given'].(($row['contact_name_given'] != '' && $row['contact_name_family'] != '') ? ' ' : null).$row['contact_name_family']."</a>&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('contact_relation_edit')) {
echo "<a href='contact_relation_edit.php?contact_uuid=".$contact_uuid."&id=".$row['contact_relation_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
}
if (permission_exists('contact_relation_delete')) {
echo "<a href='contact_relation_delete.php?contact_uuid=".$contact_uuid."&id=".$row['contact_relation_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c) ? 0 : 1;
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "</table>";
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('contact_relation_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//show the content
echo "<table width='100%' border='0'>\n";
echo "<tr>\n";
echo "<td width='50%' align='left' nowrap='nowrap'><b>".$text['header-contact_relations']."</b></td>\n";
echo "<td width='50%' align='right'>&nbsp;</td>\n";
echo "</tr>\n";
echo "</table>\n";
//get the related contacts
$sql = "select ";
$sql .= "cr.contact_relation_uuid, ";
$sql .= "cr.relation_label, ";
$sql .= "c.contact_uuid, ";
$sql .= "c.contact_organization, ";
$sql .= "c.contact_name_given, ";
$sql .= "c.contact_name_family ";
$sql .= "from ";
$sql .= "v_contact_relations as cr, ";
$sql .= "v_contacts as c ";
$sql .= "where ";
$sql .= "cr.relation_contact_uuid = c.contact_uuid ";
$sql .= "and cr.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and cr.contact_uuid = '".$contact_uuid."' ";
$sql .= "order by ";
$sql .= "c.contact_organization desc, ";
$sql .= "c.contact_name_given asc, ";
$sql .= "c.contact_name_family asc ";
//echo $sql."<br><br>";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' style='margin-bottom: 20px;' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th>".$text['label-contact_relation_label']."</th>\n";
echo "<th>".$text['label-contact_relation_organization']."</th>\n";
echo "<th>".$text['label-contact_relation_name']."</th>\n";
echo "<td class='list_control_icons'>";
if (permission_exists('contact_relation_add')) {
echo "<a href='contact_relation_edit.php?contact_uuid=".$contact_uuid."' alt='".$text['button-add']."'>$v_link_label_add</a>";
}
echo "</td>\n";
echo "</tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
if (permission_exists('contact_relation_edit')) {
$tr_link = "href='contact_relation_edit.php?contact_uuid=".$row['contact_uuid']."&id=".$row['contact_relation_uuid']."' ";
}
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['relation_label']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'><a href='contact_edit.php?id=".$row['contact_uuid']."'>".$row['contact_organization']."</a>&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'><a href='contact_edit.php?id=".$row['contact_uuid']."'>".$row['contact_name_given'].(($row['contact_name_given'] != '' && $row['contact_name_family'] != '') ? ' ' : null).$row['contact_name_family']."</a>&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('contact_relation_edit')) {
echo "<a href='contact_relation_edit.php?contact_uuid=".$contact_uuid."&id=".$row['contact_relation_uuid']."' alt='".$text['button-edit']."'>$v_link_label_edit</a>";
}
if (permission_exists('contact_relation_delete')) {
echo "<a href='contact_relation_delete.php?contact_uuid=".$contact_uuid."&id=".$row['contact_relation_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c) ? 0 : 1;
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "</table>";
?>

View File

@@ -1,361 +1,361 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
//add multi-lingual support
$language = new text;
$text = $language->get();
//get contact uuid
$domain_uuid = check_str($_REQUEST['domain_uuid']);
$contact_uuid = check_str($_REQUEST['contact_uuid']);
//get posted variables & set time status
if (sizeof($_POST) > 0) {
$contact_time_uuid = check_str($_POST['contact_time_uuid']);
$contact_uuid = check_str($_POST['contact_uuid']);
$time_action = check_str($_POST['time_action']);
$time_description = check_str($_POST['time_description']);
if ($time_description == 'Description...') { unset($time_description); }
if ($time_action == 'start') {
$contact_time_uuid = uuid();
$sql = "insert into v_contact_times ";
$sql .= "( ";
$sql .= "domain_uuid, ";
$sql .= "contact_time_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "user_uuid, ";
$sql .= "time_start, ";
$sql .= "time_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
$sql .= "'".$domain_uuid."', ";
$sql .= "'".$contact_time_uuid."', ";
$sql .= "'".$contact_uuid."', ";
$sql .= "'".$_SESSION["user"]["user_uuid"]."', ";
$sql .= "'".date("Y-m-d H:i:s")."', ";
$sql .= "'".$time_description."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
}
if ($time_action == 'stop') {
$sql = "update v_contact_times ";
$sql .= "set ";
$sql .= "time_stop = '".date("Y-m-d H:i:s")."', ";
$sql .= "time_description = '".$time_description."' ";
$sql .= "where ";
$sql .= "contact_time_uuid = '".$contact_time_uuid."' ";
$sql .= "and domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION["user"]["user_uuid"]."' ";
$db->exec(check_sql($sql));
unset($sql);
}
header("Location: contact_timer.php?domain_uuid=".$domain_uuid."&contact_uuid=".$contact_uuid);
}
//get contact details
$sql = "select ";
$sql .= "contact_organization, ";
$sql .= "contact_name_given, ";
$sql .= "contact_name_family, ";
$sql .= "contact_nickname ";
$sql .= "from v_contacts ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$contact_organization = $result["contact_organization"];
$contact_name_given = $result["contact_name_given"];
$contact_name_family = $result["contact_name_family"];
$contact_nickname = $result["contact_nickname"];
}
else {
exit;
}
unset ($sql, $prep_statement, $result);
//determine timer state and action
$sql = "select ";
$sql .= "contact_time_uuid, ";
$sql .= "time_description ";
$sql .= "from v_contact_times ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and time_start is not null ";
$sql .= "and time_stop is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$contact_time_uuid = $result["contact_time_uuid"];
$time_description = $result["time_description"];
}
unset ($sql, $prep_statement, $result);
$timer_state = ($contact_time_uuid != '') ? 'running' : 'stopped';
$timer_action = ($timer_state == 'running') ? 'stop' : 'start';
//determine contact name to display
if ($contact_nickname != '') {
$contact = $contact_nickname;
}
else if ($contact_name_given != '') {
$contact = $contact_name_given;
}
if ($contact_name_family != '') {
$contact .= ($contact != '') ? ' '.$contact_name_family : $contact_name_family;
}
if ($contact_organization != '') {
$contact .= ($contact != '') ? ', '.$contact_organization : $contact_organization;
}
?>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<title><?php echo $text['label-time_timer']; ?>: <?php echo $contact; ?></title>
<style>
body {
color: #5f5f5f;
font-size: 12px;
font-family: arial;
margin: 0;
padding: 15px;
}
b {
color: #952424;
font-size: 15px;
font-family: arial;
}
a {
color: #004083;
width: 100%;
}
a:hover {
color: #5082ca;
}
form {
margin: 0;
}
input.btn, input.button {
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif;
padding: 2px 6px 3px 6px;
color: #fff;
font-weight: bold;
cursor: pointer;
font-size: 11px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
-khtml-border-radius: 3px;
border-radius: 3px;
background-image: -moz-linear-gradient(top, #524f59 25%, #000 64%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.25, #524f59), color-stop(0.64, #000));
border: 1px solid #26242a;
background-color: #000;
text-align: center;
text-transform: uppercase;
text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);
opacity: 0.9;
-moz-opacity: 0.9;
}
input.btn:hover, input.button:hover, img.list_control_icon:hover {
box-shadow: 0 0 5px #cddaf0;
-webkit-box-shadow: 0 0 5px #cddaf0;
-moz-box-shadow: 0 0 5px #cddaf0;
opacity: 1.0;
-moz-opacity: 1.0;
cursor: pointer;
}
input.txt, textarea.txt, select.txt, .formfld {
font-family: arial;
font-size: 12px;
color: #000;
text-align: left;
padding: 5px;
border: 1px solid #c0c0c0;
background-color: #fff;
box-shadow: 0 0 3px #cddaf0 inset;
-moz-box-shadow: 0 0 3px #cddaf0 inset;
-webkit-box-shadow: 0 0 3px #cddaf0 inset;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
input.txt, .formfld {
transition: width 0.25s;
-moz-transition: width 0.25s;
-webkit-transition: width 0.25s;
max-width: 500px;
}
input.txt:focus, .formfld:focus {
-webkit-box-shadow: 0 0 5px #cddaf0;
-moz-box-shadow: 0 0 5px #cddaf0;
box-shadow: 0 0 5px #cddaf0;
}
td {
color: #5f5f5f;
font-size: 12px;
font-family: arial;
}
.vncell {
border-bottom: 1px solid #fff;
background-color: #e5e9f0;
padding: 8px;
text-align: right;
color: #000;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
border-right: 3px solid #e5e9f0;
}
DIV.timer_running {
vertical-align: middle;
padding-top: 7px;
line-height: 50px;
width: 100%;
height: 53px;
text-align: center;
background-color: #2C9DE8;
font-size: 50px;
color: #FFFFFF;
/*-webkit-text-shadow: 0px 0px 5px #000;*/
/*-moz-text-shadow: 0px 0px 5px #000;*/
/*text-shadow: 0px 0px 5px #000;*/
font-weight: bold;
letter-spacing: -0.05em;
font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
DIV.timer_stopped {
vertical-align: middle;
padding-top: 7px;
line-height: 50px;
width: 100%;
height: 53px;
text-align: center;
background-color: #2C9DE8;
font-size: 50px;
color: #FFFFFF;
/*-webkit-text-shadow: 0px 0px 5px #000;*/
/*-moz-text-shadow: 0px 0px 5px #000;*/
/*text-shadow: 0px 0px 5px #000;*/
font-weight: bold;
letter-spacing: -0.05em;
font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
</style>
<script language="JavaScript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-1.11.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//ajax for refresh
var refresh = 1500;
var source_url = 'contact_timer_inc.php?domain_uuid=<?php echo $domain_uuid; ?>&contact_uuid=<?php echo $contact_uuid; ?>&contact_time_uuid=<?php echo $contact_time_uuid; ?>';
var ajax_get = function () {
$.ajax({
url: source_url, success: function(response){
$("#ajax_reponse").html(response);
}
});
setTimeout(ajax_get, refresh);
};
<?php if ($timer_state == 'running') { ?>
ajax_get();
<?php } ?>
});
//set window title to time when timer is running
function set_title(title_text) {
window.document.title = title_text;
}
</script>
</head>
<body>
<img src='resources/images/icon_timer.png' style='width: 24px; height: 24px; border: none; margin-left: 15px;' alt="<?php echo $text['label-time_timer']; ?>" align='right'>
<b><?php echo $text['label-time_timer']; ?></b>
<br><br>
<?php echo $text['description_timer']; ?>
<br><br>
<strong><a href="javascript:void(0);" onclick="window.opener.location.href='contact_edit.php?id=<?php echo $contact_uuid; ?>';"><?php echo $contact; ?></a></strong>
<br><br>
<div id='ajax_reponse' class='timer_<?php echo $timer_state;?>'>00:00:00</div>
<br>
<form name='frm' id='frm' method='post' action=''>
<input type='hidden' name='domain_uuid' value="<?php echo $domain_uuid; ?>">
<input type='hidden' name='contact_time_uuid' value="<?php echo $contact_time_uuid; ?>">
<input type='hidden' name='contact_uuid' value="<?php echo $contact_uuid; ?>">
<input type='hidden' name='time_action' value="<?php echo $timer_action; ?>">
<table cellpadding='0' cellspacing='0' border='0' style='width: 100%;'>
<tr>
<td class='vncell' style='text-align: center; padding: 10px;'>
<?php echo $text['label-description']; ?>
<textarea name='time_description' id='timer_description' class='formfld' style='width: 100%; height: 50px; margin-top: 5px;'><?php echo $time_description; ?></textarea>
<? if ($timer_state == 'stopped') { ?><script>document.getElementById('timer_description').focus();</script><? } ?>
</td>
</tr>
</table>
<br>
<center>
<?php if ($timer_state == 'running') { ?>
<input type='submit' class='btn' value="<?php echo $text['button-stop']; ?>">
<?php } else if ($timer_state == 'stopped') { ?>
<input type='submit' class='btn' value="<?php echo $text['button-start']; ?>">
<?php } ?>
</center>
</form>
</body>
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
//add multi-lingual support
$language = new text;
$text = $language->get();
//get contact uuid
$domain_uuid = check_str($_REQUEST['domain_uuid']);
$contact_uuid = check_str($_REQUEST['contact_uuid']);
//get posted variables & set time status
if (sizeof($_POST) > 0) {
$contact_time_uuid = check_str($_POST['contact_time_uuid']);
$contact_uuid = check_str($_POST['contact_uuid']);
$time_action = check_str($_POST['time_action']);
$time_description = check_str($_POST['time_description']);
if ($time_description == 'Description...') { unset($time_description); }
if ($time_action == 'start') {
$contact_time_uuid = uuid();
$sql = "insert into v_contact_times ";
$sql .= "( ";
$sql .= "domain_uuid, ";
$sql .= "contact_time_uuid, ";
$sql .= "contact_uuid, ";
$sql .= "user_uuid, ";
$sql .= "time_start, ";
$sql .= "time_description ";
$sql .= ") ";
$sql .= "values ";
$sql .= "( ";
$sql .= "'".$domain_uuid."', ";
$sql .= "'".$contact_time_uuid."', ";
$sql .= "'".$contact_uuid."', ";
$sql .= "'".$_SESSION["user"]["user_uuid"]."', ";
$sql .= "'".date("Y-m-d H:i:s")."', ";
$sql .= "'".$time_description."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
}
if ($time_action == 'stop') {
$sql = "update v_contact_times ";
$sql .= "set ";
$sql .= "time_stop = '".date("Y-m-d H:i:s")."', ";
$sql .= "time_description = '".$time_description."' ";
$sql .= "where ";
$sql .= "contact_time_uuid = '".$contact_time_uuid."' ";
$sql .= "and domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION["user"]["user_uuid"]."' ";
$db->exec(check_sql($sql));
unset($sql);
}
header("Location: contact_timer.php?domain_uuid=".$domain_uuid."&contact_uuid=".$contact_uuid);
}
//get contact details
$sql = "select ";
$sql .= "contact_organization, ";
$sql .= "contact_name_given, ";
$sql .= "contact_name_family, ";
$sql .= "contact_nickname ";
$sql .= "from v_contacts ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$contact_organization = $result["contact_organization"];
$contact_name_given = $result["contact_name_given"];
$contact_name_family = $result["contact_name_family"];
$contact_nickname = $result["contact_nickname"];
}
else {
exit;
}
unset ($sql, $prep_statement, $result);
//determine timer state and action
$sql = "select ";
$sql .= "contact_time_uuid, ";
$sql .= "time_description ";
$sql .= "from v_contact_times ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and time_start is not null ";
$sql .= "and time_stop is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$contact_time_uuid = $result["contact_time_uuid"];
$time_description = $result["time_description"];
}
unset ($sql, $prep_statement, $result);
$timer_state = ($contact_time_uuid != '') ? 'running' : 'stopped';
$timer_action = ($timer_state == 'running') ? 'stop' : 'start';
//determine contact name to display
if ($contact_nickname != '') {
$contact = $contact_nickname;
}
else if ($contact_name_given != '') {
$contact = $contact_name_given;
}
if ($contact_name_family != '') {
$contact .= ($contact != '') ? ' '.$contact_name_family : $contact_name_family;
}
if ($contact_organization != '') {
$contact .= ($contact != '') ? ', '.$contact_organization : $contact_organization;
}
?>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<title><?php echo $text['label-time_timer']; ?>: <?php echo $contact; ?></title>
<style>
body {
color: #5f5f5f;
font-size: 12px;
font-family: arial;
margin: 0;
padding: 15px;
}
b {
color: #952424;
font-size: 15px;
font-family: arial;
}
a {
color: #004083;
width: 100%;
}
a:hover {
color: #5082ca;
}
form {
margin: 0;
}
input.btn, input.button {
font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif;
padding: 2px 6px 3px 6px;
color: #fff;
font-weight: bold;
cursor: pointer;
font-size: 11px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
-khtml-border-radius: 3px;
border-radius: 3px;
background-image: -moz-linear-gradient(top, #524f59 25%, #000 64%);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0.25, #524f59), color-stop(0.64, #000));
border: 1px solid #26242a;
background-color: #000;
text-align: center;
text-transform: uppercase;
text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);
opacity: 0.9;
-moz-opacity: 0.9;
}
input.btn:hover, input.button:hover, img.list_control_icon:hover {
box-shadow: 0 0 5px #cddaf0;
-webkit-box-shadow: 0 0 5px #cddaf0;
-moz-box-shadow: 0 0 5px #cddaf0;
opacity: 1.0;
-moz-opacity: 1.0;
cursor: pointer;
}
input.txt, textarea.txt, select.txt, .formfld {
font-family: arial;
font-size: 12px;
color: #000;
text-align: left;
padding: 5px;
border: 1px solid #c0c0c0;
background-color: #fff;
box-shadow: 0 0 3px #cddaf0 inset;
-moz-box-shadow: 0 0 3px #cddaf0 inset;
-webkit-box-shadow: 0 0 3px #cddaf0 inset;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
input.txt, .formfld {
transition: width 0.25s;
-moz-transition: width 0.25s;
-webkit-transition: width 0.25s;
max-width: 500px;
}
input.txt:focus, .formfld:focus {
-webkit-box-shadow: 0 0 5px #cddaf0;
-moz-box-shadow: 0 0 5px #cddaf0;
box-shadow: 0 0 5px #cddaf0;
}
td {
color: #5f5f5f;
font-size: 12px;
font-family: arial;
}
.vncell {
border-bottom: 1px solid #fff;
background-color: #e5e9f0;
padding: 8px;
text-align: right;
color: #000;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
border-right: 3px solid #e5e9f0;
}
DIV.timer_running {
vertical-align: middle;
padding-top: 7px;
line-height: 50px;
width: 100%;
height: 53px;
text-align: center;
background-color: #2C9DE8;
font-size: 50px;
color: #FFFFFF;
/*-webkit-text-shadow: 0px 0px 5px #000;*/
/*-moz-text-shadow: 0px 0px 5px #000;*/
/*text-shadow: 0px 0px 5px #000;*/
font-weight: bold;
letter-spacing: -0.05em;
font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
DIV.timer_stopped {
vertical-align: middle;
padding-top: 7px;
line-height: 50px;
width: 100%;
height: 53px;
text-align: center;
background-color: #2C9DE8;
font-size: 50px;
color: #FFFFFF;
/*-webkit-text-shadow: 0px 0px 5px #000;*/
/*-moz-text-shadow: 0px 0px 5px #000;*/
/*text-shadow: 0px 0px 5px #000;*/
font-weight: bold;
letter-spacing: -0.05em;
font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
</style>
<script language="JavaScript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-1.11.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//ajax for refresh
var refresh = 1500;
var source_url = 'contact_timer_inc.php?domain_uuid=<?php echo $domain_uuid; ?>&contact_uuid=<?php echo $contact_uuid; ?>&contact_time_uuid=<?php echo $contact_time_uuid; ?>';
var ajax_get = function () {
$.ajax({
url: source_url, success: function(response){
$("#ajax_reponse").html(response);
}
});
setTimeout(ajax_get, refresh);
};
<?php if ($timer_state == 'running') { ?>
ajax_get();
<?php } ?>
});
//set window title to time when timer is running
function set_title(title_text) {
window.document.title = title_text;
}
</script>
</head>
<body>
<img src='resources/images/icon_timer.png' style='width: 24px; height: 24px; border: none; margin-left: 15px;' alt="<?php echo $text['label-time_timer']; ?>" align='right'>
<b><?php echo $text['label-time_timer']; ?></b>
<br><br>
<?php echo $text['description_timer']; ?>
<br><br>
<strong><a href="javascript:void(0);" onclick="window.opener.location.href='contact_edit.php?id=<?php echo $contact_uuid; ?>';"><?php echo $contact; ?></a></strong>
<br><br>
<div id='ajax_reponse' class='timer_<?php echo $timer_state;?>'>00:00:00</div>
<br>
<form name='frm' id='frm' method='post' action=''>
<input type='hidden' name='domain_uuid' value="<?php echo $domain_uuid; ?>">
<input type='hidden' name='contact_time_uuid' value="<?php echo $contact_time_uuid; ?>">
<input type='hidden' name='contact_uuid' value="<?php echo $contact_uuid; ?>">
<input type='hidden' name='time_action' value="<?php echo $timer_action; ?>">
<table cellpadding='0' cellspacing='0' border='0' style='width: 100%;'>
<tr>
<td class='vncell' style='text-align: center; padding: 10px;'>
<?php echo $text['label-description']; ?>
<textarea name='time_description' id='timer_description' class='formfld' style='width: 100%; height: 50px; margin-top: 5px;'><?php echo $time_description; ?></textarea>
<? if ($timer_state == 'stopped') { ?><script>document.getElementById('timer_description').focus();</script><? } ?>
</td>
</tr>
</table>
<br>
<center>
<?php if ($timer_state == 'running') { ?>
<input type='submit' class='btn' value="<?php echo $text['button-stop']; ?>">
<?php } else if ($timer_state == 'stopped') { ?>
<input type='submit' class='btn' value="<?php echo $text['button-start']; ?>">
<?php } ?>
</center>
</form>
</body>
</html>

View File

@@ -1,57 +1,57 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
//get contact and time uuids
$domain_uuid = check_str($_REQUEST['domain_uuid']);
$contact_uuid = check_str($_REQUEST['contact_uuid']);
$contact_time_uuid = check_str($_REQUEST['contact_time_uuid']);
//get time quantity
$sql = "select ";
$sql .= "time_start ";
$sql .= "from v_contact_times ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_time_uuid = '".$contact_time_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and time_start is not null ";
$sql .= "and time_stop is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$time_start = strtotime($result["time_start"]);
$time_now = strtotime(date("Y-m-d H:i:s"));
$time_diff = gmdate("H:i:s", ($time_now - $time_start));
echo $time_diff;
echo "<script id='title_script'>set_title('".$time_diff."');</script>";
}
unset ($sql, $prep_statement, $result);
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (!permission_exists('contact_time_add')) { echo "access denied"; exit; }
//get contact and time uuids
$domain_uuid = check_str($_REQUEST['domain_uuid']);
$contact_uuid = check_str($_REQUEST['contact_uuid']);
$contact_time_uuid = check_str($_REQUEST['contact_time_uuid']);
//get time quantity
$sql = "select ";
$sql .= "time_start ";
$sql .= "from v_contact_times ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and contact_time_uuid = '".$contact_time_uuid."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
$sql .= "and contact_uuid = '".$contact_uuid."' ";
$sql .= "and time_start is not null ";
$sql .= "and time_stop is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetch(PDO::FETCH_NAMED);
if (sizeof($result) > 0) {
$time_start = strtotime($result["time_start"]);
$time_now = strtotime(date("Y-m-d H:i:s"));
$time_diff = gmdate("H:i:s", ($time_now - $time_start));
echo $time_diff;
echo "<script id='title_script'>set_title('".$time_diff."');</script>";
}
unset ($sql, $prep_statement, $result);
?>

View File

@@ -1,114 +1,114 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
function google_get_contacts($token, $max_results = 50) {
//global $records;
global $groups;
//$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$_SESSION['contact_auth']['token']; // all contacts as xml
//$url = 'https://www.google.com/m8/feeds/contacts/default/full/78967d550d3fdd99?alt=json&v=3.0&oauth_token='.$_SESSION['contact_auth']['token']; // single contact
$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$token; // all contacts as json
$xml_response = curl_file_get_contents($url);
$records = json_decode($xml_response, true);
//check for authentication errors (logged out of google account, or app access permission revoked, etc)
if ($records['error']['code']) {
header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
exit;
}
//create new array of contacts
foreach($records['feed']['entry'] as $contact['number'] => $contact) {
$contact_id = substr($contact['id']['$t'], strrpos($contact['id']['$t'], "/")+1);
$contacts[$contact_id]['etag'] = $contact['gd$etag'];
$contacts[$contact_id]['updated'] = $contact['updated']['$t'];
$contacts[$contact_id]['name_prefix'] = $contact['gd$name']['gd$namePrefix']['$t'];
$contacts[$contact_id]['name_given'] = $contact['gd$name']['gd$givenName']['$t'];
$contacts[$contact_id]['name_middle'] = $contact['gd$name']['gd$additionalName']['$t'];
$contacts[$contact_id]['name_family'] = $contact['gd$name']['gd$familyName']['$t'];
$contacts[$contact_id]['name_suffix'] = $contact['gd$name']['gd$nameSuffix']['$t'];
$contacts[$contact_id]['nickname'] = $contact['gContact$nickname']['$t'];
$contacts[$contact_id]['title'] = $contact['gd$organization'][0]['gd$orgTitle']['$t'];
$contacts[$contact_id]['organization'] = $contact['gd$organization'][0]['gd$orgName']['$t'];
foreach ($contact['gd$email'] as $contact_email['number'] => $contact_email) {
if ($contact_email['label']) {
$contact_email_label = $contact_email['label'];
}
else {
$contact_email_label = substr($contact_email['rel'], strpos($contact_email['rel'], "#")+1);
$contact_email_label = ucwords(str_replace("_", " ", $contact_email_label));
}
$contacts[$contact_id]['emails'][$contact_email['number']]['label'] = $contact_email_label;
$contacts[$contact_id]['emails'][$contact_email['number']]['address'] = $contact_email['address'];
$contacts[$contact_id]['emails'][$contact_email['number']]['primary'] = ($contact_email['primary']) ? 1 : 0;
}
foreach ($contact['gd$phoneNumber'] as $contact_phone['number'] => $contact_phone) {
if ($contact_phone['label']) {
$contact_phone_label = $contact_phone['label'];
}
else {
$contact_phone_label = substr($contact_phone['rel'], strpos($contact_phone['rel'], "#")+1);
$contact_phone_label = ucwords(str_replace("_", " ", $contact_phone_label));
}
$contacts[$contact_id]['numbers'][$contact_phone['number']]['label'] = $contact_phone_label;
$contacts[$contact_id]['numbers'][$contact_phone['number']]['number'] = preg_replace('{\D}', '', $contact_phone['$t']);
}
foreach ($contact['gContact$website'] as $contact_website['number'] => $contact_website) {
$contact_website_label = ($contact_website['label']) ? $contact_website['label'] : ucwords(str_replace("_", " ", $contact_website['rel']));
$contacts[$contact_id]['urls'][$contact_website['number']]['label'] = $contact_website_label;
$contacts[$contact_id]['urls'][$contact_website['number']]['url'] = $contact_website['href'];
}
foreach ($contact['gd$structuredPostalAddress'] as $contact_address['number'] => $contact_address) {
if ($contact_address['label']) {
$contact_address_label = $contact_address['label'];
}
else {
$contact_address_label = substr($contact_address['rel'], strpos($contact_address['rel'], "#")+1);
$contact_address_label = ucwords(str_replace("_", " ", $contact_address_label));
}
$contacts[$contact_id]['addresses'][$contact_address['number']]['label'] = $contact_address_label;
$contacts[$contact_id]['addresses'][$contact_address['number']]['street'] = $contact_address['gd$street']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['extended'] = $contact_address['gd$pobox']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['community'] = $contact_address['gd$neighborhood']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['locality'] = $contact_address['gd$city']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['region'] = $contact_address['gd$region']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['postal_code'] = $contact_address['gd$postcode']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['country'] = $contact_address['gd$country']['$t'];
}
foreach ($contact['gContact$groupMembershipInfo'] as $contact_group['number'] => $contact_group) {
$contact_group_id = substr($contact_group['href'], strrpos($contact_group['href'], "/")+1);
$contacts[$contact_id]['groups'][$contact_group_id] = $groups[$contact_group_id]['name'];
}
$contacts[$contact_id]['notes'] = $contact['content']['$t'];
}
//set account holder info
$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
return $contacts;
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
function google_get_contacts($token, $max_results = 50) {
//global $records;
global $groups;
//$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$_SESSION['contact_auth']['token']; // all contacts as xml
//$url = 'https://www.google.com/m8/feeds/contacts/default/full/78967d550d3fdd99?alt=json&v=3.0&oauth_token='.$_SESSION['contact_auth']['token']; // single contact
$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$token; // all contacts as json
$xml_response = curl_file_get_contents($url);
$records = json_decode($xml_response, true);
//check for authentication errors (logged out of google account, or app access permission revoked, etc)
if ($records['error']['code']) {
header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
exit;
}
//create new array of contacts
foreach($records['feed']['entry'] as $contact['number'] => $contact) {
$contact_id = substr($contact['id']['$t'], strrpos($contact['id']['$t'], "/")+1);
$contacts[$contact_id]['etag'] = $contact['gd$etag'];
$contacts[$contact_id]['updated'] = $contact['updated']['$t'];
$contacts[$contact_id]['name_prefix'] = $contact['gd$name']['gd$namePrefix']['$t'];
$contacts[$contact_id]['name_given'] = $contact['gd$name']['gd$givenName']['$t'];
$contacts[$contact_id]['name_middle'] = $contact['gd$name']['gd$additionalName']['$t'];
$contacts[$contact_id]['name_family'] = $contact['gd$name']['gd$familyName']['$t'];
$contacts[$contact_id]['name_suffix'] = $contact['gd$name']['gd$nameSuffix']['$t'];
$contacts[$contact_id]['nickname'] = $contact['gContact$nickname']['$t'];
$contacts[$contact_id]['title'] = $contact['gd$organization'][0]['gd$orgTitle']['$t'];
$contacts[$contact_id]['organization'] = $contact['gd$organization'][0]['gd$orgName']['$t'];
foreach ($contact['gd$email'] as $contact_email['number'] => $contact_email) {
if ($contact_email['label']) {
$contact_email_label = $contact_email['label'];
}
else {
$contact_email_label = substr($contact_email['rel'], strpos($contact_email['rel'], "#")+1);
$contact_email_label = ucwords(str_replace("_", " ", $contact_email_label));
}
$contacts[$contact_id]['emails'][$contact_email['number']]['label'] = $contact_email_label;
$contacts[$contact_id]['emails'][$contact_email['number']]['address'] = $contact_email['address'];
$contacts[$contact_id]['emails'][$contact_email['number']]['primary'] = ($contact_email['primary']) ? 1 : 0;
}
foreach ($contact['gd$phoneNumber'] as $contact_phone['number'] => $contact_phone) {
if ($contact_phone['label']) {
$contact_phone_label = $contact_phone['label'];
}
else {
$contact_phone_label = substr($contact_phone['rel'], strpos($contact_phone['rel'], "#")+1);
$contact_phone_label = ucwords(str_replace("_", " ", $contact_phone_label));
}
$contacts[$contact_id]['numbers'][$contact_phone['number']]['label'] = $contact_phone_label;
$contacts[$contact_id]['numbers'][$contact_phone['number']]['number'] = preg_replace('{\D}', '', $contact_phone['$t']);
}
foreach ($contact['gContact$website'] as $contact_website['number'] => $contact_website) {
$contact_website_label = ($contact_website['label']) ? $contact_website['label'] : ucwords(str_replace("_", " ", $contact_website['rel']));
$contacts[$contact_id]['urls'][$contact_website['number']]['label'] = $contact_website_label;
$contacts[$contact_id]['urls'][$contact_website['number']]['url'] = $contact_website['href'];
}
foreach ($contact['gd$structuredPostalAddress'] as $contact_address['number'] => $contact_address) {
if ($contact_address['label']) {
$contact_address_label = $contact_address['label'];
}
else {
$contact_address_label = substr($contact_address['rel'], strpos($contact_address['rel'], "#")+1);
$contact_address_label = ucwords(str_replace("_", " ", $contact_address_label));
}
$contacts[$contact_id]['addresses'][$contact_address['number']]['label'] = $contact_address_label;
$contacts[$contact_id]['addresses'][$contact_address['number']]['street'] = $contact_address['gd$street']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['extended'] = $contact_address['gd$pobox']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['community'] = $contact_address['gd$neighborhood']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['locality'] = $contact_address['gd$city']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['region'] = $contact_address['gd$region']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['postal_code'] = $contact_address['gd$postcode']['$t'];
$contacts[$contact_id]['addresses'][$contact_address['number']]['country'] = $contact_address['gd$country']['$t'];
}
foreach ($contact['gContact$groupMembershipInfo'] as $contact_group['number'] => $contact_group) {
$contact_group_id = substr($contact_group['href'], strrpos($contact_group['href'], "/")+1);
$contacts[$contact_id]['groups'][$contact_group_id] = $groups[$contact_group_id]['name'];
}
$contacts[$contact_id]['notes'] = $contact['content']['$t'];
}
//set account holder info
$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
return $contacts;
}
?>

View File

@@ -1,54 +1,54 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
function google_get_groups($token) {
// retrieve groups
$url = 'https://www.google.com/m8/feeds/groups/default/full?alt=json&v=3.0&oauth_token='.$token;
$xml_response = curl_file_get_contents($url);
$records = json_decode($xml_response, true);
//check for authentication errors
if ($records['error']['code']) {
header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
exit;
}
//create new array of groups
foreach($records['feed']['entry'] as $group['number'] => $group) {
$group_id = substr($group['id']['$t'], strrpos($group['id']['$t'], "/")+1);
$groups[$group_id]['name'] = ($group['gContact$systemGroup']['id']) ? $group['gContact$systemGroup']['id'] : $group['title']['$t'];
$groups[$group_id]['count'] = 0;
unset($group_id);
}
unset($group);
//set account holder info
$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
return $groups;
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2013
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
function google_get_groups($token) {
// retrieve groups
$url = 'https://www.google.com/m8/feeds/groups/default/full?alt=json&v=3.0&oauth_token='.$token;
$xml_response = curl_file_get_contents($url);
$records = json_decode($xml_response, true);
//check for authentication errors
if ($records['error']['code']) {
header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1));
exit;
}
//create new array of groups
foreach($records['feed']['entry'] as $group['number'] => $group) {
$group_id = substr($group['id']['$t'], strrpos($group['id']['$t'], "/")+1);
$groups[$group_id]['name'] = ($group['gContact$systemGroup']['id']) ? $group['gContact$systemGroup']['id'] : $group['title']['$t'];
$groups[$group_id]['count'] = 0;
unset($group_id);
}
unset($group);
//set account holder info
$_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t'];
$_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t'];
return $groups;
}
?>

View File

@@ -1,54 +1,54 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
if ($domains_processed == 1) {
//set all lines to enabled (true) where null or empty string
$sql = "update v_device_lines set ";
$sql .= "enabled = 'true' ";
$sql .= "where enabled is null ";
$sql .= "or enabled = '' ";
$db->exec(check_sql($sql));
unset($sql);
//set the device key vendor
$sql = "select * from v_device_keys as k, v_devices as d ";
$sql .= "where d.device_uuid = k.device_uuid ";
$sql .= "and k.device_uuid is not null ";
$sql .= "and k.device_key_vendor is null ";
$s = $db->prepare($sql);
$s->execute();
$device_keys = $s->fetchAll(PDO::FETCH_ASSOC);
foreach ($device_keys as &$row) {
$sql = "update v_device_keys ";
$sql .= "set device_key_vendor = '".$row["device_vendor"]."' ";
$sql .= "where device_key_uuid = '".$row["device_key_uuid"]."';\n ";
$db->exec(check_sql($sql));
}
unset($device_keys, $sql);
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
if ($domains_processed == 1) {
//set all lines to enabled (true) where null or empty string
$sql = "update v_device_lines set ";
$sql .= "enabled = 'true' ";
$sql .= "where enabled is null ";
$sql .= "or enabled = '' ";
$db->exec(check_sql($sql));
unset($sql);
//set the device key vendor
$sql = "select * from v_device_keys as k, v_devices as d ";
$sql .= "where d.device_uuid = k.device_uuid ";
$sql .= "and k.device_uuid is not null ";
$sql .= "and k.device_key_vendor is null ";
$s = $db->prepare($sql);
$s->execute();
$device_keys = $s->fetchAll(PDO::FETCH_ASSOC);
foreach ($device_keys as &$row) {
$sql = "update v_device_keys ";
$sql .= "set device_key_vendor = '".$row["device_vendor"]."' ";
$sql .= "where device_key_uuid = '".$row["device_key_uuid"]."';\n ";
$db->exec(check_sql($sql));
}
unset($device_keys, $sql);
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,161 +1,161 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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('device_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"]) && isset($_REQUEST["mac"])) {
$device_uuid = check_str($_REQUEST["id"]);
$mac_address_new = check_str($_REQUEST["mac"]);
$mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new);
}
//set the default
$save = true;
//check to see if the mac address exists
if ($mac_address_new == "" || $mac_address_new == "000000000000") {
//allow duplicates to be used as templaes
}
else {
$sql = "SELECT count(*) AS num_rows FROM v_devices ";
$sql .= "WHERE device_mac_address = '".$mac_address_new."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] == "0") {
$save = true;
}
else {
$save = false;
$_SESSION['message'] = $text['message-duplicate'];
}
}
unset($prep_statement);
}
//get the device
$sql = "SELECT * FROM v_devices ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$devices = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device lines
$sql = "SELECT * FROM v_device_lines ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$sql .= "order by line_number asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device keys
$sql = "SELECT * FROM v_device_keys ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by ";
$sql .= "CASE device_key_category ";
$sql .= "WHEN 'line' THEN 1 ";
$sql .= "WHEN 'memort' THEN 2 ";
$sql .= "WHEN 'programmable' THEN 3 ";
$sql .= "WHEN 'expansion' THEN 4 ";
$sql .= "ELSE 100 END, ";
$sql .= "cast(device_key_id as numeric) asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device settings
$sql = "SELECT * FROM v_device_settings ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by device_setting_subcategory asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//prepare the devices array
unset($devices[0]["device_uuid"]);
//add copy to the device description
$devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"];
//prepare the device_lines array
$x = 0;
foreach ($device_lines as $row) {
unset($device_lines[$x]["device_uuid"]);
unset($device_lines[$x]["device_line_uuid"]);
$x++;
}
//prepare the device_keys array
$x = 0;
foreach ($device_keys as $row) {
unset($device_keys[$x]["device_uuid"]);
unset($device_keys[$x]["device_key_uuid"]);
$x++;
}
//prepare the device_settings array
$x = 0;
foreach ($device_settings as $row) {
unset($device_settings[$x]["device_uuid"]);
unset($device_settings[$x]["device_setting_uuid"]);
$x++;
}
//create the device array
$device = $devices[0];
$device["device_mac_address"] = $mac_address_new;
$device["device_lines"] = $device_lines;
$device["device_keys"] = $device_keys;
$device["device_settings"] = $device_settings;
//copy the device
if ($save) {
$orm = new orm;
$orm->name('devices');
$orm->save($device);
$response = $orm->message;
$_SESSION["message"] = $text['message-copy'];
}
//redirect
header("Location: devices.php");
return;
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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('device_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"]) && isset($_REQUEST["mac"])) {
$device_uuid = check_str($_REQUEST["id"]);
$mac_address_new = check_str($_REQUEST["mac"]);
$mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new);
}
//set the default
$save = true;
//check to see if the mac address exists
if ($mac_address_new == "" || $mac_address_new == "000000000000") {
//allow duplicates to be used as templaes
}
else {
$sql = "SELECT count(*) AS num_rows FROM v_devices ";
$sql .= "WHERE device_mac_address = '".$mac_address_new."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] == "0") {
$save = true;
}
else {
$save = false;
$_SESSION['message'] = $text['message-duplicate'];
}
}
unset($prep_statement);
}
//get the device
$sql = "SELECT * FROM v_devices ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$devices = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device lines
$sql = "SELECT * FROM v_device_lines ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$sql .= "order by line_number asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device keys
$sql = "SELECT * FROM v_device_keys ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by ";
$sql .= "CASE device_key_category ";
$sql .= "WHEN 'line' THEN 1 ";
$sql .= "WHEN 'memort' THEN 2 ";
$sql .= "WHEN 'programmable' THEN 3 ";
$sql .= "WHEN 'expansion' THEN 4 ";
$sql .= "ELSE 100 END, ";
$sql .= "cast(device_key_id as numeric) asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device settings
$sql = "SELECT * FROM v_device_settings ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by device_setting_subcategory asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//prepare the devices array
unset($devices[0]["device_uuid"]);
//add copy to the device description
$devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"];
//prepare the device_lines array
$x = 0;
foreach ($device_lines as $row) {
unset($device_lines[$x]["device_uuid"]);
unset($device_lines[$x]["device_line_uuid"]);
$x++;
}
//prepare the device_keys array
$x = 0;
foreach ($device_keys as $row) {
unset($device_keys[$x]["device_uuid"]);
unset($device_keys[$x]["device_key_uuid"]);
$x++;
}
//prepare the device_settings array
$x = 0;
foreach ($device_settings as $row) {
unset($device_settings[$x]["device_uuid"]);
unset($device_settings[$x]["device_setting_uuid"]);
$x++;
}
//create the device array
$device = $devices[0];
$device["device_mac_address"] = $mac_address_new;
$device["device_lines"] = $device_lines;
$device["device_keys"] = $device_keys;
$device["device_settings"] = $device_settings;
//copy the device
if ($save) {
$orm = new orm;
$orm->name('devices');
$orm->save($device);
$response = $orm->message;
$_SESSION["message"] = $text['message-copy'];
}
//redirect
header("Location: devices.php");
return;
?>

View File

@@ -1,161 +1,161 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. 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('device_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"]) && isset($_REQUEST["mac"])) {
$device_uuid = check_str($_REQUEST["id"]);
$mac_address_new = check_str($_REQUEST["mac"]);
$mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new);
}
//set the default
$save = true;
//check to see if the mac address exists
if ($mac_address_new == "" || $mac_address_new == "000000000000") {
//allow duplicates to be used as templaes
}
else {
$sql = "SELECT count(*) AS num_rows FROM v_devices ";
$sql .= "WHERE device_mac_address = '".$mac_address_new."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] == "0") {
$save = true;
}
else {
$save = false;
$_SESSION['message'] = $text['message-duplicate'];
}
}
unset($prep_statement);
}
//get the device
$sql = "SELECT * FROM v_devices ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$devices = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device lines
$sql = "SELECT * FROM v_device_lines ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$sql .= "order by line_number asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device keys
$sql = "SELECT * FROM v_device_keys ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by ";
$sql .= "CASE device_key_category ";
$sql .= "WHEN 'line' THEN 1 ";
$sql .= "WHEN 'memort' THEN 2 ";
$sql .= "WHEN 'programmable' THEN 3 ";
$sql .= "WHEN 'expansion' THEN 4 ";
$sql .= "ELSE 100 END, ";
$sql .= "cast(device_key_id as numeric) asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device settings
$sql = "SELECT * FROM v_device_settings ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by device_setting_subcategory asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//prepare the devices array
unset($devices[0]["device_uuid"]);
//add copy to the device description
$devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"];
//prepare the device_lines array
$x = 0;
foreach ($device_lines as $row) {
unset($device_lines[$x]["device_uuid"]);
unset($device_lines[$x]["device_line_uuid"]);
$x++;
}
//prepare the device_keys array
$x = 0;
foreach ($device_keys as $row) {
unset($device_keys[$x]["device_uuid"]);
unset($device_keys[$x]["device_key_uuid"]);
$x++;
}
//prepare the device_settings array
$x = 0;
foreach ($device_settings as $row) {
unset($device_settings[$x]["device_uuid"]);
unset($device_settings[$x]["device_setting_uuid"]);
$x++;
}
//create the device array
$device = $devices[0];
$device["device_mac_address"] = $mac_address_new;
$device["device_lines"] = $device_lines;
$device["device_keys"] = $device_keys;
$device["device_settings"] = $device_settings;
//copy the device
if ($save) {
$orm = new orm;
$orm->name('devices');
$orm->save($device);
$response = $orm->message;
$_SESSION["message"] = $text['message-copy'];
}
//redirect
header("Location: devices.php");
return;
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. 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('device_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"]) && isset($_REQUEST["mac"])) {
$device_uuid = check_str($_REQUEST["id"]);
$mac_address_new = check_str($_REQUEST["mac"]);
$mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new);
}
//set the default
$save = true;
//check to see if the mac address exists
if ($mac_address_new == "" || $mac_address_new == "000000000000") {
//allow duplicates to be used as templaes
}
else {
$sql = "SELECT count(*) AS num_rows FROM v_devices ";
$sql .= "WHERE device_mac_address = '".$mac_address_new."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] == "0") {
$save = true;
}
else {
$save = false;
$_SESSION['message'] = $text['message-duplicate'];
}
}
unset($prep_statement);
}
//get the device
$sql = "SELECT * FROM v_devices ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$devices = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device lines
$sql = "SELECT * FROM v_device_lines ";
$sql .= "where device_uuid = '".$device_uuid."' ";
$sql .= "order by line_number asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device keys
$sql = "SELECT * FROM v_device_keys ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by ";
$sql .= "CASE device_key_category ";
$sql .= "WHEN 'line' THEN 1 ";
$sql .= "WHEN 'memort' THEN 2 ";
$sql .= "WHEN 'programmable' THEN 3 ";
$sql .= "WHEN 'expansion' THEN 4 ";
$sql .= "ELSE 100 END, ";
$sql .= "cast(device_key_id as numeric) asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//get device settings
$sql = "SELECT * FROM v_device_settings ";
$sql .= "WHERE device_uuid = '".$device_uuid."' ";
$sql .= "ORDER by device_setting_subcategory asc ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$device_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//prepare the devices array
unset($devices[0]["device_uuid"]);
//add copy to the device description
$devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"];
//prepare the device_lines array
$x = 0;
foreach ($device_lines as $row) {
unset($device_lines[$x]["device_uuid"]);
unset($device_lines[$x]["device_line_uuid"]);
$x++;
}
//prepare the device_keys array
$x = 0;
foreach ($device_keys as $row) {
unset($device_keys[$x]["device_uuid"]);
unset($device_keys[$x]["device_key_uuid"]);
$x++;
}
//prepare the device_settings array
$x = 0;
foreach ($device_settings as $row) {
unset($device_settings[$x]["device_uuid"]);
unset($device_settings[$x]["device_setting_uuid"]);
$x++;
}
//create the device array
$device = $devices[0];
$device["device_mac_address"] = $mac_address_new;
$device["device_lines"] = $device_lines;
$device["device_keys"] = $device_keys;
$device["device_settings"] = $device_settings;
//copy the device
if ($save) {
$orm = new orm;
$orm->name('devices');
$orm->save($device);
$response = $orm->message;
$_SESSION["message"] = $text['message-copy'];
}
//redirect
header("Location: devices.php");
return;
?>

View File

@@ -1,76 +1,76 @@
<?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-2015 All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('device_profile_delete')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the id
if (isset($_GET["id"])) {
$id = $_GET["id"];
}
//delete the data and subdata
if (is_uuid($id)) {
//delete device profile keys
$sql = "delete from v_device_keys ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
//delete device profile
$sql = "delete from v_device_profiles ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
//remove device profile uuid from any assigned devices
$sql = "update v_devices set ";
$sql .= "device_profile_uuid = null ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
}
//write the provision files
require_once "app/provision/provision_write.php";
//set the message and redirect the user
$_SESSION["message"] = $text['message-delete'];
header("Location: device_profiles.php");
return;
<?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-2015 All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('device_profile_delete')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the id
if (isset($_GET["id"])) {
$id = $_GET["id"];
}
//delete the data and subdata
if (is_uuid($id)) {
//delete device profile keys
$sql = "delete from v_device_keys ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
//delete device profile
$sql = "delete from v_device_profiles ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
//remove device profile uuid from any assigned devices
$sql = "update v_devices set ";
$sql .= "device_profile_uuid = null ";
$sql .= "where device_profile_uuid = '".$id."' ";
$db->exec($sql);
unset($sql);
}
//write the provision files
require_once "app/provision/provision_write.php";
//set the message and redirect the user
$_SESSION["message"] = $text['message-delete'];
header("Location: device_profiles.php");
return;
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,177 +1,177 @@
<?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>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('device_profile_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the http values and set them as variables
$search = check_str($_GET["search"]);
if (isset($_GET["order_by"])) {
$order_by = check_str($_GET["order_by"]);
$order = check_str($_GET["order"]);
}
//additional includes
require_once "resources/header.php";
$document['title'] = $text['title-profiles'];
require_once "resources/paging.php";
//show the content
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td width='100%' align='left' valign='top'>";
echo " <b>".$text['header-profiles']."</b>";
echo " <br /><br />";
echo " ".$text['description-profiles'];
echo " </td>\n";
echo " <td align='right' nowrap='nowrap' valign='top'>\n";
echo " <form method='get' action=''>\n";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"document.location='devices.php'\" value='".$text['button-back']."'>&nbsp;&nbsp;&nbsp;&nbsp;";
echo " <input type='text' class='txt' style='width: 150px' name='search' value='".$search."'>";
echo " <input type='submit' class='btn' name='submit' value='".$text['button-search']."'>";
echo " </form>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br />";
//prepare to page the results
$sql = "select count(*) as num_rows from v_device_profiles ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
if (strlen($search) > 0) {
$sql .= "and (";
$sql .= " device_profile_name like '%".$search."%' ";
$sql .= " or device_profile_description like '%".$search."%' ";
$sql .= ") ";
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$num_rows = ($row['num_rows'] > 0) ? $row['num_rows'] : 0;
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_device_profiles ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
if (strlen($search) > 0) {
$sql .= "and (";
$sql .= " device_profile_name like '%".$search."%' ";
$sql .= " or device_profile_description like '%".$search."%' ";
$sql .= ") ";
}
if (strlen($order_by) == 0) {
$sql .= "order by device_profile_name asc ";
}
else {
$sql .= "order by ".$order_by." ".$order." ";
}
$sql .= "limit ".$rows_per_page." offset ".$offset." ";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo th_order_by('name', $text['label-profile_name'], $order_by, $order);
echo th_order_by('enabled', $text['label-profile_enabled'], $order_by, $order);
echo th_order_by('description', $text['label-profile_description'], $order_by, $order);
echo "<td class='list_control_icons'>\n";
if (permission_exists('device_profile_add')) {
echo " <a href='device_profile_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>\n";
}
echo "</td>\n";
echo "<tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
$tr_link = (permission_exists('device_profile_edit')) ? "href='device_profile_edit.php?id=".$row['device_profile_uuid']."'" : null;
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>";
echo (permission_exists('device_profile_edit')) ? "<a href='device_profile_edit.php?id=".$row['device_profile_uuid']."'>".$row['device_profile_name']."</a>" : $row['device_profile_name'];
echo ($row['domain_uuid'] == '') ? "&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: #888; font-size: 80%'>".$text['select-global']."</span>" : null;
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-'.$row['device_profile_enabled']]."&nbsp;</td>\n";
echo " <td valign='top' class='row_stylebg'>".$row['device_profile_description']."&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('device_profile_edit')) {
echo "<a href='device_profile_edit.php?id=".$row['device_profile_uuid']."' alt='".$text['button-edit']."'>".$v_link_label_edit."</a>";
}
if (permission_exists('device_profile_delete')) {
echo "<a href='device_profile_delete.php?id=".$row['device_profile_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c == 0) ? 1 : 0;
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "<tr>\n";
echo "<td colspan='4'>\n";
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap='nowrap'>".$paging_controls."</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('device_profile_add')) {
echo " <a href='device_profile_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
}
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
//include the footer
require_once "resources/footer.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>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('device_profile_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get the http values and set them as variables
$search = check_str($_GET["search"]);
if (isset($_GET["order_by"])) {
$order_by = check_str($_GET["order_by"]);
$order = check_str($_GET["order"]);
}
//additional includes
require_once "resources/header.php";
$document['title'] = $text['title-profiles'];
require_once "resources/paging.php";
//show the content
echo "<table width='100%' cellpadding='0' cellspacing='0' border='0'>\n";
echo " <tr>\n";
echo " <td width='100%' align='left' valign='top'>";
echo " <b>".$text['header-profiles']."</b>";
echo " <br /><br />";
echo " ".$text['description-profiles'];
echo " </td>\n";
echo " <td align='right' nowrap='nowrap' valign='top'>\n";
echo " <form method='get' action=''>\n";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"document.location='devices.php'\" value='".$text['button-back']."'>&nbsp;&nbsp;&nbsp;&nbsp;";
echo " <input type='text' class='txt' style='width: 150px' name='search' value='".$search."'>";
echo " <input type='submit' class='btn' name='submit' value='".$text['button-search']."'>";
echo " </form>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br />";
//prepare to page the results
$sql = "select count(*) as num_rows from v_device_profiles ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
if (strlen($search) > 0) {
$sql .= "and (";
$sql .= " device_profile_name like '%".$search."%' ";
$sql .= " or device_profile_description like '%".$search."%' ";
$sql .= ") ";
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$num_rows = ($row['num_rows'] > 0) ? $row['num_rows'] : 0;
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "";
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_device_profiles ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) ";
if (strlen($search) > 0) {
$sql .= "and (";
$sql .= " device_profile_name like '%".$search."%' ";
$sql .= " or device_profile_description like '%".$search."%' ";
$sql .= ") ";
}
if (strlen($order_by) == 0) {
$sql .= "order by device_profile_name asc ";
}
else {
$sql .= "order by ".$order_by." ".$order." ";
}
$sql .= "limit ".$rows_per_page." offset ".$offset." ";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo th_order_by('name', $text['label-profile_name'], $order_by, $order);
echo th_order_by('enabled', $text['label-profile_enabled'], $order_by, $order);
echo th_order_by('description', $text['label-profile_description'], $order_by, $order);
echo "<td class='list_control_icons'>\n";
if (permission_exists('device_profile_add')) {
echo " <a href='device_profile_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>\n";
}
echo "</td>\n";
echo "<tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
$tr_link = (permission_exists('device_profile_edit')) ? "href='device_profile_edit.php?id=".$row['device_profile_uuid']."'" : null;
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>";
echo (permission_exists('device_profile_edit')) ? "<a href='device_profile_edit.php?id=".$row['device_profile_uuid']."'>".$row['device_profile_name']."</a>" : $row['device_profile_name'];
echo ($row['domain_uuid'] == '') ? "&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: #888; font-size: 80%'>".$text['select-global']."</span>" : null;
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-'.$row['device_profile_enabled']]."&nbsp;</td>\n";
echo " <td valign='top' class='row_stylebg'>".$row['device_profile_description']."&nbsp;</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('device_profile_edit')) {
echo "<a href='device_profile_edit.php?id=".$row['device_profile_uuid']."' alt='".$text['button-edit']."'>".$v_link_label_edit."</a>";
}
if (permission_exists('device_profile_delete')) {
echo "<a href='device_profile_delete.php?id=".$row['device_profile_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c == 0) ? 1 : 0;
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "<tr>\n";
echo "<td colspan='4'>\n";
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap='nowrap'>".$paging_controls."</td>\n";
echo " <td class='list_control_icons'>";
if (permission_exists('device_profile_add')) {
echo " <a href='device_profile_edit.php' alt='".$text['button-add']."'>".$v_link_label_add."</a>";
}
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,89 +1,89 @@
<?php
if ($domains_processed == 1) {
//define array of editor settings
$x = 0;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'font_size';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '14px';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default text size for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'indent_guides';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default visibility of indent guides for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'invisibles';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default state of invisible characters for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'line_numbers';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default visibility of line numbers for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'live_previews';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Enable or disable live previewing of syntax, text size and theme changes.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'theme';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'Cobalt';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default theme.';
//get an array of the default settings
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_category = 'editor' ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//find the missing default settings
$x = 0;
foreach ($array as $setting) {
$found = false;
$missing[$x] = $setting;
foreach ($default_settings as $row) {
if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
//print_r($message);
}
unset($missing);
//unset the array variable
unset($array);
}
<?php
if ($domains_processed == 1) {
//define array of editor settings
$x = 0;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'font_size';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '14px';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default text size for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'indent_guides';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default visibility of indent guides for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'invisibles';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default state of invisible characters for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'line_numbers';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default visibility of line numbers for Editor.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'live_previews';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'false';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Enable or disable live previewing of syntax, text size and theme changes.';
$x++;
$array[$x]['default_setting_category'] = 'editor';
$array[$x]['default_setting_subcategory'] = 'theme';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'Cobalt';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Set the default theme.';
//get an array of the default settings
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_category = 'editor' ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//find the missing default settings
$x = 0;
foreach ($array as $setting) {
$found = false;
$missing[$x] = $setting;
foreach ($default_settings as $row) {
if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
//print_r($message);
}
unset($missing);
//unset the array variable
unset($array);
}
?>

View File

@@ -1,89 +1,89 @@
<?php
$y = 0;
$apps[$x]['menu'][$y]['title']['en-us'] = "Script Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor de Scripts";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de script";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de Scripts";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "f1905fec-0577-daef-6045-59d09b7d3f94";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=scripts";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "XML Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor XML";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur XML";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor XML";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "16013877-606a-2a05-7d6a-c1b215839131";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=xml";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "Provision Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor de Provisionamiento";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de Provisioning";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de Provisionamento";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "57773542-a565-1a29-605d-6535da1a0870";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=provision";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "PHP Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor PHP";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur PHP";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de PHP";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "eae1f2d6-789b-807c-cc26-44501e848693";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=php";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "Grammar Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de Grammaire";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "c3db739e-89f9-0fa2-44ce-0f4c2ff43b1a";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=grammar";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
<?php
$y = 0;
$apps[$x]['menu'][$y]['title']['en-us'] = "Script Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor de Scripts";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de script";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de Scripts";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "f1905fec-0577-daef-6045-59d09b7d3f94";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=scripts";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "XML Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor XML";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur XML";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor XML";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "16013877-606a-2a05-7d6a-c1b215839131";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=xml";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "Provision Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor de Provisionamiento";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de Provisioning";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de Provisionamento";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "57773542-a565-1a29-605d-6535da1a0870";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=provision";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "PHP Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor PHP";
$apps[$x]['menu'][$y]['title']['es-mx'] = "";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur PHP";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor de PHP";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "eae1f2d6-789b-807c-cc26-44501e848693";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=php";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['menu'][$y]['title']['en-us'] = "Grammar Editor";
$apps[$x]['menu'][$y]['title']['es-cl'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['es-mx'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['de-de'] = "";
$apps[$x]['menu'][$y]['title']['de-ch'] = "";
$apps[$x]['menu'][$y]['title']['de-at'] = "";
$apps[$x]['menu'][$y]['title']['fr-fr'] = "Editeur de Grammaire";
$apps[$x]['menu'][$y]['title']['fr-ca'] = "";
$apps[$x]['menu'][$y]['title']['fr-ch'] = "";
$apps[$x]['menu'][$y]['title']['pt-pt'] = "Editor Gramático";
$apps[$x]['menu'][$y]['title']['pt-br'] = "";
$apps[$x]['menu'][$y]['uuid'] = "c3db739e-89f9-0fa2-44ce-0f4c2ff43b1a";
$apps[$x]['menu'][$y]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][$y]['category'] = "external";
$apps[$x]['menu'][$y]['path'] = "/app/edit/index.php?dir=grammar";
$apps[$x]['menu'][$y]['groups'][] = "superadmin";
?>

View File

@@ -1,93 +1,93 @@
<?php
//application details
$apps[$x]['name'] = "Emails";
$apps[$x]['uuid'] = "bd64f590-9a24-468d-951f-6639ac728694";
$apps[$x]['category'] = "Switch";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Manage failed email messages.";
$apps[$x]['description']['es-cl'] = "Gestionar los mensajes fallidos.";
$apps[$x]['description']['es-mx'] = "";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "GÈrer les messages Èlectroniques ÈchouÈ.";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Gerenciar mensagens de e-mail falhou.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$y = 0;
$apps[$x]['permissions'][$y]['name'] = "email_view";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_download";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_resend";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "emails_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
//schema details
$y = 1; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_emails";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_xml_cdr";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "sent_date";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "timestamp";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "date";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "timestamp";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "type";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "status";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "email";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>
<?php
//application details
$apps[$x]['name'] = "Emails";
$apps[$x]['uuid'] = "bd64f590-9a24-468d-951f-6639ac728694";
$apps[$x]['category'] = "Switch";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Manage failed email messages.";
$apps[$x]['description']['es-cl'] = "Gestionar los mensajes fallidos.";
$apps[$x]['description']['es-mx'] = "";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "GÈrer les messages Èlectroniques ÈchouÈ.";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Gerenciar mensagens de e-mail falhou.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$y = 0;
$apps[$x]['permissions'][$y]['name'] = "email_view";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_download";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "email_resend";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "emails_all";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
//schema details
$y = 1; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_emails";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "email_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_xml_cdr";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "sent_date";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "timestamp";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "date";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "timestamp";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "type";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "status";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "email";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>

View File

@@ -1,65 +1,65 @@
<?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-2015
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('email_delete')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get posted values, if any
$email_uuid = $_REQUEST["id"];
if ($email_uuid != '') {
$sql = "delete from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$sql .= "";
} else {
$sql .= "and domain_uuid = '".$domain_uuid."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql, $prep_statement);
//set message
if ($_SESSION["message"] == '') {
$_SESSION["message"] = $text['message-delete'];
}
}
//redirect user
header("Location: emails.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-2015
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('email_delete')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get posted values, if any
$email_uuid = $_REQUEST["id"];
if ($email_uuid != '') {
$sql = "delete from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$sql .= "";
} else {
$sql .= "and domain_uuid = '".$domain_uuid."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($sql, $prep_statement);
//set message
if ($_SESSION["message"] == '') {
$_SESSION["message"] = $text['message-delete'];
}
}
//redirect user
header("Location: emails.php");
?>

View File

@@ -1,207 +1,207 @@
<?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-2015
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('email_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get email
$email_uuid = check_str($_REQUEST["id"]);
$msg_found = false;
if ($email_uuid != '') {
$sql = "select * from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$sent = $row['sent_date'];
$type = $row['type'];
$status = $row['status'];
$email = $row['email'];
$msg_found = true;
break;
}
}
}
if (!$msg_found) {
$_SESSION["message"] = $text['message-invalid_email'];
header("Location: emails.php");
exit;
}
//includes
require('resources/pop3/mime_parser.php');
require('resources/pop3/rfc822_addresses.php');
//parse the email message
$mime = new mime_parser_class;
$mime->decode_bodies = 1;
$parameters = array('Data' => $email);
$success = $mime->Decode($parameters, $decoded);
if ($success) {
//get the headers
$headers = json_decode($decoded[0]["Headers"]["x-headers:"], true);
$subject = $decoded[0]["Headers"]["subject:"];
$from = $decoded[0]["Headers"]["from:"];
$reply_to = $decoded[0]["Headers"]["reply-to:"];
$to = $decoded[0]["Headers"]["to:"];
$subject = $decoded[0]["Headers"]["subject:"];
if (substr_count($subject, '=?utf-8?B?') > 0) {
$subject = str_replace('=?utf-8?B?', '', $subject);
$subject = str_replace('?=', '', $subject);
$subject = base64_decode($subject);
}
//get the body
$body = '';
$content_type = $decoded[0]['Headers']['content-type:'];
if (substr($content_type, 0, 15) == "multipart/mixed" || substr($content_type, 0, 21) == "multipart/alternative") {
foreach($decoded[0]["Parts"] as $row) {
$body_content_type = $row["Headers"]["content-type:"];
if (substr($body_content_type, 0, 9) == "text/html") { $body = $row["Body"]; }
if (substr($body_content_type, 0, 10) == "text/plain") { $body_plain = $row["Body"]; $body = $body_plain; }
}
}
else {
$content_type_array = explode(";", $content_type);
$body = $decoded[0]["Body"];
}
//get the attachments (if any)
foreach ($decoded[0]['Parts'] as &$parts_array) {
$content_type = $parts_array["Parts"][0]["Headers"]["content-type:"]; //audio/wav; name="msg_b64f97e0-8570-11e4-8400-35da04cdaa74.wav"
$content_transfer_encoding = $parts_array["Parts"][0]["Headers"]["content-transfer-encoding:"]; //base64
$content_disposition = $parts_array["Parts"][0]["Headers"]["content-disposition"]; //attachment; filename="msg_b64f97e0-8570-11e4-8400-35da04cdaa74.wav"
$file_name = $parts_array["FileName"];
$file_size = $parts_array["BodyLength"];
}
}
else {
$_SESSION["message"] = $text['message-decoding_error'].(($mime->error != '') ? ': '.htmlspecialchars($mime->error) : null);
header("Location: emails.php");
exit;
}
//show the header
$document['title'] = $text['title-view_email'];
require_once "resources/header.php";
//show content
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>";
echo " <td valign='top' align='left' nowrap>";
echo " <b>".$text['header-view_email']."</b>\n";
echo " </td>";
echo " <td valign='top' align='right' nowrap>";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"document.location.href='emails.php';\" value='".$text['button-back']."'>";
if (permission_exists('email_download')) {
echo " <input type='button' class='btn' alt='".$text['button-download']."' onclick=\"document.location.href='emails.php?id=".$email_uuid."&a=download';\" value='".$text['button-download']."'>";
}
if (permission_exists('email_resend')) {
echo " <input type='button' class='btn' alt='".$text['button-resend']."' onclick=\"document.location.href='emails.php?id=".$email_uuid."&a=resend';\" value='".$text['button-resend']."'>";
}
echo " </td>";
echo " </tr>";
echo "</table>";
echo "<br>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap>".$text['label-sent']."</td>\n";
echo "<td width='70%' class='vtable' align='left'>".$sent."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-type']."</td>\n";
echo "<td class='vtable' align='left'>".$text['label-type_'.$type]."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-status']."</td>\n";
echo "<td class='vtable' align='left'>".$text['label-status_'.$status]."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-from']."</td>\n";
echo "<td class='vtable' align='left'>".$from."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-to']."</td>\n";
echo "<td class='vtable' align='left'>".$to."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-subject']."</td>\n";
echo "<td class='vtable' align='left'>".$subject."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-message']."</td>\n";
echo "<td class='vtable' align='left'>";
echo " <iframe id='msg_display' width='100%' height='250' scrolling='auto' cellspacing='0' style='border: 1px solid #c5d1e5; overflow: scroll;'></iframe>\n";
echo " <textarea id='msg' width='1' height='1' style='width: 1px; height: 1px; display: none;'>".$body."</textarea>\n";
echo " <script>";
echo " var iframe = document.getElementById('msg_display');";
echo " iframe.contentDocument.write(document.getElementById('msg').value);";
echo " iframe.contentDocument.close();";
echo " </script>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-attachment']."</td>\n";
echo "<td class='vtable' align='left'>".$file_name." (".round($file_size/1024,2)." KB)</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
//include the footer
require_once "resources/footer.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-2015
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('email_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get email
$email_uuid = check_str($_REQUEST["id"]);
$msg_found = false;
if ($email_uuid != '') {
$sql = "select * from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$sent = $row['sent_date'];
$type = $row['type'];
$status = $row['status'];
$email = $row['email'];
$msg_found = true;
break;
}
}
}
if (!$msg_found) {
$_SESSION["message"] = $text['message-invalid_email'];
header("Location: emails.php");
exit;
}
//includes
require('resources/pop3/mime_parser.php');
require('resources/pop3/rfc822_addresses.php');
//parse the email message
$mime = new mime_parser_class;
$mime->decode_bodies = 1;
$parameters = array('Data' => $email);
$success = $mime->Decode($parameters, $decoded);
if ($success) {
//get the headers
$headers = json_decode($decoded[0]["Headers"]["x-headers:"], true);
$subject = $decoded[0]["Headers"]["subject:"];
$from = $decoded[0]["Headers"]["from:"];
$reply_to = $decoded[0]["Headers"]["reply-to:"];
$to = $decoded[0]["Headers"]["to:"];
$subject = $decoded[0]["Headers"]["subject:"];
if (substr_count($subject, '=?utf-8?B?') > 0) {
$subject = str_replace('=?utf-8?B?', '', $subject);
$subject = str_replace('?=', '', $subject);
$subject = base64_decode($subject);
}
//get the body
$body = '';
$content_type = $decoded[0]['Headers']['content-type:'];
if (substr($content_type, 0, 15) == "multipart/mixed" || substr($content_type, 0, 21) == "multipart/alternative") {
foreach($decoded[0]["Parts"] as $row) {
$body_content_type = $row["Headers"]["content-type:"];
if (substr($body_content_type, 0, 9) == "text/html") { $body = $row["Body"]; }
if (substr($body_content_type, 0, 10) == "text/plain") { $body_plain = $row["Body"]; $body = $body_plain; }
}
}
else {
$content_type_array = explode(";", $content_type);
$body = $decoded[0]["Body"];
}
//get the attachments (if any)
foreach ($decoded[0]['Parts'] as &$parts_array) {
$content_type = $parts_array["Parts"][0]["Headers"]["content-type:"]; //audio/wav; name="msg_b64f97e0-8570-11e4-8400-35da04cdaa74.wav"
$content_transfer_encoding = $parts_array["Parts"][0]["Headers"]["content-transfer-encoding:"]; //base64
$content_disposition = $parts_array["Parts"][0]["Headers"]["content-disposition"]; //attachment; filename="msg_b64f97e0-8570-11e4-8400-35da04cdaa74.wav"
$file_name = $parts_array["FileName"];
$file_size = $parts_array["BodyLength"];
}
}
else {
$_SESSION["message"] = $text['message-decoding_error'].(($mime->error != '') ? ': '.htmlspecialchars($mime->error) : null);
header("Location: emails.php");
exit;
}
//show the header
$document['title'] = $text['title-view_email'];
require_once "resources/header.php";
//show content
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>";
echo " <td valign='top' align='left' nowrap>";
echo " <b>".$text['header-view_email']."</b>\n";
echo " </td>";
echo " <td valign='top' align='right' nowrap>";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"document.location.href='emails.php';\" value='".$text['button-back']."'>";
if (permission_exists('email_download')) {
echo " <input type='button' class='btn' alt='".$text['button-download']."' onclick=\"document.location.href='emails.php?id=".$email_uuid."&a=download';\" value='".$text['button-download']."'>";
}
if (permission_exists('email_resend')) {
echo " <input type='button' class='btn' alt='".$text['button-resend']."' onclick=\"document.location.href='emails.php?id=".$email_uuid."&a=resend';\" value='".$text['button-resend']."'>";
}
echo " </td>";
echo " </tr>";
echo "</table>";
echo "<br>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap>".$text['label-sent']."</td>\n";
echo "<td width='70%' class='vtable' align='left'>".$sent."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-type']."</td>\n";
echo "<td class='vtable' align='left'>".$text['label-type_'.$type]."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-status']."</td>\n";
echo "<td class='vtable' align='left'>".$text['label-status_'.$status]."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-from']."</td>\n";
echo "<td class='vtable' align='left'>".$from."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-to']."</td>\n";
echo "<td class='vtable' align='left'>".$to."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-subject']."</td>\n";
echo "<td class='vtable' align='left'>".$subject."</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-message']."</td>\n";
echo "<td class='vtable' align='left'>";
echo " <iframe id='msg_display' width='100%' height='250' scrolling='auto' cellspacing='0' style='border: 1px solid #c5d1e5; overflow: scroll;'></iframe>\n";
echo " <textarea id='msg' width='1' height='1' style='width: 1px; height: 1px; display: none;'>".$body."</textarea>\n";
echo " <script>";
echo " var iframe = document.getElementById('msg_display');";
echo " iframe.contentDocument.write(document.getElementById('msg').value);";
echo " iframe.contentDocument.close();";
echo " </script>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>".$text['label-attachment']."</td>\n";
echo "<td class='vtable' align='left'>".$file_name." (".round($file_size/1024,2)." KB)</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,271 +1,271 @@
<?php
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('email_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get variables used to control the order
$order_by = ($_GET["order_by"] != '') ? $_GET["order_by"] : 'sent_date';
$order = ($_GET["order"] != '') ? $_GET["order"] : 'desc';
//download email
if ($_REQUEST['a'] == 'download' && permission_exists('email_download')) {
$email_uuid = check_str($_REQUEST["id"]);
$msg_found = false;
if ($email_uuid != '') {
$sql = "select call_uuid, email from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$call_uuid = $row['call_uuid'];
$email = $row['email'];
$msg_found = true;
break;
}
}
unset ($prep_statement, $sql, $result, $result_count);
}
if ($msg_found) {
header("Content-Type: message/rfc822");
header('Content-Disposition: attachment; filename="'.$call_uuid.'.eml"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".strlen($email));
echo $email;
exit;
}
}
//resend email
if ($_REQUEST['a'] == 'resend' && permission_exists('email_resend')) {
$email_uuid = check_str($_REQUEST["id"]);
$resend = true;
$msg_found = false;
if ($email_uuid != '') {
$sql = "select email from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
if (!permission_exists('emails_all') || $_REQUEST['showall'] != 'true') {
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$email = $row['email'];
$msg_found = true;
break;
}
}
unset ($prep_statement, $sql, $result, $result_count);
}
if ($msg_found) {
$msg = $email;
require_once "secure/v_mailto.php";
if ($mailer_error == '') {
$_SESSION["message"] = $text['message-message_resent'];
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
header("Location: email_delete.php?id=".$email_uuid."&showall=true");
} else {
header("Location: email_delete.php?id=".$email_uuid);
}
}
else {
$_SESSION["message_mood"] = 'negative';
$_SESSION["message_delay"] = '4'; //sec
$_SESSION["message"] = $text['message-resend_failed'].": ".$mailer_error;
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
header("Location: emails.php?showall=true");
} else {
header("Location: emails.php");
}
}
}
exit;
}
//additional includes
$document['title'] = $text['title-emails'];
require_once "resources/header.php";
require_once "resources/paging.php";
//show the content
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='50%' align='left' valign='top' nowrap='nowrap'>";
echo " <b>".$text['header-emails']."</b>";
echo " <br /><br />";
echo " ".$text['description-emails'];
echo " </td>\n";
echo " <td width='50%' align='right' valign='top'>\n";
if (permission_exists('emails_all')) {
if ($_REQUEST['showall'] != 'true') {
echo " <input type='button' class='btn' value='".$text['button-show_all']."' onclick=\"window.location='emails.php?showall=true';\">\n";
}
}
echo " <input type='button' class='btn' alt=\"".$text['button-refresh']."\" onclick=\"document.location.reload();\" value='".$text['button-refresh']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br />\n";
//prepare to page the results
$sql = "select count(*) as num_rows from v_emails ";
if (permission_exists('emails_all')) {
if ($_REQUEST['showall'] != 'true') {
$sql .= "where domain_uuid = '".$domain_uuid."' ";
}
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$num_rows = ($row['num_rows'] > 0) ? $row['num_rows'] : 0;
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$param .= "&showall=true";
} else {
$param = "";
}
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_emails ";
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$sql .= " join v_domains on v_emails.domain_uuid = v_domains.domain_uuid ";
} else {
$sql .= "where domain_uuid = '".$domain_uuid."' ";
}
if (strlen($order_by)> 0) { $sql .= "order by ".$order_by." ".$order." "; }
$sql .= "limit ".$rows_per_page." offset ".$offset." ";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo th_order_by('domain_name', $text['label-domain-name'], $order_by, $order, null, null, $param);
}
echo th_order_by('sent_date', $text['label-sent'], $order_by, $order, null, null, $param);
echo th_order_by('type', $text['label-type'], $order_by, $order, null, null, $param);
echo th_order_by('status', $text['label-status'], $order_by, $order, null, null, $param);
echo "<th>".$text['label-message']."</th>\n";
echo "<th>".$text['label-reference']."</th>\n";
echo "<td class='list_control_icons'>&nbsp;</td>\n";
echo "</tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
//get call details
$sql = "select caller_id_name, caller_id_number, destination_number from v_xml_cdr ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and uuid = '".$row['call_uuid']."' ";
//echo "<tr><td colspan='40'>".$sql."</td></tr>";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result2 = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result2 as $row2) {
$caller_id_name = ($row2['caller_id_name'] != '') ? $row2['caller_id_name'] : null;
$caller_id_number = ($row2['caller_id_number'] != '') ? $row2['caller_id_number'] : null;
$destination_number = ($row2['destination_number'] != '') ? $row2['destination_number'] : null;
}
unset($prep_statement, $sql);
$tr_link = "href='email_view.php?id=".$row['email_uuid']."'";
echo "<tr ".$tr_link.">\n";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo " <td valign='top' class='".$row_style[$c]."'>".$row['domain_name']."</td>\n";
}
echo " <td valign='top' class='".$row_style[$c]."'>";
$sent_date = explode('.', $row['sent_date']);
echo $sent_date[0];
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-type_'.$row['type']]."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-status_'.$row['status']]."</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'>";
echo " <a href='email_view.php?id=".$row['email_uuid']."'>".$text['label-message_view']."</a>&nbsp;&nbsp;";
if (permission_exists('email_download')) {
echo " <a href='?id=".$row['email_uuid']."&a=download'>".$text['label-download']."</a>&nbsp;&nbsp;";
}
if (permission_exists('email_resend')) {
echo " <a href='?id=".$row['email_uuid']."&a=resend";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo "&showall=true";
}
echo "'>" . $text['label-resend']."</a>";
}
echo " </td>\n";
echo " <td valign='top' class='row_stylebg tr_link_void' style='white-space: nowrap; vertical-align: top;'>";
echo " <a href='".PROJECT_PATH."/app/xml_cdr/xml_cdr_details.php?uuid=".$row['call_uuid']."'>".$text['label-reference_cdr']."</a>";
echo " ".($caller_id_name != '') ? "&nbsp;&nbsp;".$caller_id_name." (".format_phone($caller_id_number).")" : $caller_id_number;
echo "&nbsp;&nbsp;<span style='font-size: 150%; line-height: 10px;'>&#8674;</span>&nbsp;&nbsp;".$destination_number;
echo " </td>\n";
echo " <td class='list_control_icons'>";
echo "<a href='email_view.php?id=".$row['email_uuid']."' alt='".$text['label-message_view']."'>$v_link_label_view</a>";
if (permission_exists('email_delete')) {
echo "<a href='email_delete.php?id=".$row['email_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "<tr>\n";
echo "<td colspan='21' align='left'>\n";
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap='nowrap'>$paging_controls</td>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " </tr>\n";
echo " </table>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
//include the footer
require_once "resources/footer.php";
?>
<?php
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('email_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get variables used to control the order
$order_by = ($_GET["order_by"] != '') ? $_GET["order_by"] : 'sent_date';
$order = ($_GET["order"] != '') ? $_GET["order"] : 'desc';
//download email
if ($_REQUEST['a'] == 'download' && permission_exists('email_download')) {
$email_uuid = check_str($_REQUEST["id"]);
$msg_found = false;
if ($email_uuid != '') {
$sql = "select call_uuid, email from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$call_uuid = $row['call_uuid'];
$email = $row['email'];
$msg_found = true;
break;
}
}
unset ($prep_statement, $sql, $result, $result_count);
}
if ($msg_found) {
header("Content-Type: message/rfc822");
header('Content-Disposition: attachment; filename="'.$call_uuid.'.eml"');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Content-Length: ".strlen($email));
echo $email;
exit;
}
}
//resend email
if ($_REQUEST['a'] == 'resend' && permission_exists('email_resend')) {
$email_uuid = check_str($_REQUEST["id"]);
$resend = true;
$msg_found = false;
if ($email_uuid != '') {
$sql = "select email from v_emails ";
$sql .= "where email_uuid = '".$email_uuid."' ";
if (!permission_exists('emails_all') || $_REQUEST['showall'] != 'true') {
$sql .= "and 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);
if ($result_count > 0) {
foreach($result as $row) {
$email = $row['email'];
$msg_found = true;
break;
}
}
unset ($prep_statement, $sql, $result, $result_count);
}
if ($msg_found) {
$msg = $email;
require_once "secure/v_mailto.php";
if ($mailer_error == '') {
$_SESSION["message"] = $text['message-message_resent'];
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
header("Location: email_delete.php?id=".$email_uuid."&showall=true");
} else {
header("Location: email_delete.php?id=".$email_uuid);
}
}
else {
$_SESSION["message_mood"] = 'negative';
$_SESSION["message_delay"] = '4'; //sec
$_SESSION["message"] = $text['message-resend_failed'].": ".$mailer_error;
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
header("Location: emails.php?showall=true");
} else {
header("Location: emails.php");
}
}
}
exit;
}
//additional includes
$document['title'] = $text['title-emails'];
require_once "resources/header.php";
require_once "resources/paging.php";
//show the content
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='50%' align='left' valign='top' nowrap='nowrap'>";
echo " <b>".$text['header-emails']."</b>";
echo " <br /><br />";
echo " ".$text['description-emails'];
echo " </td>\n";
echo " <td width='50%' align='right' valign='top'>\n";
if (permission_exists('emails_all')) {
if ($_REQUEST['showall'] != 'true') {
echo " <input type='button' class='btn' value='".$text['button-show_all']."' onclick=\"window.location='emails.php?showall=true';\">\n";
}
}
echo " <input type='button' class='btn' alt=\"".$text['button-refresh']."\" onclick=\"document.location.reload();\" value='".$text['button-refresh']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br />\n";
//prepare to page the results
$sql = "select count(*) as num_rows from v_emails ";
if (permission_exists('emails_all')) {
if ($_REQUEST['showall'] != 'true') {
$sql .= "where domain_uuid = '".$domain_uuid."' ";
}
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$num_rows = ($row['num_rows'] > 0) ? $row['num_rows'] : 0;
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$param .= "&showall=true";
} else {
$param = "";
}
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_emails ";
if (permission_exists('emails_all') && $_REQUEST['showall'] == 'true') {
$sql .= " join v_domains on v_emails.domain_uuid = v_domains.domain_uuid ";
} else {
$sql .= "where domain_uuid = '".$domain_uuid."' ";
}
if (strlen($order_by)> 0) { $sql .= "order by ".$order_by." ".$order." "; }
$sql .= "limit ".$rows_per_page." offset ".$offset." ";
$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);
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo th_order_by('domain_name', $text['label-domain-name'], $order_by, $order, null, null, $param);
}
echo th_order_by('sent_date', $text['label-sent'], $order_by, $order, null, null, $param);
echo th_order_by('type', $text['label-type'], $order_by, $order, null, null, $param);
echo th_order_by('status', $text['label-status'], $order_by, $order, null, null, $param);
echo "<th>".$text['label-message']."</th>\n";
echo "<th>".$text['label-reference']."</th>\n";
echo "<td class='list_control_icons'>&nbsp;</td>\n";
echo "</tr>\n";
if ($result_count > 0) {
foreach($result as $row) {
//get call details
$sql = "select caller_id_name, caller_id_number, destination_number from v_xml_cdr ";
$sql .= "where domain_uuid = '".$domain_uuid."' ";
$sql .= "and uuid = '".$row['call_uuid']."' ";
//echo "<tr><td colspan='40'>".$sql."</td></tr>";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result2 = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result2 as $row2) {
$caller_id_name = ($row2['caller_id_name'] != '') ? $row2['caller_id_name'] : null;
$caller_id_number = ($row2['caller_id_number'] != '') ? $row2['caller_id_number'] : null;
$destination_number = ($row2['destination_number'] != '') ? $row2['destination_number'] : null;
}
unset($prep_statement, $sql);
$tr_link = "href='email_view.php?id=".$row['email_uuid']."'";
echo "<tr ".$tr_link.">\n";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo " <td valign='top' class='".$row_style[$c]."'>".$row['domain_name']."</td>\n";
}
echo " <td valign='top' class='".$row_style[$c]."'>";
$sent_date = explode('.', $row['sent_date']);
echo $sent_date[0];
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-type_'.$row['type']]."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$text['label-status_'.$row['status']]."</td>\n";
echo " <td valign='top' class='".$row_style[$c]." tr_link_void'>";
echo " <a href='email_view.php?id=".$row['email_uuid']."'>".$text['label-message_view']."</a>&nbsp;&nbsp;";
if (permission_exists('email_download')) {
echo " <a href='?id=".$row['email_uuid']."&a=download'>".$text['label-download']."</a>&nbsp;&nbsp;";
}
if (permission_exists('email_resend')) {
echo " <a href='?id=".$row['email_uuid']."&a=resend";
if ($_REQUEST['showall'] == true && permission_exists('emails_all')) {
echo "&showall=true";
}
echo "'>" . $text['label-resend']."</a>";
}
echo " </td>\n";
echo " <td valign='top' class='row_stylebg tr_link_void' style='white-space: nowrap; vertical-align: top;'>";
echo " <a href='".PROJECT_PATH."/app/xml_cdr/xml_cdr_details.php?uuid=".$row['call_uuid']."'>".$text['label-reference_cdr']."</a>";
echo " ".($caller_id_name != '') ? "&nbsp;&nbsp;".$caller_id_name." (".format_phone($caller_id_number).")" : $caller_id_number;
echo "&nbsp;&nbsp;<span style='font-size: 150%; line-height: 10px;'>&#8674;</span>&nbsp;&nbsp;".$destination_number;
echo " </td>\n";
echo " <td class='list_control_icons'>";
echo "<a href='email_view.php?id=".$row['email_uuid']."' alt='".$text['label-message_view']."'>$v_link_label_view</a>";
if (permission_exists('email_delete')) {
echo "<a href='email_delete.php?id=".$row['email_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
} //end foreach
unset($sql, $result, $row_count);
} //end if results
echo "<tr>\n";
echo "<td colspan='21' align='left'>\n";
echo " <table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " <td width='33.3%' align='center' nowrap='nowrap'>$paging_controls</td>\n";
echo " <td width='33.3%' nowrap='nowrap'>&nbsp;</td>\n";
echo " </tr>\n";
echo " </table>\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
echo "<br /><br />";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,43 +1,43 @@
<?php
//application details
$apps[$x]['name'] = "Exec";
$apps[$x]['uuid'] = "1dd98ca6-95f1-e728-7e8f-137fe18dc23c";
$apps[$x]['category'] = "System";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Provides a conventient way to execute system, PHP, switch and SQL commands.";
$apps[$x]['description']['es-cl'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$apps[$x]['description']['es-mx'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "Offre un mode pour exécuter des commandes système, PHP ou switch.";
$apps[$x]['description']['fr-ca'] = "Il offre un mode d'exécuter des commandes du système, PHP ou switch.";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Ofereçe uma forma conveniente para executar comandos de sistema, PHP e switch.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$apps[$x]['permissions'][0]['name'] = "exec_view";
$apps[$x]['permissions'][0]['menu']['uuid'] = "06493580-9131-ce57-23cd-d42d69dd8526";
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
$apps[$x]['permissions'][1]['name'] = "exec_command";
$apps[$x]['permissions'][1]['groups'][] = "superadmin";
$apps[$x]['permissions'][2]['name'] = "exec_php";
$apps[$x]['permissions'][2]['groups'][] = "superadmin";
$apps[$x]['permissions'][3]['name'] = "exec_switch";
$apps[$x]['permissions'][3]['groups'][] = "superadmin";
$apps[$x]['permissions'][4]['name'] = "exec_sql";
$apps[$x]['permissions'][4]['groups'][] = "superadmin";
$apps[$x]['permissions'][5]['name'] = "exec_sql_backup";
$apps[$x]['permissions'][5]['groups'][] = "superadmin";
<?php
//application details
$apps[$x]['name'] = "Exec";
$apps[$x]['uuid'] = "1dd98ca6-95f1-e728-7e8f-137fe18dc23c";
$apps[$x]['category'] = "System";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Provides a conventient way to execute system, PHP, switch and SQL commands.";
$apps[$x]['description']['es-cl'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$apps[$x]['description']['es-mx'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "Offre un mode pour exécuter des commandes système, PHP ou switch.";
$apps[$x]['description']['fr-ca'] = "Il offre un mode d'exécuter des commandes du système, PHP ou switch.";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Ofereçe uma forma conveniente para executar comandos de sistema, PHP e switch.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$apps[$x]['permissions'][0]['name'] = "exec_view";
$apps[$x]['permissions'][0]['menu']['uuid'] = "06493580-9131-ce57-23cd-d42d69dd8526";
$apps[$x]['permissions'][0]['groups'][] = "superadmin";
$apps[$x]['permissions'][1]['name'] = "exec_command";
$apps[$x]['permissions'][1]['groups'][] = "superadmin";
$apps[$x]['permissions'][2]['name'] = "exec_php";
$apps[$x]['permissions'][2]['groups'][] = "superadmin";
$apps[$x]['permissions'][3]['name'] = "exec_switch";
$apps[$x]['permissions'][3]['groups'][] = "superadmin";
$apps[$x]['permissions'][4]['name'] = "exec_sql";
$apps[$x]['permissions'][4]['groups'][] = "superadmin";
$apps[$x]['permissions'][5]['name'] = "exec_sql_backup";
$apps[$x]['permissions'][5]['groups'][] = "superadmin";
?>

View File

@@ -1,277 +1,277 @@
<?php
$text['title-databases']['en-us'] = "Databases";
$text['title-databases']['es-cl'] = "Bases de datos";
$text['title-databases']['pt-pt'] = "Bases de Dados";
$text['title-databases']['fr-fr'] = "Bases de données";
$text['title-databases']['pt-br'] = "Base de dados";
$text['title-databases']['pl'] = "Bazy danych";
$text['title-databases']['sv-se'] = "Databaser";
$text['title-databases']['uk'] = "Бази даних";
$text['title-databases']['de-at'] = "Datenbanken";
$text['title-command']['en-us'] = "Command";
$text['title-command']['es-cl'] = "Comando";
$text['title-command']['pt-pt'] = "Comando";
$text['title-command']['fr-fr'] = "Commande";
$text['title-command']['pt-br'] = "Comando";
$text['title-command']['pl'] = "Polecenie";
$text['title-command']['sv-se'] = "Kommando";
$text['title-command']['uk'] = "Команди";
$text['title-command']['de-at'] = "Befehl";
$text['option-result_type_view']['en-us'] = "View";
$text['option-result_type_view']['es-cl'] = "Ver";
$text['option-result_type_view']['pt-pt'] = "Ver";
$text['option-result_type_view']['fr-fr'] = "Voir";
$text['option-result_type_view']['pt-br'] = "Visualizar";
$text['option-result_type_view']['pl'] = "Widok";
$text['option-result_type_view']['sv-se'] = "Granska";
$text['option-result_type_view']['uk'] = "Перегляд";
$text['option-result_type_view']['de-at'] = "Ansicht";
$text['option-result_type_insert']['en-us'] = "SQL";
$text['option-result_type_insert']['es-cl'] = "SQL";
$text['option-result_type_insert']['pt-pt'] = "SQL";
$text['option-result_type_insert']['fr-fr'] = "SQL";
$text['option-result_type_insert']['pt-br'] = "SQL";
$text['option-result_type_insert']['pl'] = "SQL";
$text['option-result_type_insert']['sv-se'] = "SQL";
$text['option-result_type_insert']['uk'] = "SQL ";
$text['option-result_type_insert']['de-at'] = "SQL";
$text['option-result_type_csv']['en-us'] = "CSV";
$text['option-result_type_csv']['es-cl'] = "CSV";
$text['option-result_type_csv']['pt-pt'] = "CSV";
$text['option-result_type_csv']['fr-fr'] = "CSV";
$text['option-result_type_csv']['pt-br'] = "CSV";
$text['option-result_type_csv']['pl'] = "CSV";
$text['option-result_type_csv']['sv-se'] = "CSV";
$text['option-result_type_csv']['uk'] = "CSV ";
$text['option-result_type_csv']['de-at'] = "CSV";
$text['label-table']['en-us'] = "Table";
$text['label-table']['es-cl'] = "Tabla";
$text['label-table']['pt-pt'] = "Tabela";
$text['label-table']['fr-fr'] = "Table";
$text['label-table']['pt-br'] = "Tabela";
$text['label-table']['pl'] = "Tabela";
$text['label-table']['sv-se'] = "TAbell";
$text['label-table']['uk'] = "Таблиця";
$text['label-table']['de-at'] = "Tabelle";
$text['label-switch']['en-us'] = "Switch";
$text['label-switch']['es-cl'] = "Comando de switch";
$text['label-switch']['pt-pt'] = "Comando Freeswitch";
$text['label-switch']['fr-fr'] = "Commande CLI Freeswitch";
$text['label-switch']['pt-br'] = "Comando Freeswitch ";
$text['label-switch']['pl'] = "PBX";
$text['label-switch']['sv-se'] = "Switch";
$text['label-switch']['uk'] = "FreeSwitch";
$text['label-switch']['de-at'] = "Switch";
$text['label-shell']['en-us'] = "Shell";
$text['label-shell']['es-cl'] = "Terminal de Comandos";
$text['label-shell']['pt-pt'] = "Comando Shell";
$text['label-shell']['fr-fr'] = "Commande Shell";
$text['label-shell']['pt-br'] = "Comando Shell ";
$text['label-shell']['pl'] = "Powłoka (shell)";
$text['label-shell']['sv-se'] = "Shell";
$text['label-shell']['uk'] = "Консоль";
$text['label-shell']['de-at'] = "Shell";
$text['label-results']['en-us'] = "Results";
$text['label-results']['es-cl'] = "Resultados";
$text['label-results']['pt-pt'] = "Resultados";
$text['label-results']['fr-fr'] = "Résultats";
$text['label-results']['pt-br'] = "Resultados";
$text['label-results']['pl'] = "Rezultaty";
$text['label-results']['sv-se'] = "Resultat";
$text['label-results']['uk'] = "Результати";
$text['label-results']['de-at'] = "Ergebnisse";
$text['label-result_type']['en-us'] = "Result";
$text['label-result_type']['es-cl'] = "Resultado";
$text['label-result_type']['pt-pt'] = "Resultado";
$text['label-result_type']['fr-fr'] = "Résultat";
$text['label-result_type']['pt-br'] = "Resultado";
$text['label-result_type']['pl'] = "Rezultat";
$text['label-result_type']['sv-se'] = "Resultat";
$text['label-result_type']['uk'] = "Результат";
$text['label-result_type']['de-at'] = "Ergebnis";
$text['label-response']['en-us'] = "Response";
$text['label-response']['es-cl'] = "Respuesta";
$text['label-response']['pt-pt'] = "Resposta";
$text['label-response']['fr-fr'] = "Réponse";
$text['label-response']['pt-br'] = "Resposta";
$text['label-response']['pl'] = "Odpowiedź";
$text['label-response']['sv-se'] = "Respons";
$text['label-response']['uk'] = "Відповідь";
$text['label-response']['de-at'] = "Antwort";
$text['label-reset']['en-us'] = "Reset";
$text['label-reset']['es-cl'] = "Reajustar";
$text['label-reset']['pt-pt'] = "Restabelecer";
$text['label-reset']['fr-fr'] = "Remettre";
$text['label-reset']['pt-br'] = "Restabelecer";
$text['label-reset']['pl'] = "Resetuj";
$text['label-reset']['he'] = "אפס";
$text['label-reset']['uk'] = "Скинути";
$text['label-reset']['sv-se'] = "Återställ";
$text['label-reset']['de-at'] = "Zurücksetzen";
$text['label-reset']['ro'] = "Inițializare";
$text['label-reset']['fa'] = "";
$text['label-reset']['ar-eg'] = "إعادة تعيين";
$text['label-records']['en-us'] = "Records";
$text['label-records']['es-cl'] = "Archivos";
$text['label-records']['pt-pt'] = "Registros";
$text['label-records']['fr-fr'] = "Enregistrements";
$text['label-records']['pt-br'] = "Registros";
$text['label-records']['pl'] = "Dokumentacja";
$text['label-records']['sv-se'] = "Uppgifter";
$text['label-records']['uk'] = "документація";
$text['label-records']['de-at'] = "Aufzeichnungen";
$text['label-sql']['en-us'] = "SQL";
$text['label-sql']['es-cl'] = "SQL";
$text['label-sql']['pt-pt'] = "SQL";
$text['label-sql']['fr-fr'] = "SQL";
$text['label-sql']['pt-br'] = "SQL";
$text['label-sql']['pl'] = "SQL";
$text['label-sql']['sv-se'] = "SQL";
$text['label-sql']['uk'] = "SQL";
$text['label-sql']['de-at'] = "SQL";
$text['label-php']['en-us'] = "PHP";
$text['label-php']['es-cl'] = "Comando PHP";
$text['label-php']['pt-pt'] = "Comandos PHP";
$text['label-php']['fr-fr'] = "Commande PHP";
$text['label-php']['pt-br'] = "Comandos PHP ";
$text['label-php']['pl'] = "PHP";
$text['label-php']['sv-se'] = "PHP";
$text['label-php']['uk'] = "PHP";
$text['label-php']['de-at'] = "PHP";
$text['label-execute']['en-us'] = "Execute Command";
$text['label-execute']['es-cl'] = "Ejecutar Comando";
$text['label-execute']['pt-pt'] = "Executar Comando";
$text['label-execute']['fr-fr'] = "Executer la Commande";
$text['label-execute']['pt-br'] = "Executar";
$text['label-execute']['pl'] = "Wykonywanie poleceń";
$text['label-execute']['sv-se'] = "Utför Kommando";
$text['label-execute']['uk'] = "Виконання команд";
$text['label-execute']['de-at'] = "Ausführen";
$text['label-error']['en-us'] = "Error";
$text['label-error']['es-cl'] = "Error";
$text['label-error']['pt-pt'] = "Erro";
$text['label-error']['fr-fr'] = "Erreur";
$text['label-error']['pt-br'] = "Erro";
$text['label-error']['pl'] = "Błąd";
$text['label-error']['sv-se'] = "Fel";
$text['label-error']['uk'] = "Помилка";
$text['label-error']['de-at'] = "Fehler";
$text['header-databases']['en-us'] = "Databases";
$text['header-databases']['es-cl'] = "Bases de datos";
$text['header-databases']['pt-pt'] = "Bases de Dados";
$text['header-databases']['fr-fr'] = "Bases de données";
$text['header-databases']['pt-br'] = "Base de dados";
$text['header-databases']['pl'] = "Bazy danych";
$text['header-databases']['sv-se'] = "Databaser";
$text['header-databases']['uk'] = "Бази даних";
$text['header-databases']['de-at'] = "Datenbanken";
$text['description-switch']['en-us'] = "Switch CLI. View valid commands with: 'help'.";
$text['description-switch']['es-cl'] = "Para un listado de comandos válidos use: help";
$text['description-switch']['pt-pt'] = "Para uma lista dos comandos válidos utilize: help";
$text['description-switch']['fr-fr'] = "Pour la liste des commandes valides, utiliser : help";
$text['description-switch']['pt-br'] = "Para verificar a lista de comandos válidos utilize: Ajuda";
$text['description-switch']['pl'] = "Aby uzyskać listę poprawnych poleceń użyj pomocy";
$text['description-switch']['sv-se'] = "För en lista med giltiga kommandon använd: help";
$text['description-switch']['uk'] = "Для перегляду списку команд виконайте команду: help";
$text['description-switch']['de-at'] = "Um eine Liste der gültigen Befehle zu bekommen tippen Sie: 'help'";
$text['description-shell']['en-us'] = "Execute system commands.";
$text['description-shell']['es-cl'] = "Comandos de sistema";
$text['description-shell']['pt-pt'] = "Comandos do sistema.";
$text['description-shell']['fr-fr'] = "Commande Système";
$text['description-shell']['pt-br'] = "Comando do sistema";
$text['description-shell']['pl'] = "Polecenia systemowe.";
$text['description-shell']['sv-se'] = "System Kommandon.";
$text['description-shell']['uk'] = "Системні команди";
$text['description-shell']['de-at'] = "System Befehle";
$text['description-sql']['en-us'] = "Execute statements against the database.";
$text['description-sql']['es-cl'] = "Ejecutar instrucciones de consulta contra la base de datos.";
$text['description-sql']['pt-pt'] = "Executar instruções de consulta no banco de dados.";
$text['description-sql']['fr-fr'] = "Exécuter les instructions de requête contre la base de données.";
$text['description-sql']['pt-br'] = "Executar instruções de consulta no banco de dados.";
$text['description-sql']['pl'] = "Wykonać polecenie zapytania do bazy danych.";
$text['description-sql']['sv-se'] = "Utför fråge uttalanden mot databasen.";
$text['description-sql']['uk'] = "Виконання операторів запитів до бази даних.";
$text['description-sql']['de-at'] = "Führen Sie Abfrage-Anweisungen für die Datenbank.";
$text['description-php']['en-us'] = "Execute PHP commands. See: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['es-cl'] = "Utilice el siguiente enlace como referencia para PHP: <a href='http://php.net/manual/' target='_blank'>Manual PHP</a>";
$text['description-php']['pt-pt'] = "Utilize a ligação seguinte como referência para o PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['fr-fr'] = "Utiliser le lien suivant comme référence pour le PHP: <a href='http://php.net/manual/' target='_blank'>Manuel PHP</a>";
$text['description-php']['pt-br'] = "Utilize a ligação seguinte como referência para o PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['pl'] = "Aby użyć odniesienia do PHP kliknij na ten link: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['sv-se'] = "Använd följande länk som en referens gällande PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['uk'] = "Посилання на довідку PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['de-at'] = "Benutzen Sie folgenden Link als PHP Referenz: <a href='http://php.net/manual/>PHP Manual</a>";
$text['description-execute']['en-us'] = "Provides a conventient way to execute system, PHP, switch and SQL commands.";
$text['description-execute']['es-cl'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$text['description-execute']['pt-pt'] = "Oferece uma maneira fácil de executar comandos de sistema, PHP, e switch.";
$text['description-execute']['fr-fr'] = "Fournir un moyen pour executer des commandes système, PHP et switch. ";
$text['description-execute']['pt-br'] = "Utilize facilmente a execução de comandos do sistema, PHP e switch ";
$text['description-execute']['pl'] = "Ta funkcja zapewnia dogodny sposób wykonywania poleceń systemowych, PHP oraz switch.";
$text['description-execute']['sv-se'] = "Erbjuder ett smidigt sätt att köra system, PHP och switch kommandon.";
$text['description-execute']['uk'] = "Забезпечує зручний спосіб виконати команди PHP, switch, а також системні команди";
$text['description-execute']['de-at'] = "Bietet die Möglichkeit System, PHP und Switch Kommandos auszuführen.";
$text['description-databases']['en-us'] = "Select the database to execute SQL query statements against.";
$text['description-databases']['es-cl'] = "Seleccione la base de datos para ejecutar la consulta SQL.";
$text['description-databases']['pt-pt'] = "Escolha a base de dados a utilizar.";
$text['description-databases']['fr-fr'] = "Choisir la base de données utilisée par la requête SQL.";
$text['description-databases']['pt-br'] = "Informações sobre a base de dados";
$text['description-databases']['pl'] = "Informacje o bazie danych.";
$text['description-databases']['sv-se'] = "Välj databas att använda för SQL Fråga.";
$text['description-databases']['uk'] = "Інформація про базу даних.";
$text['description-databases']['de-at'] = "Wählen Sie die Datenbank für die SQL Abfrage aus.";
$text['button-select_database']['en-us'] = "Select Database";
$text['button-select_database']['es-cl'] = "Seleccionar Base de Datos";
$text['button-select_database']['pt-pt'] = "Seleccionar Base de Dados";
$text['button-select_database']['fr-fr'] = "Choisir la Base de données";
$text['button-select_database']['pt-br'] = "Selecionar base de dados";
$text['button-select_database']['pl'] = "Wybierz bazę danych";
$text['button-select_database']['sv-se'] = "Välj Databas";
$text['button-select_database']['uk'] = "Вибрати БД";
$text['button-select_database']['de-at'] = "Datenbank wählen";
$text['button-manage']['en-us'] = "Manage";
$text['button-manage']['es-cl'] = "Administrar";
$text['button-manage']['pt-pt'] = "Gerir";
$text['button-manage']['fr-fr'] = "Gérer";
$text['button-manage']['pt-br'] = "Gerenciar";
$text['button-manage']['pl'] = "Zarządzaj";
$text['button-manage']['sv-se'] = "Hantera";
$text['button-manage']['uk'] = "Керувати";
$text['button-manage']['de-at'] = "Verwalten";
$text['button-backup']['en-us'] = "Backup";
$text['button-backup']['es-cl'] = "Respaldar";
$text['button-backup']['pt-pt'] = "Backup";
$text['button-backup']['fr-fr'] = "Sauvegarder";
$text['button-backup']['pt-br'] = "Backup";
$text['button-backup']['pl'] = "Kopia Zapasowa";
$text['button-backup']['sv-se'] = "Backup";
$text['button-backup']['uk'] = "Резервна копія";
$text['button-backup']['de-at'] = "Sichern";
<?php
$text['title-databases']['en-us'] = "Databases";
$text['title-databases']['es-cl'] = "Bases de datos";
$text['title-databases']['pt-pt'] = "Bases de Dados";
$text['title-databases']['fr-fr'] = "Bases de données";
$text['title-databases']['pt-br'] = "Base de dados";
$text['title-databases']['pl'] = "Bazy danych";
$text['title-databases']['sv-se'] = "Databaser";
$text['title-databases']['uk'] = "Бази даних";
$text['title-databases']['de-at'] = "Datenbanken";
$text['title-command']['en-us'] = "Command";
$text['title-command']['es-cl'] = "Comando";
$text['title-command']['pt-pt'] = "Comando";
$text['title-command']['fr-fr'] = "Commande";
$text['title-command']['pt-br'] = "Comando";
$text['title-command']['pl'] = "Polecenie";
$text['title-command']['sv-se'] = "Kommando";
$text['title-command']['uk'] = "Команди";
$text['title-command']['de-at'] = "Befehl";
$text['option-result_type_view']['en-us'] = "View";
$text['option-result_type_view']['es-cl'] = "Ver";
$text['option-result_type_view']['pt-pt'] = "Ver";
$text['option-result_type_view']['fr-fr'] = "Voir";
$text['option-result_type_view']['pt-br'] = "Visualizar";
$text['option-result_type_view']['pl'] = "Widok";
$text['option-result_type_view']['sv-se'] = "Granska";
$text['option-result_type_view']['uk'] = "Перегляд";
$text['option-result_type_view']['de-at'] = "Ansicht";
$text['option-result_type_insert']['en-us'] = "SQL";
$text['option-result_type_insert']['es-cl'] = "SQL";
$text['option-result_type_insert']['pt-pt'] = "SQL";
$text['option-result_type_insert']['fr-fr'] = "SQL";
$text['option-result_type_insert']['pt-br'] = "SQL";
$text['option-result_type_insert']['pl'] = "SQL";
$text['option-result_type_insert']['sv-se'] = "SQL";
$text['option-result_type_insert']['uk'] = "SQL ";
$text['option-result_type_insert']['de-at'] = "SQL";
$text['option-result_type_csv']['en-us'] = "CSV";
$text['option-result_type_csv']['es-cl'] = "CSV";
$text['option-result_type_csv']['pt-pt'] = "CSV";
$text['option-result_type_csv']['fr-fr'] = "CSV";
$text['option-result_type_csv']['pt-br'] = "CSV";
$text['option-result_type_csv']['pl'] = "CSV";
$text['option-result_type_csv']['sv-se'] = "CSV";
$text['option-result_type_csv']['uk'] = "CSV ";
$text['option-result_type_csv']['de-at'] = "CSV";
$text['label-table']['en-us'] = "Table";
$text['label-table']['es-cl'] = "Tabla";
$text['label-table']['pt-pt'] = "Tabela";
$text['label-table']['fr-fr'] = "Table";
$text['label-table']['pt-br'] = "Tabela";
$text['label-table']['pl'] = "Tabela";
$text['label-table']['sv-se'] = "TAbell";
$text['label-table']['uk'] = "Таблиця";
$text['label-table']['de-at'] = "Tabelle";
$text['label-switch']['en-us'] = "Switch";
$text['label-switch']['es-cl'] = "Comando de switch";
$text['label-switch']['pt-pt'] = "Comando Freeswitch";
$text['label-switch']['fr-fr'] = "Commande CLI Freeswitch";
$text['label-switch']['pt-br'] = "Comando Freeswitch ";
$text['label-switch']['pl'] = "PBX";
$text['label-switch']['sv-se'] = "Switch";
$text['label-switch']['uk'] = "FreeSwitch";
$text['label-switch']['de-at'] = "Switch";
$text['label-shell']['en-us'] = "Shell";
$text['label-shell']['es-cl'] = "Terminal de Comandos";
$text['label-shell']['pt-pt'] = "Comando Shell";
$text['label-shell']['fr-fr'] = "Commande Shell";
$text['label-shell']['pt-br'] = "Comando Shell ";
$text['label-shell']['pl'] = "Powłoka (shell)";
$text['label-shell']['sv-se'] = "Shell";
$text['label-shell']['uk'] = "Консоль";
$text['label-shell']['de-at'] = "Shell";
$text['label-results']['en-us'] = "Results";
$text['label-results']['es-cl'] = "Resultados";
$text['label-results']['pt-pt'] = "Resultados";
$text['label-results']['fr-fr'] = "Résultats";
$text['label-results']['pt-br'] = "Resultados";
$text['label-results']['pl'] = "Rezultaty";
$text['label-results']['sv-se'] = "Resultat";
$text['label-results']['uk'] = "Результати";
$text['label-results']['de-at'] = "Ergebnisse";
$text['label-result_type']['en-us'] = "Result";
$text['label-result_type']['es-cl'] = "Resultado";
$text['label-result_type']['pt-pt'] = "Resultado";
$text['label-result_type']['fr-fr'] = "Résultat";
$text['label-result_type']['pt-br'] = "Resultado";
$text['label-result_type']['pl'] = "Rezultat";
$text['label-result_type']['sv-se'] = "Resultat";
$text['label-result_type']['uk'] = "Результат";
$text['label-result_type']['de-at'] = "Ergebnis";
$text['label-response']['en-us'] = "Response";
$text['label-response']['es-cl'] = "Respuesta";
$text['label-response']['pt-pt'] = "Resposta";
$text['label-response']['fr-fr'] = "Réponse";
$text['label-response']['pt-br'] = "Resposta";
$text['label-response']['pl'] = "Odpowiedź";
$text['label-response']['sv-se'] = "Respons";
$text['label-response']['uk'] = "Відповідь";
$text['label-response']['de-at'] = "Antwort";
$text['label-reset']['en-us'] = "Reset";
$text['label-reset']['es-cl'] = "Reajustar";
$text['label-reset']['pt-pt'] = "Restabelecer";
$text['label-reset']['fr-fr'] = "Remettre";
$text['label-reset']['pt-br'] = "Restabelecer";
$text['label-reset']['pl'] = "Resetuj";
$text['label-reset']['he'] = "אפס";
$text['label-reset']['uk'] = "Скинути";
$text['label-reset']['sv-se'] = "Återställ";
$text['label-reset']['de-at'] = "Zurücksetzen";
$text['label-reset']['ro'] = "Inițializare";
$text['label-reset']['fa'] = "";
$text['label-reset']['ar-eg'] = "إعادة تعيين";
$text['label-records']['en-us'] = "Records";
$text['label-records']['es-cl'] = "Archivos";
$text['label-records']['pt-pt'] = "Registros";
$text['label-records']['fr-fr'] = "Enregistrements";
$text['label-records']['pt-br'] = "Registros";
$text['label-records']['pl'] = "Dokumentacja";
$text['label-records']['sv-se'] = "Uppgifter";
$text['label-records']['uk'] = "документація";
$text['label-records']['de-at'] = "Aufzeichnungen";
$text['label-sql']['en-us'] = "SQL";
$text['label-sql']['es-cl'] = "SQL";
$text['label-sql']['pt-pt'] = "SQL";
$text['label-sql']['fr-fr'] = "SQL";
$text['label-sql']['pt-br'] = "SQL";
$text['label-sql']['pl'] = "SQL";
$text['label-sql']['sv-se'] = "SQL";
$text['label-sql']['uk'] = "SQL";
$text['label-sql']['de-at'] = "SQL";
$text['label-php']['en-us'] = "PHP";
$text['label-php']['es-cl'] = "Comando PHP";
$text['label-php']['pt-pt'] = "Comandos PHP";
$text['label-php']['fr-fr'] = "Commande PHP";
$text['label-php']['pt-br'] = "Comandos PHP ";
$text['label-php']['pl'] = "PHP";
$text['label-php']['sv-se'] = "PHP";
$text['label-php']['uk'] = "PHP";
$text['label-php']['de-at'] = "PHP";
$text['label-execute']['en-us'] = "Execute Command";
$text['label-execute']['es-cl'] = "Ejecutar Comando";
$text['label-execute']['pt-pt'] = "Executar Comando";
$text['label-execute']['fr-fr'] = "Executer la Commande";
$text['label-execute']['pt-br'] = "Executar";
$text['label-execute']['pl'] = "Wykonywanie poleceń";
$text['label-execute']['sv-se'] = "Utför Kommando";
$text['label-execute']['uk'] = "Виконання команд";
$text['label-execute']['de-at'] = "Ausführen";
$text['label-error']['en-us'] = "Error";
$text['label-error']['es-cl'] = "Error";
$text['label-error']['pt-pt'] = "Erro";
$text['label-error']['fr-fr'] = "Erreur";
$text['label-error']['pt-br'] = "Erro";
$text['label-error']['pl'] = "Błąd";
$text['label-error']['sv-se'] = "Fel";
$text['label-error']['uk'] = "Помилка";
$text['label-error']['de-at'] = "Fehler";
$text['header-databases']['en-us'] = "Databases";
$text['header-databases']['es-cl'] = "Bases de datos";
$text['header-databases']['pt-pt'] = "Bases de Dados";
$text['header-databases']['fr-fr'] = "Bases de données";
$text['header-databases']['pt-br'] = "Base de dados";
$text['header-databases']['pl'] = "Bazy danych";
$text['header-databases']['sv-se'] = "Databaser";
$text['header-databases']['uk'] = "Бази даних";
$text['header-databases']['de-at'] = "Datenbanken";
$text['description-switch']['en-us'] = "Switch CLI. View valid commands with: 'help'.";
$text['description-switch']['es-cl'] = "Para un listado de comandos válidos use: help";
$text['description-switch']['pt-pt'] = "Para uma lista dos comandos válidos utilize: help";
$text['description-switch']['fr-fr'] = "Pour la liste des commandes valides, utiliser : help";
$text['description-switch']['pt-br'] = "Para verificar a lista de comandos válidos utilize: Ajuda";
$text['description-switch']['pl'] = "Aby uzyskać listę poprawnych poleceń użyj pomocy";
$text['description-switch']['sv-se'] = "För en lista med giltiga kommandon använd: help";
$text['description-switch']['uk'] = "Для перегляду списку команд виконайте команду: help";
$text['description-switch']['de-at'] = "Um eine Liste der gültigen Befehle zu bekommen tippen Sie: 'help'";
$text['description-shell']['en-us'] = "Execute system commands.";
$text['description-shell']['es-cl'] = "Comandos de sistema";
$text['description-shell']['pt-pt'] = "Comandos do sistema.";
$text['description-shell']['fr-fr'] = "Commande Système";
$text['description-shell']['pt-br'] = "Comando do sistema";
$text['description-shell']['pl'] = "Polecenia systemowe.";
$text['description-shell']['sv-se'] = "System Kommandon.";
$text['description-shell']['uk'] = "Системні команди";
$text['description-shell']['de-at'] = "System Befehle";
$text['description-sql']['en-us'] = "Execute statements against the database.";
$text['description-sql']['es-cl'] = "Ejecutar instrucciones de consulta contra la base de datos.";
$text['description-sql']['pt-pt'] = "Executar instruções de consulta no banco de dados.";
$text['description-sql']['fr-fr'] = "Exécuter les instructions de requête contre la base de données.";
$text['description-sql']['pt-br'] = "Executar instruções de consulta no banco de dados.";
$text['description-sql']['pl'] = "Wykonać polecenie zapytania do bazy danych.";
$text['description-sql']['sv-se'] = "Utför fråge uttalanden mot databasen.";
$text['description-sql']['uk'] = "Виконання операторів запитів до бази даних.";
$text['description-sql']['de-at'] = "Führen Sie Abfrage-Anweisungen für die Datenbank.";
$text['description-php']['en-us'] = "Execute PHP commands. See: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['es-cl'] = "Utilice el siguiente enlace como referencia para PHP: <a href='http://php.net/manual/' target='_blank'>Manual PHP</a>";
$text['description-php']['pt-pt'] = "Utilize a ligação seguinte como referência para o PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['fr-fr'] = "Utiliser le lien suivant comme référence pour le PHP: <a href='http://php.net/manual/' target='_blank'>Manuel PHP</a>";
$text['description-php']['pt-br'] = "Utilize a ligação seguinte como referência para o PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['pl'] = "Aby użyć odniesienia do PHP kliknij na ten link: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['sv-se'] = "Använd följande länk som en referens gällande PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['uk'] = "Посилання на довідку PHP: <a href='http://php.net/manual/' target='_blank'>PHP Manual</a>";
$text['description-php']['de-at'] = "Benutzen Sie folgenden Link als PHP Referenz: <a href='http://php.net/manual/>PHP Manual</a>";
$text['description-execute']['en-us'] = "Provides a conventient way to execute system, PHP, switch and SQL commands.";
$text['description-execute']['es-cl'] = "Provee un modo conveniente de ejecutar comandos de sistema, PHP o del switch.";
$text['description-execute']['pt-pt'] = "Oferece uma maneira fácil de executar comandos de sistema, PHP, e switch.";
$text['description-execute']['fr-fr'] = "Fournir un moyen pour executer des commandes système, PHP et switch. ";
$text['description-execute']['pt-br'] = "Utilize facilmente a execução de comandos do sistema, PHP e switch ";
$text['description-execute']['pl'] = "Ta funkcja zapewnia dogodny sposób wykonywania poleceń systemowych, PHP oraz switch.";
$text['description-execute']['sv-se'] = "Erbjuder ett smidigt sätt att köra system, PHP och switch kommandon.";
$text['description-execute']['uk'] = "Забезпечує зручний спосіб виконати команди PHP, switch, а також системні команди";
$text['description-execute']['de-at'] = "Bietet die Möglichkeit System, PHP und Switch Kommandos auszuführen.";
$text['description-databases']['en-us'] = "Select the database to execute SQL query statements against.";
$text['description-databases']['es-cl'] = "Seleccione la base de datos para ejecutar la consulta SQL.";
$text['description-databases']['pt-pt'] = "Escolha a base de dados a utilizar.";
$text['description-databases']['fr-fr'] = "Choisir la base de données utilisée par la requête SQL.";
$text['description-databases']['pt-br'] = "Informações sobre a base de dados";
$text['description-databases']['pl'] = "Informacje o bazie danych.";
$text['description-databases']['sv-se'] = "Välj databas att använda för SQL Fråga.";
$text['description-databases']['uk'] = "Інформація про базу даних.";
$text['description-databases']['de-at'] = "Wählen Sie die Datenbank für die SQL Abfrage aus.";
$text['button-select_database']['en-us'] = "Select Database";
$text['button-select_database']['es-cl'] = "Seleccionar Base de Datos";
$text['button-select_database']['pt-pt'] = "Seleccionar Base de Dados";
$text['button-select_database']['fr-fr'] = "Choisir la Base de données";
$text['button-select_database']['pt-br'] = "Selecionar base de dados";
$text['button-select_database']['pl'] = "Wybierz bazę danych";
$text['button-select_database']['sv-se'] = "Välj Databas";
$text['button-select_database']['uk'] = "Вибрати БД";
$text['button-select_database']['de-at'] = "Datenbank wählen";
$text['button-manage']['en-us'] = "Manage";
$text['button-manage']['es-cl'] = "Administrar";
$text['button-manage']['pt-pt'] = "Gerir";
$text['button-manage']['fr-fr'] = "Gérer";
$text['button-manage']['pt-br'] = "Gerenciar";
$text['button-manage']['pl'] = "Zarządzaj";
$text['button-manage']['sv-se'] = "Hantera";
$text['button-manage']['uk'] = "Керувати";
$text['button-manage']['de-at'] = "Verwalten";
$text['button-backup']['en-us'] = "Backup";
$text['button-backup']['es-cl'] = "Respaldar";
$text['button-backup']['pt-pt'] = "Backup";
$text['button-backup']['fr-fr'] = "Sauvegarder";
$text['button-backup']['pt-br'] = "Backup";
$text['button-backup']['pl'] = "Kopia Zapasowa";
$text['button-backup']['sv-se'] = "Backup";
$text['button-backup']['uk'] = "Резервна копія";
$text['button-backup']['de-at'] = "Sichern";
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,175 +1,175 @@
<?php
if ($domains_processed == 1) {
//define array of settings
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.pdf';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.tif';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.tiff';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_logo';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Path to image/logo file displayed in the header of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_font';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'times';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Font used to generate cover page. Can be full path to .ttf file or font name alredy installed.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_footer';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = "The information contained in this facsimile is intended for the sole confidential use of the recipient(s) designated above, and may contain confidential and legally privileged information. If you are not the intended recipient, you are hereby notified that the review, disclosure, dissemination, distribution, copying, duplication in any form, and taking of any action in regards to the contents of this document - except with respect to its direct delivery to the intended recipient - is strictly prohibited. Please notify the sender immediately and destroy this cover sheet and all attachments. If stored or viewed electronically, please permanently delete it from your system.";
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Notice displayed in the footer of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_header';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Default information displayed beneath the logo in the header of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'page_size';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'letter';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Set the default page size of new faxes.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'resolution';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'normal';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Set the default transmission quality of new faxes.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'variable';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = 'fax_enable_t38=true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Enable T.38';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'variable';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = 'fax_enable_t38_request=false';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Send a T38 reinvite when a fax tone is detected.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'keep_local';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Keep the file after sending or receiving the fax.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_mode';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'queue';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = '';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_retry_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '5';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Number of attempts to send fax (count only calls with answer)';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_retry_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '15';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before we make next call after answered call';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_retry_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '3';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Number of unanswered attempts in sequence';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_retry_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '30';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before we make next call after no answered call';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '3';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Giveup reach the destination after this number of sequences';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '300';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before next call sequence';
$x++;
//get an array of the default settings
$sql = "select * from v_default_settings ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//find the missing default settings
$x = 0;
foreach ($array as $setting) {
$found = false;
$missing[$x] = $setting;
foreach ($default_settings as $row) {
if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
}
unset($missing);
}
<?php
if ($domains_processed == 1) {
//define array of settings
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.pdf';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.tif';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x = 0;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'allowed_extension';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = '.tiff';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = '';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_logo';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Path to image/logo file displayed in the header of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_font';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'times';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Font used to generate cover page. Can be full path to .ttf file or font name alredy installed.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_footer';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = "The information contained in this facsimile is intended for the sole confidential use of the recipient(s) designated above, and may contain confidential and legally privileged information. If you are not the intended recipient, you are hereby notified that the review, disclosure, dissemination, distribution, copying, duplication in any form, and taking of any action in regards to the contents of this document - except with respect to its direct delivery to the intended recipient - is strictly prohibited. Please notify the sender immediately and destroy this cover sheet and all attachments. If stored or viewed electronically, please permanently delete it from your system.";
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Notice displayed in the footer of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'cover_header';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = '';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Default information displayed beneath the logo in the header of the cover sheet.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'page_size';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'letter';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Set the default page size of new faxes.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'resolution';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'normal';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Set the default transmission quality of new faxes.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'variable';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = 'fax_enable_t38=true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Enable T.38';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'variable';
$array[$x]['default_setting_name'] = 'array';
$array[$x]['default_setting_value'] = 'fax_enable_t38_request=false';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Send a T38 reinvite when a fax tone is detected.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'keep_local';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Keep the file after sending or receiving the fax.';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_mode';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'queue';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = '';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_retry_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '5';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Number of attempts to send fax (count only calls with answer)';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_retry_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '15';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before we make next call after answered call';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_retry_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '3';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Number of unanswered attempts in sequence';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_retry_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '30';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before we make next call after no answered call';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_limit';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '3';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Giveup reach the destination after this number of sequences';
$x++;
$array[$x]['default_setting_category'] = 'fax';
$array[$x]['default_setting_subcategory'] = 'send_no_answer_interval';
$array[$x]['default_setting_name'] = 'numeric';
$array[$x]['default_setting_value'] = '300';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Delay before next call sequence';
$x++;
//get an array of the default settings
$sql = "select * from v_default_settings ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//find the missing default settings
$x = 0;
foreach ($array as $setting) {
$found = false;
$missing[$x] = $setting;
foreach ($default_settings as $row) {
if (trim($row['default_setting_subcategory']) == trim($setting['default_setting_subcategory'])) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
}
unset($missing);
}
?>

View File

@@ -1,146 +1,146 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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";
require_once "resources/paging.php";
if (permission_exists('fax_extension_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"])) {
$fax_uuid = check_str($_REQUEST["id"]);
}
//get the data
$sql = "select * from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
echo "access denied";
exit;
}
foreach ($result as &$row) {
$fax_extension = $row["fax_extension"];
$fax_name = $row["fax_name"];
$fax_email = $row["fax_email"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"];
$fax_email_outbound_subject_tag = $row["fax_email_outbound_subject_tag"];
$fax_email_outbound_authorized_senders = $row["fax_email_outbound_authorized_senders"];
$fax_pin_number = $row["fax_pin_number"];
$fax_caller_id_name = $row["fax_caller_id_name"];
$fax_caller_id_number = $row["fax_caller_id_number"];
$fax_forward_number = $row["fax_forward_number"];
$fax_description = 'copy: '.$row["fax_description"];
}
unset ($prep_statement);
//copy the fax extension
$fax_uuid = uuid();
$dialplan_uuid = uuid();
$sql = "insert into v_fax ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "fax_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "fax_extension, ";
$sql .= "fax_name, ";
$sql .= "fax_email, ";
$sql .= "fax_email_connection_type, ";
$sql .= "fax_email_connection_host, ";
$sql .= "fax_email_connection_port, ";
$sql .= "fax_email_connection_security, ";
$sql .= "fax_email_connection_validate, ";
$sql .= "fax_email_connection_username, ";
$sql .= "fax_email_connection_password, ";
$sql .= "fax_email_connection_mailbox, ";
$sql .= "fax_email_inbound_subject_tag, ";
$sql .= "fax_email_outbound_subject_tag, ";
$sql .= "fax_email_outbound_authorized_senders, ";
$sql .= "fax_pin_number, ";
$sql .= "fax_caller_id_name, ";
$sql .= "fax_caller_id_number, ";
if (strlen($fax_forward_number) > 0) {
$sql .= "fax_forward_number, ";
}
$sql .= "fax_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'$fax_uuid', ";
$sql .= "'$dialplan_uuid', ";
$sql .= "'$fax_extension', ";
$sql .= "'$fax_name', ";
$sql .= "'$fax_email', ";
$sql .= "'$fax_email_connection_type', ";
$sql .= "'$fax_email_connection_host', ";
$sql .= "'$fax_email_connection_port', ";
$sql .= "'$fax_email_connection_security', ";
$sql .= "'$fax_email_connection_validate', ";
$sql .= "'$fax_email_connection_username', ";
$sql .= "'$fax_email_connection_password', ";
$sql .= "'$fax_email_connection_mailbox', ";
$sql .= "'$fax_email_inbound_subject_tag', ";
$sql .= "'$fax_email_outbound_subject_tag', ";
$sql .= "'$fax_email_outbound_authorized_senders', ";
$sql .= "'$fax_pin_number', ";
$sql .= "'$fax_caller_id_name', ";
$sql .= "'$fax_caller_id_number', ";
if (strlen($fax_forward_number) > 0) {
$sql .= "'$fax_forward_number', ";
}
$sql .= "'$fax_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//redirect the user
$_SESSION["message"] = $text['confirm-copy'];
header("Location: fax.php");
return;
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. 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";
require_once "resources/paging.php";
if (permission_exists('fax_extension_add')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set the http get/post variable(s) to a php variable
if (isset($_REQUEST["id"])) {
$fax_uuid = check_str($_REQUEST["id"]);
}
//get the data
$sql = "select * from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
echo "access denied";
exit;
}
foreach ($result as &$row) {
$fax_extension = $row["fax_extension"];
$fax_name = $row["fax_name"];
$fax_email = $row["fax_email"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"];
$fax_email_outbound_subject_tag = $row["fax_email_outbound_subject_tag"];
$fax_email_outbound_authorized_senders = $row["fax_email_outbound_authorized_senders"];
$fax_pin_number = $row["fax_pin_number"];
$fax_caller_id_name = $row["fax_caller_id_name"];
$fax_caller_id_number = $row["fax_caller_id_number"];
$fax_forward_number = $row["fax_forward_number"];
$fax_description = 'copy: '.$row["fax_description"];
}
unset ($prep_statement);
//copy the fax extension
$fax_uuid = uuid();
$dialplan_uuid = uuid();
$sql = "insert into v_fax ";
$sql .= "(";
$sql .= "domain_uuid, ";
$sql .= "fax_uuid, ";
$sql .= "dialplan_uuid, ";
$sql .= "fax_extension, ";
$sql .= "fax_name, ";
$sql .= "fax_email, ";
$sql .= "fax_email_connection_type, ";
$sql .= "fax_email_connection_host, ";
$sql .= "fax_email_connection_port, ";
$sql .= "fax_email_connection_security, ";
$sql .= "fax_email_connection_validate, ";
$sql .= "fax_email_connection_username, ";
$sql .= "fax_email_connection_password, ";
$sql .= "fax_email_connection_mailbox, ";
$sql .= "fax_email_inbound_subject_tag, ";
$sql .= "fax_email_outbound_subject_tag, ";
$sql .= "fax_email_outbound_authorized_senders, ";
$sql .= "fax_pin_number, ";
$sql .= "fax_caller_id_name, ";
$sql .= "fax_caller_id_number, ";
if (strlen($fax_forward_number) > 0) {
$sql .= "fax_forward_number, ";
}
$sql .= "fax_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'".$_SESSION['domain_uuid']."', ";
$sql .= "'$fax_uuid', ";
$sql .= "'$dialplan_uuid', ";
$sql .= "'$fax_extension', ";
$sql .= "'$fax_name', ";
$sql .= "'$fax_email', ";
$sql .= "'$fax_email_connection_type', ";
$sql .= "'$fax_email_connection_host', ";
$sql .= "'$fax_email_connection_port', ";
$sql .= "'$fax_email_connection_security', ";
$sql .= "'$fax_email_connection_validate', ";
$sql .= "'$fax_email_connection_username', ";
$sql .= "'$fax_email_connection_password', ";
$sql .= "'$fax_email_connection_mailbox', ";
$sql .= "'$fax_email_inbound_subject_tag', ";
$sql .= "'$fax_email_outbound_subject_tag', ";
$sql .= "'$fax_email_outbound_authorized_senders', ";
$sql .= "'$fax_pin_number', ";
$sql .= "'$fax_caller_id_name', ";
$sql .= "'$fax_caller_id_number', ";
if (strlen($fax_forward_number) > 0) {
$sql .= "'$fax_forward_number', ";
}
$sql .= "'$fax_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//redirect the user
$_SESSION["message"] = $text['confirm-copy'];
header("Location: fax.php");
return;
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,387 +1,387 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/functions/object_to_array.php";
require_once "resources/functions/parse_message.php";
require_once "resources/classes/text.php";
//get accounts to monitor
$sql = "select * from v_fax ";
$sql .= "where fax_email_connection_host <> '' ";
$sql .= "and fax_email_connection_host is not null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset($sql, $prep_statement);
function arr_to_map(&$arr){
if(is_array($arr)){
$map = Array();
foreach($arr as &$val){
$map[$val] = true;
}
return $map;
}
return false;
}
if (sizeof($result) != 0) {
//load default settings
$default_settings = load_default_settings();
//get event socket connection parameters
$sql = "select event_socket_ip_address, event_socket_port, event_socket_password from v_settings";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$record = $prep_statement->fetch(PDO::FETCH_NAMED);
$event_socket['ip_address'] = $record['event_socket_ip_address'];
$event_socket['port'] = $record['event_socket_port'];
$event_socket['password'] = $record['event_socket_password'];
unset($sql, $prep_statement, $record);
$fax_send_mode_default = $_SESSION['fax']['send_mode']['text'];
if(strlen($fax_send_mode_default) == 0){
$fax_send_mode_default = 'direct';
}
$fax_cover_font_default = $_SESSION['fax']['cover_font']['text'];
$fax_allowed_extension_default = arr_to_map($_SESSION['fax']['allowed_extension']);
if($fax_allowed_extension_default == false){
$tmp = Array('.pdf', '.tiff', '.tif');
$fax_allowed_extension_default = arr_to_map($tmp);
}
foreach ($result as $row) {
//get fax server and account connection details
$fax_uuid = $row["fax_uuid"];
$domain_uuid = $row["domain_uuid"];
$fax_extension = $row["fax_extension"];
$fax_email = $row["fax_email"];
$fax_pin_number = $row["fax_pin_number"];
$fax_caller_id_name = $row["fax_caller_id_name"];
$fax_caller_id_number = $row["fax_caller_id_number"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_outbound_subject_tag = $row["fax_email_outbound_subject_tag"];
$fax_email_outbound_authorized_senders = $row["fax_email_outbound_authorized_senders"];
$fax_send_greeting = $row["fax_send_greeting"];
//load default settings, then domain settings over top
unset($_SESSION);
$_SESSION = $default_settings;
load_domain_settings($domain_uuid);
$fax_send_mode = $_SESSION['fax']['send_mode']['text'];
if(strlen($fax_send_mode) == 0){
$fax_send_mode = $fax_send_mode_default;
}
$fax_cover_font = $_SESSION['fax']['cover_font']['text'];
if(strlen($fax_cover_font) == 0){
$fax_cover_font = $fax_cover_font_default;
}
$fax_allowed_extension = arr_to_map($_SESSION['fax']['allowed_extension']);
if($fax_allowed_extension == false){
$fax_allowed_extension = $fax_allowed_extension_default;
}
//load event socket connection parameters
$_SESSION['event_socket_ip_address'] = $event_socket['ip_address'];
$_SESSION['event_socket_port'] = $event_socket['port'];
$_SESSION['event_socket_password'] = $event_socket['password'];
//get domain name, set local and session variables
$sql = "select domain_name from v_domains where domain_uuid = '".$domain_uuid."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$record = $prep_statement->fetch(PDO::FETCH_NAMED);
$domain_name = $record['domain_name'];
$_SESSION['domain_name'] = $record['domain_name'];
$_SESSION['domain_uuid'] = $domain_uuid;
unset($sql, $prep_statement, $record);
//set needed variables
$fax_page_size = $_SESSION['fax']['page_size']['text'];
$fax_resolution = $_SESSION['fax']['resolution']['text'];
$fax_header = $_SESSION['fax']['cover_header']['text'];
$fax_footer = $_SESSION['fax']['cover_footer']['text'];
$fax_sender = $fax_caller_id_name;
//open account connection
$fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type;
$fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls";
$fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert";
$fax_email_connection .= "}".$fax_email_connection_mailbox;
if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) {
print_r(imap_errors());
continue; // try next account
}
//get emails
if ($emails = imap_search($connection, "SUBJECT \"[".$fax_email_outbound_subject_tag."]\"", SE_UID)) {
//get authorized sender(s)
if (substr_count($fax_email_outbound_authorized_senders, ',') > 0) {
$authorized_senders = explode(',', $fax_email_outbound_authorized_senders);
}
else {
$authorized_senders[] = $fax_email_outbound_authorized_senders;
}
sort($emails); // oldest first
foreach ($emails as $email_id) {
$metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID));
//format from address
$tmp = object_to_array(imap_rfc822_parse_adrlist($metadata[0]['from'], null));
$metadata[0]['from'] = $tmp[0]['mailbox']."@".$tmp[0]['host'];
//check sender
$sender_authorized = false;
foreach ($authorized_senders as $authorized_sender) {
if (substr_count($metadata[0]['from'], $authorized_sender) > 0) { $sender_authorized = true; }
}
if ($sender_authorized) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//sent sender address (used in api call)
$mailto_address_user = $metadata[0]['from'];
//parse recipient fax number(s)
$fax_subject = $metadata[0]['subject'];
$tmp = explode(']', $fax_subject); //closing bracket of subject tag
$tmp = $tmp[1];
$tmp = str_replace(':', ',', $tmp);
$tmp = str_replace(';', ',', $tmp);
$tmp = str_replace('|', ',', $tmp);
if (substr_count($tmp, ',') > 0) {
$fax_numbers = explode(',', $tmp);
}
else {
$fax_numbers[] = $tmp;
}
unset($fax_subject); //clear so not on cover page
$message = parse_message($connection, $email_id, FT_UID);
//get email body (if any) for cover page
$fax_message = '';
//Debug print
print('attachments:' . "\n");
foreach($message['attachments'] as &$attachment){
print(' - ' . $attachment['type'] . ' - ' . $attachment['name'] . ': ' . $attachment['size'] . ' disposition: ' . $attachment['disposition'] . "\n");
}
print('messages:' . "\n");
foreach($message['messages'] as &$msg){
print(' - ' . $msg['type'] . ' - ' . $msg['size'] . "\n");
// print($msg['data']);
// print("\n--------------------------------------------------------\n");
}
foreach($message['messages'] as &$msg){
if(($msg['size'] > 0) && ($msg['type'] == 'text/plain')) {
$fax_message = $msg['data'];
break;
}
}
if ($fax_message != '') {
$fax_message = strip_tags($fax_message);
$fax_message = str_replace("\r\n\r\n", "\r\n", $fax_message);
}
// set fax directory (used for pdf creation - cover and/or attachments)
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax'.(($domain_name != '') ? '/'.$domain_name : null);
//handle attachments (if any)
$emailed_files = Array();
$attachments = $message['attachments'];
if (sizeof($attachments) > 0) {
foreach ($attachments as &$attachment) {
$fax_file_extension = pathinfo($attachment['name'], PATHINFO_EXTENSION);
//block unknown files
if ($fax_file_extension == '') {continue; }
//block unauthorized files
if (!$fax_allowed_extension['.' . $fax_file_extension]) { continue; }
//support only attachments
if($attachment['disposition'] != 'attachment'){ continue; }
//store attachment in local fax temp folder
$local_filepath = $fax_dir.'/'.$fax_extension.'/temp/'.$attachment['name'];
file_put_contents($local_filepath, $attachment['data']);
//load files array with attachments
$emailed_files['error'][] = 0;
$emailed_files['size'][] = $attachment['size'];
$emailed_files['tmp_name'][] = $attachment['name'];
$emailed_files['name'][] = $attachment['name'];
}
}
//Debug print
print('***********************' . "\n");
print('fax message:' . "\n");
print(' - length: ' . strlen($fax_message) . "\n");
print('fax files [' . sizeof($emailed_files['name']) . ']:' . "\n");
for($i = 0; $i < sizeof($emailed_files['name']);++$i){
print(' - ' . $emailed_files['name'][$i] . ' - ' . $emailed_files['size'][$i] . "\n");
}
print('***********************' . "\n");
//send fax
$cwd = getcwd();
$included = true;
require("fax_send.php");
if($cwd){
chdir($cwd);
}
//reset variables
unset($fax_numbers);
}
//delete email
if (imap_delete($connection, $email_id, FT_UID)) {
imap_expunge($connection);
}
}
unset($authorized_senders);
}
//close account connection
imap_close($connection);
}
}
//functions used above
function load_default_settings() {
global $db;
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_enabled = 'true' ";
try {
$prep_statement = $db->prepare($sql . " order by default_setting_order asc ");
$prep_statement->execute();
}
catch(PDOException $e) {
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
}
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//load the settings into an array
foreach ($result as $row) {
$name = $row['default_setting_name'];
$category = $row['default_setting_category'];
$subcategory = $row['default_setting_subcategory'];
if (strlen($subcategory) == 0) {
if ($name == "array") {
$settings[$category][] = $row['default_setting_value'];
}
else {
$settings[$category][$name] = $row['default_setting_value'];
}
} else {
if ($name == "array") {
$settings[$category][$subcategory][] = $row['default_setting_value'];
}
else {
$settings[$category][$subcategory][$name] = $row['default_setting_value'];
$settings[$category][$subcategory][$name] = $row['default_setting_value'];
}
}
}
return $settings;
}
function load_domain_settings($domain_uuid) {
global $db;
if ($domain_uuid) {
$sql = "select * from v_domain_settings ";
$sql .= "where domain_uuid = '" . $domain_uuid . "' ";
$sql .= "and domain_setting_enabled = 'true' ";
try {
$prep_statement = $db->prepare($sql . " order by domain_setting_order asc ");
$prep_statement->execute();
}
catch(PDOException $e) {
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
}
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//unset the arrays that domains are overriding
foreach ($result as $row) {
$name = $row['domain_setting_name'];
$category = $row['domain_setting_category'];
$subcategory = $row['domain_setting_subcategory'];
if ($name == "array") {
unset($_SESSION[$category][$subcategory]);
}
}
//set the settings as a session
foreach ($result as $row) {
$name = $row['domain_setting_name'];
$category = $row['domain_setting_category'];
$subcategory = $row['domain_setting_subcategory'];
if (strlen($subcategory) == 0) {
//$$category[$name] = $row['domain_setting_value'];
if ($name == "array") {
$_SESSION[$category][] = $row['domain_setting_value'];
}
else {
$_SESSION[$category][$name] = $row['domain_setting_value'];
}
} else {
//$$category[$subcategory][$name] = $row['domain_setting_value'];
if ($name == "array") {
$_SESSION[$category][$subcategory][] = $row['domain_setting_value'];
}
else {
$_SESSION[$category][$subcategory][$name] = $row['domain_setting_value'];
}
}
}
}
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/functions/object_to_array.php";
require_once "resources/functions/parse_message.php";
require_once "resources/classes/text.php";
//get accounts to monitor
$sql = "select * from v_fax ";
$sql .= "where fax_email_connection_host <> '' ";
$sql .= "and fax_email_connection_host is not null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset($sql, $prep_statement);
function arr_to_map(&$arr){
if(is_array($arr)){
$map = Array();
foreach($arr as &$val){
$map[$val] = true;
}
return $map;
}
return false;
}
if (sizeof($result) != 0) {
//load default settings
$default_settings = load_default_settings();
//get event socket connection parameters
$sql = "select event_socket_ip_address, event_socket_port, event_socket_password from v_settings";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$record = $prep_statement->fetch(PDO::FETCH_NAMED);
$event_socket['ip_address'] = $record['event_socket_ip_address'];
$event_socket['port'] = $record['event_socket_port'];
$event_socket['password'] = $record['event_socket_password'];
unset($sql, $prep_statement, $record);
$fax_send_mode_default = $_SESSION['fax']['send_mode']['text'];
if(strlen($fax_send_mode_default) == 0){
$fax_send_mode_default = 'direct';
}
$fax_cover_font_default = $_SESSION['fax']['cover_font']['text'];
$fax_allowed_extension_default = arr_to_map($_SESSION['fax']['allowed_extension']);
if($fax_allowed_extension_default == false){
$tmp = Array('.pdf', '.tiff', '.tif');
$fax_allowed_extension_default = arr_to_map($tmp);
}
foreach ($result as $row) {
//get fax server and account connection details
$fax_uuid = $row["fax_uuid"];
$domain_uuid = $row["domain_uuid"];
$fax_extension = $row["fax_extension"];
$fax_email = $row["fax_email"];
$fax_pin_number = $row["fax_pin_number"];
$fax_caller_id_name = $row["fax_caller_id_name"];
$fax_caller_id_number = $row["fax_caller_id_number"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_outbound_subject_tag = $row["fax_email_outbound_subject_tag"];
$fax_email_outbound_authorized_senders = $row["fax_email_outbound_authorized_senders"];
$fax_send_greeting = $row["fax_send_greeting"];
//load default settings, then domain settings over top
unset($_SESSION);
$_SESSION = $default_settings;
load_domain_settings($domain_uuid);
$fax_send_mode = $_SESSION['fax']['send_mode']['text'];
if(strlen($fax_send_mode) == 0){
$fax_send_mode = $fax_send_mode_default;
}
$fax_cover_font = $_SESSION['fax']['cover_font']['text'];
if(strlen($fax_cover_font) == 0){
$fax_cover_font = $fax_cover_font_default;
}
$fax_allowed_extension = arr_to_map($_SESSION['fax']['allowed_extension']);
if($fax_allowed_extension == false){
$fax_allowed_extension = $fax_allowed_extension_default;
}
//load event socket connection parameters
$_SESSION['event_socket_ip_address'] = $event_socket['ip_address'];
$_SESSION['event_socket_port'] = $event_socket['port'];
$_SESSION['event_socket_password'] = $event_socket['password'];
//get domain name, set local and session variables
$sql = "select domain_name from v_domains where domain_uuid = '".$domain_uuid."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$record = $prep_statement->fetch(PDO::FETCH_NAMED);
$domain_name = $record['domain_name'];
$_SESSION['domain_name'] = $record['domain_name'];
$_SESSION['domain_uuid'] = $domain_uuid;
unset($sql, $prep_statement, $record);
//set needed variables
$fax_page_size = $_SESSION['fax']['page_size']['text'];
$fax_resolution = $_SESSION['fax']['resolution']['text'];
$fax_header = $_SESSION['fax']['cover_header']['text'];
$fax_footer = $_SESSION['fax']['cover_footer']['text'];
$fax_sender = $fax_caller_id_name;
//open account connection
$fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type;
$fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls";
$fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert";
$fax_email_connection .= "}".$fax_email_connection_mailbox;
if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) {
print_r(imap_errors());
continue; // try next account
}
//get emails
if ($emails = imap_search($connection, "SUBJECT \"[".$fax_email_outbound_subject_tag."]\"", SE_UID)) {
//get authorized sender(s)
if (substr_count($fax_email_outbound_authorized_senders, ',') > 0) {
$authorized_senders = explode(',', $fax_email_outbound_authorized_senders);
}
else {
$authorized_senders[] = $fax_email_outbound_authorized_senders;
}
sort($emails); // oldest first
foreach ($emails as $email_id) {
$metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID));
//format from address
$tmp = object_to_array(imap_rfc822_parse_adrlist($metadata[0]['from'], null));
$metadata[0]['from'] = $tmp[0]['mailbox']."@".$tmp[0]['host'];
//check sender
$sender_authorized = false;
foreach ($authorized_senders as $authorized_sender) {
if (substr_count($metadata[0]['from'], $authorized_sender) > 0) { $sender_authorized = true; }
}
if ($sender_authorized) {
//add multi-lingual support
$language = new text;
$text = $language->get();
//sent sender address (used in api call)
$mailto_address_user = $metadata[0]['from'];
//parse recipient fax number(s)
$fax_subject = $metadata[0]['subject'];
$tmp = explode(']', $fax_subject); //closing bracket of subject tag
$tmp = $tmp[1];
$tmp = str_replace(':', ',', $tmp);
$tmp = str_replace(';', ',', $tmp);
$tmp = str_replace('|', ',', $tmp);
if (substr_count($tmp, ',') > 0) {
$fax_numbers = explode(',', $tmp);
}
else {
$fax_numbers[] = $tmp;
}
unset($fax_subject); //clear so not on cover page
$message = parse_message($connection, $email_id, FT_UID);
//get email body (if any) for cover page
$fax_message = '';
//Debug print
print('attachments:' . "\n");
foreach($message['attachments'] as &$attachment){
print(' - ' . $attachment['type'] . ' - ' . $attachment['name'] . ': ' . $attachment['size'] . ' disposition: ' . $attachment['disposition'] . "\n");
}
print('messages:' . "\n");
foreach($message['messages'] as &$msg){
print(' - ' . $msg['type'] . ' - ' . $msg['size'] . "\n");
// print($msg['data']);
// print("\n--------------------------------------------------------\n");
}
foreach($message['messages'] as &$msg){
if(($msg['size'] > 0) && ($msg['type'] == 'text/plain')) {
$fax_message = $msg['data'];
break;
}
}
if ($fax_message != '') {
$fax_message = strip_tags($fax_message);
$fax_message = str_replace("\r\n\r\n", "\r\n", $fax_message);
}
// set fax directory (used for pdf creation - cover and/or attachments)
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax'.(($domain_name != '') ? '/'.$domain_name : null);
//handle attachments (if any)
$emailed_files = Array();
$attachments = $message['attachments'];
if (sizeof($attachments) > 0) {
foreach ($attachments as &$attachment) {
$fax_file_extension = pathinfo($attachment['name'], PATHINFO_EXTENSION);
//block unknown files
if ($fax_file_extension == '') {continue; }
//block unauthorized files
if (!$fax_allowed_extension['.' . $fax_file_extension]) { continue; }
//support only attachments
if($attachment['disposition'] != 'attachment'){ continue; }
//store attachment in local fax temp folder
$local_filepath = $fax_dir.'/'.$fax_extension.'/temp/'.$attachment['name'];
file_put_contents($local_filepath, $attachment['data']);
//load files array with attachments
$emailed_files['error'][] = 0;
$emailed_files['size'][] = $attachment['size'];
$emailed_files['tmp_name'][] = $attachment['name'];
$emailed_files['name'][] = $attachment['name'];
}
}
//Debug print
print('***********************' . "\n");
print('fax message:' . "\n");
print(' - length: ' . strlen($fax_message) . "\n");
print('fax files [' . sizeof($emailed_files['name']) . ']:' . "\n");
for($i = 0; $i < sizeof($emailed_files['name']);++$i){
print(' - ' . $emailed_files['name'][$i] . ' - ' . $emailed_files['size'][$i] . "\n");
}
print('***********************' . "\n");
//send fax
$cwd = getcwd();
$included = true;
require("fax_send.php");
if($cwd){
chdir($cwd);
}
//reset variables
unset($fax_numbers);
}
//delete email
if (imap_delete($connection, $email_id, FT_UID)) {
imap_expunge($connection);
}
}
unset($authorized_senders);
}
//close account connection
imap_close($connection);
}
}
//functions used above
function load_default_settings() {
global $db;
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_enabled = 'true' ";
try {
$prep_statement = $db->prepare($sql . " order by default_setting_order asc ");
$prep_statement->execute();
}
catch(PDOException $e) {
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
}
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//load the settings into an array
foreach ($result as $row) {
$name = $row['default_setting_name'];
$category = $row['default_setting_category'];
$subcategory = $row['default_setting_subcategory'];
if (strlen($subcategory) == 0) {
if ($name == "array") {
$settings[$category][] = $row['default_setting_value'];
}
else {
$settings[$category][$name] = $row['default_setting_value'];
}
} else {
if ($name == "array") {
$settings[$category][$subcategory][] = $row['default_setting_value'];
}
else {
$settings[$category][$subcategory][$name] = $row['default_setting_value'];
$settings[$category][$subcategory][$name] = $row['default_setting_value'];
}
}
}
return $settings;
}
function load_domain_settings($domain_uuid) {
global $db;
if ($domain_uuid) {
$sql = "select * from v_domain_settings ";
$sql .= "where domain_uuid = '" . $domain_uuid . "' ";
$sql .= "and domain_setting_enabled = 'true' ";
try {
$prep_statement = $db->prepare($sql . " order by domain_setting_order asc ");
$prep_statement->execute();
}
catch(PDOException $e) {
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
}
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
//unset the arrays that domains are overriding
foreach ($result as $row) {
$name = $row['domain_setting_name'];
$category = $row['domain_setting_category'];
$subcategory = $row['domain_setting_subcategory'];
if ($name == "array") {
unset($_SESSION[$category][$subcategory]);
}
}
//set the settings as a session
foreach ($result as $row) {
$name = $row['domain_setting_name'];
$category = $row['domain_setting_category'];
$subcategory = $row['domain_setting_subcategory'];
if (strlen($subcategory) == 0) {
//$$category[$name] = $row['domain_setting_value'];
if ($name == "array") {
$_SESSION[$category][] = $row['domain_setting_value'];
}
else {
$_SESSION[$category][$name] = $row['domain_setting_value'];
}
} else {
//$$category[$subcategory][$name] = $row['domain_setting_value'];
if ($name == "array") {
$_SESSION[$category][$subcategory][] = $row['domain_setting_value'];
}
else {
$_SESSION[$category][$subcategory][$name] = $row['domain_setting_value'];
}
}
}
}
}
?>

View File

@@ -1,103 +1,103 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('fax_file_delete')) {
//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']];
}
//get the id
if (isset($_REQUEST["id"])) {
$fax_file_uuid = check_str($_REQUEST["id"]);
}
//validate the id
if (strlen($fax_file_uuid) > 0) {
//get the fax file data
$sql = "select * from v_fax_files ";
$sql .= "where fax_file_uuid = '".$fax_file_uuid."' ";
$sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$fax_uuid = $row["fax_uuid"];
$fax_mode = $row["fax_mode"];
$fax_file_path = $row["fax_file_path"];
$fax_file_type = $row["fax_file_type"];
}
unset($prep_statement);
//set the type
if ($fax_mode == 'rx') { $type = 'inbox'; }
if ($fax_mode == 'tx') { $type = 'sent'; }
//delete fax file(s)
if (substr_count($fax_file_path, '/temp/') > 0) {
$fax_file_path = str_replace('/temp/', '/'.$type.'/', $fax_file_path);
}
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
if ($fax_file_type == 'tif') {
$fax_file_path = str_replace('.tif', '.pdf', $fax_file_path);
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
}
else if ($fax_file_type == 'pdf') {
$fax_file_path = str_replace('.pdf', '.tif', $fax_file_path);
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
}
//delete fax file record
$sql = "delete from v_fax_files ";
$sql .= "where fax_file_uuid = '".$fax_file_uuid."' ";
$sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($prep_statement);
$_SESSION['message'] = $text['message-delete'];
}
//redirect the user
header('Location: fax_files.php?id='.$fax_uuid.'&box='.$type);
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('fax_file_delete')) {
//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']];
}
//get the id
if (isset($_REQUEST["id"])) {
$fax_file_uuid = check_str($_REQUEST["id"]);
}
//validate the id
if (strlen($fax_file_uuid) > 0) {
//get the fax file data
$sql = "select * from v_fax_files ";
$sql .= "where fax_file_uuid = '".$fax_file_uuid."' ";
$sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$fax_uuid = $row["fax_uuid"];
$fax_mode = $row["fax_mode"];
$fax_file_path = $row["fax_file_path"];
$fax_file_type = $row["fax_file_type"];
}
unset($prep_statement);
//set the type
if ($fax_mode == 'rx') { $type = 'inbox'; }
if ($fax_mode == 'tx') { $type = 'sent'; }
//delete fax file(s)
if (substr_count($fax_file_path, '/temp/') > 0) {
$fax_file_path = str_replace('/temp/', '/'.$type.'/', $fax_file_path);
}
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
if ($fax_file_type == 'tif') {
$fax_file_path = str_replace('.tif', '.pdf', $fax_file_path);
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
}
else if ($fax_file_type == 'pdf') {
$fax_file_path = str_replace('.pdf', '.tif', $fax_file_path);
if (file_exists($fax_file_path)) {
@unlink($fax_file_path);
}
}
//delete fax file record
$sql = "delete from v_fax_files ";
$sql .= "where fax_file_uuid = '".$fax_file_uuid."' ";
$sql .= "and domain_uuid = '".$_SESSION['domain_uuid']."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset($prep_statement);
$_SESSION['message'] = $text['message-delete'];
}
//redirect the user
header('Location: fax_files.php?id='.$fax_uuid.'&box='.$type);
?>

View File

@@ -1,394 +1,394 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('fax_file_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get variables used to control the order
$order_by = check_str($_GET["order_by"]);
$order = check_str($_GET["order"]);
//get fax extension
if (strlen($_GET['id']) > 0) {
if (is_uuid($_GET["id"])) {
$fax_uuid = $_GET["id"];
}
if (if_group("superadmin") || if_group("admin")) {
//show all fax extensions
$sql = "select fax_name, fax_extension from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
}
else {
//show only assigned fax extensions
$sql = "select fax_name, fax_extension from v_fax as f, v_fax_users as u ";
$sql .= "where f.fax_uuid = u.fax_uuid ";
$sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and f.fax_uuid = '$fax_uuid' ";
$sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
if (if_group("superadmin") || if_group("admin")) {
//allow access
}
else {
echo "access denied";
exit;
}
}
foreach ($result as &$row) {
//set database fields as variables
$fax_name = $row["fax_name"];
$fax_extension = $row["fax_extension"];
//limit to one row
break;
}
unset ($prep_statement);
}
//set the fax directory
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'];
//download the fax
if ($_GET['a'] == "download") {
session_cache_limiter('public');
//test to see if it is in the inbox or sent directory.
if ($_GET['type'] == "fax_inbox") {
if (file_exists($fax_dir.'/'.check_str($_GET['ext']).'/inbox/'.check_str($_GET['filename']))) {
$tmp_faxdownload_file = $fax_dir.'/'.check_str($_GET['ext']).'/inbox/'.check_str($_GET['filename']);
}
}
else if ($_GET['type'] == "fax_sent") {
if (file_exists($fax_dir.'/'.check_str($_GET['ext']).'/sent/'.check_str($_GET['filename']))) {
$tmp_faxdownload_file = $fax_dir.'/'.check_str($_GET['ext']).'/sent/'.check_str($_GET['filename']);
}
}
//let's see if we found it.
if (strlen($tmp_faxdownload_file) > 0) {
$fd = fopen($tmp_faxdownload_file, "rb");
if ($_GET['t'] == "bin") {
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="'.check_str($_GET['filename']).'"');
}
else {
$file_ext = substr(check_str($_GET['filename']), -3);
if ($file_ext == "tif") {
header("Content-Type: image/tiff");
}
else if ($file_ext == "png") {
header("Content-Type: image/png");
}
else if ($file_ext == "jpg") {
header('Content-Type: image/jpeg');
}
else if ($file_ext == "pdf") {
header("Content-Type: application/pdf");
}
}
header('Accept-Ranges: bytes');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
header("Content-Length: " . filesize($tmp_faxdownload_file));
fpassthru($fd);
}
else {
echo "".$text['label-file']."";
}
exit;
}
//get the fax extension
if (strlen($fax_extension) > 0) {
//set the fax directories. example /usr/local/freeswitch/storage/fax/329/inbox
$dir_fax_inbox = $fax_dir.'/'.$fax_extension.'/inbox';
$dir_fax_sent = $fax_dir.'/'.$fax_extension.'/sent';
$dir_fax_temp = $fax_dir.'/'.$fax_extension.'/temp';
//make sure the directories exist
if (!is_dir($_SESSION['switch']['storage']['dir'])) {
mkdir($_SESSION['switch']['storage']['dir']);
chmod($dir_fax_sent,0774);
}
if (!is_dir($fax_dir.'/'.$fax_extension)) {
mkdir($fax_dir.'/'.$fax_extension,0774,true);
chmod($fax_dir.'/'.$fax_extension,0774);
}
if (!is_dir($dir_fax_inbox)) {
mkdir($dir_fax_inbox,0774,true);
chmod($dir_fax_inbox,0774);
}
if (!is_dir($dir_fax_sent)) {
mkdir($dir_fax_sent,0774,true);
chmod($dir_fax_sent,0774);
}
if (!is_dir($dir_fax_temp)) {
mkdir($dir_fax_temp,0774,true);
chmod($dir_fax_temp,0774);
}
}
//additional includes
require_once "resources/header.php";
require_once "resources/paging.php";
//prepare to page the results
$sql = "select count(*) as num_rows from v_fax_files ";
$sql .= "where fax_uuid = '$fax_uuid' ";
$sql .= "and domain_uuid = '$domain_uuid' ";
if ($_REQUEST['box'] == 'inbox') {
$sql .= "and fax_mode = 'rx' ";
}
if ($_REQUEST['box'] == 'sent') {
$sql .= "and fax_mode = 'tx' ";
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$num_rows = $row['num_rows'];
}
else {
$num_rows = '0';
}
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "&id=".$_GET['id']."&box=".$_GET['box']."&order_by=".$_GET['order_by']."&order=".$_GET['order'];
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_fax_files ";
$sql .= "where fax_uuid = '$fax_uuid' ";
$sql .= "and domain_uuid = '$domain_uuid' ";
if ($_REQUEST['box'] == 'inbox') {
$sql .= "and fax_mode = 'rx' ";
}
if ($_REQUEST['box'] == 'sent') {
$sql .= "and fax_mode = 'tx' ";
}
$sql .= "order by ".((strlen($order_by) > 0) ? $order_by.' '.$order : "fax_date desc")." ";
$sql .= "limit $rows_per_page offset $offset ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$fax_files = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//show the header
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <b>".$text['header-inbox'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <b>".$text['header-sent'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
}
echo " </td>\n";
echo " <td width='70%' align='right' valign='top'>\n";
echo " <input type='button' class='btn' name='' alt='back' onclick=\"window.location='fax.php'\" value='".$text['button-back']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br>\n";
//show the table and content
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo th_order_by('fax_caller_id_name', $text['label-fax_caller_id_name'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
echo th_order_by('fax_caller_id_number', $text['label-fax_caller_id_number'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
if ($_REQUEST['box'] == 'sent') {
echo th_order_by('fax_destination', $text['label-fax_destination'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
}
echo "<th width=''>".$text['table-file']."</th>\n";
echo "<th width='10%'>".$text['table-view']."</th>\n";
echo th_order_by('fax_date', $text['label-fax_date'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
echo "<td style='width: 25px;' class='list_control_icons'>&nbsp;</td>\n";
echo "</tr>\n";
if ($num_rows > 0) {
foreach($fax_files as $row) {
$file = basename($row['fax_file_path']);
if (strtolower(substr($file, -3)) == "tif" || strtolower(substr($file, -3)) == "pdf") {
$file_name = substr($file, 0, (strlen($file) -4));
}
$file_ext = $row['fax_file_type'];
//decode the base64
if (strlen($row['fax_base64']) > 0) {
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
if (!file_exists($dir_fax_inbox.'/'.$file)) {
file_put_contents($dir_fax_inbox.'/'.$file, base64_decode($row['fax_base64']));
}
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
if (!file_exists($dir_fax_sent.'/'.$file)) {
//decode the base64
file_put_contents($dir_fax_sent.'/'.$file, base64_decode($row['fax_base64']));
}
}
}
//convert the tif to pdf
unset($dir_fax);
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
if (!file_exists($dir_fax_inbox.'/'.$file_name.".pdf")) {
$dir_fax = $dir_fax_inbox;
}
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
if (!file_exists($dir_fax_sent.'/'.$file_name.".pdf")) {
$dir_fax = $dir_fax_sent;
}
}
if ($dir_fax != '') {
chdir($dir_fax);
//get fax resolution (ppi, W & H)
$resp = exec("tiffinfo ".$file_name.".tif | grep 'Resolution:'");
$resp_array = explode(' ', trim($resp));
$ppi_w = (int) $resp_array[1];
$ppi_h = (int) $resp_array[2];
unset($resp_array);
$gs_r = $ppi_w.'x'.$ppi_h; //used by ghostscript
//get page dimensions/size (pixels/inches, W & H)
$resp = exec("tiffinfo ".$file_name.".tif | grep 'Image Width:'");
$resp_array = explode(' ', trim($resp));
$pix_w = $resp_array[2];
$pix_h = $resp_array[5];
unset($resp_array);
$gs_g = $pix_w.'x'.$pix_h; //used by ghostscript
$page_width = $pix_w / $ppi_w;
$page_height = $pix_h / $ppi_h;
if ($page_width > 8.4 && $page_height > 13) {
$page_width = 8.5;
$page_height = 14;
$page_size = 'legal';
}
else if ($page_width > 8.4 && $page_height < 12) {
$page_width = 8.5;
$page_height = 11;
$page_size = 'letter';
}
else if ($page_width < 8.4 && $page_height > 11) {
$page_width = 8.3;
$page_height = 11.7;
$page_size = 'a4';
}
//generate pdf (a work around, as tiff2pdf improperly inverts the colors)
$cmd_tif2pdf = "tiff2pdf -i -u i -p ".$page_size." -w ".$page_width." -l ".$page_height." -f -o ".$dir_fax_temp.'/'.$file_name.".pdf ".$dir_fax.'/'.$file_name.".tif";
//echo $cmd_tif2pdf."<br>";
exec($cmd_tif2pdf);
chdir($dir_fax_temp);
$cmd_pdf2tif = "gs -q -sDEVICE=tiffg3 -r".$gs_r." -g".$gs_g." -dNOPAUSE -sOutputFile=".$file_name."_temp.tif -- ".$file_name.".pdf -c quit";
//echo $cmd_pdf2tif."<br>";
exec($cmd_pdf2tif); //convert pdf to tif
@unlink($dir_fax_temp.'/'.$file_name.".pdf");
$cmd_tif2pdf = "tiff2pdf -i -u i -p ".$page_size." -w ".$page_width." -l ".$page_height." -f -o ".$dir_fax.'/'.$file_name.".pdf ".$dir_fax_temp.'/'.$file_name."_temp.tif";
//echo $cmd_tif2pdf."<br>";
exec($cmd_tif2pdf);
@unlink($dir_fax_temp.'/'.$file_name."_temp.tif");
}
echo "</td></tr>";
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['fax_caller_id_name']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".format_phone($row['fax_caller_id_number'])."&nbsp;</td>\n";
if ($_REQUEST['box'] == 'sent') {
echo " <td valign='top' class='".$row_style[$c]."'>".format_phone($row['fax_destination'])."&nbsp;</td>\n";
}
echo " <td class='".$row_style[$c]."' ondblclick=\"\">\n";
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_inbox&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file)."\">\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_sent&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file)."\">\n";
}
echo " $file_name";
echo " </a>";
echo " </td>\n";
echo " <td class='".$row_style[$c]."' ondblclick=''>\n";
if ($_REQUEST['box'] == 'inbox') {
$dir_fax = $dir_fax_inbox;
}
if ($_REQUEST['box'] == 'sent') {
$dir_fax = $dir_fax_sent;
}
if (file_exists($dir_fax.'/'.$file_name.".pdf")) {
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_inbox&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file_name).".pdf\">PDF</a>\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_sent&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file_name).".pdf\">PDF</a>\n";
}
}
else {
echo "&nbsp;\n";
}
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".date("F d Y H:i:s", strtotime($row['fax_date']))."&nbsp;</td>\n";
echo " <td style='width: 25px;' class='list_control_icons'>";
if (permission_exists('fax_file_delete')) {
echo "<a href='fax_file_delete.php?id=".$row['fax_file_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c) ? 0 : 1;
} //end foreach
unset($sql, $fax_files);
} //end if results
//show the paging controls
echo "</table>";
echo "<br /><br />";
echo "<div align='center'>".$paging_controls."</div>\n";
echo "<br /><br />";
//include the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('fax_file_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get variables used to control the order
$order_by = check_str($_GET["order_by"]);
$order = check_str($_GET["order"]);
//get fax extension
if (strlen($_GET['id']) > 0) {
if (is_uuid($_GET["id"])) {
$fax_uuid = $_GET["id"];
}
if (if_group("superadmin") || if_group("admin")) {
//show all fax extensions
$sql = "select fax_name, fax_extension from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
}
else {
//show only assigned fax extensions
$sql = "select fax_name, fax_extension from v_fax as f, v_fax_users as u ";
$sql .= "where f.fax_uuid = u.fax_uuid ";
$sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and f.fax_uuid = '$fax_uuid' ";
$sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
if (if_group("superadmin") || if_group("admin")) {
//allow access
}
else {
echo "access denied";
exit;
}
}
foreach ($result as &$row) {
//set database fields as variables
$fax_name = $row["fax_name"];
$fax_extension = $row["fax_extension"];
//limit to one row
break;
}
unset ($prep_statement);
}
//set the fax directory
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'];
//download the fax
if ($_GET['a'] == "download") {
session_cache_limiter('public');
//test to see if it is in the inbox or sent directory.
if ($_GET['type'] == "fax_inbox") {
if (file_exists($fax_dir.'/'.check_str($_GET['ext']).'/inbox/'.check_str($_GET['filename']))) {
$tmp_faxdownload_file = $fax_dir.'/'.check_str($_GET['ext']).'/inbox/'.check_str($_GET['filename']);
}
}
else if ($_GET['type'] == "fax_sent") {
if (file_exists($fax_dir.'/'.check_str($_GET['ext']).'/sent/'.check_str($_GET['filename']))) {
$tmp_faxdownload_file = $fax_dir.'/'.check_str($_GET['ext']).'/sent/'.check_str($_GET['filename']);
}
}
//let's see if we found it.
if (strlen($tmp_faxdownload_file) > 0) {
$fd = fopen($tmp_faxdownload_file, "rb");
if ($_GET['t'] == "bin") {
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="'.check_str($_GET['filename']).'"');
}
else {
$file_ext = substr(check_str($_GET['filename']), -3);
if ($file_ext == "tif") {
header("Content-Type: image/tiff");
}
else if ($file_ext == "png") {
header("Content-Type: image/png");
}
else if ($file_ext == "jpg") {
header('Content-Type: image/jpeg');
}
else if ($file_ext == "pdf") {
header("Content-Type: application/pdf");
}
}
header('Accept-Ranges: bytes');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
header("Content-Length: " . filesize($tmp_faxdownload_file));
fpassthru($fd);
}
else {
echo "".$text['label-file']."";
}
exit;
}
//get the fax extension
if (strlen($fax_extension) > 0) {
//set the fax directories. example /usr/local/freeswitch/storage/fax/329/inbox
$dir_fax_inbox = $fax_dir.'/'.$fax_extension.'/inbox';
$dir_fax_sent = $fax_dir.'/'.$fax_extension.'/sent';
$dir_fax_temp = $fax_dir.'/'.$fax_extension.'/temp';
//make sure the directories exist
if (!is_dir($_SESSION['switch']['storage']['dir'])) {
mkdir($_SESSION['switch']['storage']['dir']);
chmod($dir_fax_sent,0774);
}
if (!is_dir($fax_dir.'/'.$fax_extension)) {
mkdir($fax_dir.'/'.$fax_extension,0774,true);
chmod($fax_dir.'/'.$fax_extension,0774);
}
if (!is_dir($dir_fax_inbox)) {
mkdir($dir_fax_inbox,0774,true);
chmod($dir_fax_inbox,0774);
}
if (!is_dir($dir_fax_sent)) {
mkdir($dir_fax_sent,0774,true);
chmod($dir_fax_sent,0774);
}
if (!is_dir($dir_fax_temp)) {
mkdir($dir_fax_temp,0774,true);
chmod($dir_fax_temp,0774);
}
}
//additional includes
require_once "resources/header.php";
require_once "resources/paging.php";
//prepare to page the results
$sql = "select count(*) as num_rows from v_fax_files ";
$sql .= "where fax_uuid = '$fax_uuid' ";
$sql .= "and domain_uuid = '$domain_uuid' ";
if ($_REQUEST['box'] == 'inbox') {
$sql .= "and fax_mode = 'rx' ";
}
if ($_REQUEST['box'] == 'sent') {
$sql .= "and fax_mode = 'tx' ";
}
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
if ($row['num_rows'] > 0) {
$num_rows = $row['num_rows'];
}
else {
$num_rows = '0';
}
}
//prepare to page the results
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "&id=".$_GET['id']."&box=".$_GET['box']."&order_by=".$_GET['order_by']."&order=".$_GET['order'];
$page = $_GET['page'];
if (strlen($page) == 0) { $page = 0; $_GET['page'] = 0; }
list($paging_controls, $rows_per_page, $var3) = paging($num_rows, $param, $rows_per_page);
$offset = $rows_per_page * $page;
//get the list
$sql = "select * from v_fax_files ";
$sql .= "where fax_uuid = '$fax_uuid' ";
$sql .= "and domain_uuid = '$domain_uuid' ";
if ($_REQUEST['box'] == 'inbox') {
$sql .= "and fax_mode = 'rx' ";
}
if ($_REQUEST['box'] == 'sent') {
$sql .= "and fax_mode = 'tx' ";
}
$sql .= "order by ".((strlen($order_by) > 0) ? $order_by.' '.$order : "fax_date desc")." ";
$sql .= "limit $rows_per_page offset $offset ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$fax_files = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//show the header
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <b>".$text['header-inbox'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <b>".$text['header-sent'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
}
echo " </td>\n";
echo " <td width='70%' align='right' valign='top'>\n";
echo " <input type='button' class='btn' name='' alt='back' onclick=\"window.location='fax.php'\" value='".$text['button-back']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br>\n";
//show the table and content
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo th_order_by('fax_caller_id_name', $text['label-fax_caller_id_name'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
echo th_order_by('fax_caller_id_number', $text['label-fax_caller_id_number'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
if ($_REQUEST['box'] == 'sent') {
echo th_order_by('fax_destination', $text['label-fax_destination'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
}
echo "<th width=''>".$text['table-file']."</th>\n";
echo "<th width='10%'>".$text['table-view']."</th>\n";
echo th_order_by('fax_date', $text['label-fax_date'], $order_by, $order, "&id=".$_GET['id']."&box=".$_GET['box']."&page=".$_GET['page']);
echo "<td style='width: 25px;' class='list_control_icons'>&nbsp;</td>\n";
echo "</tr>\n";
if ($num_rows > 0) {
foreach($fax_files as $row) {
$file = basename($row['fax_file_path']);
if (strtolower(substr($file, -3)) == "tif" || strtolower(substr($file, -3)) == "pdf") {
$file_name = substr($file, 0, (strlen($file) -4));
}
$file_ext = $row['fax_file_type'];
//decode the base64
if (strlen($row['fax_base64']) > 0) {
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
if (!file_exists($dir_fax_inbox.'/'.$file)) {
file_put_contents($dir_fax_inbox.'/'.$file, base64_decode($row['fax_base64']));
}
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
if (!file_exists($dir_fax_sent.'/'.$file)) {
//decode the base64
file_put_contents($dir_fax_sent.'/'.$file, base64_decode($row['fax_base64']));
}
}
}
//convert the tif to pdf
unset($dir_fax);
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
if (!file_exists($dir_fax_inbox.'/'.$file_name.".pdf")) {
$dir_fax = $dir_fax_inbox;
}
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
if (!file_exists($dir_fax_sent.'/'.$file_name.".pdf")) {
$dir_fax = $dir_fax_sent;
}
}
if ($dir_fax != '') {
chdir($dir_fax);
//get fax resolution (ppi, W & H)
$resp = exec("tiffinfo ".$file_name.".tif | grep 'Resolution:'");
$resp_array = explode(' ', trim($resp));
$ppi_w = (int) $resp_array[1];
$ppi_h = (int) $resp_array[2];
unset($resp_array);
$gs_r = $ppi_w.'x'.$ppi_h; //used by ghostscript
//get page dimensions/size (pixels/inches, W & H)
$resp = exec("tiffinfo ".$file_name.".tif | grep 'Image Width:'");
$resp_array = explode(' ', trim($resp));
$pix_w = $resp_array[2];
$pix_h = $resp_array[5];
unset($resp_array);
$gs_g = $pix_w.'x'.$pix_h; //used by ghostscript
$page_width = $pix_w / $ppi_w;
$page_height = $pix_h / $ppi_h;
if ($page_width > 8.4 && $page_height > 13) {
$page_width = 8.5;
$page_height = 14;
$page_size = 'legal';
}
else if ($page_width > 8.4 && $page_height < 12) {
$page_width = 8.5;
$page_height = 11;
$page_size = 'letter';
}
else if ($page_width < 8.4 && $page_height > 11) {
$page_width = 8.3;
$page_height = 11.7;
$page_size = 'a4';
}
//generate pdf (a work around, as tiff2pdf improperly inverts the colors)
$cmd_tif2pdf = "tiff2pdf -i -u i -p ".$page_size." -w ".$page_width." -l ".$page_height." -f -o ".$dir_fax_temp.'/'.$file_name.".pdf ".$dir_fax.'/'.$file_name.".tif";
//echo $cmd_tif2pdf."<br>";
exec($cmd_tif2pdf);
chdir($dir_fax_temp);
$cmd_pdf2tif = "gs -q -sDEVICE=tiffg3 -r".$gs_r." -g".$gs_g." -dNOPAUSE -sOutputFile=".$file_name."_temp.tif -- ".$file_name.".pdf -c quit";
//echo $cmd_pdf2tif."<br>";
exec($cmd_pdf2tif); //convert pdf to tif
@unlink($dir_fax_temp.'/'.$file_name.".pdf");
$cmd_tif2pdf = "tiff2pdf -i -u i -p ".$page_size." -w ".$page_width." -l ".$page_height." -f -o ".$dir_fax.'/'.$file_name.".pdf ".$dir_fax_temp.'/'.$file_name."_temp.tif";
//echo $cmd_tif2pdf."<br>";
exec($cmd_tif2pdf);
@unlink($dir_fax_temp.'/'.$file_name."_temp.tif");
}
echo "</td></tr>";
echo "<tr ".$tr_link.">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$row['fax_caller_id_name']."&nbsp;</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".format_phone($row['fax_caller_id_number'])."&nbsp;</td>\n";
if ($_REQUEST['box'] == 'sent') {
echo " <td valign='top' class='".$row_style[$c]."'>".format_phone($row['fax_destination'])."&nbsp;</td>\n";
}
echo " <td class='".$row_style[$c]."' ondblclick=\"\">\n";
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_inbox&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file)."\">\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_sent&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file)."\">\n";
}
echo " $file_name";
echo " </a>";
echo " </td>\n";
echo " <td class='".$row_style[$c]."' ondblclick=''>\n";
if ($_REQUEST['box'] == 'inbox') {
$dir_fax = $dir_fax_inbox;
}
if ($_REQUEST['box'] == 'sent') {
$dir_fax = $dir_fax_sent;
}
if (file_exists($dir_fax.'/'.$file_name.".pdf")) {
if ($_REQUEST['box'] == 'inbox' && permission_exists('fax_inbox_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_inbox&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file_name).".pdf\">PDF</a>\n";
}
if ($_REQUEST['box'] == 'sent' && permission_exists('fax_sent_view')) {
echo " <a href=\"fax_files.php?id=".$fax_uuid."&a=download&type=fax_sent&t=bin&ext=".urlencode($fax_extension)."&filename=".urlencode($file_name).".pdf\">PDF</a>\n";
}
}
else {
echo "&nbsp;\n";
}
echo " </td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".date("F d Y H:i:s", strtotime($row['fax_date']))."&nbsp;</td>\n";
echo " <td style='width: 25px;' class='list_control_icons'>";
if (permission_exists('fax_file_delete')) {
echo "<a href='fax_file_delete.php?id=".$row['fax_file_uuid']."' alt='".$text['button-delete']."' onclick=\"return confirm('".$text['confirm-delete']."')\">$v_link_label_delete</a>";
}
echo " </td>\n";
echo "</tr>\n";
$c = ($c) ? 0 : 1;
} //end foreach
unset($sql, $fax_files);
} //end if results
//show the paging controls
echo "</table>";
echo "<br /><br />";
echo "<div align='center'>".$paging_controls."</div>\n";
echo "<br /><br />";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,243 +1,243 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/functions/object_to_array.php";
require_once "resources/functions/parse_attachments.php";
if (permission_exists('fax_inbox_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get fax server uuid, set connection parameters
if (strlen($_GET['id']) > 0) {
$fax_uuid = check_str($_GET["id"]);
if (if_group("superadmin") || if_group("admin")) {
//show all fax extensions
$sql = "select * from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
}
else {
//show only assigned fax extensions
$sql = "select * from v_fax as f, v_fax_users as u ";
$sql .= "where f.fax_uuid = u.fax_uuid ";
$sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and f.fax_uuid = '$fax_uuid' ";
$sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
if (!if_group("superadmin") && !if_group("admin")) {
echo "access denied";
exit;
}
}
foreach ($result as &$row) {
$fax_name = $row["fax_name"];
$fax_extension = $row["fax_extension"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"];
break;
}
unset ($prep_statement);
// make connection
$fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type;
$fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls";
$fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert";
$fax_email_connection .= "}".$fax_email_connection_mailbox;
if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) {
$_SESSION["message_mood"] = 'negative';
$_SESSION["message"] = $text['message-cannot_connect']."(".imap_last_error().")";
header("Location: fax.php");
exit;
}
}
else {
header("Location: fax.php");
exit;
}
//message action
if ($_GET['email_id'] != '') {
$email_id = check_str($_GET['email_id']);
//download attachment
if (isset($_GET['download'])) {
$attachment = parse_attachments($connection, $email_id, FT_UID);
$file_type = pathinfo($attachment[0]['filename'], PATHINFO_EXTENSION);
switch ($file_type) {
case "pdf" : header("Content-Type: application/pdf"); break;
case "tif" : header("Contet-Type: image/tiff"); break;
}
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
header("Content-Length: ".strlen($attachment[0]['attachment']));
$browser = $_SERVER["HTTP_USER_AGENT"];
if (preg_match("/MSIE 5.5/", $browser) || preg_match("/MSIE 6.0/", $browser)) {
header("Content-Disposition: filename=\"".$attachment[0]['filename']."\"");
}
else {
header("Content-Disposition: attachment; filename=\"".$attachment[0]['filename']."\"");
}
header("Content-Transfer-Encoding: binary");
echo $attachment[0]['attachment'];
exit;
}
//delete email
if (isset($_GET['delete']) && permission_exists('fax_inbox_delete')) {
$attachment = parse_attachments($connection, $email_id, FT_UID);
if (imap_delete($connection, $email_id, FT_UID)) {
if (imap_expunge($connection)) {
//clean up local inbox copy
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'];
@unlink($fax_dir.'/'.$fax_extension.'/inbox/'.$attachment[0]['filename']);
//redirect user
$_SESSION["message"] = $text['message-delete'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
else {
//redirect user
$_SESSION["message_mood"] = "negative";
$_SESSION["message"] = $text['message-delete_failed'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
else {
//redirect user
$_SESSION["message_mood"] = "negative";
$_SESSION["message"] = $text['message-delete_failed'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
//get emails
$emails = imap_search($connection, "SUBJECT \"".$fax_email_inbound_subject_tag."\"", SE_UID);
//show the header
require_once "resources/header.php";
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//show the inbox
$c = 0;
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
echo " <b>".$text['header-inbox'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
echo " </td>\n";
echo " <td width='70%' align='right' valign='top'>\n";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"window.location='fax.php';\" value='".$text['button-back']."'>\n";
echo " <input type='button' class='btn' alt='".$text['button-refresh']."' onclick=\"document.location.reload();\" value='".$text['button-refresh']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br><br>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <th>".$text['label-fax_caller_id_name']."</th>\n";
echo " <th>".$text['label-fax_caller_id_number']."</th>\n";
echo " <th>".$text['table-file']."</th>\n";
echo " <th>".$text['label-email_size']."</th>\n";
echo " <th>".$text['label-email_received']."</th>\n";
if (permission_exists('fax_inbox_delete')) {
echo " <td style='width: 25px;' class='list_control_icons'>&nbsp;</td>\n";
}
echo " </tr>";
if ($emails) {
rsort($emails); // most recent on top
foreach ($emails as $email_id) {
$metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID));
$attachment = parse_attachments($connection, $email_id, FT_UID);
$file_name = $attachment[0]['filename'];
$caller_id_name = substr($file_name, 0, strpos($file_name, '-'));
$caller_id_number = (is_numeric($caller_id_name)) ? format_phone((int) $caller_id_name) : null;
echo " <tr ".(($metadata[0]['seen'] == 0) ? "style='font-weight: bold;'" : null).">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$caller_id_name."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$caller_id_number."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'><a href='?id=".$fax_uuid."&email_id=".$email_id."&download'>".$file_name."</a></td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".byte_convert(strlen($attachment[0]['attachment']))."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$metadata[0]['date']."</td>\n";
if (permission_exists('fax_inbox_delete')) {
echo " <td style='width: 25px;' class='list_control_icons'><a href='?id=".$fax_uuid."&email_id=".$email_id."&delete' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a></td>\n";
}
echo " </tr>\n";
// $fax_message = imap_fetchbody($connection, $email_id, '1.1', FT_UID);
// if ($fax_message == '') {
// $fax_message = imap_fetchbody($connection, $email_id, '1', FT_UID);
// }
$c = ($c) ? 0 : 1;
}
}
else {
echo "<tr valign='top'>\n";
echo " <td colspan='4' style='text-align: center;'><br><br>".$text['message-no_faxes_found']."<br><br></td>\n";
echo "</tr>\n";
}
echo "</table>";
echo "<br><br>";
/* close the connection */
imap_close($connection);
//show the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
James Rose <james.o.rose@gmail.com>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/functions/object_to_array.php";
require_once "resources/functions/parse_attachments.php";
if (permission_exists('fax_inbox_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get fax server uuid, set connection parameters
if (strlen($_GET['id']) > 0) {
$fax_uuid = check_str($_GET["id"]);
if (if_group("superadmin") || if_group("admin")) {
//show all fax extensions
$sql = "select * from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and fax_uuid = '$fax_uuid' ";
}
else {
//show only assigned fax extensions
$sql = "select * from v_fax as f, v_fax_users as u ";
$sql .= "where f.fax_uuid = u.fax_uuid ";
$sql .= "and f.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and f.fax_uuid = '$fax_uuid' ";
$sql .= "and u.user_uuid = '".$_SESSION['user_uuid']."' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) == 0) {
if (!if_group("superadmin") && !if_group("admin")) {
echo "access denied";
exit;
}
}
foreach ($result as &$row) {
$fax_name = $row["fax_name"];
$fax_extension = $row["fax_extension"];
$fax_email_connection_type = $row["fax_email_connection_type"];
$fax_email_connection_host = $row["fax_email_connection_host"];
$fax_email_connection_port = $row["fax_email_connection_port"];
$fax_email_connection_security = $row["fax_email_connection_security"];
$fax_email_connection_validate = $row["fax_email_connection_validate"];
$fax_email_connection_username = $row["fax_email_connection_username"];
$fax_email_connection_password = $row["fax_email_connection_password"];
$fax_email_connection_mailbox = $row["fax_email_connection_mailbox"];
$fax_email_inbound_subject_tag = $row["fax_email_inbound_subject_tag"];
break;
}
unset ($prep_statement);
// make connection
$fax_email_connection = "{".$fax_email_connection_host.":".$fax_email_connection_port."/".$fax_email_connection_type;
$fax_email_connection .= ($fax_email_connection_security != '') ? "/".$fax_email_connection_security : "/notls";
$fax_email_connection .= "/".(($fax_email_connection_validate == 'false') ? "no" : null)."validate-cert";
$fax_email_connection .= "}".$fax_email_connection_mailbox;
if (!$connection = imap_open($fax_email_connection, $fax_email_connection_username, $fax_email_connection_password)) {
$_SESSION["message_mood"] = 'negative';
$_SESSION["message"] = $text['message-cannot_connect']."(".imap_last_error().")";
header("Location: fax.php");
exit;
}
}
else {
header("Location: fax.php");
exit;
}
//message action
if ($_GET['email_id'] != '') {
$email_id = check_str($_GET['email_id']);
//download attachment
if (isset($_GET['download'])) {
$attachment = parse_attachments($connection, $email_id, FT_UID);
$file_type = pathinfo($attachment[0]['filename'], PATHINFO_EXTENSION);
switch ($file_type) {
case "pdf" : header("Content-Type: application/pdf"); break;
case "tif" : header("Contet-Type: image/tiff"); break;
}
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
header("Content-Length: ".strlen($attachment[0]['attachment']));
$browser = $_SERVER["HTTP_USER_AGENT"];
if (preg_match("/MSIE 5.5/", $browser) || preg_match("/MSIE 6.0/", $browser)) {
header("Content-Disposition: filename=\"".$attachment[0]['filename']."\"");
}
else {
header("Content-Disposition: attachment; filename=\"".$attachment[0]['filename']."\"");
}
header("Content-Transfer-Encoding: binary");
echo $attachment[0]['attachment'];
exit;
}
//delete email
if (isset($_GET['delete']) && permission_exists('fax_inbox_delete')) {
$attachment = parse_attachments($connection, $email_id, FT_UID);
if (imap_delete($connection, $email_id, FT_UID)) {
if (imap_expunge($connection)) {
//clean up local inbox copy
$fax_dir = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'];
@unlink($fax_dir.'/'.$fax_extension.'/inbox/'.$attachment[0]['filename']);
//redirect user
$_SESSION["message"] = $text['message-delete'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
else {
//redirect user
$_SESSION["message_mood"] = "negative";
$_SESSION["message"] = $text['message-delete_failed'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
else {
//redirect user
$_SESSION["message_mood"] = "negative";
$_SESSION["message"] = $text['message-delete_failed'];
header("Location: ?id=".$fax_uuid);
exit;
}
}
//get emails
$emails = imap_search($connection, "SUBJECT \"".$fax_email_inbound_subject_tag."\"", SE_UID);
//show the header
require_once "resources/header.php";
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
//show the inbox
$c = 0;
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
echo " <b>".$text['header-inbox'].": <span style='color: #000;'>".$fax_name." (".$fax_extension.")</span></b>\n";
echo " </td>\n";
echo " <td width='70%' align='right' valign='top'>\n";
echo " <input type='button' class='btn' alt='".$text['button-back']."' onclick=\"window.location='fax.php';\" value='".$text['button-back']."'>\n";
echo " <input type='button' class='btn' alt='".$text['button-refresh']."' onclick=\"document.location.reload();\" value='".$text['button-refresh']."'>\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br><br>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <th>".$text['label-fax_caller_id_name']."</th>\n";
echo " <th>".$text['label-fax_caller_id_number']."</th>\n";
echo " <th>".$text['table-file']."</th>\n";
echo " <th>".$text['label-email_size']."</th>\n";
echo " <th>".$text['label-email_received']."</th>\n";
if (permission_exists('fax_inbox_delete')) {
echo " <td style='width: 25px;' class='list_control_icons'>&nbsp;</td>\n";
}
echo " </tr>";
if ($emails) {
rsort($emails); // most recent on top
foreach ($emails as $email_id) {
$metadata = object_to_array(imap_fetch_overview($connection, $email_id, FT_UID));
$attachment = parse_attachments($connection, $email_id, FT_UID);
$file_name = $attachment[0]['filename'];
$caller_id_name = substr($file_name, 0, strpos($file_name, '-'));
$caller_id_number = (is_numeric($caller_id_name)) ? format_phone((int) $caller_id_name) : null;
echo " <tr ".(($metadata[0]['seen'] == 0) ? "style='font-weight: bold;'" : null).">\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$caller_id_name."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$caller_id_number."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'><a href='?id=".$fax_uuid."&email_id=".$email_id."&download'>".$file_name."</a></td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".byte_convert(strlen($attachment[0]['attachment']))."</td>\n";
echo " <td valign='top' class='".$row_style[$c]."'>".$metadata[0]['date']."</td>\n";
if (permission_exists('fax_inbox_delete')) {
echo " <td style='width: 25px;' class='list_control_icons'><a href='?id=".$fax_uuid."&email_id=".$email_id."&delete' onclick=\"return confirm('".$text['confirm-delete']."')\">".$v_link_label_delete."</a></td>\n";
}
echo " </tr>\n";
// $fax_message = imap_fetchbody($connection, $email_id, '1.1', FT_UID);
// if ($fax_message == '') {
// $fax_message = imap_fetchbody($connection, $email_id, '1', FT_UID);
// }
$c = ($c) ? 0 : 1;
}
}
else {
echo "<tr valign='top'>\n";
echo " <td colspan='4' style='text-align: center;'><br><br>".$text['message-no_faxes_found']."<br><br></td>\n";
echo "</tr>\n";
}
echo "</table>";
echo "<br><br>";
/* close the connection */
imap_close($connection);
//show the footer
require_once "resources/footer.php";
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,248 +1,248 @@
<?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) 2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for the fax servers
*/
//define the fax class
if (!class_exists('fax')) {
class fax {
/**
* define the variables
*/
public $domain_uuid;
public $fax_uuid;
public $dialplan_uuid;
public $fax_name;
public $fax_description;
public $fax_extension;
public $fax_forward_number;
public $destination_number;
private $forward_prefix;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a dialplan for call center
* @var string $domain_uuid the multi-tenant id
* @var string $value string to be cached
*/
public function dialplan() {
//normalize the fax forward number
if (strlen($this->fax_forward_number) > 3) {
//$fax_forward_number = preg_replace("~[^0-9]~", "",$fax_forward_number);
$this->fax_forward_number = str_replace(" ", "", $this->fax_forward_number);
$this->fax_forward_number = str_replace("-", "", $this->fax_forward_number);
}
//set the forward prefix
if (strripos($this->fax_forward_number, '$1') === false) {
$this->forward_prefix = ''; //not found
} else {
$this->forward_prefix = $this->forward_prefix.$this->fax_forward_number.'#'; //found
}
//delete previous dialplan
if (strlen($this->dialplan_uuid) > 0) {
//delete the previous dialplan
$sql = "delete from v_dialplans ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
}
unset($prep_statement);
//build the dialplan array
$dialplan["app_uuid"] = "24108154-4ac3-1db6-1551-4731703a4440";
$dialplan["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_name"] = ($this->fax_name != '') ? $this->fax_name : format_phone($this->destination_number);
$dialplan["dialplan_number"] = $this->fax_extension;
$dialplan["dialplan_context"] = $_SESSION['context'];
$dialplan["dialplan_continue"] = "false";
$dialplan["dialplan_order"] = "310";
$dialplan["dialplan_enabled"] = "true";
$dialplan["dialplan_description"] = $this->fax_description;
$dialplan_detail_order = 10;
//add the public condition
$y = 1;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "fax_uuid=".$this->fax_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "api_hangup_hook=lua app/fax/resources/scripts/hangup_rx.lua";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
foreach($_SESSION['fax']['variable'] as $data) {
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
if (substr($data,0,8) == "inbound:") {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($data,8,strlen($data));
}
elseif (substr($data,0,9) == "outbound:") {}
else {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $data;
}
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
if (strlen($_SESSION['fax']['last_fax']['text']) > 0) {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "last_fax=".$_SESSION['fax']['last_fax']['text'];
}
else {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "last_fax=\${caller_id_number}-\${strftime(%Y-%m-%d-%H-%M-%S)}";
}
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "playback";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "silence_stream://2000";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "rxfax";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'].'/'.$this->fax_extension.'/inbox/'.$this->forward_prefix.'${last_fax}.tif';
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
//add the dialplan permission
$p = new permissions;
$p->add("dialplan_add", 'temp');
$p->add("dialplan_detail_add", 'temp');
$p->add("dialplan_edit", 'temp');
$p->add("dialplan_detail_edit", 'temp');
//save the dialplan
$orm = new orm;
$orm->name('dialplans');
$orm->save($dialplan);
$dialplan_response = $orm->message;
$this->dialplan_uuid = $dialplan_response['uuid'];
//if new dialplan uuid then update the call center queue
$sql = "update v_fax ";
$sql .= "set dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "where fax_uuid = '".$this->fax_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
//remove the temporary permission
$p->delete("dialplan_add", 'temp');
$p->delete("dialplan_detail_add", 'temp');
$p->delete("dialplan_edit", 'temp');
$p->delete("dialplan_detail_edit", 'temp');
//synchronize the xml config
save_dialplan_xml();
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION['context']);
//return the dialplan_uuid
return $dialplan_response;
}
}
}
/*
$o = new fax;
$c->domain_uuid = "";
$c->dialplan_uuid = "";
$c->fax_name = "";
$c->fax_extension = $fax_extension;
$c->fax_forward_number = $fax_forward_number;
$c->destination_number = $fax_destination_number;
$c->fax_description = $fax_description;
$c->dialplan();
*/
<?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) 2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* cache class provides an abstracted cache
*
* @method string dialplan - builds the dialplan for the fax servers
*/
//define the fax class
if (!class_exists('fax')) {
class fax {
/**
* define the variables
*/
public $domain_uuid;
public $fax_uuid;
public $dialplan_uuid;
public $fax_name;
public $fax_description;
public $fax_extension;
public $fax_forward_number;
public $destination_number;
private $forward_prefix;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a dialplan for call center
* @var string $domain_uuid the multi-tenant id
* @var string $value string to be cached
*/
public function dialplan() {
//normalize the fax forward number
if (strlen($this->fax_forward_number) > 3) {
//$fax_forward_number = preg_replace("~[^0-9]~", "",$fax_forward_number);
$this->fax_forward_number = str_replace(" ", "", $this->fax_forward_number);
$this->fax_forward_number = str_replace("-", "", $this->fax_forward_number);
}
//set the forward prefix
if (strripos($this->fax_forward_number, '$1') === false) {
$this->forward_prefix = ''; //not found
} else {
$this->forward_prefix = $this->forward_prefix.$this->fax_forward_number.'#'; //found
}
//delete previous dialplan
if (strlen($this->dialplan_uuid) > 0) {
//delete the previous dialplan
$sql = "delete from v_dialplans ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
$sql = "delete from v_dialplan_details ";
$sql .= "where dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
}
unset($prep_statement);
//build the dialplan array
$dialplan["app_uuid"] = "24108154-4ac3-1db6-1551-4731703a4440";
$dialplan["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_name"] = ($this->fax_name != '') ? $this->fax_name : format_phone($this->destination_number);
$dialplan["dialplan_number"] = $this->fax_extension;
$dialplan["dialplan_context"] = $_SESSION['context'];
$dialplan["dialplan_continue"] = "false";
$dialplan["dialplan_order"] = "310";
$dialplan["dialplan_enabled"] = "true";
$dialplan["dialplan_description"] = $this->fax_description;
$dialplan_detail_order = 10;
//add the public condition
$y = 1;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "condition";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "destination_number";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "^".$this->destination_number."\$";
$dialplan["dialplan_details"][$y]["dialplan_detail_break"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "answer";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "fax_uuid=".$this->fax_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "api_hangup_hook=lua app/fax/resources/scripts/hangup_rx.lua";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
foreach($_SESSION['fax']['variable'] as $data) {
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
if (substr($data,0,8) == "inbound:") {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = substr($data,8,strlen($data));
}
elseif (substr($data,0,9) == "outbound:") {}
else {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $data;
}
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
}
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "set";
if (strlen($_SESSION['fax']['last_fax']['text']) > 0) {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "last_fax=".$_SESSION['fax']['last_fax']['text'];
}
else {
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "last_fax=\${caller_id_number}-\${strftime(%Y-%m-%d-%H-%M-%S)}";
}
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "playback";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "silence_stream://2000";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "rxfax";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = $_SESSION['switch']['storage']['dir'].'/fax/'.$_SESSION['domain_name'].'/'.$this->fax_extension.'/inbox/'.$this->forward_prefix.'${last_fax}.tif';
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
$dialplan["dialplan_details"][$y]["domain_uuid"] = $this->domain_uuid;
$dialplan["dialplan_details"][$y]["dialplan_detail_tag"] = "action";
$dialplan["dialplan_details"][$y]["dialplan_detail_type"] = "hangup";
$dialplan["dialplan_details"][$y]["dialplan_detail_data"] = "";
$dialplan["dialplan_details"][$y]["dialplan_detail_group"] = "1";
$dialplan["dialplan_details"][$y]["dialplan_detail_order"] = $y * 10;
$y++;
//add the dialplan permission
$p = new permissions;
$p->add("dialplan_add", 'temp');
$p->add("dialplan_detail_add", 'temp');
$p->add("dialplan_edit", 'temp');
$p->add("dialplan_detail_edit", 'temp');
//save the dialplan
$orm = new orm;
$orm->name('dialplans');
$orm->save($dialplan);
$dialplan_response = $orm->message;
$this->dialplan_uuid = $dialplan_response['uuid'];
//if new dialplan uuid then update the call center queue
$sql = "update v_fax ";
$sql .= "set dialplan_uuid = '".$this->dialplan_uuid."' ";
$sql .= "where fax_uuid = '".$this->fax_uuid."' ";
$sql .= "and domain_uuid = '".$this->domain_uuid."' ";
$this->db->exec($sql);
unset($sql);
//remove the temporary permission
$p->delete("dialplan_add", 'temp');
$p->delete("dialplan_detail_add", 'temp');
$p->delete("dialplan_edit", 'temp');
$p->delete("dialplan_detail_edit", 'temp');
//synchronize the xml config
save_dialplan_xml();
//clear the cache
$cache = new cache;
$cache->delete("dialplan:".$_SESSION['context']);
//return the dialplan_uuid
return $dialplan_response;
}
}
}
/*
$o = new fax;
$c->domain_uuid = "";
$c->dialplan_uuid = "";
$c->fax_name = "";
$c->fax_extension = $fax_extension;
$c->fax_forward_number = $fax_forward_number;
$c->destination_number = $fax_destination_number;
$c->fax_description = $fax_description;
$c->dialplan();
*/
?>

View File

@@ -1,9 +1,9 @@
<?php
function object_to_array($obj) {
if (!is_object($obj) && !is_array($obj)) { return $obj; }
if (is_object($obj)) { $obj = get_object_vars($obj); }
return array_map('object_to_array', $obj);
}
<?php
function object_to_array($obj) {
if (!is_object($obj) && !is_array($obj)) { return $obj; }
if (is_object($obj)) { $obj = get_object_vars($obj); }
return array_map('object_to_array', $obj);
}
?>

View File

@@ -1,145 +1,145 @@
<?php
function parse_message($connection, $message_number, $option = null, $to_charset = 'UTF-8') {
$result = Array('messages'=>Array(),'attachments'=>Array());
$structure = imap_fetchstructure($connection, $message_number, $option);
if (isset($structure->parts)) {
$flatten = parse_message_flatten($structure->parts);
}
else {
$flatten = Array(1 => $structure);
}
foreach($flatten as $id => &$part){
switch($part->type) {
case TYPETEXT:
$message = parse_message_decode_text($connection, $part, $message_number, $id, $option, $to_charset);
$result['messages'][] = $message;
break;
case TYPEAPPLICATION: case TYPEAUDIO: case TYPEIMAGE: case TYPEVIDEO: case TYPEOTHER:
$attachment = parse_message_decode_attach($connection, $part, $message_number, $id, $option);
if($attachment){
$result['attachments'][] = $attachment;
}
break;
case TYPEMULTIPART: case TYPEMESSAGE:
break;
}
}
return $result;
}
function parse_message_decode_text($connection, &$part, $message_number, $id, $option, $to_charset){
$msg = parse_message_fetch_body($connection, $part, $message_number, $id, $option);
if($msg && $to_charset){
$charset = '';
if(isset($part->parameters) && count($part->parameters)) {
foreach($part->parameters as &$parameter){
if($parameter->attribute == 'CHARSET') {
$charset = $parameter->value;
break;
}
}
}
if($charset){
$msg = mb_convert_encoding($msg, $to_charset, $charset);
}
$msg = trim($msg);
}
return Array(
'data' => $msg,
'type' => parse_message_get_type($part),
'size' => strlen($msg),
);
}
function parse_message_decode_attach($connection, &$part, $message_number, $id, $option){
$filename = false;
if($part->ifdparameters) {
foreach($part->dparameters as $object) {
if(strtolower($object->attribute) == 'filename') {
$filename = $object->value;
break;
}
}
}
if($part->ifparameters) {
foreach($part->parameters as $object) {
if(strtolower($object->attribute) == 'name') {
$filename = $object->value;
break;
}
}
}
if(!$filename) {
return false;
}
$body = parse_message_fetch_body($connection, $part, $message_number, $id, $option);
return Array(
'data' => $body,
'type' => parse_message_get_type($part),
'name' => $filename,
'size' => strlen($body),
'disposition' => $part->disposition,
);
}
function parse_message_fetch_body($connection, &$part, $message_number, $id, $option){
$body = imap_fetchbody($connection, $message_number, $id, $option);
if($part->encoding == ENCBASE64){
$body = base64_decode($body);
}
else if($part->encoding == ENCQUOTEDPRINTABLE){
$body = quoted_printable_decode($body);
}
return $body;
}
function parse_message_get_type(&$part){
$types = Array(
TYPEMESSAGE => 'message',
TYPEMULTIPART => 'multipart',
TYPEAPPLICATION => 'application',
TYPEAUDIO => 'audio',
TYPEIMAGE => 'image',
TYPETEXT => 'text',
TYPEVIDEO => 'video',
TYPEMODEL => 'model',
TYPEOTHER => 'other',
);
return $types[$part->type] . '/' . strtolower($part->subtype);
}
function parse_message_flatten(&$structure, &$result = array(), $prefix = '', $index = 1, $fullPrefix = true) {
foreach($structure as &$part) {
if(isset($part->parts)) {
if($part->type == TYPEMESSAGE) {
parse_message_flatten($part->parts, $result, $prefix.$index.'.', 0, false);
}
elseif($fullPrefix) {
parse_message_flatten($part->parts, $result, $prefix.$index.'.');
}
else {
parse_message_flatten($part->parts, $result, $prefix);
}
}
else {
$result[$prefix.$index] = $part;
}
$index++;
}
return $result;
}
<?php
function parse_message($connection, $message_number, $option = null, $to_charset = 'UTF-8') {
$result = Array('messages'=>Array(),'attachments'=>Array());
$structure = imap_fetchstructure($connection, $message_number, $option);
if (isset($structure->parts)) {
$flatten = parse_message_flatten($structure->parts);
}
else {
$flatten = Array(1 => $structure);
}
foreach($flatten as $id => &$part){
switch($part->type) {
case TYPETEXT:
$message = parse_message_decode_text($connection, $part, $message_number, $id, $option, $to_charset);
$result['messages'][] = $message;
break;
case TYPEAPPLICATION: case TYPEAUDIO: case TYPEIMAGE: case TYPEVIDEO: case TYPEOTHER:
$attachment = parse_message_decode_attach($connection, $part, $message_number, $id, $option);
if($attachment){
$result['attachments'][] = $attachment;
}
break;
case TYPEMULTIPART: case TYPEMESSAGE:
break;
}
}
return $result;
}
function parse_message_decode_text($connection, &$part, $message_number, $id, $option, $to_charset){
$msg = parse_message_fetch_body($connection, $part, $message_number, $id, $option);
if($msg && $to_charset){
$charset = '';
if(isset($part->parameters) && count($part->parameters)) {
foreach($part->parameters as &$parameter){
if($parameter->attribute == 'CHARSET') {
$charset = $parameter->value;
break;
}
}
}
if($charset){
$msg = mb_convert_encoding($msg, $to_charset, $charset);
}
$msg = trim($msg);
}
return Array(
'data' => $msg,
'type' => parse_message_get_type($part),
'size' => strlen($msg),
);
}
function parse_message_decode_attach($connection, &$part, $message_number, $id, $option){
$filename = false;
if($part->ifdparameters) {
foreach($part->dparameters as $object) {
if(strtolower($object->attribute) == 'filename') {
$filename = $object->value;
break;
}
}
}
if($part->ifparameters) {
foreach($part->parameters as $object) {
if(strtolower($object->attribute) == 'name') {
$filename = $object->value;
break;
}
}
}
if(!$filename) {
return false;
}
$body = parse_message_fetch_body($connection, $part, $message_number, $id, $option);
return Array(
'data' => $body,
'type' => parse_message_get_type($part),
'name' => $filename,
'size' => strlen($body),
'disposition' => $part->disposition,
);
}
function parse_message_fetch_body($connection, &$part, $message_number, $id, $option){
$body = imap_fetchbody($connection, $message_number, $id, $option);
if($part->encoding == ENCBASE64){
$body = base64_decode($body);
}
else if($part->encoding == ENCQUOTEDPRINTABLE){
$body = quoted_printable_decode($body);
}
return $body;
}
function parse_message_get_type(&$part){
$types = Array(
TYPEMESSAGE => 'message',
TYPEMULTIPART => 'multipart',
TYPEAPPLICATION => 'application',
TYPEAUDIO => 'audio',
TYPEIMAGE => 'image',
TYPETEXT => 'text',
TYPEVIDEO => 'video',
TYPEMODEL => 'model',
TYPEOTHER => 'other',
);
return $types[$part->type] . '/' . strtolower($part->subtype);
}
function parse_message_flatten(&$structure, &$result = array(), $prefix = '', $index = 1, $fullPrefix = true) {
foreach($structure as &$part) {
if(isset($part->parts)) {
if($part->type == TYPEMESSAGE) {
parse_message_flatten($part->parts, $result, $prefix.$index.'.', 0, false);
}
elseif($fullPrefix) {
parse_message_flatten($part->parts, $result, $prefix.$index.'.');
}
else {
parse_message_flatten($part->parts, $result, $prefix);
}
}
else {
$result[$prefix.$index] = $part;
}
$index++;
}
return $result;
}

View File

@@ -1,21 +1,21 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Follow Me";
$apps[$x]['menu'][0]['title']['es-mx'] = "Sígueme";
$apps[$x]['menu'][0]['title']['de-de'] = "Follow Me";
$apps[$x]['menu'][0]['title']['de-ch'] = "Follow Me";
$apps[$x]['menu'][0]['title']['de-at'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "a1144e12-873e-4722-9818-02da1adb6ba3";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/calls/calls.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Follow Me";
$apps[$x]['menu'][0]['title']['es-mx'] = "Sígueme";
$apps[$x]['menu'][0]['title']['de-de'] = "Follow Me";
$apps[$x]['menu'][0]['title']['de-ch'] = "Follow Me";
$apps[$x]['menu'][0]['title']['de-at'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Follow Me";
$apps[$x]['menu'][0]['title']['fr-ca'] = "";
$apps[$x]['menu'][0]['title']['fr-ch'] = "";
$apps[$x]['menu'][0]['title']['pt-pt'] = "";
$apps[$x]['menu'][0]['title']['pt-br'] = "";
$apps[$x]['menu'][0]['uuid'] = "a1144e12-873e-4722-9818-02da1adb6ba3";
$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/app/calls/calls.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,44 +1,44 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2010
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
//set the sip_profiles directory for older installs
if (isset($_SESSION['switch']['gateways']['dir'])) {
$orm = new orm;
$orm->name('default_settings');
$orm->uuid($_SESSION['switch']['gateways']['uuid']);
$array['default_setting_category'] = 'switch';
$array['default_setting_subcategory'] = 'sip_profiles';
$array['default_setting_name'] = 'dir';
//$array['default_setting_value'] = '';
//$array['default_setting_enabled'] = 'true';
$orm->save($array);
unset($array);
}
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2010
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
//set the sip_profiles directory for older installs
if (isset($_SESSION['switch']['gateways']['dir'])) {
$orm = new orm;
$orm->name('default_settings');
$orm->uuid($_SESSION['switch']['gateways']['uuid']);
$array['default_setting_category'] = 'switch';
$array['default_setting_subcategory'] = 'sip_profiles';
$array['default_setting_name'] = 'dir';
//$array['default_setting_value'] = '';
//$array['default_setting_enabled'] = 'true';
$orm->save($array);
unset($array);
}
}
?>

View File

@@ -1,12 +1,12 @@
<?php
//$apps[$x]['menu'][0]['title']['en-us'] = "Users";
//$apps[$x]['menu'][0]['uuid'] = "8d4920dc-7077-47ab-86c7-cc377ba2a5f5";
//$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
//$apps[$x]['menu'][0]['category'] = "internal";
//$apps[$x]['menu'][0]['path'] = "/app/meeting_users/meeting_users.php";
//$apps[$x]['menu'][0]['groups'][] = "user";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
<?php
//$apps[$x]['menu'][0]['title']['en-us'] = "Users";
//$apps[$x]['menu'][0]['uuid'] = "8d4920dc-7077-47ab-86c7-cc377ba2a5f5";
//$apps[$x]['menu'][0]['parent_uuid'] = "fd29e39c-c936-f5fc-8e2b-611681b266b5";
//$apps[$x]['menu'][0]['category'] = "internal";
//$apps[$x]['menu'][0]['path'] = "/app/meeting_users/meeting_users.php";
//$apps[$x]['menu'][0]['groups'][] = "user";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

View File

@@ -1,443 +1,443 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('operator_panel_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set user status
if (isset($_REQUEST['status']) && $_REQUEST['status'] != '') {
$user_status = check_str($_REQUEST['status']);
//sql update
$sql = "update v_users set ";
$sql .= "user_status = '".$user_status."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
if (permission_exists("user_account_setting_edit")) {
$count = $db->exec(check_sql($sql));
}
//if call center app is installed then update the user_status
if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/call_center')) {
//update the user_status
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_cmd .= "callcenter_config agent set status ".$_SESSION['user']['username']."@".$_SESSION['domain_name']." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
//update the user state
$cmd = "api callcenter_config agent set state ".$_SESSION['user']['username']."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
}
exit;
}
$document['title'] = $text['title-operator_panel'];
require_once "resources/header.php";
?>
<!-- virtual_drag function holding elements -->
<input type='hidden' class='formfld' id='vd_call_id' value=''>
<input type='hidden' class='formfld' id='vd_ext_from' value=''>
<input type='hidden' class='formfld' id='vd_ext_to' value=''>
<!-- autocomplete for contact lookup -->
<link rel="stylesheet" type="text/css" href="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui.css">
<script language="JavaScript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui-1.9.2.min.js"></script>
<script type="text/javascript">
//ajax refresh
var refresh = 1500;
var source_url = 'index_inc.php?' <?php if (isset($_GET['debug'])) { echo " + '&debug'"; } ?>;
var interval_timer_id;
function loadXmlHttp(url, id) {
var f = this;
f.xmlHttp = null;
/*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
/*@if(@_jscript_version >= 5) // prevents errors in old browsers that barf on try/catch & problems in IE if Active X disabled
try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
@end @*/
if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
else if (/(object)|(function)/.test(typeof createRequest))
f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
else {
f.xmlHttp = null;
// Internet Explorer 5 to 6, includes IE 7+ when local //
/*@cc_on @*/
/*@if(@_jscript_version >= 5)
try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
@end @*/
}
if(f.xmlHttp != null){
f.el = document.getElementById(id);
f.xmlHttp.open("GET",url,true);
f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
f.xmlHttp.send(null);
}
}
loadXmlHttp.prototype.stateChanged=function () {
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_reponse').innerHTML = this.xmlHttp.responseText;
}
var requestTime = function() {
var url = source_url;
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
<?php
if (isset($_GET['debug'])) {
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
refresh_start();
}
if (window.addEventListener) {
window.addEventListener('load', requestTime, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', requestTime);
}
//drag/drop functionality
var ie_workaround = false;
function drag(ev, from_ext) {
refresh_stop();
try {
ev.dataTransfer.setData("Call", ev.target.id);
ev.dataTransfer.setData("From", from_ext);
virtual_drag_reset();
}
catch (err) {
// likely internet explorer being used, do workaround
virtual_drag(ev.target.id, from_ext);
ie_workaround = true;
}
}
function allowDrop(ev, target_id) {
ev.preventDefault();
}
function discardDrop(ev, target_id) {
ev.preventDefault();
}
function drop(ev, to_ext) {
ev.preventDefault();
if (ie_workaround) { // potentially set on drag() function above
var call_id = document.getElementById('vd_call_id').value;
var from_ext = document.getElementById('vd_ext_from').value;
virtual_drag_reset();
}
else {
var call_id = ev.dataTransfer.getData("Call");
var from_ext = ev.dataTransfer.getData("From");
}
var to_ext = to_ext;
var cmd;
if (call_id != '') {
cmd = get_transfer_cmd(call_id, to_ext); //transfer a call
}
else {
if (from_ext != to_ext) { // prevent user from dragging extention onto self
cmd = get_originate_cmd(from_ext+'@<?php echo $_SESSION["domain_name"]?>', to_ext); //make a call
}
}
if (cmd != '') { send_cmd('exec.php?cmd='+escape(cmd)); }
refresh_start();
}
//refresh controls
function refresh_stop() {
clearInterval(interval_timer_id);
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">"; }
}
function refresh_start() {
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
refresh_stop();
interval_timer_id = setInterval( function() {
url = source_url;
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
<?php
if (isset($_GET['debug'])) {
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
}, refresh);
}
//call or transfer to destination
function go_destination(from_ext, destination, which, call_id) {
call_id = typeof call_id !== 'undefined' ? call_id : '';
if (destination != '') {
if (!isNaN(parseFloat(destination)) && isFinite(destination)) {
if (call_id == '') {
cmd = get_originate_cmd(from_ext+'@<?php echo $_SESSION["domain_name"]?>', destination); //make a call
}
else {
cmd = get_transfer_cmd(call_id, destination);
}
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
$('#destination_'+from_ext+'_'+which).removeAttr('onblur');
toggle_destination(from_ext, which);
}
}
}
}
//kill call
function kill_call(call_id) {
if (call_id != '') {
cmd = 'uuid_kill ' + call_id;
send_cmd('exec.php?cmd='+escape(cmd));
}
}
//eavesdrop call
function eavesdrop_call(ext, chan_uuid) {
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid);
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
}
}
}
//record call
function record_call(chan_uuid) {
if (chan_uuid != '') {
cmd = get_record_cmd(chan_uuid);
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
}
}
}
//used by call control and ajax refresh functions
function send_cmd(url) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
}
//hide/show destination input field
function toggle_destination(ext, which) {
refresh_stop();
if (which == 'call') {
if ($('#destination_'+ext+'_call').is(':visible')) {
$('#destination_'+ext+'_call').val('');
$('#destination_'+ext+'_call').autocomplete('destroy');
$('#destination_'+ext+'_call').hide(0, function() {
$('.call_control').children().attr('onmouseout', "refresh_start();");
$('.destination_control').attr('onmouseout', "refresh_start();");
refresh_start();
});
}
else {
$('#destination_'+ext+'_call').show(0, function() {
$('#destination_'+ext+'_call').focus();
$('#destination_'+ext+'_call').autocomplete({
source: "autocomplete.php",
minLength: 3,
select: function(event, ui) {
$('#destination_'+ext+'_call').val(ui.item.value);
$('#frm_destination_'+ext+'_call').submit();
}
});
$('.call_control').children().removeAttr('onmouseout');
$('.destination_control').removeAttr('onmouseout');
});
}
}
else if (which == 'transfer') {
if ($('#destination_'+ext+'_transfer').is(':visible')) {
$('#destination_'+ext+'_transfer').val('');
$('#destination_'+ext+'_transfer').autocomplete('destroy');
$('#destination_'+ext+'_transfer').hide(0, function() {
$('#op_caller_details_'+ext).show();
$('.call_control').children().attr('onmouseout', "refresh_start();");
$('.destination_control').attr('onmouseout', "refresh_start();");
refresh_start();
});
}
else {
$('#op_caller_details_'+ext).hide(0, function() {
$('#destination_'+ext+'_transfer').show(0, function() {
$('#destination_'+ext+'_transfer').focus();
$('#destination_'+ext+'_transfer').autocomplete({
source: "autocomplete.php",
minLength: 3,
select: function(event, ui) {
$('#destination_'+ext+'_transfer').val(ui.item.value);
$('#frm_destination_'+ext+'_transfer').submit();
}
});
$('.call_control').children().removeAttr('onmouseout');
$('.destination_control').removeAttr('onmouseout');
});
});
}
}
}
function get_transfer_cmd(uuid, destination) {
cmd = "uuid_transfer " + uuid + " " + destination + " XML <?php echo trim($_SESSION['user_context'])?>";
return cmd;
}
function get_originate_cmd(source, destination) {
cmd = "bgapi originate {sip_auto_answer=true,origination_caller_id_number=" + destination + ",sip_h_Call-Info=_undef_}user/" + source + " " + destination + " XML <?php echo trim($_SESSION['user_context'])?>";
return cmd;
}
function get_eavesdrop_cmd(ext, chan_uuid) {
cmd = "bgapi originate {origination_caller_id_name=<?php echo $text['label-eavesdrop']?>,origination_caller_id_number=" + ext + "}user/"+(document.getElementById('eavesdrop_dest').value)+"@<?php echo $_SESSION['domain_name']?> &eavesdrop(" + chan_uuid + ")";
return cmd;
}
function get_record_cmd(uuid) {
cmd = "uuid_record " + uuid + " start <?php echo $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']; ?>/archive/<?php echo date('Y')?>/<?php echo date('M')?>/<?php echo date('d')?>/" + uuid + ".wav";
return cmd;
}
//virtual functions
function virtual_drag(call_id, ext) {
if (document.getElementById('vd_ext_from').value != '' && document.getElementById('vd_ext_to').value != '') {
virtual_drag_reset();
}
if (call_id != '') {
document.getElementById('vd_call_id').value = call_id;
}
if (ext != '') {
if (document.getElementById('vd_ext_from').value == '') {
document.getElementById('vd_ext_from').value = ext;
document.getElementById(ext).style.borderStyle = 'dotted';
if (document.getElementById('vd_ext_to').value != '') {
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
document.getElementById('vd_ext_to').value = '';
}
}
else {
document.getElementById('vd_ext_to').value = ext;
if (document.getElementById('vd_ext_from').value != document.getElementById('vd_ext_to').value) {
if (document.getElementById('vd_call_id').value != '') {
cmd = get_transfer_cmd(document.getElementById('vd_call_id').value, document.getElementById('vd_ext_to').value); //transfer a call
}
else {
cmd = get_originate_cmd(document.getElementById('vd_ext_from').value + '@<?php echo $_SESSION["domain_name"]?>', document.getElementById('vd_ext_to').value); //originate a call
}
if (cmd != '') {
//alert(cmd);
send_cmd('exec.php?cmd='+escape(cmd));
}
}
virtual_drag_reset();
}
}
}
function virtual_drag_reset(vd_var) {
if (!(vd_var === undefined)) {
document.getElementById(vd_var).value = '';
}
else {
document.getElementById('vd_call_id').value = '';
if (document.getElementById('vd_ext_from').value != '') {
document.getElementById(document.getElementById('vd_ext_from').value).style.borderStyle = '';
document.getElementById('vd_ext_from').value = '';
}
if (document.getElementById('vd_ext_to').value != '') {
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
document.getElementById('vd_ext_to').value = '';
}
}
}
</script>
<style type="text/css">
TABLE {
border-spacing: 0px;
border-collapse: collapse;
border: none;
}
</style>
<?php
//create simple array of users own extensions
unset($_SESSION['user']['extensions']);
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
}
?>
<div id='ajax_reponse'></div>
<div id='cmd_reponse' style='display: none;'></div>
<br><br>
<?php
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Luis Daniel Lucio Quiroz <dlucio@okay.com.mx>
*/
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('operator_panel_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//set user status
if (isset($_REQUEST['status']) && $_REQUEST['status'] != '') {
$user_status = check_str($_REQUEST['status']);
//sql update
$sql = "update v_users set ";
$sql .= "user_status = '".$user_status."' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "and user_uuid = '".$_SESSION['user']['user_uuid']."' ";
if (permission_exists("user_account_setting_edit")) {
$count = $db->exec(check_sql($sql));
}
//if call center app is installed then update the user_status
if (is_dir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/call_center')) {
//update the user_status
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
$switch_cmd .= "callcenter_config agent set status ".$_SESSION['user']['username']."@".$_SESSION['domain_name']." '".$user_status."'";
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
//update the user state
$cmd = "api callcenter_config agent set state ".$_SESSION['user']['username']."@".$_SESSION['domain_name']." Waiting";
$response = event_socket_request($fp, $cmd);
}
exit;
}
$document['title'] = $text['title-operator_panel'];
require_once "resources/header.php";
?>
<!-- virtual_drag function holding elements -->
<input type='hidden' class='formfld' id='vd_call_id' value=''>
<input type='hidden' class='formfld' id='vd_ext_from' value=''>
<input type='hidden' class='formfld' id='vd_ext_to' value=''>
<!-- autocomplete for contact lookup -->
<link rel="stylesheet" type="text/css" href="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui.css">
<script language="JavaScript" type="text/javascript" src="<?php echo PROJECT_PATH; ?>/resources/jquery/jquery-ui-1.9.2.min.js"></script>
<script type="text/javascript">
//ajax refresh
var refresh = 1500;
var source_url = 'index_inc.php?' <?php if (isset($_GET['debug'])) { echo " + '&debug'"; } ?>;
var interval_timer_id;
function loadXmlHttp(url, id) {
var f = this;
f.xmlHttp = null;
/*@cc_on @*/ // used here and below, limits try/catch to those IE browsers that both benefit from and support it
/*@if(@_jscript_version >= 5) // prevents errors in old browsers that barf on try/catch & problems in IE if Active X disabled
try {f.ie = window.ActiveXObject}catch(e){f.ie = false;}
@end @*/
if (window.XMLHttpRequest&&!f.ie||/^http/.test(window.location.href))
f.xmlHttp = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari, others, IE 7+ when live - this is the standard method
else if (/(object)|(function)/.test(typeof createRequest))
f.xmlHttp = createRequest(); // ICEBrowser, perhaps others
else {
f.xmlHttp = null;
// Internet Explorer 5 to 6, includes IE 7+ when local //
/*@cc_on @*/
/*@if(@_jscript_version >= 5)
try{f.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){try{f.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){f.xmlHttp=null;}}
@end @*/
}
if(f.xmlHttp != null){
f.el = document.getElementById(id);
f.xmlHttp.open("GET",url,true);
f.xmlHttp.onreadystatechange = function(){f.stateChanged();};
f.xmlHttp.send(null);
}
}
loadXmlHttp.prototype.stateChanged=function () {
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_reponse').innerHTML = this.xmlHttp.responseText;
}
var requestTime = function() {
var url = source_url;
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
<?php
if (isset($_GET['debug'])) {
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
refresh_start();
}
if (window.addEventListener) {
window.addEventListener('load', requestTime, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', requestTime);
}
//drag/drop functionality
var ie_workaround = false;
function drag(ev, from_ext) {
refresh_stop();
try {
ev.dataTransfer.setData("Call", ev.target.id);
ev.dataTransfer.setData("From", from_ext);
virtual_drag_reset();
}
catch (err) {
// likely internet explorer being used, do workaround
virtual_drag(ev.target.id, from_ext);
ie_workaround = true;
}
}
function allowDrop(ev, target_id) {
ev.preventDefault();
}
function discardDrop(ev, target_id) {
ev.preventDefault();
}
function drop(ev, to_ext) {
ev.preventDefault();
if (ie_workaround) { // potentially set on drag() function above
var call_id = document.getElementById('vd_call_id').value;
var from_ext = document.getElementById('vd_ext_from').value;
virtual_drag_reset();
}
else {
var call_id = ev.dataTransfer.getData("Call");
var from_ext = ev.dataTransfer.getData("From");
}
var to_ext = to_ext;
var cmd;
if (call_id != '') {
cmd = get_transfer_cmd(call_id, to_ext); //transfer a call
}
else {
if (from_ext != to_ext) { // prevent user from dragging extention onto self
cmd = get_originate_cmd(from_ext+'@<?php echo $_SESSION["domain_name"]?>', to_ext); //make a call
}
}
if (cmd != '') { send_cmd('exec.php?cmd='+escape(cmd)); }
refresh_start();
}
//refresh controls
function refresh_stop() {
clearInterval(interval_timer_id);
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_paused.png' style='width: 16px; height: 16px; border: none; margin-top: 1px; cursor: pointer;' onclick='refresh_start();' alt=\"<?php echo $text['label-refresh_enable']?>\" title=\"<?php echo $text['label-refresh_enable']?>\">"; }
}
function refresh_start() {
if (document.getElementById('refresh_state')) { document.getElementById('refresh_state').innerHTML = "<img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' alt=\"<?php echo $text['label-refresh_pause']?>\" title=\"<?php echo $text['label-refresh_pause']?>\">"; }
refresh_stop();
interval_timer_id = setInterval( function() {
url = source_url;
url += '&vd_ext_from=' + document.getElementById('vd_ext_from').value;
url += '&vd_ext_to=' + document.getElementById('vd_ext_to').value;
url += '&group=' + ((document.getElementById('group')) ? document.getElementById('group').value : '');
url += '&eavesdrop_dest=' + ((document.getElementById('eavesdrop_dest')) ? document.getElementById('eavesdrop_dest').value : '');
<?php
if (isset($_GET['debug'])) {
echo "url += '&debug';";
}
?>
new loadXmlHttp(url, 'ajax_reponse');
}, refresh);
}
//call or transfer to destination
function go_destination(from_ext, destination, which, call_id) {
call_id = typeof call_id !== 'undefined' ? call_id : '';
if (destination != '') {
if (!isNaN(parseFloat(destination)) && isFinite(destination)) {
if (call_id == '') {
cmd = get_originate_cmd(from_ext+'@<?php echo $_SESSION["domain_name"]?>', destination); //make a call
}
else {
cmd = get_transfer_cmd(call_id, destination);
}
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
$('#destination_'+from_ext+'_'+which).removeAttr('onblur');
toggle_destination(from_ext, which);
}
}
}
}
//kill call
function kill_call(call_id) {
if (call_id != '') {
cmd = 'uuid_kill ' + call_id;
send_cmd('exec.php?cmd='+escape(cmd));
}
}
//eavesdrop call
function eavesdrop_call(ext, chan_uuid) {
if (ext != '' && chan_uuid != '') {
cmd = get_eavesdrop_cmd(ext, chan_uuid);
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
}
}
}
//record call
function record_call(chan_uuid) {
if (chan_uuid != '') {
cmd = get_record_cmd(chan_uuid);
if (cmd != '') {
send_cmd('exec.php?cmd='+escape(cmd));
}
}
}
//used by call control and ajax refresh functions
function send_cmd(url) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",url,false);
xmlhttp.send(null);
document.getElementById('cmd_reponse').innerHTML=xmlhttp.responseText;
}
//hide/show destination input field
function toggle_destination(ext, which) {
refresh_stop();
if (which == 'call') {
if ($('#destination_'+ext+'_call').is(':visible')) {
$('#destination_'+ext+'_call').val('');
$('#destination_'+ext+'_call').autocomplete('destroy');
$('#destination_'+ext+'_call').hide(0, function() {
$('.call_control').children().attr('onmouseout', "refresh_start();");
$('.destination_control').attr('onmouseout', "refresh_start();");
refresh_start();
});
}
else {
$('#destination_'+ext+'_call').show(0, function() {
$('#destination_'+ext+'_call').focus();
$('#destination_'+ext+'_call').autocomplete({
source: "autocomplete.php",
minLength: 3,
select: function(event, ui) {
$('#destination_'+ext+'_call').val(ui.item.value);
$('#frm_destination_'+ext+'_call').submit();
}
});
$('.call_control').children().removeAttr('onmouseout');
$('.destination_control').removeAttr('onmouseout');
});
}
}
else if (which == 'transfer') {
if ($('#destination_'+ext+'_transfer').is(':visible')) {
$('#destination_'+ext+'_transfer').val('');
$('#destination_'+ext+'_transfer').autocomplete('destroy');
$('#destination_'+ext+'_transfer').hide(0, function() {
$('#op_caller_details_'+ext).show();
$('.call_control').children().attr('onmouseout', "refresh_start();");
$('.destination_control').attr('onmouseout', "refresh_start();");
refresh_start();
});
}
else {
$('#op_caller_details_'+ext).hide(0, function() {
$('#destination_'+ext+'_transfer').show(0, function() {
$('#destination_'+ext+'_transfer').focus();
$('#destination_'+ext+'_transfer').autocomplete({
source: "autocomplete.php",
minLength: 3,
select: function(event, ui) {
$('#destination_'+ext+'_transfer').val(ui.item.value);
$('#frm_destination_'+ext+'_transfer').submit();
}
});
$('.call_control').children().removeAttr('onmouseout');
$('.destination_control').removeAttr('onmouseout');
});
});
}
}
}
function get_transfer_cmd(uuid, destination) {
cmd = "uuid_transfer " + uuid + " " + destination + " XML <?php echo trim($_SESSION['user_context'])?>";
return cmd;
}
function get_originate_cmd(source, destination) {
cmd = "bgapi originate {sip_auto_answer=true,origination_caller_id_number=" + destination + ",sip_h_Call-Info=_undef_}user/" + source + " " + destination + " XML <?php echo trim($_SESSION['user_context'])?>";
return cmd;
}
function get_eavesdrop_cmd(ext, chan_uuid) {
cmd = "bgapi originate {origination_caller_id_name=<?php echo $text['label-eavesdrop']?>,origination_caller_id_number=" + ext + "}user/"+(document.getElementById('eavesdrop_dest').value)+"@<?php echo $_SESSION['domain_name']?> &eavesdrop(" + chan_uuid + ")";
return cmd;
}
function get_record_cmd(uuid) {
cmd = "uuid_record " + uuid + " start <?php echo $_SESSION['switch']['recordings']['dir']."/".$_SESSION['domain_name']; ?>/archive/<?php echo date('Y')?>/<?php echo date('M')?>/<?php echo date('d')?>/" + uuid + ".wav";
return cmd;
}
//virtual functions
function virtual_drag(call_id, ext) {
if (document.getElementById('vd_ext_from').value != '' && document.getElementById('vd_ext_to').value != '') {
virtual_drag_reset();
}
if (call_id != '') {
document.getElementById('vd_call_id').value = call_id;
}
if (ext != '') {
if (document.getElementById('vd_ext_from').value == '') {
document.getElementById('vd_ext_from').value = ext;
document.getElementById(ext).style.borderStyle = 'dotted';
if (document.getElementById('vd_ext_to').value != '') {
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
document.getElementById('vd_ext_to').value = '';
}
}
else {
document.getElementById('vd_ext_to').value = ext;
if (document.getElementById('vd_ext_from').value != document.getElementById('vd_ext_to').value) {
if (document.getElementById('vd_call_id').value != '') {
cmd = get_transfer_cmd(document.getElementById('vd_call_id').value, document.getElementById('vd_ext_to').value); //transfer a call
}
else {
cmd = get_originate_cmd(document.getElementById('vd_ext_from').value + '@<?php echo $_SESSION["domain_name"]?>', document.getElementById('vd_ext_to').value); //originate a call
}
if (cmd != '') {
//alert(cmd);
send_cmd('exec.php?cmd='+escape(cmd));
}
}
virtual_drag_reset();
}
}
}
function virtual_drag_reset(vd_var) {
if (!(vd_var === undefined)) {
document.getElementById(vd_var).value = '';
}
else {
document.getElementById('vd_call_id').value = '';
if (document.getElementById('vd_ext_from').value != '') {
document.getElementById(document.getElementById('vd_ext_from').value).style.borderStyle = '';
document.getElementById('vd_ext_from').value = '';
}
if (document.getElementById('vd_ext_to').value != '') {
document.getElementById(document.getElementById('vd_ext_to').value).style.borderStyle = '';
document.getElementById('vd_ext_to').value = '';
}
}
}
</script>
<style type="text/css">
TABLE {
border-spacing: 0px;
border-collapse: collapse;
border: none;
}
</style>
<?php
//create simple array of users own extensions
unset($_SESSION['user']['extensions']);
foreach ($_SESSION['user']['extension'] as $assigned_extensions) {
$_SESSION['user']['extensions'][] = $assigned_extensions['user'];
}
?>
<div id='ajax_reponse'></div>
<div id='cmd_reponse' style='display: none;'></div>
<br><br>
<?php
require_once "resources/footer.php";
?>

View File

@@ -1,450 +1,450 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. 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";
require_once "./resources/functions/get_call_activity.php";
if (permission_exists('operator_panel_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
$activity = get_call_activity();
foreach ($activity as $extension => $fields) {
if (substr_count($fields['call_group'], ',')) {
$tmp = explode(',', $fields['call_group']);
foreach ($tmp as $tmp_index => $tmp_value) {
if (trim($tmp_value) == '') { unset($tmp[$tmp_index]); }
else { $groups[] = $tmp_value; }
}
}
else if ($fields['call_group'] != '') {
$groups[] = $fields['call_group'];
}
}
$groups = array_unique($groups);
sort($groups);
$onhover_pause_refresh = " onmouseover='refresh_stop();' onmouseout='refresh_start();'";
echo "<table width='100%'>";
echo " <tr>";
echo " <td valign='top' align='left' width='50%' nowrap>";
echo " <b>".$text['title-operator_panel']."</b>";
echo " </td>";
echo " <td valign='top' align='center' nowrap>";
if (sizeof($_SESSION['user']['extensions']) > 0) {
$status_options[1]['status'] = "Available";
$status_options[1]['label'] = $text['label-status_available'];
$status_options[1]['style'] = "op_btn_status_available";
if (permission_exists('operator_panel_on_demand')) {
$status_options[2]['status'] = "Available (On Demand)";
$status_options[2]['label'] = $text['label-status_on_demand'];
$status_options[2]['style'] = "op_btn_status_available_on_demand";
}
$status_options[3]['status'] = "On Break";
$status_options[3]['label'] = $text['label-status_on_break'];
$status_options[3]['style'] = "op_btn_status_on_break";
$status_options[4]['status'] = "Do Not Disturb";
$status_options[4]['label'] = $text['label-status_do_not_disturb'];
$status_options[4]['style'] = "op_btn_status_do_not_disturb";
$status_options[5]['status'] = "Logged Out";
$status_options[5]['label'] = $text['label-status_logged_out'];
$status_options[5]['style'] = "op_btn_status_logged_out";
foreach ($status_options as $status_option) {
echo " <input type='button' id='".$status_option['style']."' class='btn' value=\"".$status_option['label']."\" onclick=\"send_cmd('index.php?status='+escape('".$status_option['status']."')); this.disabled='disabled'; refresh_start();\" ".$onhover_pause_refresh.">\n";
}
}
echo " </td>";
echo " <td valign='top' align='right' width='50%' nowrap>";
echo " <table cellpadding='0' cellspacing='0' border='0'>";
echo " <tr>";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>";
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">";
echo " </td>";
if (permission_exists('operator_panel_eavesdrop')) {
echo " <td valign='top' nowrap='nowrap'>";
if (sizeof($_SESSION['user']['extensions']) > 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : $_REQUEST['eavesdrop_dest'])."\">";
echo " <img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 0px 5px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'>";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".$user_extension."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".$user_extension."</option>\n";
}
echo " </select>\n";
}
else if (sizeof($_SESSION['user']['extensions']) == 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".$_SESSION['user']['extension'][0]['destination']."\">";
}
echo " </td>";
}
if (sizeof($groups) > 0) {
echo " <td valign='top' nowrap='nowrap'>";
echo " <input type='hidden' id='group' value=\"".$_REQUEST['group']."\">";
if (sizeof($groups) > 5) {
//show select box
echo " <select class='formfld' onchange=\"document.getElementById('group').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
echo " <option value='' ".(($_REQUEST['group'] == '') ? "selected" : null).">".$text['label-call_group']."</option>";
echo " <option value=''>".$text['button-all']."</option>";
foreach ($groups as $group) {
echo " <option value='".$group."' ".(($_REQUEST['group'] == $group) ? "selected" : null).">".$group."</option>\n";
}
echo " </select>\n";
}
else {
//show buttons
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".$text['button-all']."\" onclick=\"document.getElementById('group').value = '';\" ".$onhover_pause_refresh.">";
foreach ($groups as $group) {
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".$group."\" ".(($_REQUEST['group'] == $group) ? "disabled='disabled'" : null)." onclick=\"document.getElementById('group').value = this.value;\" ".$onhover_pause_refresh.">";
}
}
echo " </td>";
}
echo " </tr>";
echo " </table>";
echo " </td>";
echo " </tr>";
echo "</table>";
echo "<br>";
foreach ($activity as $extension => $ext) {
unset($block);
//filter by group, if defined
if ($_REQUEST['group'] != '' && substr_count($ext['call_group'], $_REQUEST['group']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
//check if feature code being called
$format_number = (substr($ext['dest'], 0, 1) == '*') ? false : true;
//determine extension state, direction icon, and displayed name/number for caller/callee
if ($ext['state'] == 'CS_EXECUTE') {
if (($ext['callstate'] == 'RINGING' || $ext['callstate'] == 'EARLY' || $ext['callstate'] == 'RING_WAIT') && $ext['direction'] == 'inbound') {
$ext_state = 'ringing';
}
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
$ext_state = 'active';
}
else if ($ext['callstate'] == 'RING_WAIT' && $ext['direction'] == 'outbound') {
$ext_state = 'ringing';
}
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'inbound') {
$ext_state = 'active';
}
if (!$format_number) {
$call_name = 'System';
$call_number = $ext['dest'];
}
else {
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
}
$dir_icon = 'outbound';
}
else if ($ext['state'] == 'CS_HIBERNATE') {
if ($ext['callstate'] == 'ACTIVE') {
$ext_state = 'active';
if ($ext['direction'] == 'inbound') {
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
$dir_icon = 'outbound';
}
else if ($ext['direction'] == 'outbound') {
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
$call_number = format_phone($ext['cid_num']);
$dir_icon = 'inbound';
}
}
}
else if ($ext['state'] == 'CS_CONSUME_MEDIA' || $ext['state'] == 'CS_EXCHANGE_MEDIA') {
if ($ext['state'] == 'CS_CONSUME_MEDIA' && $ext['callstate'] == 'RINGING' && $ext['direction'] == 'outbound') {
$ext_state = 'ringing';
}
else if ($ext['state'] == 'CS_EXCHANGE_MEDIA' && $ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
$ext_state = 'active';
}
$dir_icon = 'inbound';
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
$call_number = format_phone($ext['cid_num']);
}
else {
unset($ext_state, $dir_icon, $call_name, $call_number);
}
//determine block style by state (if any)
$style = ($ext_state != '') ? "op_state_".$ext_state : null;
//determine the call identifier passed on drop
if ($ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') { // transfer an outbound internal call
$call_identifier = $activity[$call_number]['uuid'];
}
else if (($ext['variable_call_direction'] == 'outbound' || $ext['variable_call_direction'] == 'local') && $ext['variable_bridge_uuid'] != '') { // transfer an outbound external call
$call_identifier = $ext['variable_bridge_uuid'];
}
else {
if( $ext['call_uuid'] ) {
$call_identifier = $ext['call_uuid']; // transfer all other call types
}
else {
$call_identifier = $ext['uuid']; // e.g. voice menus
}
}
//determine extension draggable state
if (permission_exists('operator_panel_manage')) {
if (!in_array($extension, $_SESSION['user']['extensions'])) {
//other extension
if ($ext_state == "ringing") {
if ($_GET['vd_ext_from'] == '' && $dir_icon == 'inbound') {
$draggable = true; // selectable - is ringing and not outbound so can transfer away the call (can set as vd_ext_from)
}
else {
$draggable = false; // unselectable - is ringing so can't send a call to the ext (can't set as vd_ext_to)
}
}
else if ($ext_state == 'active') {
$draggable = false; // unselectable - on a call already so can't transfer or send a call to the ext (can't set as vd_ext_from or vd_ext_to)
}
else { // idle
if ($_GET['vd_ext_from'] == '') {
$draggable = false; // unselectable - is idle, but can't initiate a call from the ext as is not assigned to user (can't set as vd_ext_from)
}
else {
$draggable = true; // selectable - is idle, so can transfer a call in to ext (can set as vd_ext_to).
}
}
}
else {
//user extension
if ($ext['uuid'] != '' && $ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') {
$draggable = false;
}
else if ($ext_state == 'ringing' && $ext['variable_call_direction'] == 'local') {
$draggable = false;
}
else if ($ext_state != '' && !$format_number) {
$draggable = false;
}
else {
$draggable = true;
}
}
}
else {
$draggable = false;
}
//determine extension (user) status
$ext_status = (in_array($extension, $_SESSION['user']['extensions'])) ? $ext_user_status[$_SESSION['user_uuid']] : $ext_user_status[$ext['user_uuid']];
switch ($ext_status) {
case "Available" :
$status_icon = "available";
$status_hover = $text['label-status_available'];
break;
case "Available (On Demand)" :
$status_icon = "available_on_demand";
$status_hover = $text['label-status_available_on_demand'];
break;
case "On Break" :
$status_icon = "on_break";
$status_hover = $text['label-status_on_break'];
break;
case "Do Not Disturb" :
$status_icon = "do_not_disturb";
$status_hover = $text['label-status_do_not_disturb'];
break;
default :
$status_icon = "logged_out";
$status_hover = $text['label-status_logged_out_or_unknown'];
}
$block .= "<div id='".$extension."' class='op_ext ".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".(($ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
$block .= "<table class='op_ext ".$style."'>";
$block .= " <tr>";
$block .= " <td class='op_ext_icon'>";
$block .= " <span name='".$extension."'>"; // DRAG FROM
$block .= "<img id='".$call_identifier."' class='op_ext_icon' src='resources/images/status_".$status_icon.".png' title='".$status_hover."' ".(($draggable) ? "draggable='true' ondragstart=\"drag(event, this.parentNode.getAttribute('name'));\" onclick=\"virtual_drag('".$call_identifier."', '".$extension."');\"" : "onfocus='this.blur();' draggable='false' style='cursor: not-allowed;'").">";
$block .= "</span>";
$block .= " </td>";
$block .= " <td class='op_ext_info ".$style."'>";
if ($dir_icon != '') {
$block .= " <img src='resources/images/".$dir_icon.".png' align='right' style='margin-top: 3px; margin-right: 1px; width: 12px; height: 12px; cursor: help;' draggable='false' alt=\"".$text['label-call_direction']."\" title=\"".$text['label-call_direction']."\">";
}
$block .= " <span class='op_user_info'>";
if ($ext['effective_caller_id_name'] != '' && $ext['effective_caller_id_name'] != $extension) {
$block .= " <strong class='strong'>".$ext['effective_caller_id_name']."</strong> (".$extension.")";
}
else {
$block .= " <strong class='strong'>".$extension."</strong>";
}
$block .= " </span><br>";
if ($ext_state != '') {
$block .= " <span class='op_caller_info'>";
$block .= " <table align='right'><tr><td style='text-align: right;'>";
$block .= " <span class='op_call_info'>".$ext['call_length']."</span><br>";
$block .= " <span class='call_control'>";
//record
if (permission_exists('operator_panel_record') && $ext_state == 'active') {
$call_identifier_record = $ext['call_uuid'];
$rec_file = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$call_identifier_record.".wav";
if (file_exists($rec_file)) {
$block .= "<img src='resources/images/recording.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: help;' title=\"".$text['label-recording']."\" ".$onhover_pause_refresh.">";
}
else {
$block .= "<img src='resources/images/record.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title=\"".$text['label-record']."\" onclick=\"record_call('".$call_identifier_record."');\" ".$onhover_pause_refresh.">";
}
}
//eavesdrop
if (permission_exists('operator_panel_eavesdrop') && $ext_state == 'active' && sizeof($_SESSION['user']['extensions']) > 0 && !in_array($extension, $_SESSION['user']['extensions'])) {
$block .= "<img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-eavesdrop']."' onclick=\"eavesdrop_call('".$ext['destination']."','".$call_identifier."');\" ".$onhover_pause_refresh.">";
}
//kill
if (permission_exists('operator_panel_kill') || in_array($extension, $_SESSION['user']['extensions'])) {
if ($ext['variable_bridge_uuid'] == '' && $ext_state == 'ringing') {
$call_identifier_kill = $ext['uuid'];
}
else if ($dir_icon == 'outbound') {
$call_identifier_kill = $ext['uuid'];
}
else {
$call_identifier_kill = $call_identifier;
}
$block .= "<img src='resources/images/kill.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-kill']."' onclick=\"kill_call('".$call_identifier_kill."');\" ".$onhover_pause_refresh.">";
}
$block .= "</span>";
//transfer
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
$block .= "<img id='destination_control_".$extension."_transfer' class='destination_control' src='resources/images/keypad_transfer.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' onclick=\"toggle_destination('".$extension."', 'transfer');\" ".$onhover_pause_refresh.">";
}
$block .= " </td></tr></table>";
$block .= " <span id='op_caller_details_".$extension."'><strong>".$call_name."</strong><br>".$call_number."</span>";
$block .= " </span>";
//transfer
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
$call_identifier_transfer = $ext['variable_bridge_uuid'];
$block .= " <form id='frm_destination_".$extension."_transfer' onsubmit=\"go_destination('".$extension."', document.getElementById('destination_".$extension."_transfer').value, 'transfer', '".$call_identifier_transfer."'); return false;\">";
$block .= " <input type='text' class='formfld' id='destination_".$extension."_transfer' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 3px; text-align: center; display: none;' onblur=\"toggle_destination('".$extension."', 'transfer');\">";
$block .= " </form>\n";
}
}
else {
//call
if (in_array($extension, $_SESSION['user']['extensions'])) {
$block .= " <img id='destination_control_".$extension."_call' class='destination_control' src='resources/images/keypad_call.png' style='width: 12px; height: 12px; border: none; margin-top: 26px; margin-right: 1px; cursor: pointer;' align='right' onclick=\"toggle_destination('".$extension."', 'call');\" ".$onhover_pause_refresh.">";
$block .= " <form id='frm_destination_".$extension."_call' onsubmit=\"go_destination('".$extension."', document.getElementById('destination_".$extension."_call').value, 'call'); return false;\">";
$block .= " <input type='text' class='formfld' id='destination_".$extension."_call' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 10px; text-align: center; display: none;' onblur=\"toggle_destination('".$extension."', 'call');\">";
$block .= " </form>\n";
}
}
$block .= " </td>";
$block .= " </tr>";
$block .= "</table>";
if (if_group("superadmin") && isset($_GET['debug'])) {
$block .= "<span style='font-size: 10px;'>";
$block .= "From ID<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: maroon'>".$extension."</strong><br>";
$block .= "uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['uuid'] ? 'blue' : 'black').";'>".$ext['uuid']."</strong><br>";
$block .= "call_uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['call_uuid'] ? 'blue' : 'black').";'>".$ext['call_uuid']."</strong><br>";
$block .= "variable_bridge_uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['variable_bridge_uuid'] ? 'blue' : 'black').";'>".$ext['variable_bridge_uuid']."</strong><br>";
$block .= "direction<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['direction']."</strong><br>";
$block .= "variable_call_direction<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['variable_call_direction']."</strong><br>";
$block .= "state<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['state']."</strong><br>";
$block .= "cid_num<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['cid_num']."</strong><br>";
$block .= "dest<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['dest']."</strong><br>";
$block .= "context<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['context']."</strong><br>";
$block .= "presence_id<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['presence_id']."</strong><br>";
$block .= "callstate<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['callstate']."</strong><br>";
$block .= "</span>";
}
$block .= "</div>";
if (in_array($extension, $_SESSION['user']['extensions'])) {
$user_extensions[] = $block;
}
else {
$other_extensions[] = $block;
}
}
if (sizeof($user_extensions) > 0) {
echo "<table width='100%'><tr><td>";
foreach ($user_extensions as $ext_block) {
echo $ext_block;
}
echo "</td></tr></table>";
}
if ($_REQUEST['group'] != '') {
if (sizeof($user_extensions) > 0) { echo "<br>"; }
echo "<strong style='color: black;'>".ucwords($_REQUEST['group'])."</strong>";
echo "<br><br>";
}
else if (sizeof($user_extensions) > 0) {
echo "<br>";
echo "<strong style='color: black;'>".$text['label-other_extensions']."</strong>";
echo "<br><br>";
}
if (sizeof($other_extensions) > 0) {
echo "<table width='100%'><tr><td>";
foreach ($other_extensions as $ext_block) {
echo $ext_block;
}
echo "</td></tr></table>";
}
else {
echo $text['label-no_extensions_found'];
}
echo "<br><br>";
if (if_group("superadmin") && isset($_GET['debug'])) {
echo '$activity<br>';
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
print_r($activity);
echo "</textarea>";
echo "<br><br>";
echo '$_SESSION<br>';
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
print_r($_SESSION);
echo "</textarea>";
}
?>
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. 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";
require_once "./resources/functions/get_call_activity.php";
if (permission_exists('operator_panel_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
$activity = get_call_activity();
foreach ($activity as $extension => $fields) {
if (substr_count($fields['call_group'], ',')) {
$tmp = explode(',', $fields['call_group']);
foreach ($tmp as $tmp_index => $tmp_value) {
if (trim($tmp_value) == '') { unset($tmp[$tmp_index]); }
else { $groups[] = $tmp_value; }
}
}
else if ($fields['call_group'] != '') {
$groups[] = $fields['call_group'];
}
}
$groups = array_unique($groups);
sort($groups);
$onhover_pause_refresh = " onmouseover='refresh_stop();' onmouseout='refresh_start();'";
echo "<table width='100%'>";
echo " <tr>";
echo " <td valign='top' align='left' width='50%' nowrap>";
echo " <b>".$text['title-operator_panel']."</b>";
echo " </td>";
echo " <td valign='top' align='center' nowrap>";
if (sizeof($_SESSION['user']['extensions']) > 0) {
$status_options[1]['status'] = "Available";
$status_options[1]['label'] = $text['label-status_available'];
$status_options[1]['style'] = "op_btn_status_available";
if (permission_exists('operator_panel_on_demand')) {
$status_options[2]['status'] = "Available (On Demand)";
$status_options[2]['label'] = $text['label-status_on_demand'];
$status_options[2]['style'] = "op_btn_status_available_on_demand";
}
$status_options[3]['status'] = "On Break";
$status_options[3]['label'] = $text['label-status_on_break'];
$status_options[3]['style'] = "op_btn_status_on_break";
$status_options[4]['status'] = "Do Not Disturb";
$status_options[4]['label'] = $text['label-status_do_not_disturb'];
$status_options[4]['style'] = "op_btn_status_do_not_disturb";
$status_options[5]['status'] = "Logged Out";
$status_options[5]['label'] = $text['label-status_logged_out'];
$status_options[5]['style'] = "op_btn_status_logged_out";
foreach ($status_options as $status_option) {
echo " <input type='button' id='".$status_option['style']."' class='btn' value=\"".$status_option['label']."\" onclick=\"send_cmd('index.php?status='+escape('".$status_option['status']."')); this.disabled='disabled'; refresh_start();\" ".$onhover_pause_refresh.">\n";
}
}
echo " </td>";
echo " <td valign='top' align='right' width='50%' nowrap>";
echo " <table cellpadding='0' cellspacing='0' border='0'>";
echo " <tr>";
echo " <td valign='middle' nowrap='nowrap' style='padding-right: 15px' id='refresh_state'>";
echo " <img src='resources/images/refresh_active.gif' style='width: 16px; height: 16px; border: none; margin-top: 3px; cursor: pointer;' onclick='refresh_stop();' alt=\"".$text['label-refresh_pause']."\" title=\"".$text['label-refresh_pause']."\">";
echo " </td>";
if (permission_exists('operator_panel_eavesdrop')) {
echo " <td valign='top' nowrap='nowrap'>";
if (sizeof($_SESSION['user']['extensions']) > 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".(($_REQUEST['eavesdrop_dest'] == '') ? $_SESSION['user']['extension'][0]['destination'] : $_REQUEST['eavesdrop_dest'])."\">";
echo " <img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 0px 5px; cursor: help;' title='".$text['description-eavesdrop_destination']."' align='absmiddle'>";
echo " <select class='formfld' style='margin-right: 5px;' align='absmiddle' onchange=\"document.getElementById('eavesdrop_dest').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
foreach ($_SESSION['user']['extensions'] as $user_extension) {
echo " <option value='".$user_extension."' ".(($_REQUEST['eavesdrop_dest'] == $user_extension) ? "selected" : null).">".$user_extension."</option>\n";
}
echo " </select>\n";
}
else if (sizeof($_SESSION['user']['extensions']) == 1) {
echo " <input type='hidden' id='eavesdrop_dest' value=\"".$_SESSION['user']['extension'][0]['destination']."\">";
}
echo " </td>";
}
if (sizeof($groups) > 0) {
echo " <td valign='top' nowrap='nowrap'>";
echo " <input type='hidden' id='group' value=\"".$_REQUEST['group']."\">";
if (sizeof($groups) > 5) {
//show select box
echo " <select class='formfld' onchange=\"document.getElementById('group').value = this.options[this.selectedIndex].value; refresh_start();\" onfocus='refresh_stop();'>\n";
echo " <option value='' ".(($_REQUEST['group'] == '') ? "selected" : null).">".$text['label-call_group']."</option>";
echo " <option value=''>".$text['button-all']."</option>";
foreach ($groups as $group) {
echo " <option value='".$group."' ".(($_REQUEST['group'] == $group) ? "selected" : null).">".$group."</option>\n";
}
echo " </select>\n";
}
else {
//show buttons
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".$text['button-all']."\" onclick=\"document.getElementById('group').value = '';\" ".$onhover_pause_refresh.">";
foreach ($groups as $group) {
echo " <input type='button' class='btn' title=\"".$text['label-call_group']."\" value=\"".$group."\" ".(($_REQUEST['group'] == $group) ? "disabled='disabled'" : null)." onclick=\"document.getElementById('group').value = this.value;\" ".$onhover_pause_refresh.">";
}
}
echo " </td>";
}
echo " </tr>";
echo " </table>";
echo " </td>";
echo " </tr>";
echo "</table>";
echo "<br>";
foreach ($activity as $extension => $ext) {
unset($block);
//filter by group, if defined
if ($_REQUEST['group'] != '' && substr_count($ext['call_group'], $_REQUEST['group']) == 0 && !in_array($extension, $_SESSION['user']['extensions'])) { continue; }
//check if feature code being called
$format_number = (substr($ext['dest'], 0, 1) == '*') ? false : true;
//determine extension state, direction icon, and displayed name/number for caller/callee
if ($ext['state'] == 'CS_EXECUTE') {
if (($ext['callstate'] == 'RINGING' || $ext['callstate'] == 'EARLY' || $ext['callstate'] == 'RING_WAIT') && $ext['direction'] == 'inbound') {
$ext_state = 'ringing';
}
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
$ext_state = 'active';
}
else if ($ext['callstate'] == 'RING_WAIT' && $ext['direction'] == 'outbound') {
$ext_state = 'ringing';
}
else if ($ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'inbound') {
$ext_state = 'active';
}
if (!$format_number) {
$call_name = 'System';
$call_number = $ext['dest'];
}
else {
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
}
$dir_icon = 'outbound';
}
else if ($ext['state'] == 'CS_HIBERNATE') {
if ($ext['callstate'] == 'ACTIVE') {
$ext_state = 'active';
if ($ext['direction'] == 'inbound') {
$call_name = $activity[$ext['dest']]['effective_caller_id_name'];
$call_number = format_phone($ext['dest']);
$dir_icon = 'outbound';
}
else if ($ext['direction'] == 'outbound') {
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
$call_number = format_phone($ext['cid_num']);
$dir_icon = 'inbound';
}
}
}
else if ($ext['state'] == 'CS_CONSUME_MEDIA' || $ext['state'] == 'CS_EXCHANGE_MEDIA') {
if ($ext['state'] == 'CS_CONSUME_MEDIA' && $ext['callstate'] == 'RINGING' && $ext['direction'] == 'outbound') {
$ext_state = 'ringing';
}
else if ($ext['state'] == 'CS_EXCHANGE_MEDIA' && $ext['callstate'] == 'ACTIVE' && $ext['direction'] == 'outbound') {
$ext_state = 'active';
}
$dir_icon = 'inbound';
$call_name = $activity[$ext['cid_num']]['effective_caller_id_name'];
$call_number = format_phone($ext['cid_num']);
}
else {
unset($ext_state, $dir_icon, $call_name, $call_number);
}
//determine block style by state (if any)
$style = ($ext_state != '') ? "op_state_".$ext_state : null;
//determine the call identifier passed on drop
if ($ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') { // transfer an outbound internal call
$call_identifier = $activity[$call_number]['uuid'];
}
else if (($ext['variable_call_direction'] == 'outbound' || $ext['variable_call_direction'] == 'local') && $ext['variable_bridge_uuid'] != '') { // transfer an outbound external call
$call_identifier = $ext['variable_bridge_uuid'];
}
else {
if( $ext['call_uuid'] ) {
$call_identifier = $ext['call_uuid']; // transfer all other call types
}
else {
$call_identifier = $ext['uuid']; // e.g. voice menus
}
}
//determine extension draggable state
if (permission_exists('operator_panel_manage')) {
if (!in_array($extension, $_SESSION['user']['extensions'])) {
//other extension
if ($ext_state == "ringing") {
if ($_GET['vd_ext_from'] == '' && $dir_icon == 'inbound') {
$draggable = true; // selectable - is ringing and not outbound so can transfer away the call (can set as vd_ext_from)
}
else {
$draggable = false; // unselectable - is ringing so can't send a call to the ext (can't set as vd_ext_to)
}
}
else if ($ext_state == 'active') {
$draggable = false; // unselectable - on a call already so can't transfer or send a call to the ext (can't set as vd_ext_from or vd_ext_to)
}
else { // idle
if ($_GET['vd_ext_from'] == '') {
$draggable = false; // unselectable - is idle, but can't initiate a call from the ext as is not assigned to user (can't set as vd_ext_from)
}
else {
$draggable = true; // selectable - is idle, so can transfer a call in to ext (can set as vd_ext_to).
}
}
}
else {
//user extension
if ($ext['uuid'] != '' && $ext['uuid'] == $ext['call_uuid'] && $ext['variable_bridge_uuid'] == '') {
$draggable = false;
}
else if ($ext_state == 'ringing' && $ext['variable_call_direction'] == 'local') {
$draggable = false;
}
else if ($ext_state != '' && !$format_number) {
$draggable = false;
}
else {
$draggable = true;
}
}
}
else {
$draggable = false;
}
//determine extension (user) status
$ext_status = (in_array($extension, $_SESSION['user']['extensions'])) ? $ext_user_status[$_SESSION['user_uuid']] : $ext_user_status[$ext['user_uuid']];
switch ($ext_status) {
case "Available" :
$status_icon = "available";
$status_hover = $text['label-status_available'];
break;
case "Available (On Demand)" :
$status_icon = "available_on_demand";
$status_hover = $text['label-status_available_on_demand'];
break;
case "On Break" :
$status_icon = "on_break";
$status_hover = $text['label-status_on_break'];
break;
case "Do Not Disturb" :
$status_icon = "do_not_disturb";
$status_hover = $text['label-status_do_not_disturb'];
break;
default :
$status_icon = "logged_out";
$status_hover = $text['label-status_logged_out_or_unknown'];
}
$block .= "<div id='".$extension."' class='op_ext ".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".(($ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
$block .= "<table class='op_ext ".$style."'>";
$block .= " <tr>";
$block .= " <td class='op_ext_icon'>";
$block .= " <span name='".$extension."'>"; // DRAG FROM
$block .= "<img id='".$call_identifier."' class='op_ext_icon' src='resources/images/status_".$status_icon.".png' title='".$status_hover."' ".(($draggable) ? "draggable='true' ondragstart=\"drag(event, this.parentNode.getAttribute('name'));\" onclick=\"virtual_drag('".$call_identifier."', '".$extension."');\"" : "onfocus='this.blur();' draggable='false' style='cursor: not-allowed;'").">";
$block .= "</span>";
$block .= " </td>";
$block .= " <td class='op_ext_info ".$style."'>";
if ($dir_icon != '') {
$block .= " <img src='resources/images/".$dir_icon.".png' align='right' style='margin-top: 3px; margin-right: 1px; width: 12px; height: 12px; cursor: help;' draggable='false' alt=\"".$text['label-call_direction']."\" title=\"".$text['label-call_direction']."\">";
}
$block .= " <span class='op_user_info'>";
if ($ext['effective_caller_id_name'] != '' && $ext['effective_caller_id_name'] != $extension) {
$block .= " <strong class='strong'>".$ext['effective_caller_id_name']."</strong> (".$extension.")";
}
else {
$block .= " <strong class='strong'>".$extension."</strong>";
}
$block .= " </span><br>";
if ($ext_state != '') {
$block .= " <span class='op_caller_info'>";
$block .= " <table align='right'><tr><td style='text-align: right;'>";
$block .= " <span class='op_call_info'>".$ext['call_length']."</span><br>";
$block .= " <span class='call_control'>";
//record
if (permission_exists('operator_panel_record') && $ext_state == 'active') {
$call_identifier_record = $ext['call_uuid'];
$rec_file = $_SESSION['switch']['recordings']['dir']."/archive/".date("Y")."/".date("M")."/".date("d")."/".$call_identifier_record.".wav";
if (file_exists($rec_file)) {
$block .= "<img src='resources/images/recording.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: help;' title=\"".$text['label-recording']."\" ".$onhover_pause_refresh.">";
}
else {
$block .= "<img src='resources/images/record.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title=\"".$text['label-record']."\" onclick=\"record_call('".$call_identifier_record."');\" ".$onhover_pause_refresh.">";
}
}
//eavesdrop
if (permission_exists('operator_panel_eavesdrop') && $ext_state == 'active' && sizeof($_SESSION['user']['extensions']) > 0 && !in_array($extension, $_SESSION['user']['extensions'])) {
$block .= "<img src='resources/images/eavesdrop.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-eavesdrop']."' onclick=\"eavesdrop_call('".$ext['destination']."','".$call_identifier."');\" ".$onhover_pause_refresh.">";
}
//kill
if (permission_exists('operator_panel_kill') || in_array($extension, $_SESSION['user']['extensions'])) {
if ($ext['variable_bridge_uuid'] == '' && $ext_state == 'ringing') {
$call_identifier_kill = $ext['uuid'];
}
else if ($dir_icon == 'outbound') {
$call_identifier_kill = $ext['uuid'];
}
else {
$call_identifier_kill = $call_identifier;
}
$block .= "<img src='resources/images/kill.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' title='".$text['label-kill']."' onclick=\"kill_call('".$call_identifier_kill."');\" ".$onhover_pause_refresh.">";
}
$block .= "</span>";
//transfer
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
$block .= "<img id='destination_control_".$extension."_transfer' class='destination_control' src='resources/images/keypad_transfer.png' style='width: 12px; height: 12px; border: none; margin: 4px 0px 0px 5px; cursor: pointer;' onclick=\"toggle_destination('".$extension."', 'transfer');\" ".$onhover_pause_refresh.">";
}
$block .= " </td></tr></table>";
$block .= " <span id='op_caller_details_".$extension."'><strong>".$call_name."</strong><br>".$call_number."</span>";
$block .= " </span>";
//transfer
if (in_array($extension, $_SESSION['user']['extensions']) && $ext_state == 'active') {
$call_identifier_transfer = $ext['variable_bridge_uuid'];
$block .= " <form id='frm_destination_".$extension."_transfer' onsubmit=\"go_destination('".$extension."', document.getElementById('destination_".$extension."_transfer').value, 'transfer', '".$call_identifier_transfer."'); return false;\">";
$block .= " <input type='text' class='formfld' id='destination_".$extension."_transfer' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 3px; text-align: center; display: none;' onblur=\"toggle_destination('".$extension."', 'transfer');\">";
$block .= " </form>\n";
}
}
else {
//call
if (in_array($extension, $_SESSION['user']['extensions'])) {
$block .= " <img id='destination_control_".$extension."_call' class='destination_control' src='resources/images/keypad_call.png' style='width: 12px; height: 12px; border: none; margin-top: 26px; margin-right: 1px; cursor: pointer;' align='right' onclick=\"toggle_destination('".$extension."', 'call');\" ".$onhover_pause_refresh.">";
$block .= " <form id='frm_destination_".$extension."_call' onsubmit=\"go_destination('".$extension."', document.getElementById('destination_".$extension."_call').value, 'call'); return false;\">";
$block .= " <input type='text' class='formfld' id='destination_".$extension."_call' style='width: 100px; min-width: 100px; max-width: 100px; margin-top: 10px; text-align: center; display: none;' onblur=\"toggle_destination('".$extension."', 'call');\">";
$block .= " </form>\n";
}
}
$block .= " </td>";
$block .= " </tr>";
$block .= "</table>";
if (if_group("superadmin") && isset($_GET['debug'])) {
$block .= "<span style='font-size: 10px;'>";
$block .= "From ID<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: maroon'>".$extension."</strong><br>";
$block .= "uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['uuid'] ? 'blue' : 'black').";'>".$ext['uuid']."</strong><br>";
$block .= "call_uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['call_uuid'] ? 'blue' : 'black').";'>".$ext['call_uuid']."</strong><br>";
$block .= "variable_bridge_uuid<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: ".($call_identifier == $ext['variable_bridge_uuid'] ? 'blue' : 'black').";'>".$ext['variable_bridge_uuid']."</strong><br>";
$block .= "direction<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['direction']."</strong><br>";
$block .= "variable_call_direction<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['variable_call_direction']."</strong><br>";
$block .= "state<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['state']."</strong><br>";
$block .= "cid_num<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['cid_num']."</strong><br>";
$block .= "dest<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['dest']."</strong><br>";
$block .= "context<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['context']."</strong><br>";
$block .= "presence_id<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['presence_id']."</strong><br>";
$block .= "callstate<br>&nbsp;&nbsp;&nbsp;&nbsp;<strong style='color: black;'>".$ext['callstate']."</strong><br>";
$block .= "</span>";
}
$block .= "</div>";
if (in_array($extension, $_SESSION['user']['extensions'])) {
$user_extensions[] = $block;
}
else {
$other_extensions[] = $block;
}
}
if (sizeof($user_extensions) > 0) {
echo "<table width='100%'><tr><td>";
foreach ($user_extensions as $ext_block) {
echo $ext_block;
}
echo "</td></tr></table>";
}
if ($_REQUEST['group'] != '') {
if (sizeof($user_extensions) > 0) { echo "<br>"; }
echo "<strong style='color: black;'>".ucwords($_REQUEST['group'])."</strong>";
echo "<br><br>";
}
else if (sizeof($user_extensions) > 0) {
echo "<br>";
echo "<strong style='color: black;'>".$text['label-other_extensions']."</strong>";
echo "<br><br>";
}
if (sizeof($other_extensions) > 0) {
echo "<table width='100%'><tr><td>";
foreach ($other_extensions as $ext_block) {
echo $ext_block;
}
echo "</td></tr></table>";
}
else {
echo $text['label-no_extensions_found'];
}
echo "<br><br>";
if (if_group("superadmin") && isset($_GET['debug'])) {
echo '$activity<br>';
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
print_r($activity);
echo "</textarea>";
echo "<br><br>";
echo '$_SESSION<br>';
echo "<textarea style='width: 100%; height: 600px; overflow: scroll;' onfocus='refresh_stop();' onblur='refresh_start();'>";
print_r($_SESSION);
echo "</textarea>";
}
?>

View File

@@ -1,182 +1,182 @@
<?php
function get_call_activity() {
global $db;
global $ext_user_status;
//get the extensions and their user status
$sql = "select ";
$sql .= "e.extension, ";
$sql .= "e.number_alias, ";
$sql .= "e.effective_caller_id_name, ";
$sql .= "e.effective_caller_id_number, ";
$sql .= "e.call_group, ";
$sql .= "e.description, ";
$sql .= "u.user_uuid, ";
$sql .= "u.user_status ";
$sql .= "from ";
$sql .= "v_extensions as e ";
$sql .= "left outer join v_extension_users as eu on ( eu.extension_uuid = e.extension_uuid and eu.domain_uuid = '".$_SESSION['domain_uuid']."' ) ";
$sql .= "left outer join v_users as u on ( u.user_uuid = eu.user_uuid and u.domain_uuid = '".$_SESSION['domain_uuid']."' ) ";
$sql .= "where ";
$sql .= "e.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "order by ";
$sql .= "e.extension asc ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$extensions = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//store extension status by user uuid
foreach($extensions as &$row) {
if ($row['user_uuid'] != '') {
$ext_user_status[$row['user_uuid']] = $row['user_status'];
unset($row['user_status']);
}
}
//send the command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_cmd = 'show channels as json';
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$json_array = json_decode($switch_result, true);
}
//build the response
$x = 0;
foreach($extensions as &$row) {
$user = $row['extension'];
if (strlen($row['number_alias']) >0 ) {
$user = $row['number_alias'];
}
//add the extension details
$array[$x] = $row;
//set the call detail defaults
$array[$x]["uuid"] = null;
$array[$x]["direction"] = null;
$array[$x]["created"] = null;
$array[$x]["created_epoch"] = null;
$array[$x]["name"] = null;
$array[$x]["state"] = null;
$array[$x]["cid_name"] = null;
$array[$x]["cid_num"] = null;
$array[$x]["ip_addr"] = null;
$array[$x]["dest"] = null;
$array[$x]["application"] = null;
$array[$x]["application_data"] = null;
$array[$x]["dialplan"] = null;
$array[$x]["context"] = null;
$array[$x]["read_codec"] = null;
$array[$x]["read_rate"] = null;
$array[$x]["read_bit_rate"] = null;
$array[$x]["write_codec"] = null;
$array[$x]["write_rate"] = null;
$array[$x]["write_bit_rate"] = null;
$array[$x]["secure"] = null;
$array[$x]["hostname"] = null;
$array[$x]["presence_id"] = null;
$array[$x]["presence_data"] = null;
$array[$x]["callstate"] = null;
$array[$x]["callee_name"] = null;
$array[$x]["callee_num"] = null;
$array[$x]["callee_direction"] = null;
$array[$x]["call_uuid"] = null;
$array[$x]["sent_callee_name"] = null;
$array[$x]["sent_callee_num"] = null;
$array[$x]["destination"] = null;
//add the active call details
$found = false;
foreach($json_array['rows'] as &$field) {
$presence_id = $field['presence_id'];
$presence = explode("@", $presence_id);
$presence_id = $presence[0];
$presence_domain = $presence[1];
if ($user == $presence_id) {
if ($presence_domain == $_SESSION['domain_name']) {
$found = true;
break;
}
}
}
//normalize the array
if ($found) {
$array[$x]["uuid"] = $field['uuid'];
$array[$x]["direction"] = $field['direction'];
$array[$x]["created"] = $field['created'];
$array[$x]["created_epoch"] = $field['created_epoch'];
$array[$x]["name"] = $field['name'];
$array[$x]["state"] = $field['state'];
$array[$x]["cid_name"] = $field['cid_name'];
$array[$x]["cid_num"] = $field['cid_num'];
$array[$x]["ip_addr"] = $field['ip_addr'];
$array[$x]["dest"] = $field['dest'];
$array[$x]["application"] = $field['application'];
$array[$x]["application_data"] = $field['application_data'];
$array[$x]["dialplan"] = $field['dialplan'];
$array[$x]["context"] = $field['context'];
$array[$x]["read_codec"] = $field['read_codec'];
$array[$x]["read_rate"] = $field['read_rate'];
$array[$x]["read_bit_rate"] = $field['read_bit_rate'];
$array[$x]["write_codec"] = $field['write_codec'];
$array[$x]["write_rate"] = $field['write_rate'];
$array[$x]["write_bit_rate"] = $field['write_bit_rate'];
$array[$x]["secure"] = $field['secure'];
$array[$x]["hostname"] = $field['hostname'];
$array[$x]["presence_id"] = $field['presence_id'];
$array[$x]["presence_data"] = $field['presence_data'];
$array[$x]["callstate"] = $field['callstate'];
$array[$x]["callee_name"] = $field['callee_name'];
$array[$x]["callee_num"] = $field['callee_num'];
$array[$x]["callee_direction"] = $field['callee_direction'];
$array[$x]["call_uuid"] = $field['call_uuid'];
$array[$x]["sent_callee_name"] = $field['sent_callee_name'];
$array[$x]["sent_callee_num"] = $field['sent_callee_num'];
$array[$x]["destination"] = $user;
//calculate and set the call length
$call_length_seconds = time() - $array[$x]["created_epoch"];
$call_length_hour = floor($call_length_seconds/3600);
$call_length_min = floor($call_length_seconds/60 - ($call_length_hour * 60));
$call_length_sec = $call_length_seconds - (($call_length_hour * 3600) + ($call_length_min * 60));
$call_length_min = sprintf("%02d", $call_length_min);
$call_length_sec = sprintf("%02d", $call_length_sec);
$call_length = $call_length_hour.':'.$call_length_min.':'.$call_length_sec;
$array[$x]['call_length'] = $call_length;
//send the command
if ($field['state'] != '') {
if ($fp) {
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
$dump_array = json_decode($dump_result, true);
foreach ($dump_array as $dump_var_name => $dump_var_value) {
$array[$x][$dump_var_name] = trim($dump_var_value);
}
}
}
}
//increment the row
$x++;
}
//reindex array using extension instead of auto-incremented value
$result = array();
foreach ($array as $index => $subarray) {
$extension = $subarray['extension'];
foreach ($subarray as $field => $value) {
$result[$extension][$field] = $array[$index][$field];
unset($array[$index][$field]);
}
unset($array[$subarray['extension']]['extension']);
unset($array[$index]);
}
//return array
return $result;
}
<?php
function get_call_activity() {
global $db;
global $ext_user_status;
//get the extensions and their user status
$sql = "select ";
$sql .= "e.extension, ";
$sql .= "e.number_alias, ";
$sql .= "e.effective_caller_id_name, ";
$sql .= "e.effective_caller_id_number, ";
$sql .= "e.call_group, ";
$sql .= "e.description, ";
$sql .= "u.user_uuid, ";
$sql .= "u.user_status ";
$sql .= "from ";
$sql .= "v_extensions as e ";
$sql .= "left outer join v_extension_users as eu on ( eu.extension_uuid = e.extension_uuid and eu.domain_uuid = '".$_SESSION['domain_uuid']."' ) ";
$sql .= "left outer join v_users as u on ( u.user_uuid = eu.user_uuid and u.domain_uuid = '".$_SESSION['domain_uuid']."' ) ";
$sql .= "where ";
$sql .= "e.domain_uuid = '".$_SESSION['domain_uuid']."' ";
$sql .= "order by ";
$sql .= "e.extension asc ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$extensions = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
//store extension status by user uuid
foreach($extensions as &$row) {
if ($row['user_uuid'] != '') {
$ext_user_status[$row['user_uuid']] = $row['user_status'];
unset($row['user_status']);
}
}
//send the command
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_cmd = 'show channels as json';
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
$json_array = json_decode($switch_result, true);
}
//build the response
$x = 0;
foreach($extensions as &$row) {
$user = $row['extension'];
if (strlen($row['number_alias']) >0 ) {
$user = $row['number_alias'];
}
//add the extension details
$array[$x] = $row;
//set the call detail defaults
$array[$x]["uuid"] = null;
$array[$x]["direction"] = null;
$array[$x]["created"] = null;
$array[$x]["created_epoch"] = null;
$array[$x]["name"] = null;
$array[$x]["state"] = null;
$array[$x]["cid_name"] = null;
$array[$x]["cid_num"] = null;
$array[$x]["ip_addr"] = null;
$array[$x]["dest"] = null;
$array[$x]["application"] = null;
$array[$x]["application_data"] = null;
$array[$x]["dialplan"] = null;
$array[$x]["context"] = null;
$array[$x]["read_codec"] = null;
$array[$x]["read_rate"] = null;
$array[$x]["read_bit_rate"] = null;
$array[$x]["write_codec"] = null;
$array[$x]["write_rate"] = null;
$array[$x]["write_bit_rate"] = null;
$array[$x]["secure"] = null;
$array[$x]["hostname"] = null;
$array[$x]["presence_id"] = null;
$array[$x]["presence_data"] = null;
$array[$x]["callstate"] = null;
$array[$x]["callee_name"] = null;
$array[$x]["callee_num"] = null;
$array[$x]["callee_direction"] = null;
$array[$x]["call_uuid"] = null;
$array[$x]["sent_callee_name"] = null;
$array[$x]["sent_callee_num"] = null;
$array[$x]["destination"] = null;
//add the active call details
$found = false;
foreach($json_array['rows'] as &$field) {
$presence_id = $field['presence_id'];
$presence = explode("@", $presence_id);
$presence_id = $presence[0];
$presence_domain = $presence[1];
if ($user == $presence_id) {
if ($presence_domain == $_SESSION['domain_name']) {
$found = true;
break;
}
}
}
//normalize the array
if ($found) {
$array[$x]["uuid"] = $field['uuid'];
$array[$x]["direction"] = $field['direction'];
$array[$x]["created"] = $field['created'];
$array[$x]["created_epoch"] = $field['created_epoch'];
$array[$x]["name"] = $field['name'];
$array[$x]["state"] = $field['state'];
$array[$x]["cid_name"] = $field['cid_name'];
$array[$x]["cid_num"] = $field['cid_num'];
$array[$x]["ip_addr"] = $field['ip_addr'];
$array[$x]["dest"] = $field['dest'];
$array[$x]["application"] = $field['application'];
$array[$x]["application_data"] = $field['application_data'];
$array[$x]["dialplan"] = $field['dialplan'];
$array[$x]["context"] = $field['context'];
$array[$x]["read_codec"] = $field['read_codec'];
$array[$x]["read_rate"] = $field['read_rate'];
$array[$x]["read_bit_rate"] = $field['read_bit_rate'];
$array[$x]["write_codec"] = $field['write_codec'];
$array[$x]["write_rate"] = $field['write_rate'];
$array[$x]["write_bit_rate"] = $field['write_bit_rate'];
$array[$x]["secure"] = $field['secure'];
$array[$x]["hostname"] = $field['hostname'];
$array[$x]["presence_id"] = $field['presence_id'];
$array[$x]["presence_data"] = $field['presence_data'];
$array[$x]["callstate"] = $field['callstate'];
$array[$x]["callee_name"] = $field['callee_name'];
$array[$x]["callee_num"] = $field['callee_num'];
$array[$x]["callee_direction"] = $field['callee_direction'];
$array[$x]["call_uuid"] = $field['call_uuid'];
$array[$x]["sent_callee_name"] = $field['sent_callee_name'];
$array[$x]["sent_callee_num"] = $field['sent_callee_num'];
$array[$x]["destination"] = $user;
//calculate and set the call length
$call_length_seconds = time() - $array[$x]["created_epoch"];
$call_length_hour = floor($call_length_seconds/3600);
$call_length_min = floor($call_length_seconds/60 - ($call_length_hour * 60));
$call_length_sec = $call_length_seconds - (($call_length_hour * 3600) + ($call_length_min * 60));
$call_length_min = sprintf("%02d", $call_length_min);
$call_length_sec = sprintf("%02d", $call_length_sec);
$call_length = $call_length_hour.':'.$call_length_min.':'.$call_length_sec;
$array[$x]['call_length'] = $call_length;
//send the command
if ($field['state'] != '') {
if ($fp) {
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
$dump_array = json_decode($dump_result, true);
foreach ($dump_array as $dump_var_name => $dump_var_value) {
$array[$x][$dump_var_name] = trim($dump_var_value);
}
}
}
}
//increment the row
$x++;
}
//reindex array using extension instead of auto-incremented value
$result = array();
foreach ($array as $index => $subarray) {
$extension = $subarray['extension'];
foreach ($subarray as $field => $value) {
$result[$extension][$field] = $array[$index][$field];
unset($array[$index][$field]);
}
unset($array[$subarray['extension']]['extension']);
unset($array[$index]);
}
//return array
return $result;
}

View File

@@ -1,12 +1,12 @@
<?php
//$apps[$x]['menu'][0]['title']['en-us'] = "Provision";
//$apps[$x]['menu'][0]['title']['fr-fr'] = "Provision";
//$apps[$x]['menu'][0]['uuid'] = "";
//$apps[$x]['menu'][0]['parent_uuid'] = "";
//$apps[$x]['menu'][0]['category'] = "internal";
//$apps[$x]['menu'][0]['path'] = "";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
<?php
//$apps[$x]['menu'][0]['title']['en-us'] = "Provision";
//$apps[$x]['menu'][0]['title']['fr-fr'] = "Provision";
//$apps[$x]['menu'][0]['uuid'] = "";
//$apps[$x]['menu'][0]['parent_uuid'] = "";
//$apps[$x]['menu'][0]['category'] = "internal";
//$apps[$x]['menu'][0]['path'] = "";
//$apps[$x]['menu'][0]['groups'][] = "admin";
//$apps[$x]['menu'][0]['groups'][] = "superadmin";
?>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,34 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
$obj = new scripts;
$obj->copy_files();
$obj->write_config();
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//process this only one time
if ($domains_processed == 1) {
$obj = new scripts;
$obj->copy_files();
$obj->write_config();
}
?>

View File

@@ -1,286 +1,286 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* scripts class provides methods for creating the config.lua and copying switch scripts
*
* @method string correct_path
* @method string copy_files
* @method string write_config
*/
if (!class_exists('scripts')) {
class scripts {
public $db;
public $db_type;
public $db_name;
public $db_host;
public $db_port;
public $db_path;
public $db_username;
public $db_password;
public $dsn_name;
public $dsn_username;
public $dsn_password;
/**
* Called when the object is created
*/
public function __construct() {
//connect to the database if not connected
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$this->db = $database->db;
$this->db_type = $database->type;
$this->db_name = $database->db_name;
$this->db_host = $database->host;
$this->db_port = $database->port;
$this->db_path = $database->path;
$this->db_username = $database->username;
$this->db_password = $database->password;
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Corrects the path for specifically for windows
*/
private function correct_path($path) {
global $IS_WINDOWS;
if ($IS_WINDOWS == null) {
if (stristr(PHP_OS, 'WIN')) { $IS_WINDOWS = true; } else { $IS_WINDOWS = false; }
}
if ($IS_WINDOWS) {
return str_replace('\\', '/', $path);
}
return $path;
}
/**
* Copy the switch scripts from the web directory to the switch directory
*/
public function copy_files() {
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
$dst_dir = $_SESSION['switch']['scripts']['dir'];
if(strlen($dst_dir) == 0) {
throw new Exception("Cannot copy scripts the 'script_dir' is empty");
}
if (file_exists($dst_dir)) {
//get the source directory
if (file_exists('/usr/share/examples/fusionpbx/resources/install/scripts')){
$src_dir = '/usr/share/examples/fusionpbx/resources/install/scripts';
}
else {
$src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/scripts';
}
if (is_readable($dst_dir)) {
recursive_copy($src_dir, $dst_dir);
unset($src_dir, $dst_dir);
}else{
throw new Exception("Cannot read from '$src_dir' to get the scripts");
}
chmod($dst_dir, 0774);
} else {
throw new Exception("Scripts directory doesn't exist");
}
}
}
/**
* Writes the config.lua
*/
public function write_config() {
if (is_dir($_SESSION['switch']['scripts']['dir'])) {
//replace the backslash with a forward slash
$this->db_path = str_replace("\\", "/", $this->db_path);
//get the odbc information
$sql = "select count(*) as num_rows from v_databases ";
$sql .= "where database_driver = 'odbc' ";
$prep_statement = $this->db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] > 0) {
$odbc_num_rows = $row['num_rows'];
$sql = "select * from v_databases ";
$sql .= "where database_driver = 'odbc' ";
$prep_statement = $this->db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$this->dsn_name = $row["database_name"];
$this->dsn_username = $row["database_username"];
$this->dsn_password = $row["database_password"];
break; //limit to 1 row
}
unset ($prep_statement);
}
else {
$odbc_num_rows = '0';
}
}
//get the recordings directory
$recordings_dir = $_SESSION['switch']['recordings']['dir'];
//find the location to write the config.lua
if (is_dir("/etc/fusionpbx")){
$config = "/etc/fusionpbx/config.lua";
} elseif (is_dir("/usr/local/etc/fusionpbx")){
$config = "/usr/local/etc/fusionpbx/config.lua";
}
else {
$config = $_SESSION['switch']['scripts']['dir']."/resources/config.lua";
}
$fout = fopen($config,"w");
if(!$fout){
return;
}
//make the config.lua
$tmp = "\n";
$tmp .= "--set the variables\n";
if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
$tmp .= $this->correct_path(" sounds_dir = [[".$_SESSION['switch']['sounds']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['phrases']['dir']) > 0) {
$tmp .= $this->correct_path(" phrases_dir = [[".$_SESSION['switch']['phrases']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['db']['dir']) > 0) {
$tmp .= $this->correct_path(" database_dir = [[".$_SESSION['switch']['db']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
$tmp .= $this->correct_path(" recordings_dir = [[".$recordings_dir."]];\n");
}
if (strlen($_SESSION['switch']['storage']['dir']) > 0) {
$tmp .= $this->correct_path(" storage_dir = [[".$_SESSION['switch']['storage']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['voicemail']['dir']) > 0) {
$tmp .= $this->correct_path(" voicemail_dir = [[".$_SESSION['switch']['voicemail']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
$tmp .= $this->correct_path(" scripts_dir = [[".$_SESSION['switch']['scripts']['dir']."]];\n");
}
$tmp .= $this->correct_path(" php_dir = [[".PHP_BINDIR."]];\n");
if (substr(strtoupper(PHP_OS), 0, 3) == "WIN") {
$tmp .= " php_bin = \"php.exe\";\n";
}
else {
$tmp .= " php_bin = \"php\";\n";
}
$tmp .= $this->correct_path(" document_root = [[".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."]];\n");
$tmp .= "\n";
if ((strlen($this->db_type) > 0) || (strlen($this->dsn_name) > 0)) {
$tmp .= "--database information\n";
$tmp .= " database = {}\n";
$tmp .= " database.type = \"".$this->db_type."\";\n";
$tmp .= " database.name = \"".$this->db_name."\";\n";
$tmp .= $this->correct_path(" database.path = [[".$this->db_path."]];\n");
if (strlen($this->dsn_name) > 0) {
$tmp .= " database.system = \"odbc://".$this->dsn_name.":".$this->dsn_username.":".$this->dsn_password."\";\n";
$tmp .= " database.switch = \"odbc://freeswitch:".$this->dsn_username.":".$this->dsn_password."\";\n";
}
elseif ($this->db_type == "pgsql") {
if ($this->db_host == "localhost") { $this->db_host = "127.0.0.1"; }
$tmp .= " database.system = \"pgsql://hostaddr=".$this->db_host." port=".$this->db_port." dbname=".$this->db_name." user=".$this->db_username." password=".$this->db_password." options='' application_name='".$this->db_name."'\";\n";
$tmp .= " database.switch = \"pgsql://hostaddr=".$this->db_host." port=".$this->db_port." dbname=freeswitch user=".$this->db_username." password=".$this->db_password." options='' application_name='freeswitch'\";\n";
}
elseif ($this->db_type == "sqlite") {
$tmp .= " database.system = \"sqlite://".$this->db_path."/".$this->db_name."\";\n";
$tmp .= " database.switch = \"sqlite://".$_SESSION['switch']['db']['dir']."\";\n";
}
elseif ($this->db_type == "mysql") {
$tmp .= " database.system = \"\";\n";
$tmp .= " database.switch = \"\";\n";
}
$tmp .= "\n";
}
$tmp .= "--set defaults\n";
$tmp .= " expire = {}\n";
$tmp .= " expire.directory = \"3600\";\n";
$tmp .= " expire.dialplan = \"3600\";\n";
$tmp .= " expire.languages = \"3600\";\n";
$tmp .= " expire.sofia = \"3600\";\n";
$tmp .= " expire.acl = \"3600\";\n";
$tmp .= "\n";
$tmp .= "--set xml_handler\n";
$tmp .= " xml_handler = {}\n";
$tmp .= " xml_handler.fs_path = false;\n";
$tmp .= "\n";
$tmp .= "--set the debug options\n";
$tmp .= " debug.params = false;\n";
$tmp .= " debug.sql = false;\n";
$tmp .= " debug.xml_request = false;\n";
$tmp .= " debug.xml_string = false;\n";
$tmp .= " debug.cache = false;\n";
$tmp .= "\n";
$tmp .= "--additional info\n";
$tmp .= " domain_count = ".count($_SESSION["domains"]).";\n";
$tmp .= $this->correct_path(" temp_dir = [[".$_SESSION['server']['temp']['dir']."]];\n");
if (isset($_SESSION['domain']['dial_string']['text'])) {
$tmp .= " dial_string = \"".$_SESSION['domain']['dial_string']['text']."\";\n";
}
$tmp .= "\n";
$tmp .= "--include local.lua\n";
$tmp .= " require(\"resources.functions.file_exists\");\n";
$tmp .= " if (file_exists(\"/etc/fusionpbx/local.lua\")) then\n";
$tmp .= " dofile(\"/etc/fusionpbx/local.lua\");\n";
$tmp .= " elseif (file_exists(\"/usr/local/etc/fusionpbx/local.lua\")) then\n";
$tmp .= " dofile(\"/usr/local/etc/fusionpbx/local.lua\");\n";
$tmp .= " elseif (file_exists(scripts_dir..\"/resources/local.lua\")) then\n";
$tmp .= " require(\"resources.local\");\n";
$tmp .= " end\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
}
} //end config_lua
} //end scripts class
}
/*
//example use
//update config.lua
$obj = new scripts;
$obj->write_config();
*/
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
/**
* scripts class provides methods for creating the config.lua and copying switch scripts
*
* @method string correct_path
* @method string copy_files
* @method string write_config
*/
if (!class_exists('scripts')) {
class scripts {
public $db;
public $db_type;
public $db_name;
public $db_host;
public $db_port;
public $db_path;
public $db_username;
public $db_password;
public $dsn_name;
public $dsn_username;
public $dsn_password;
/**
* Called when the object is created
*/
public function __construct() {
//connect to the database if not connected
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$this->db = $database->db;
$this->db_type = $database->type;
$this->db_name = $database->db_name;
$this->db_host = $database->host;
$this->db_port = $database->port;
$this->db_path = $database->path;
$this->db_username = $database->username;
$this->db_password = $database->password;
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Corrects the path for specifically for windows
*/
private function correct_path($path) {
global $IS_WINDOWS;
if ($IS_WINDOWS == null) {
if (stristr(PHP_OS, 'WIN')) { $IS_WINDOWS = true; } else { $IS_WINDOWS = false; }
}
if ($IS_WINDOWS) {
return str_replace('\\', '/', $path);
}
return $path;
}
/**
* Copy the switch scripts from the web directory to the switch directory
*/
public function copy_files() {
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
$dst_dir = $_SESSION['switch']['scripts']['dir'];
if(strlen($dst_dir) == 0) {
throw new Exception("Cannot copy scripts the 'script_dir' is empty");
}
if (file_exists($dst_dir)) {
//get the source directory
if (file_exists('/usr/share/examples/fusionpbx/resources/install/scripts')){
$src_dir = '/usr/share/examples/fusionpbx/resources/install/scripts';
}
else {
$src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/resources/install/scripts';
}
if (is_readable($dst_dir)) {
recursive_copy($src_dir, $dst_dir);
unset($src_dir, $dst_dir);
}else{
throw new Exception("Cannot read from '$src_dir' to get the scripts");
}
chmod($dst_dir, 0774);
} else {
throw new Exception("Scripts directory doesn't exist");
}
}
}
/**
* Writes the config.lua
*/
public function write_config() {
if (is_dir($_SESSION['switch']['scripts']['dir'])) {
//replace the backslash with a forward slash
$this->db_path = str_replace("\\", "/", $this->db_path);
//get the odbc information
$sql = "select count(*) as num_rows from v_databases ";
$sql .= "where database_driver = 'odbc' ";
$prep_statement = $this->db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] > 0) {
$odbc_num_rows = $row['num_rows'];
$sql = "select * from v_databases ";
$sql .= "where database_driver = 'odbc' ";
$prep_statement = $this->db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$this->dsn_name = $row["database_name"];
$this->dsn_username = $row["database_username"];
$this->dsn_password = $row["database_password"];
break; //limit to 1 row
}
unset ($prep_statement);
}
else {
$odbc_num_rows = '0';
}
}
//get the recordings directory
$recordings_dir = $_SESSION['switch']['recordings']['dir'];
//find the location to write the config.lua
if (is_dir("/etc/fusionpbx")){
$config = "/etc/fusionpbx/config.lua";
} elseif (is_dir("/usr/local/etc/fusionpbx")){
$config = "/usr/local/etc/fusionpbx/config.lua";
}
else {
$config = $_SESSION['switch']['scripts']['dir']."/resources/config.lua";
}
$fout = fopen($config,"w");
if(!$fout){
return;
}
//make the config.lua
$tmp = "\n";
$tmp .= "--set the variables\n";
if (strlen($_SESSION['switch']['sounds']['dir']) > 0) {
$tmp .= $this->correct_path(" sounds_dir = [[".$_SESSION['switch']['sounds']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['phrases']['dir']) > 0) {
$tmp .= $this->correct_path(" phrases_dir = [[".$_SESSION['switch']['phrases']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['db']['dir']) > 0) {
$tmp .= $this->correct_path(" database_dir = [[".$_SESSION['switch']['db']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['recordings']['dir']) > 0) {
$tmp .= $this->correct_path(" recordings_dir = [[".$recordings_dir."]];\n");
}
if (strlen($_SESSION['switch']['storage']['dir']) > 0) {
$tmp .= $this->correct_path(" storage_dir = [[".$_SESSION['switch']['storage']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['voicemail']['dir']) > 0) {
$tmp .= $this->correct_path(" voicemail_dir = [[".$_SESSION['switch']['voicemail']['dir']."]];\n");
}
if (strlen($_SESSION['switch']['scripts']['dir']) > 0) {
$tmp .= $this->correct_path(" scripts_dir = [[".$_SESSION['switch']['scripts']['dir']."]];\n");
}
$tmp .= $this->correct_path(" php_dir = [[".PHP_BINDIR."]];\n");
if (substr(strtoupper(PHP_OS), 0, 3) == "WIN") {
$tmp .= " php_bin = \"php.exe\";\n";
}
else {
$tmp .= " php_bin = \"php\";\n";
}
$tmp .= $this->correct_path(" document_root = [[".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."]];\n");
$tmp .= "\n";
if ((strlen($this->db_type) > 0) || (strlen($this->dsn_name) > 0)) {
$tmp .= "--database information\n";
$tmp .= " database = {}\n";
$tmp .= " database.type = \"".$this->db_type."\";\n";
$tmp .= " database.name = \"".$this->db_name."\";\n";
$tmp .= $this->correct_path(" database.path = [[".$this->db_path."]];\n");
if (strlen($this->dsn_name) > 0) {
$tmp .= " database.system = \"odbc://".$this->dsn_name.":".$this->dsn_username.":".$this->dsn_password."\";\n";
$tmp .= " database.switch = \"odbc://freeswitch:".$this->dsn_username.":".$this->dsn_password."\";\n";
}
elseif ($this->db_type == "pgsql") {
if ($this->db_host == "localhost") { $this->db_host = "127.0.0.1"; }
$tmp .= " database.system = \"pgsql://hostaddr=".$this->db_host." port=".$this->db_port." dbname=".$this->db_name." user=".$this->db_username." password=".$this->db_password." options='' application_name='".$this->db_name."'\";\n";
$tmp .= " database.switch = \"pgsql://hostaddr=".$this->db_host." port=".$this->db_port." dbname=freeswitch user=".$this->db_username." password=".$this->db_password." options='' application_name='freeswitch'\";\n";
}
elseif ($this->db_type == "sqlite") {
$tmp .= " database.system = \"sqlite://".$this->db_path."/".$this->db_name."\";\n";
$tmp .= " database.switch = \"sqlite://".$_SESSION['switch']['db']['dir']."\";\n";
}
elseif ($this->db_type == "mysql") {
$tmp .= " database.system = \"\";\n";
$tmp .= " database.switch = \"\";\n";
}
$tmp .= "\n";
}
$tmp .= "--set defaults\n";
$tmp .= " expire = {}\n";
$tmp .= " expire.directory = \"3600\";\n";
$tmp .= " expire.dialplan = \"3600\";\n";
$tmp .= " expire.languages = \"3600\";\n";
$tmp .= " expire.sofia = \"3600\";\n";
$tmp .= " expire.acl = \"3600\";\n";
$tmp .= "\n";
$tmp .= "--set xml_handler\n";
$tmp .= " xml_handler = {}\n";
$tmp .= " xml_handler.fs_path = false;\n";
$tmp .= "\n";
$tmp .= "--set the debug options\n";
$tmp .= " debug.params = false;\n";
$tmp .= " debug.sql = false;\n";
$tmp .= " debug.xml_request = false;\n";
$tmp .= " debug.xml_string = false;\n";
$tmp .= " debug.cache = false;\n";
$tmp .= "\n";
$tmp .= "--additional info\n";
$tmp .= " domain_count = ".count($_SESSION["domains"]).";\n";
$tmp .= $this->correct_path(" temp_dir = [[".$_SESSION['server']['temp']['dir']."]];\n");
if (isset($_SESSION['domain']['dial_string']['text'])) {
$tmp .= " dial_string = \"".$_SESSION['domain']['dial_string']['text']."\";\n";
}
$tmp .= "\n";
$tmp .= "--include local.lua\n";
$tmp .= " require(\"resources.functions.file_exists\");\n";
$tmp .= " if (file_exists(\"/etc/fusionpbx/local.lua\")) then\n";
$tmp .= " dofile(\"/etc/fusionpbx/local.lua\");\n";
$tmp .= " elseif (file_exists(\"/usr/local/etc/fusionpbx/local.lua\")) then\n";
$tmp .= " dofile(\"/usr/local/etc/fusionpbx/local.lua\");\n";
$tmp .= " elseif (file_exists(scripts_dir..\"/resources/local.lua\")) then\n";
$tmp .= " require(\"resources.local\");\n";
$tmp .= " end\n";
fwrite($fout, $tmp);
unset($tmp);
fclose($fout);
}
} //end config_lua
} //end scripts class
}
/*
//example use
//update config.lua
$obj = new scripts;
$obj->write_config();
*/
?>

View File

@@ -1,227 +1,227 @@
<?php
if(!defined('WIN32_ERROR_ACCESS_DENIED')) define('WIN32_ERROR_ACCESS_DENIED',0x00000005);
if(!defined('WIN32_ERROR_CIRCULAR_DEPENDENCY')) define('WIN32_ERROR_CIRCULAR_DEPENDENCY',0x00000423);
if(!defined('WIN32_ERROR_DATABASE_DOES_NOT_EXIST')) define('WIN32_ERROR_DATABASE_DOES_NOT_EXIST',0x00000429);
if(!defined('WIN32_ERROR_DEPENDENT_SERVICES_RUNNING')) define('WIN32_ERROR_DEPENDENT_SERVICES_RUNNING',0x0000041B);
if(!defined('WIN32_ERROR_DUPLICATE_SERVICE_NAME')) define('WIN32_ERROR_DUPLICATE_SERVICE_NAME',0x00000436);
if(!defined('WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT')) define('WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT',0x00000427);
if(!defined('WIN32_ERROR_INSUFFICIENT_BUFFER')) define('WIN32_ERROR_INSUFFICIENT_BUFFER',0x0000007A);
if(!defined('WIN32_ERROR_INVALID_DATA')) define('WIN32_ERROR_INVALID_DATA',0x0000000D);
if(!defined('WIN32_ERROR_INVALID_HANDLE')) define('WIN32_ERROR_INVALID_HANDLE',0x00000006);
if(!defined('WIN32_ERROR_INVALID_LEVEL')) define('WIN32_ERROR_INVALID_LEVEL',0x0000007C);
if(!defined('WIN32_ERROR_INVALID_NAME')) define('WIN32_ERROR_INVALID_NAME',0x0000007B);
if(!defined('WIN32_ERROR_INVALID_PARAMETER')) define('WIN32_ERROR_INVALID_PARAMETER',0x00000057);
if(!defined('WIN32_ERROR_INVALID_SERVICE_ACCOUNT')) define('WIN32_ERROR_INVALID_SERVICE_ACCOUNT',0x00000421);
if(!defined('WIN32_ERROR_INVALID_SERVICE_CONTROL')) define('WIN32_ERROR_INVALID_SERVICE_CONTROL',0x0000041C);
if(!defined('WIN32_ERROR_PATH_NOT_FOUND')) define('WIN32_ERROR_PATH_NOT_FOUND',0x00000003);
if(!defined('WIN32_ERROR_SERVICE_ALREADY_RUNNING')) define('WIN32_ERROR_SERVICE_ALREADY_RUNNING',0x00000420);
if(!defined('WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL')) define('WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL',0x00000425);
if(!defined('WIN32_ERROR_SERVICE_DATABASE_LOCKED')) define('WIN32_ERROR_SERVICE_DATABASE_LOCKED',0x0000041F);
if(!defined('WIN32_ERROR_SERVICE_DEPENDENCY_DELETED')) define('WIN32_ERROR_SERVICE_DEPENDENCY_DELETED',0x00000433);
if(!defined('WIN32_ERROR_SERVICE_DEPENDENCY_FAIL')) define('WIN32_ERROR_SERVICE_DEPENDENCY_FAIL',0x0000042C);
if(!defined('WIN32_ERROR_SERVICE_DISABLED')) define('WIN32_ERROR_SERVICE_DISABLED',0x00000422);
if(!defined('WIN32_ERROR_SERVICE_DOES_NOT_EXIST')) define('WIN32_ERROR_SERVICE_DOES_NOT_EXIST',0x00000424);
if(!defined('WIN32_ERROR_SERVICE_EXISTS')) define('WIN32_ERROR_SERVICE_EXISTS',0x00000431);
if(!defined('WIN32_ERROR_SERVICE_LOGON_FAILED')) define('WIN32_ERROR_SERVICE_LOGON_FAILED',0x0000042D);
if(!defined('WIN32_ERROR_SERVICE_MARKED_FOR_DELETE')) define('WIN32_ERROR_SERVICE_MARKED_FOR_DELETE',0x00000430);
if(!defined('WIN32_ERROR_SERVICE_NO_THREAD')) define('WIN32_ERROR_SERVICE_NO_THREAD',0x0000041E);
if(!defined('WIN32_ERROR_SERVICE_NOT_ACTIVE')) define('WIN32_ERROR_SERVICE_NOT_ACTIVE',0x00000426);
if(!defined('WIN32_ERROR_SERVICE_REQUEST_TIMEOUT')) define('WIN32_ERROR_SERVICE_REQUEST_TIMEOUT',0x0000041D);
if(!defined('WIN32_ERROR_SHUTDOWN_IN_PROGRESS')) define('WIN32_ERROR_SHUTDOWN_IN_PROGRESS',0x0000045B);
if(!defined('WIN32_NO_ERROR')) define('WIN32_NO_ERROR',0x00000000);
if(function_exists('win32_query_service_status')){
class win_service{
private static $service_state = array(
//Service Status Constants
WIN32_SERVICE_CONTINUE_PENDING =>'CONTINUE_PENDING',
WIN32_SERVICE_PAUSE_PENDING =>'PAUSE_PENDING',
WIN32_SERVICE_PAUSED =>'PAUSED',
WIN32_SERVICE_RUNNING =>'RUNNING',
WIN32_SERVICE_START_PENDING =>'START_PENDING',
WIN32_SERVICE_STOP_PENDING =>'STOP_PENDING',
WIN32_SERVICE_STOPPED =>'STOPPED',
);
private static $win_error = array(
WIN32_NO_ERROR => 'NO_ERROR',
WIN32_ERROR_ACCESS_DENIED => 'ACCESS_DENIED',
WIN32_ERROR_CIRCULAR_DEPENDENCY => 'CIRCULAR_DEPENDENCY',
WIN32_ERROR_DATABASE_DOES_NOT_EXIST => 'DATABASE_DOES_NOT_EXIST',
WIN32_ERROR_DEPENDENT_SERVICES_RUNNING => 'DEPENDENT_SERVICES_RUNNING',
WIN32_ERROR_DUPLICATE_SERVICE_NAME => 'DUPLICATE_SERVICE_NAME',
WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT => 'FAILED_SERVICE_CONTROLLER_CONNECT',
WIN32_ERROR_INSUFFICIENT_BUFFER => 'INSUFFICIENT_BUFFER',
WIN32_ERROR_INVALID_DATA => 'INVALID_DATA',
WIN32_ERROR_INVALID_HANDLE => 'INVALID_HANDLE',
WIN32_ERROR_INVALID_LEVEL => 'INVALID_LEVEL',
WIN32_ERROR_INVALID_NAME => 'INVALID_NAME',
WIN32_ERROR_INVALID_PARAMETER => 'INVALID_PARAMETER',
WIN32_ERROR_INVALID_SERVICE_ACCOUNT => 'INVALID_SERVICE_ACCOUNT',
WIN32_ERROR_INVALID_SERVICE_CONTROL => 'INVALID_SERVICE_CONTROL',
WIN32_ERROR_PATH_NOT_FOUND => 'PATH_NOT_FOUND',
WIN32_ERROR_SERVICE_ALREADY_RUNNING => 'SERVICE_ALREADY_RUNNING',
WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL => 'SERVICE_CANNOT_ACCEPT_CTRL',
WIN32_ERROR_SERVICE_DATABASE_LOCKED => 'SERVICE_DATABASE_LOCKED',
WIN32_ERROR_SERVICE_DEPENDENCY_DELETED => 'SERVICE_DEPENDENCY_DELETED',
WIN32_ERROR_SERVICE_DEPENDENCY_FAIL => 'SERVICE_DEPENDENCY_FAIL',
WIN32_ERROR_SERVICE_DISABLED => 'SERVICE_DISABLED',
WIN32_ERROR_SERVICE_DOES_NOT_EXIST => 'SERVICE_DOES_NOT_EXIST',
WIN32_ERROR_SERVICE_EXISTS => 'SERVICE_EXISTS',
WIN32_ERROR_SERVICE_LOGON_FAILED => 'SERVICE_LOGON_FAILED',
WIN32_ERROR_SERVICE_MARKED_FOR_DELETE => 'SERVICE_MARKED_FOR_DELETE',
WIN32_ERROR_SERVICE_NO_THREAD => 'SERVICE_NO_THREAD',
WIN32_ERROR_SERVICE_NOT_ACTIVE => 'SERVICE_NOT_ACTIVE',
WIN32_ERROR_SERVICE_REQUEST_TIMEOUT => 'SERVICE_REQUEST_TIMEOUT',
WIN32_ERROR_SHUTDOWN_IN_PROGRESS => 'SHUTDOWN_IN_PROGRESS'
);
private static function val2val($val,$map,$default){
if(isset($map[$val])) return $map[$val];
return $default;
}
var $status;
var $last_error;
var $name;
var $description;
var $machine;
function win_service($srvname, $machine=null){
$this->name = $srvname;
$this->machine = $machine;
$this->status = null;
$this->last_error = WIN32_NO_ERROR;
}
function refresh_status(){
$status = win32_query_service_status($this->name,$this->machine);
if(is_array($status)){
$this->status = (object)$status;
$this->last_error = WIN32_NO_ERROR;
return true;
}
$this->status = null;
$last_error = $status;
return false;
}
function start(){
$this->last_error = win32_start_service($this->name, $this->machine);
return ($this->last_error === WIN32_NO_ERROR) or ($this->last_error === WIN32_ERROR_SERVICE_ALREADY_RUNNING);
}
function stop(){
$this->last_error = win32_stop_service($this->name, $this->machine);
return $this->last_error === WIN32_NO_ERROR;
}
function last_error($as_string = true){
if($as_string){
return self::val2val(
$this->last_error, self::$win_error, $this->last_error
);
}
return $this->last_error;
}
function state($as_string = true){
if((!$this->status)and(!$this->refresh_status())) return false;
if($as_string){
return self::val2val(
$this->status->CurrentState, self::$service_state, 'UNKNOWN'
);
}
return $this->status->CurrentState;
}
function pid(){
if((!$this->status)and(!$this->refresh_status())) return false;
return $this->status->ProcessId;
}
}
}
if(function_exists('reg_open_key')){
class win_reg_key{
private static $HK = array(
HKEY_CLASSES_ROOT => "HKCR",
HKEY_CURRENT_USER => "HKCU",
HKEY_LOCAL_MACHINE => "HKLM",
HKEY_USERS => "HKU",
HKEY_CURRENT_CONFIG => "HKCC",
);
function __construct($haiv, $key){
$this->h = $haiv;
$this->k = $key;
$this->r = reg_open_key($this->h, $this->k);
$this->shell = new COM('WScript.Shell');
if(!$this->shell){
throw new Exception("Cannot create shell object.");
}
if(!$this->r){
throw new Exception("Cannot access registry.");
}
$this->path = self::$HK[$this->h] . '\\' . $this->k;
}
function __destruct(){
if($this->r){
reg_close_key($this->r);
$this->r = false;
}
}
function keys(){
return reg_enum_key($this->r);
}
function values($as_hash = false){
$values = reg_enum_value($this->r);
if(!$as_hash) return $values;
$result = Array();
foreach($values as $key){
$result[$key] = reg_get_value($this->r, $key);
}
return $result;
}
function value($key){
return reg_get_value($this->r, $key);
}
function exists($key){
$v = $this->value($key);
if($v === NULL) return false;
if($v === false) return false;
return true;
}
private function write_raw($key, $type, $value){
return reg_set_value($this->r, $key, $type, $value);
}
function write_dword($key, $value){
return $this->write_raw($key, REG_DWORD, $value);
}
function write_string($key, $value){
return $this->write_raw($key, REG_SZ, $value);
}
function remove_value($key){
if(!$this->exists($key)) return;
$key = $this->path . '\\' . $key;
$this->shell->RegDelete($key);
}
}
}
<?php
if(!defined('WIN32_ERROR_ACCESS_DENIED')) define('WIN32_ERROR_ACCESS_DENIED',0x00000005);
if(!defined('WIN32_ERROR_CIRCULAR_DEPENDENCY')) define('WIN32_ERROR_CIRCULAR_DEPENDENCY',0x00000423);
if(!defined('WIN32_ERROR_DATABASE_DOES_NOT_EXIST')) define('WIN32_ERROR_DATABASE_DOES_NOT_EXIST',0x00000429);
if(!defined('WIN32_ERROR_DEPENDENT_SERVICES_RUNNING')) define('WIN32_ERROR_DEPENDENT_SERVICES_RUNNING',0x0000041B);
if(!defined('WIN32_ERROR_DUPLICATE_SERVICE_NAME')) define('WIN32_ERROR_DUPLICATE_SERVICE_NAME',0x00000436);
if(!defined('WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT')) define('WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT',0x00000427);
if(!defined('WIN32_ERROR_INSUFFICIENT_BUFFER')) define('WIN32_ERROR_INSUFFICIENT_BUFFER',0x0000007A);
if(!defined('WIN32_ERROR_INVALID_DATA')) define('WIN32_ERROR_INVALID_DATA',0x0000000D);
if(!defined('WIN32_ERROR_INVALID_HANDLE')) define('WIN32_ERROR_INVALID_HANDLE',0x00000006);
if(!defined('WIN32_ERROR_INVALID_LEVEL')) define('WIN32_ERROR_INVALID_LEVEL',0x0000007C);
if(!defined('WIN32_ERROR_INVALID_NAME')) define('WIN32_ERROR_INVALID_NAME',0x0000007B);
if(!defined('WIN32_ERROR_INVALID_PARAMETER')) define('WIN32_ERROR_INVALID_PARAMETER',0x00000057);
if(!defined('WIN32_ERROR_INVALID_SERVICE_ACCOUNT')) define('WIN32_ERROR_INVALID_SERVICE_ACCOUNT',0x00000421);
if(!defined('WIN32_ERROR_INVALID_SERVICE_CONTROL')) define('WIN32_ERROR_INVALID_SERVICE_CONTROL',0x0000041C);
if(!defined('WIN32_ERROR_PATH_NOT_FOUND')) define('WIN32_ERROR_PATH_NOT_FOUND',0x00000003);
if(!defined('WIN32_ERROR_SERVICE_ALREADY_RUNNING')) define('WIN32_ERROR_SERVICE_ALREADY_RUNNING',0x00000420);
if(!defined('WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL')) define('WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL',0x00000425);
if(!defined('WIN32_ERROR_SERVICE_DATABASE_LOCKED')) define('WIN32_ERROR_SERVICE_DATABASE_LOCKED',0x0000041F);
if(!defined('WIN32_ERROR_SERVICE_DEPENDENCY_DELETED')) define('WIN32_ERROR_SERVICE_DEPENDENCY_DELETED',0x00000433);
if(!defined('WIN32_ERROR_SERVICE_DEPENDENCY_FAIL')) define('WIN32_ERROR_SERVICE_DEPENDENCY_FAIL',0x0000042C);
if(!defined('WIN32_ERROR_SERVICE_DISABLED')) define('WIN32_ERROR_SERVICE_DISABLED',0x00000422);
if(!defined('WIN32_ERROR_SERVICE_DOES_NOT_EXIST')) define('WIN32_ERROR_SERVICE_DOES_NOT_EXIST',0x00000424);
if(!defined('WIN32_ERROR_SERVICE_EXISTS')) define('WIN32_ERROR_SERVICE_EXISTS',0x00000431);
if(!defined('WIN32_ERROR_SERVICE_LOGON_FAILED')) define('WIN32_ERROR_SERVICE_LOGON_FAILED',0x0000042D);
if(!defined('WIN32_ERROR_SERVICE_MARKED_FOR_DELETE')) define('WIN32_ERROR_SERVICE_MARKED_FOR_DELETE',0x00000430);
if(!defined('WIN32_ERROR_SERVICE_NO_THREAD')) define('WIN32_ERROR_SERVICE_NO_THREAD',0x0000041E);
if(!defined('WIN32_ERROR_SERVICE_NOT_ACTIVE')) define('WIN32_ERROR_SERVICE_NOT_ACTIVE',0x00000426);
if(!defined('WIN32_ERROR_SERVICE_REQUEST_TIMEOUT')) define('WIN32_ERROR_SERVICE_REQUEST_TIMEOUT',0x0000041D);
if(!defined('WIN32_ERROR_SHUTDOWN_IN_PROGRESS')) define('WIN32_ERROR_SHUTDOWN_IN_PROGRESS',0x0000045B);
if(!defined('WIN32_NO_ERROR')) define('WIN32_NO_ERROR',0x00000000);
if(function_exists('win32_query_service_status')){
class win_service{
private static $service_state = array(
//Service Status Constants
WIN32_SERVICE_CONTINUE_PENDING =>'CONTINUE_PENDING',
WIN32_SERVICE_PAUSE_PENDING =>'PAUSE_PENDING',
WIN32_SERVICE_PAUSED =>'PAUSED',
WIN32_SERVICE_RUNNING =>'RUNNING',
WIN32_SERVICE_START_PENDING =>'START_PENDING',
WIN32_SERVICE_STOP_PENDING =>'STOP_PENDING',
WIN32_SERVICE_STOPPED =>'STOPPED',
);
private static $win_error = array(
WIN32_NO_ERROR => 'NO_ERROR',
WIN32_ERROR_ACCESS_DENIED => 'ACCESS_DENIED',
WIN32_ERROR_CIRCULAR_DEPENDENCY => 'CIRCULAR_DEPENDENCY',
WIN32_ERROR_DATABASE_DOES_NOT_EXIST => 'DATABASE_DOES_NOT_EXIST',
WIN32_ERROR_DEPENDENT_SERVICES_RUNNING => 'DEPENDENT_SERVICES_RUNNING',
WIN32_ERROR_DUPLICATE_SERVICE_NAME => 'DUPLICATE_SERVICE_NAME',
WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT => 'FAILED_SERVICE_CONTROLLER_CONNECT',
WIN32_ERROR_INSUFFICIENT_BUFFER => 'INSUFFICIENT_BUFFER',
WIN32_ERROR_INVALID_DATA => 'INVALID_DATA',
WIN32_ERROR_INVALID_HANDLE => 'INVALID_HANDLE',
WIN32_ERROR_INVALID_LEVEL => 'INVALID_LEVEL',
WIN32_ERROR_INVALID_NAME => 'INVALID_NAME',
WIN32_ERROR_INVALID_PARAMETER => 'INVALID_PARAMETER',
WIN32_ERROR_INVALID_SERVICE_ACCOUNT => 'INVALID_SERVICE_ACCOUNT',
WIN32_ERROR_INVALID_SERVICE_CONTROL => 'INVALID_SERVICE_CONTROL',
WIN32_ERROR_PATH_NOT_FOUND => 'PATH_NOT_FOUND',
WIN32_ERROR_SERVICE_ALREADY_RUNNING => 'SERVICE_ALREADY_RUNNING',
WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL => 'SERVICE_CANNOT_ACCEPT_CTRL',
WIN32_ERROR_SERVICE_DATABASE_LOCKED => 'SERVICE_DATABASE_LOCKED',
WIN32_ERROR_SERVICE_DEPENDENCY_DELETED => 'SERVICE_DEPENDENCY_DELETED',
WIN32_ERROR_SERVICE_DEPENDENCY_FAIL => 'SERVICE_DEPENDENCY_FAIL',
WIN32_ERROR_SERVICE_DISABLED => 'SERVICE_DISABLED',
WIN32_ERROR_SERVICE_DOES_NOT_EXIST => 'SERVICE_DOES_NOT_EXIST',
WIN32_ERROR_SERVICE_EXISTS => 'SERVICE_EXISTS',
WIN32_ERROR_SERVICE_LOGON_FAILED => 'SERVICE_LOGON_FAILED',
WIN32_ERROR_SERVICE_MARKED_FOR_DELETE => 'SERVICE_MARKED_FOR_DELETE',
WIN32_ERROR_SERVICE_NO_THREAD => 'SERVICE_NO_THREAD',
WIN32_ERROR_SERVICE_NOT_ACTIVE => 'SERVICE_NOT_ACTIVE',
WIN32_ERROR_SERVICE_REQUEST_TIMEOUT => 'SERVICE_REQUEST_TIMEOUT',
WIN32_ERROR_SHUTDOWN_IN_PROGRESS => 'SHUTDOWN_IN_PROGRESS'
);
private static function val2val($val,$map,$default){
if(isset($map[$val])) return $map[$val];
return $default;
}
var $status;
var $last_error;
var $name;
var $description;
var $machine;
function win_service($srvname, $machine=null){
$this->name = $srvname;
$this->machine = $machine;
$this->status = null;
$this->last_error = WIN32_NO_ERROR;
}
function refresh_status(){
$status = win32_query_service_status($this->name,$this->machine);
if(is_array($status)){
$this->status = (object)$status;
$this->last_error = WIN32_NO_ERROR;
return true;
}
$this->status = null;
$last_error = $status;
return false;
}
function start(){
$this->last_error = win32_start_service($this->name, $this->machine);
return ($this->last_error === WIN32_NO_ERROR) or ($this->last_error === WIN32_ERROR_SERVICE_ALREADY_RUNNING);
}
function stop(){
$this->last_error = win32_stop_service($this->name, $this->machine);
return $this->last_error === WIN32_NO_ERROR;
}
function last_error($as_string = true){
if($as_string){
return self::val2val(
$this->last_error, self::$win_error, $this->last_error
);
}
return $this->last_error;
}
function state($as_string = true){
if((!$this->status)and(!$this->refresh_status())) return false;
if($as_string){
return self::val2val(
$this->status->CurrentState, self::$service_state, 'UNKNOWN'
);
}
return $this->status->CurrentState;
}
function pid(){
if((!$this->status)and(!$this->refresh_status())) return false;
return $this->status->ProcessId;
}
}
}
if(function_exists('reg_open_key')){
class win_reg_key{
private static $HK = array(
HKEY_CLASSES_ROOT => "HKCR",
HKEY_CURRENT_USER => "HKCU",
HKEY_LOCAL_MACHINE => "HKLM",
HKEY_USERS => "HKU",
HKEY_CURRENT_CONFIG => "HKCC",
);
function __construct($haiv, $key){
$this->h = $haiv;
$this->k = $key;
$this->r = reg_open_key($this->h, $this->k);
$this->shell = new COM('WScript.Shell');
if(!$this->shell){
throw new Exception("Cannot create shell object.");
}
if(!$this->r){
throw new Exception("Cannot access registry.");
}
$this->path = self::$HK[$this->h] . '\\' . $this->k;
}
function __destruct(){
if($this->r){
reg_close_key($this->r);
$this->r = false;
}
}
function keys(){
return reg_enum_key($this->r);
}
function values($as_hash = false){
$values = reg_enum_value($this->r);
if(!$as_hash) return $values;
$result = Array();
foreach($values as $key){
$result[$key] = reg_get_value($this->r, $key);
}
return $result;
}
function value($key){
return reg_get_value($this->r, $key);
}
function exists($key){
$v = $this->value($key);
if($v === NULL) return false;
if($v === false) return false;
return true;
}
private function write_raw($key, $type, $value){
return reg_set_value($this->r, $key, $type, $value);
}
function write_dword($key, $value){
return $this->write_raw($key, REG_DWORD, $value);
}
function write_string($key, $value){
return $this->write_raw($key, REG_SZ, $value);
}
function remove_value($key){
if(!$this->exists($key)) return;
$key = $this->path . '\\' . $key;
$this->shell->RegDelete($key);
}
}
}

View File

@@ -1,117 +1,117 @@
<?php
if ($domains_processed == 1) {
//define holiday presets
$preset['usa'][] = json_encode(array("new_years_day" => array("mday" => "1", "mon" => "1")));
$preset['usa'][] = json_encode(array("martin_luther_king_jr_day" => array("wday" => "2", "mon" => "1", "mweek" => "3")));
$preset['usa'][] = json_encode(array("presidents_day" => array("wday" => "2", "mon" => "2", "mweek" => "3")));
$preset['usa'][] = json_encode(array("memorial_day" => array("mday" => "25-31", "wday" => "2", "mon" => "5")));
$preset['usa'][] = json_encode(array("independence_day" => array("mday" => "4", "mon" => "7")));
$preset['usa'][] = json_encode(array("labor_day" => array("wday" => "2", "mon" => "9", "mweek" => "1")));
$preset['usa'][] = json_encode(array("columbus_day" => array("wday" => "2", "mon" => "10", "mweek" => "2")));
$preset['usa'][] = json_encode(array("veterans_day" => array("mday" => "11", "mon" => "11")));
$preset['usa'][] = json_encode(array("thanksgiving_day" => array("wday" => "5-6", "mon" => "11", "mweek" => "4")));
$preset['usa'][] = json_encode(array("christmas_day" => array("mday" => "25", "mon" => "12")));
$preset['england'][] = json_encode(array("new_years_day" => array("mday" => "1", "mon" => "1")));
$preset['england'][] = json_encode(array("christmas_day" => array("mday" => "25", "mon" => "12")));
$preset['england'][] = json_encode(array("boxing_day" => array("mday" => "26", "mon" => "12")));
$preset['england'][] = json_encode(array("may_day" => array("mon" => "5", "mweek" => "1", "wday" => "2")));
$preset['england'][] = json_encode(array("spring_bank_holiday" => array("mon" => "5", "mday" => "25-31", "wday" => "2")));
$preset['england'][] = json_encode(array("august_bank_holiday" => array("mon" => "8", "mday" => "25-31", "wday" => "2")));
//iterate and migrate old presets first
$sql = "update v_default_settings ";
$sql .= "set default_setting_subcategory = 'preset_usa' ";
$sql .= ", default_setting_description = 'usa Holiday' ";
$sql .= "where default_setting_category = 'time_conditions' ";
$sql .= "and default_setting_subcategory = 'preset' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
unset ($prep_statement, $sql);
}
//iterate and add each, if necessary
$x = 0;
foreach ($preset as $region => $data) {
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_category = 'time_conditions' ";
$sql .= "and default_setting_subcategory = 'preset_$region' ";
$sql .= "and default_setting_name = 'array' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
foreach ($data as $json) {
$found = false;
$missing[$x]['default_setting_category'] = 'time_conditions';
$missing[$x]['default_setting_subcategory'] = "preset_$region";
$missing[$x]['default_setting_name'] = 'array';
$missing[$x]['default_setting_value'] = $json;
$missing[$x]['default_setting_enabled'] = 'true';
$missing[$x]['default_setting_description'] = "$region Holiday";
foreach ($default_settings as $row) {
if (trim($row['default_setting_value']) == trim($json)) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
}
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
//print_r($message);
}
unset($missing);
$array[$x]['default_setting_category'] = 'time_conditions';
$array[$x]['default_setting_subcategory'] = 'region';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'usa';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'What region to use by default when choosing Time Conditions';
$x++;
//iterate and add each, if necessary
foreach ($array as $index => $default_settings) {
//add the default setting
$sql = "select count(*) as num_rows from v_default_settings ";
$sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' ";
$sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' ";
$sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] == 0) {
$orm = new orm;
$orm->name('default_settings');
$orm->save($array[$index]);
$message = $orm->message;
//print_r($message);
}
unset($row);
}
}
//unset the array variable
unset($array);
}
<?php
if ($domains_processed == 1) {
//define holiday presets
$preset['usa'][] = json_encode(array("new_years_day" => array("mday" => "1", "mon" => "1")));
$preset['usa'][] = json_encode(array("martin_luther_king_jr_day" => array("wday" => "2", "mon" => "1", "mweek" => "3")));
$preset['usa'][] = json_encode(array("presidents_day" => array("wday" => "2", "mon" => "2", "mweek" => "3")));
$preset['usa'][] = json_encode(array("memorial_day" => array("mday" => "25-31", "wday" => "2", "mon" => "5")));
$preset['usa'][] = json_encode(array("independence_day" => array("mday" => "4", "mon" => "7")));
$preset['usa'][] = json_encode(array("labor_day" => array("wday" => "2", "mon" => "9", "mweek" => "1")));
$preset['usa'][] = json_encode(array("columbus_day" => array("wday" => "2", "mon" => "10", "mweek" => "2")));
$preset['usa'][] = json_encode(array("veterans_day" => array("mday" => "11", "mon" => "11")));
$preset['usa'][] = json_encode(array("thanksgiving_day" => array("wday" => "5-6", "mon" => "11", "mweek" => "4")));
$preset['usa'][] = json_encode(array("christmas_day" => array("mday" => "25", "mon" => "12")));
$preset['england'][] = json_encode(array("new_years_day" => array("mday" => "1", "mon" => "1")));
$preset['england'][] = json_encode(array("christmas_day" => array("mday" => "25", "mon" => "12")));
$preset['england'][] = json_encode(array("boxing_day" => array("mday" => "26", "mon" => "12")));
$preset['england'][] = json_encode(array("may_day" => array("mon" => "5", "mweek" => "1", "wday" => "2")));
$preset['england'][] = json_encode(array("spring_bank_holiday" => array("mon" => "5", "mday" => "25-31", "wday" => "2")));
$preset['england'][] = json_encode(array("august_bank_holiday" => array("mon" => "8", "mday" => "25-31", "wday" => "2")));
//iterate and migrate old presets first
$sql = "update v_default_settings ";
$sql .= "set default_setting_subcategory = 'preset_usa' ";
$sql .= ", default_setting_description = 'usa Holiday' ";
$sql .= "where default_setting_category = 'time_conditions' ";
$sql .= "and default_setting_subcategory = 'preset' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
unset ($prep_statement, $sql);
}
//iterate and add each, if necessary
$x = 0;
foreach ($preset as $region => $data) {
$sql = "select * from v_default_settings ";
$sql .= "where default_setting_category = 'time_conditions' ";
$sql .= "and default_setting_subcategory = 'preset_$region' ";
$sql .= "and default_setting_name = 'array' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$default_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED);
unset ($prep_statement, $sql);
foreach ($data as $json) {
$found = false;
$missing[$x]['default_setting_category'] = 'time_conditions';
$missing[$x]['default_setting_subcategory'] = "preset_$region";
$missing[$x]['default_setting_name'] = 'array';
$missing[$x]['default_setting_value'] = $json;
$missing[$x]['default_setting_enabled'] = 'true';
$missing[$x]['default_setting_description'] = "$region Holiday";
foreach ($default_settings as $row) {
if (trim($row['default_setting_value']) == trim($json)) {
$found = true;
//remove items from the array that were found
unset($missing[$x]);
}
}
$x++;
}
}
}
//add the missing default settings
foreach ($missing as $row) {
//add the default settings
$orm = new orm;
$orm->name('default_settings');
$orm->save($row);
$message = $orm->message;
unset($orm);
//print_r($message);
}
unset($missing);
$array[$x]['default_setting_category'] = 'time_conditions';
$array[$x]['default_setting_subcategory'] = 'region';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'usa';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'What region to use by default when choosing Time Conditions';
$x++;
//iterate and add each, if necessary
foreach ($array as $index => $default_settings) {
//add the default setting
$sql = "select count(*) as num_rows from v_default_settings ";
$sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' ";
$sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' ";
$sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] == 0) {
$orm = new orm;
$orm->name('default_settings');
$orm->save($array[$index]);
$message = $orm->message;
//print_r($message);
}
unset($row);
}
}
//unset the array variable
unset($array);
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,123 +1,123 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
if ($domains_processed == 1) {
//if greeting filename field empty, copy greeting name field value
$sql = "update v_voicemail_greetings ";
$sql .= "set greeting_filename = greeting_name ";
$sql .= "where greeting_filename is null ";
$sql .= "or greeting_filename = '' ";
$db->exec(check_sql($sql));
unset($sql);
//populate greeting id number if empty
$sql = "select voicemail_greeting_uuid, greeting_filename ";
$sql .= "from v_voicemail_greetings ";
$sql .= "where greeting_id is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_id = preg_replace('{\D}', '', $row['greeting_filename']);
$sqlu = "update v_voicemail_greetings ";
$sqlu .= "set greeting_id = ".$greeting_id." ";
$sqlu .= "where voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sqlu));
unset($sqlu, $voicemail_greeting_uuid, $greeting_id);
}
unset ($sql, $prep_statement);
//if base64, populate from existing greeting files, then remove
if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') {
//get greetings without base64 in db
$sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename ";
$sql .= "from v_voicemail_greetings where greeting_base64 is null or greeting_base64 = '' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_domain_uuid = $row['domain_uuid'];
$voicemail_id = $row['voicemail_id'];
$greeting_filename = $row['greeting_filename'];
//set greeting directory
$greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id;
//encode greeting file (if exists)
if (file_exists($greeting_directory.'/'.$greeting_filename)) {
$greeting_base64 = base64_encode(file_get_contents($greeting_directory.'/'.$greeting_filename));
//update greeting record with base64
$sql = "update v_voicemail_greetings set ";
$sql .= "greeting_base64 = '".$greeting_base64."' ";
$sql .= "where domain_uuid = '".$greeting_domain_uuid."' ";
$sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
//remove local greeting file
@unlink($greeting_directory.'/'.$greeting_filename);
}
}
}
unset($sql, $prep_statement, $result, $row);
}
//if not base64, decode to local files, remove base64 data from db
else if ($_SESSION['voicemail']['storage_type']['text'] != 'base64') {
//get greetings with base64 in db
$sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename, greeting_base64 ";
$sql .= "from v_voicemail_greetings where greeting_base64 is not null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_domain_uuid = $row['domain_uuid'];
$voicemail_id = $row['voicemail_id'];
$greeting_filename = $row['greeting_filename'];
$greeting_base64 = $row['greeting_base64'];
//set greeting directory
$greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id;
//remove local file, if any
if (file_exists($greeting_directory.'/'.$greeting_filename)) {
@unlink($greeting_directory.'/'.$greeting_filename);
}
//decode base64, save to local file
$greeting_decoded = base64_decode($greeting_base64);
file_put_contents($greeting_directory.'/'.$greeting_filename, $greeting_decoded);
$sql = "update v_voicemail_greetings ";
$sql .= "set greeting_base64 = null ";
$sql .= "where domain_uuid = '".$greeting_domain_uuid."' ";
$sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
}
}
unset($sql, $prep_statement, $result, $row);
}
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
if ($domains_processed == 1) {
//if greeting filename field empty, copy greeting name field value
$sql = "update v_voicemail_greetings ";
$sql .= "set greeting_filename = greeting_name ";
$sql .= "where greeting_filename is null ";
$sql .= "or greeting_filename = '' ";
$db->exec(check_sql($sql));
unset($sql);
//populate greeting id number if empty
$sql = "select voicemail_greeting_uuid, greeting_filename ";
$sql .= "from v_voicemail_greetings ";
$sql .= "where greeting_id is null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_id = preg_replace('{\D}', '', $row['greeting_filename']);
$sqlu = "update v_voicemail_greetings ";
$sqlu .= "set greeting_id = ".$greeting_id." ";
$sqlu .= "where voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sqlu));
unset($sqlu, $voicemail_greeting_uuid, $greeting_id);
}
unset ($sql, $prep_statement);
//if base64, populate from existing greeting files, then remove
if ($_SESSION['voicemail']['storage_type']['text'] == 'base64') {
//get greetings without base64 in db
$sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename ";
$sql .= "from v_voicemail_greetings where greeting_base64 is null or greeting_base64 = '' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_domain_uuid = $row['domain_uuid'];
$voicemail_id = $row['voicemail_id'];
$greeting_filename = $row['greeting_filename'];
//set greeting directory
$greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id;
//encode greeting file (if exists)
if (file_exists($greeting_directory.'/'.$greeting_filename)) {
$greeting_base64 = base64_encode(file_get_contents($greeting_directory.'/'.$greeting_filename));
//update greeting record with base64
$sql = "update v_voicemail_greetings set ";
$sql .= "greeting_base64 = '".$greeting_base64."' ";
$sql .= "where domain_uuid = '".$greeting_domain_uuid."' ";
$sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
//remove local greeting file
@unlink($greeting_directory.'/'.$greeting_filename);
}
}
}
unset($sql, $prep_statement, $result, $row);
}
//if not base64, decode to local files, remove base64 data from db
else if ($_SESSION['voicemail']['storage_type']['text'] != 'base64') {
//get greetings with base64 in db
$sql = "select voicemail_greeting_uuid, domain_uuid, voicemail_id, greeting_filename, greeting_base64 ";
$sql .= "from v_voicemail_greetings where greeting_base64 is not null ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
if (count($result) > 0) {
foreach ($result as &$row) {
$voicemail_greeting_uuid = $row['voicemail_greeting_uuid'];
$greeting_domain_uuid = $row['domain_uuid'];
$voicemail_id = $row['voicemail_id'];
$greeting_filename = $row['greeting_filename'];
$greeting_base64 = $row['greeting_base64'];
//set greeting directory
$greeting_directory = $_SESSION['switch']['storage']['dir'].'/voicemail/default/'.$_SESSION['domains'][$greeting_domain_uuid]['domain_name'].'/'.$voicemail_id;
//remove local file, if any
if (file_exists($greeting_directory.'/'.$greeting_filename)) {
@unlink($greeting_directory.'/'.$greeting_filename);
}
//decode base64, save to local file
$greeting_decoded = base64_decode($greeting_base64);
file_put_contents($greeting_directory.'/'.$greeting_filename, $greeting_decoded);
$sql = "update v_voicemail_greetings ";
$sql .= "set greeting_base64 = null ";
$sql .= "where domain_uuid = '".$greeting_domain_uuid."' ";
$sql .= "and voicemail_greeting_uuid = '".$voicemail_greeting_uuid."' ";
$db->exec(check_sql($sql));
unset($sql);
}
}
unset($sql, $prep_statement, $result, $row);
}
}
?>

View File

@@ -1,97 +1,97 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//proccess this only one time
if ($domains_processed == 1) {
//migrate existing attachment preferences to new column, where appropriate
$sql = "update v_voicemails set voicemail_file = 'attach' where voicemail_attach_file = 'true'";
$db->exec(check_sql($sql));
unset($sql);
//define array of settings
$x = 0;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'voicemail_file';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'attach';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to attach voicemail files to email notifications, or only include a link.';
$x++;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'keep_local';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to keep voicemail files on the local system after sending attached via email.';
$x++;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'storage_type';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'base64';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Define which storage type (base_64 stores in the database).';
$x++;
//iterate and add each, if necessary
foreach ($array as $index => $default_settings) {
//add the default setting
$sql = "select count(*) as num_rows from v_default_settings ";
$sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' ";
$sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' ";
$sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] == 0) {
$orm = new orm;
$orm->name('default_settings');
$orm->save($array[$index]);
$message = $orm->message;
//print_r($message);
}
unset($row);
}
}
//add that the directory structure for voicemail each domain and voicemail id is
$sql = "select d.domain_name, v.voicemail_id ";
$sql .= "from v_domains as d, v_voicemails as v ";
$sql .= "where v.domain_uuid = d.domain_uuid ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$voicemails = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($voicemails as $row) {
$path = $_SESSION['switch']['voicemail']['dir'].'/default/'.$row['domain_name'].'/'.$row['voicemail_id'];
mkdir($path, 0777, true);
}
unset ($prep_statement, $sql);
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//proccess this only one time
if ($domains_processed == 1) {
//migrate existing attachment preferences to new column, where appropriate
$sql = "update v_voicemails set voicemail_file = 'attach' where voicemail_attach_file = 'true'";
$db->exec(check_sql($sql));
unset($sql);
//define array of settings
$x = 0;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'voicemail_file';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'attach';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to attach voicemail files to email notifications, or only include a link.';
$x++;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'keep_local';
$array[$x]['default_setting_name'] = 'boolean';
$array[$x]['default_setting_value'] = 'true';
$array[$x]['default_setting_enabled'] = 'true';
$array[$x]['default_setting_description'] = 'Define whether to keep voicemail files on the local system after sending attached via email.';
$x++;
$array[$x]['default_setting_category'] = 'voicemail';
$array[$x]['default_setting_subcategory'] = 'storage_type';
$array[$x]['default_setting_name'] = 'text';
$array[$x]['default_setting_value'] = 'base64';
$array[$x]['default_setting_enabled'] = 'false';
$array[$x]['default_setting_description'] = 'Define which storage type (base_64 stores in the database).';
$x++;
//iterate and add each, if necessary
foreach ($array as $index => $default_settings) {
//add the default setting
$sql = "select count(*) as num_rows from v_default_settings ";
$sql .= "where default_setting_category = '".$default_settings['default_setting_category']."' ";
$sql .= "and default_setting_subcategory = '".$default_settings['default_setting_subcategory']."' ";
$sql .= "and default_setting_name = '".$default_settings['default_setting_name']."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
unset($prep_statement);
if ($row['num_rows'] == 0) {
$orm = new orm;
$orm->name('default_settings');
$orm->save($array[$index]);
$message = $orm->message;
//print_r($message);
}
unset($row);
}
}
//add that the directory structure for voicemail each domain and voicemail id is
$sql = "select d.domain_name, v.voicemail_id ";
$sql .= "from v_domains as d, v_voicemails as v ";
$sql .= "where v.domain_uuid = d.domain_uuid ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$voicemails = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($voicemails as $row) {
$path = $_SESSION['switch']['voicemail']['dir'].'/default/'.$row['domain_name'].'/'.$row['voicemail_id'];
mkdir($path, 0777, true);
}
unset ($prep_statement, $sql);
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,78 +1,78 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('voicemail_message_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get submitted variables
$voicemail_messages = $_REQUEST["voicemail_messages"];
//toggle the voicemail message
$toggled = 0;
if (is_array($voicemail_messages) && sizeof($voicemail_messages) > 0) {
require_once "resources/classes/voicemail.php";
foreach ($voicemail_messages as $voicemail_uuid => $voicemail_message_uuids) {
foreach ($voicemail_message_uuids as $voicemail_message_uuid) {
$voicemail = new voicemail;
$voicemail->db = $db;
$voicemail->domain_uuid = $_SESSION['domain_uuid'];
$voicemail->voicemail_uuid = check_str($voicemail_uuid);
$voicemail->voicemail_message_uuid = check_str($voicemail_message_uuid);
$result = $voicemail->message_toggle();
unset($voicemail);
$toggled++;
}
}
}
//set the referrer
$http_referer = parse_url($_SERVER["HTTP_REFERER"]);
$referer_path = $http_referer['path'];
$referer_query = $http_referer['query'];
//redirect the user
if ($toggled > 0) {
$_SESSION["message"] = $text['message-toggled'].': '.$toggled;
}
if ($referer_path == PROJECT_PATH."/app/voicemails/voicemail_messages.php") {
header("Location: voicemail_messages.php?".$referer_query);
}
else {
header("Location: voicemails.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('voicemail_message_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get submitted variables
$voicemail_messages = $_REQUEST["voicemail_messages"];
//toggle the voicemail message
$toggled = 0;
if (is_array($voicemail_messages) && sizeof($voicemail_messages) > 0) {
require_once "resources/classes/voicemail.php";
foreach ($voicemail_messages as $voicemail_uuid => $voicemail_message_uuids) {
foreach ($voicemail_message_uuids as $voicemail_message_uuid) {
$voicemail = new voicemail;
$voicemail->db = $db;
$voicemail->domain_uuid = $_SESSION['domain_uuid'];
$voicemail->voicemail_uuid = check_str($voicemail_uuid);
$voicemail->voicemail_message_uuid = check_str($voicemail_message_uuid);
$result = $voicemail->message_toggle();
unset($voicemail);
$toggled++;
}
}
}
//set the referrer
$http_referer = parse_url($_SERVER["HTTP_REFERER"]);
$referer_path = $http_referer['path'];
$referer_query = $http_referer['query'];
//redirect the user
if ($toggled > 0) {
$_SESSION["message"] = $text['message-toggled'].': '.$toggled;
}
if ($referer_path == PROJECT_PATH."/app/voicemails/voicemail_messages.php") {
header("Location: voicemail_messages.php?".$referer_query);
}
else {
header("Location: voicemails.php");
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,214 +1,214 @@
<?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
James Rose <james.o.rose@gmail.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
James Rose <james.o.rose@gmail.com>
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/header.php";
require_once "resources/schema.php";
//require_once "xml_cdr_statistics_inc.php";
if (permission_exists('xml_cdr_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//additional includes
//require_once "xml_cdr_statistics_inc.php";
require_once "resources/header.php";
global $db;
$dom = date('m');
$year = date('Y');
if (strlen($where) == 0) {
$duuid = "domain_uuid = '".$_SESSION['domain_uuid']."' ";
}
for ($y=0; $y<4; $y++) {
$fileheader = array( 'month', 'total calls' , 'total seconds' , 'total minutes' , 'total hours' , 'billing periods', 'rate', 'approx cost');
if ( $y == 0) {
$tablename = "<b>Previous 12 Months Inbound Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='inbound') ";
$sql3 = ";";
//really we should set rate in domain settings or something and pull it from the php session.
$rate=0.012;
$bill_period=60;
}
elseif ($y == 1) {
$tablename = "<b>Previous 12 Months Outbound Metered Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='outbound') ";
$sql3 = "and destination_number not like '%800_______' and destination_number not like '%888_______' and destination_number not like '%877_______' and destination_number not like '%866_______' and destination_number not like '%855_______' ;";
$rate=0.0098;
$rate=$rate/10;
$bill_period=6;
}
elseif ($y == 2) {
$tablename = "<b>Previous 12 Months Toll Free Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='outbound') ";
$sql3 = "and (destination_number like '%800_______' or destination_number like '%888_______' or destination_number like '%877_______' or destination_number like '%866_______' or destination_number like '%855_______');";
$rate=0;
$bill_period=6;
}
elseif ($y == 3) {
$tablename = "<b>Previous 12 Months Local Free Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='local') ";
$sql3 = ";";
$rate=0;
$bill_period=6;
}
else {
echo "whoops<br>";
}
//set the style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table width='100%' cellpadding='0' cellspacing='0'>";
$dom = date('m');
$year = date('Y');
$lyear=$year;
$lastmonth = $year."-".$dolm."-01";
$thismonth = $year."-".$dom."-01";
echo $tablename;
foreach ($fileheader as $tr){
echo "<th>" . $tr . "</th>";
}
for ($x=0; $x < 12; $x++)
{
if ($dom == 1){
$dom=12;
$year=$year-1;
}
elseif ($x == 0){
$dom=$dom;
}
else {
$dom=$dom-1;
}
if ($dom == 1) {
$dolm=12;
$lyear=$lyear-1;
}
else {
$dolm=$dom-1;
}
//convert to int
$dom=$dom*1;
$dolm=$dolm*1;
//back to string, prepend 0)
if ( $dolm < 10 ) {
$dolm = "0".$dolm;
}
if ( $dom < 10 ) {
$dom = "0".$dom;
}
$lastmonth = $lyear."-".$dolm."-01";
$thismonth = $year."-".$dom."-01";
$sql2 = "and (start_stamp >= '" . $lastmonth . "' AND start_stamp < '" . $thismonth. "') ";
$sql = $sql1;
$sql .= $sql2;
$sql .= $sql3;
$sql .= $callsort;
//echo "<br>" . $sql . "<br>";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
unset ($prep_statement, $sql);
$max = sizeof($result) -1;
$i=0;
echo "<tr>";
//echo " <td valign='top' class='".$row_style[$c]."'>".($i+1)."</td>\n";
if ( $max > 0 ) {
foreach($result as $row) {
$result = $row['seconds'];
$billtime_1 = intval($result/$bill_period);
$billtime_2 = $result%$bill_period;
if (($result%$bill_period) != 0 ) {
//need to round up for billing period
$billtime = $billtime + intval($result/$bill_period) + 1;
//echo " mod worked ";
}
else {
//no need to round up for billing period
$billtime = $billtime + intval($result/$bill_period);
}
$tottime = $tottime + $result;
}
echo "<td valign='top' class='".$row_style[$c]."'>".$dolm."/".$lyear."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$max."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$tottime."</td>";
$mintime = $tottime/$bill_period;
echo "<td valign='top' class='".$row_style[$c]."'>".round($mintime,1)."</td>";
$hourtime = $tottime/3600;
echo "<td valign='top' class='".$row_style[$c]."'>".round($hourtime,1)."</td>";
$tot_cost = $rate * $billtime ;
echo "<td valign='top' class='".$row_style[$c]."'>".$billtime."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$rate."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>$".round($tot_cost,2)."</td>";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</tr>";
$max=0;
$tottime=0;
$hourtime=0;
$billtime=0;
$tot_cost=0;
$mintime=0;
}
echo "</table>";
echo "<br>";
}
//show the footer
require_once "resources/footer.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
James Rose <james.o.rose@gmail.com>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
James Rose <james.o.rose@gmail.com>
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
require_once "resources/header.php";
require_once "resources/schema.php";
//require_once "xml_cdr_statistics_inc.php";
if (permission_exists('xml_cdr_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//additional includes
//require_once "xml_cdr_statistics_inc.php";
require_once "resources/header.php";
global $db;
$dom = date('m');
$year = date('Y');
if (strlen($where) == 0) {
$duuid = "domain_uuid = '".$_SESSION['domain_uuid']."' ";
}
for ($y=0; $y<4; $y++) {
$fileheader = array( 'month', 'total calls' , 'total seconds' , 'total minutes' , 'total hours' , 'billing periods', 'rate', 'approx cost');
if ( $y == 0) {
$tablename = "<b>Previous 12 Months Inbound Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='inbound') ";
$sql3 = ";";
//really we should set rate in domain settings or something and pull it from the php session.
$rate=0.012;
$bill_period=60;
}
elseif ($y == 1) {
$tablename = "<b>Previous 12 Months Outbound Metered Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='outbound') ";
$sql3 = "and destination_number not like '%800_______' and destination_number not like '%888_______' and destination_number not like '%877_______' and destination_number not like '%866_______' and destination_number not like '%855_______' ;";
$rate=0.0098;
$rate=$rate/10;
$bill_period=6;
}
elseif ($y == 2) {
$tablename = "<b>Previous 12 Months Toll Free Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='outbound') ";
$sql3 = "and (destination_number like '%800_______' or destination_number like '%888_______' or destination_number like '%877_______' or destination_number like '%866_______' or destination_number like '%855_______');";
$rate=0;
$bill_period=6;
}
elseif ($y == 3) {
$tablename = "<b>Previous 12 Months Local Free Call Summary</b><br>";
$sql1 = "select billsec as seconds from v_xml_cdr where (".$duuid."and direction='local') ";
$sql3 = ";";
$rate=0;
$bill_period=6;
}
else {
echo "whoops<br>";
}
//set the style
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table width='100%' cellpadding='0' cellspacing='0'>";
$dom = date('m');
$year = date('Y');
$lyear=$year;
$lastmonth = $year."-".$dolm."-01";
$thismonth = $year."-".$dom."-01";
echo $tablename;
foreach ($fileheader as $tr){
echo "<th>" . $tr . "</th>";
}
for ($x=0; $x < 12; $x++)
{
if ($dom == 1){
$dom=12;
$year=$year-1;
}
elseif ($x == 0){
$dom=$dom;
}
else {
$dom=$dom-1;
}
if ($dom == 1) {
$dolm=12;
$lyear=$lyear-1;
}
else {
$dolm=$dom-1;
}
//convert to int
$dom=$dom*1;
$dolm=$dolm*1;
//back to string, prepend 0)
if ( $dolm < 10 ) {
$dolm = "0".$dolm;
}
if ( $dom < 10 ) {
$dom = "0".$dom;
}
$lastmonth = $lyear."-".$dolm."-01";
$thismonth = $year."-".$dom."-01";
$sql2 = "and (start_stamp >= '" . $lastmonth . "' AND start_stamp < '" . $thismonth. "') ";
$sql = $sql1;
$sql .= $sql2;
$sql .= $sql3;
$sql .= $callsort;
//echo "<br>" . $sql . "<br>";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
unset ($prep_statement, $sql);
$max = sizeof($result) -1;
$i=0;
echo "<tr>";
//echo " <td valign='top' class='".$row_style[$c]."'>".($i+1)."</td>\n";
if ( $max > 0 ) {
foreach($result as $row) {
$result = $row['seconds'];
$billtime_1 = intval($result/$bill_period);
$billtime_2 = $result%$bill_period;
if (($result%$bill_period) != 0 ) {
//need to round up for billing period
$billtime = $billtime + intval($result/$bill_period) + 1;
//echo " mod worked ";
}
else {
//no need to round up for billing period
$billtime = $billtime + intval($result/$bill_period);
}
$tottime = $tottime + $result;
}
echo "<td valign='top' class='".$row_style[$c]."'>".$dolm."/".$lyear."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$max."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$tottime."</td>";
$mintime = $tottime/$bill_period;
echo "<td valign='top' class='".$row_style[$c]."'>".round($mintime,1)."</td>";
$hourtime = $tottime/3600;
echo "<td valign='top' class='".$row_style[$c]."'>".round($hourtime,1)."</td>";
$tot_cost = $rate * $billtime ;
echo "<td valign='top' class='".$row_style[$c]."'>".$billtime."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>".$rate."</td>";
echo "<td valign='top' class='".$row_style[$c]."'>$".round($tot_cost,2)."</td>";
if ($c==0) { $c=1; } else { $c=0; }
}
echo "</tr>";
$max=0;
$tottime=0;
$hourtime=0;
$billtime=0;
$tot_cost=0;
$mintime=0;
}
echo "</table>";
echo "<br>";
}
//show the footer
require_once "resources/footer.php";
?>

View File

@@ -1,289 +1,289 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. 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('xml_cdr_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//additional includes
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
require_once "xml_cdr_inc.php";
//get the format
$export_format = check_str($_REQUEST['export_format']);
//get the format
$showall = check_str($_REQUEST['showall']);
//exprot the csv
if ($export_format == 'csv') {
//define file name
if ($_REQUEST['showall'] == 'true') {
$csv_filename = "cdr_".date("Ymd_His").".csv";
}
else {
$csv_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".csv";
}
//set the http headers
header('Content-type: application/octet-binary');
header('Content-Disposition: attachment; filename='.$csv_filename);
//set the csv headers
$z = 0;
foreach($result[0] as $key => $val) {
if ($key != "xml" && $key != "json") {
if ($z == 0) {
echo '"'.$key.'"';
}
else {
echo ',"'.$key.'"';
}
}
$z++;
}
echo "\n";
//show the csv data
$x=0;
while(true) {
$z = 0;
foreach($result[0] as $key => $val) {
if ($key != "xml" && $key != "json") {
if ($z == 0) {
echo '"'.$result[$x][$key].'"';
}
else {
echo ',"'.$result[$x][$key].'"';
}
}
$z++;
}
echo "\n";
++$x;
if ($x > ($result_count-1)) {
break;
}
}
}
//export as a PDF
if ($export_format == 'pdf') {
//load pdf libraries
require_once("resources/tcpdf/tcpdf.php");
require_once("resources/fpdi/fpdi.php");
//determine page size
switch ($_SESSION['fax']['page_size']['text']) {
case 'a4' :
$page_width = 11.7; //in
$page_height = 8.3; //in
break;
case 'legal' :
$page_width = 14; //in
$page_height = 8.5; //in
break;
case 'letter' :
default :
$page_width = 11; //in
$page_height = 8.5; //in
}
// initialize pdf
$pdf = new FPDI('L', 'in');
$pdf -> SetAutoPageBreak(false);
$pdf -> setPrintHeader(false);
$pdf -> setPrintFooter(false);
$pdf -> SetMargins(0.5, 0.5, 0.5, true);
//set default font
$pdf -> SetFont('helvetica', '', 7);
//add new page
$pdf -> AddPage('L', array($page_width, $page_height));
$chunk = 0;
//write the table column headers
$data_start = '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
$data_end = '</table>';
$data_head = '<tr>';
$data_head .= '<td width="7.5%"><b>'.$text['label-direction'].'</b></td>';
$data_head .= '<td width="15%"><b>'.$text['label-cid-name'].'</b></td>';
$data_head .= '<td width="8.5%"><b>'.$text['label-cid-number'].'</b></td>';
$data_head .= '<td width="11%"><b>'.$text['label-destination'].'</b></td>';
$data_head .= '<td width="11%"><b>'.$text['label-start'].'</b></td>';
$data_head .= '<td width="4%" align="right"><b>'.$text['label-tta'].'</b></td>';
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-duration'].'</b></td>';
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-billsec'].'</b></td>';
$data_head .= '<td width="7%" align="right"><b>'."PDD".'</b></td>';
$data_head .= '<td width="5%" align="right"><b>'."MOS".'</b></td>';
$data_head .= '<td width="2%"></td>';
$data_head .= '<td width="15%"><b>'.$text['label-hangup_cause'].'</b></td>';
$data_head .= '</tr>';
$data_head .= '<tr><td colspan="12"><hr></td></tr>';
//initialize total variables
$total['duration'] = 0;
$total['billmsec'] = 0;
$total['pdd_ms'] = 0;
$total['rtp_audio_in_mos'] = 0;
$total['tta'] = 0;
//write the row cells
$z = 0; // total counter
$p = 0; // per page counter
if (sizeof($result) > 0) {
foreach($result as $cdr_num => $fields) {
$data_body[$p] .= '<tr>';
$data_body[$p] .= '<td width="7.5%">'.$text['label-'.$fields['direction']].'</td>';
$data_body[$p] .= '<td width="15%">'.$fields['caller_id_name'].'</td>';
$data_body[$p] .= '<td width="8.5%">'.$fields['caller_id_number'].'</td>';
$data_body[$p] .= '<td width="11%">'.format_phone($fields['destination_number']).'</td>';
$data_body[$p] .= '<td width="11%">'.$fields['start_stamp'].'</td>';
$total['tta'] += ($fields['tta'] > 0) ? $fields['tta'] : 0;
$data_body[$p] .= '<td width="4%" align="right">'.(($fields['tta'] > 0) ? $fields['tta'].'s' : null).'</td>';
$seconds = ($fields['hangup_cause'] == "ORIGINATOR_CANCEL") ? $fields['duration'] : round(($fields['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
$total['duration'] += $seconds;
$data_body[$p] .= '<td width="8.5%" align="right">'.gmdate("G:i:s", $seconds).'</td>';
$total['billmsec'] += $fields['billmsec'];
$data_body[$p] .= '<td width="8.5%" align="right">'.number_format(round($fields['billmsec'] / 1000, 2), 2).'s</td>';
$data_body[$p] .= '<td width="7%" align="right">';
if (permission_exists("xml_cdr_pdd")) {
$total['pdd_ms'] += $fields['pdd_ms'];
$data_body[$p] .= number_format(round($fields['pdd_ms'] / 1000, 2), 2).'s';
}
$data_body[$p] .= '</td>';
$data_body[$p] .= '<td width="5%" align="right">';
if (permission_exists("xml_cdr_mos")) {
$total['rtp_audio_in_mos'] += $fields['rtp_audio_in_mos'];
$data_body[$p] .= (strlen($total['rtp_audio_in_mos']) > 0) ? $fields['rtp_audio_in_mos'] : null;
}
$data_body[$p] .= '</td>';
$data_body[$p] .= '<td width="2%"></td>';
$data_body[$p] .= '<td width="15%">'.ucwords(strtolower(str_replace("_", " ", $fields['hangup_cause']))).'</td>';
$data_body[$p] .= '</tr>';
$z++;
$p++;
if ($p == 60) {
//output data
$data_body_chunk = $data_start.$data_head;
foreach ($data_body as $data_body_row) {
$data_body_chunk .= $data_body_row;
}
$data_body_chunk .= $data_end;
$pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
unset($data_body_chunk);
unset($data_body);
$p = 0;
//add new page
$pdf -> AddPage('L', array($page_width, $page_height));
}
}
}
//write divider
$data_footer = '<tr><td colspan="12"></td></tr>';
//write totals
$data_footer .= '<tr>';
$data_footer .= '<td><b>'.$text['label-total'].'</b></td>';
$data_footer .= '<td>'.$z.'</td>';
$data_footer .= '<td colspan="3"></td>';
$data_footer .= '<td align="right"><b>'.number_format(round($total['tta'], 1), 0).'s</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", $total['duration']).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / 1000, 0)).'</b></td>';
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / 1000), 2), 2).'s</b></td>';
$data_footer .= '<td colspan="2"></td>';
$data_footer .= '</tr>';
//write divider
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
//write averages
$data_footer .= '<tr>';
$data_footer .= '<td><b>'.$text['label-average'].'</b></td>';
$data_footer .= '<td colspan="4"></td>';
$data_footer .= '<td align="right"><b>'.round(($total['tta'] / $z), 1).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", ($total['duration'] / $z)).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / $z / 1000, 0)).'</b></td>';
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / $z / 1000), 2), 2).'s</b></td>';
$data_footer .= '<td align="right"><b>'.round(($total['rtp_audio_in_mos'] / $z), 2).'</b></td>';
$data_footer .= '<td></td>';
$data_footer .= '</tr>';
//write divider
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
//add last page
if ($p >= 55) {
$pdf -> AddPage('L', array($page_width, $page_height));
}
//output remaining data
$data_body_chunk = $data_start.$data_head;
foreach ($data_body as $data_body_row) {
$data_body_chunk .= $data_body_row;
}
$data_body_chunk .= $data_footer.$data_end;
$pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
unset($data_body_chunk);
//define file name
$pdf_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".pdf";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="'.$pdf_filename.'"');
header("Content-Type: application/pdf");
header('Accept-Ranges: bytes');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
// push pdf download
$pdf -> Output($pdf_filename, 'D'); // Display [I]nline, Save to [F]ile, [D]ownload
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. 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('xml_cdr_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//additional includes
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
require_once "xml_cdr_inc.php";
//get the format
$export_format = check_str($_REQUEST['export_format']);
//get the format
$showall = check_str($_REQUEST['showall']);
//exprot the csv
if ($export_format == 'csv') {
//define file name
if ($_REQUEST['showall'] == 'true') {
$csv_filename = "cdr_".date("Ymd_His").".csv";
}
else {
$csv_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".csv";
}
//set the http headers
header('Content-type: application/octet-binary');
header('Content-Disposition: attachment; filename='.$csv_filename);
//set the csv headers
$z = 0;
foreach($result[0] as $key => $val) {
if ($key != "xml" && $key != "json") {
if ($z == 0) {
echo '"'.$key.'"';
}
else {
echo ',"'.$key.'"';
}
}
$z++;
}
echo "\n";
//show the csv data
$x=0;
while(true) {
$z = 0;
foreach($result[0] as $key => $val) {
if ($key != "xml" && $key != "json") {
if ($z == 0) {
echo '"'.$result[$x][$key].'"';
}
else {
echo ',"'.$result[$x][$key].'"';
}
}
$z++;
}
echo "\n";
++$x;
if ($x > ($result_count-1)) {
break;
}
}
}
//export as a PDF
if ($export_format == 'pdf') {
//load pdf libraries
require_once("resources/tcpdf/tcpdf.php");
require_once("resources/fpdi/fpdi.php");
//determine page size
switch ($_SESSION['fax']['page_size']['text']) {
case 'a4' :
$page_width = 11.7; //in
$page_height = 8.3; //in
break;
case 'legal' :
$page_width = 14; //in
$page_height = 8.5; //in
break;
case 'letter' :
default :
$page_width = 11; //in
$page_height = 8.5; //in
}
// initialize pdf
$pdf = new FPDI('L', 'in');
$pdf -> SetAutoPageBreak(false);
$pdf -> setPrintHeader(false);
$pdf -> setPrintFooter(false);
$pdf -> SetMargins(0.5, 0.5, 0.5, true);
//set default font
$pdf -> SetFont('helvetica', '', 7);
//add new page
$pdf -> AddPage('L', array($page_width, $page_height));
$chunk = 0;
//write the table column headers
$data_start = '<table cellpadding="0" cellspacing="0" border="0" width="100%">';
$data_end = '</table>';
$data_head = '<tr>';
$data_head .= '<td width="7.5%"><b>'.$text['label-direction'].'</b></td>';
$data_head .= '<td width="15%"><b>'.$text['label-cid-name'].'</b></td>';
$data_head .= '<td width="8.5%"><b>'.$text['label-cid-number'].'</b></td>';
$data_head .= '<td width="11%"><b>'.$text['label-destination'].'</b></td>';
$data_head .= '<td width="11%"><b>'.$text['label-start'].'</b></td>';
$data_head .= '<td width="4%" align="right"><b>'.$text['label-tta'].'</b></td>';
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-duration'].'</b></td>';
$data_head .= '<td width="8.5%" align="right"><b>'.$text['label-billsec'].'</b></td>';
$data_head .= '<td width="7%" align="right"><b>'."PDD".'</b></td>';
$data_head .= '<td width="5%" align="right"><b>'."MOS".'</b></td>';
$data_head .= '<td width="2%"></td>';
$data_head .= '<td width="15%"><b>'.$text['label-hangup_cause'].'</b></td>';
$data_head .= '</tr>';
$data_head .= '<tr><td colspan="12"><hr></td></tr>';
//initialize total variables
$total['duration'] = 0;
$total['billmsec'] = 0;
$total['pdd_ms'] = 0;
$total['rtp_audio_in_mos'] = 0;
$total['tta'] = 0;
//write the row cells
$z = 0; // total counter
$p = 0; // per page counter
if (sizeof($result) > 0) {
foreach($result as $cdr_num => $fields) {
$data_body[$p] .= '<tr>';
$data_body[$p] .= '<td width="7.5%">'.$text['label-'.$fields['direction']].'</td>';
$data_body[$p] .= '<td width="15%">'.$fields['caller_id_name'].'</td>';
$data_body[$p] .= '<td width="8.5%">'.$fields['caller_id_number'].'</td>';
$data_body[$p] .= '<td width="11%">'.format_phone($fields['destination_number']).'</td>';
$data_body[$p] .= '<td width="11%">'.$fields['start_stamp'].'</td>';
$total['tta'] += ($fields['tta'] > 0) ? $fields['tta'] : 0;
$data_body[$p] .= '<td width="4%" align="right">'.(($fields['tta'] > 0) ? $fields['tta'].'s' : null).'</td>';
$seconds = ($fields['hangup_cause'] == "ORIGINATOR_CANCEL") ? $fields['duration'] : round(($fields['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
$total['duration'] += $seconds;
$data_body[$p] .= '<td width="8.5%" align="right">'.gmdate("G:i:s", $seconds).'</td>';
$total['billmsec'] += $fields['billmsec'];
$data_body[$p] .= '<td width="8.5%" align="right">'.number_format(round($fields['billmsec'] / 1000, 2), 2).'s</td>';
$data_body[$p] .= '<td width="7%" align="right">';
if (permission_exists("xml_cdr_pdd")) {
$total['pdd_ms'] += $fields['pdd_ms'];
$data_body[$p] .= number_format(round($fields['pdd_ms'] / 1000, 2), 2).'s';
}
$data_body[$p] .= '</td>';
$data_body[$p] .= '<td width="5%" align="right">';
if (permission_exists("xml_cdr_mos")) {
$total['rtp_audio_in_mos'] += $fields['rtp_audio_in_mos'];
$data_body[$p] .= (strlen($total['rtp_audio_in_mos']) > 0) ? $fields['rtp_audio_in_mos'] : null;
}
$data_body[$p] .= '</td>';
$data_body[$p] .= '<td width="2%"></td>';
$data_body[$p] .= '<td width="15%">'.ucwords(strtolower(str_replace("_", " ", $fields['hangup_cause']))).'</td>';
$data_body[$p] .= '</tr>';
$z++;
$p++;
if ($p == 60) {
//output data
$data_body_chunk = $data_start.$data_head;
foreach ($data_body as $data_body_row) {
$data_body_chunk .= $data_body_row;
}
$data_body_chunk .= $data_end;
$pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
unset($data_body_chunk);
unset($data_body);
$p = 0;
//add new page
$pdf -> AddPage('L', array($page_width, $page_height));
}
}
}
//write divider
$data_footer = '<tr><td colspan="12"></td></tr>';
//write totals
$data_footer .= '<tr>';
$data_footer .= '<td><b>'.$text['label-total'].'</b></td>';
$data_footer .= '<td>'.$z.'</td>';
$data_footer .= '<td colspan="3"></td>';
$data_footer .= '<td align="right"><b>'.number_format(round($total['tta'], 1), 0).'s</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", $total['duration']).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / 1000, 0)).'</b></td>';
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / 1000), 2), 2).'s</b></td>';
$data_footer .= '<td colspan="2"></td>';
$data_footer .= '</tr>';
//write divider
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
//write averages
$data_footer .= '<tr>';
$data_footer .= '<td><b>'.$text['label-average'].'</b></td>';
$data_footer .= '<td colspan="4"></td>';
$data_footer .= '<td align="right"><b>'.round(($total['tta'] / $z), 1).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", ($total['duration'] / $z)).'</b></td>';
$data_footer .= '<td align="right"><b>'.gmdate("G:i:s", round($total['billmsec'] / $z / 1000, 0)).'</b></td>';
$data_footer .= '<td align="right"><b>'.number_format(round(($total['pdd_ms'] / $z / 1000), 2), 2).'s</b></td>';
$data_footer .= '<td align="right"><b>'.round(($total['rtp_audio_in_mos'] / $z), 2).'</b></td>';
$data_footer .= '<td></td>';
$data_footer .= '</tr>';
//write divider
$data_footer .= '<tr><td colspan="12"><hr></td></tr>';
//add last page
if ($p >= 55) {
$pdf -> AddPage('L', array($page_width, $page_height));
}
//output remaining data
$data_body_chunk = $data_start.$data_head;
foreach ($data_body as $data_body_row) {
$data_body_chunk .= $data_body_row;
}
$data_body_chunk .= $data_footer.$data_end;
$pdf -> writeHTML($data_body_chunk, true, false, false, false, '');
unset($data_body_chunk);
//define file name
$pdf_filename = "cdr_".$_SESSION['domain_name']."_".date("Ymd_His").".pdf";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header('Content-Disposition: attachment; filename="'.$pdf_filename.'"');
header("Content-Type: application/pdf");
header('Accept-Ranges: bytes');
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // date in the past
// push pdf download
$pdf -> Output($pdf_filename, 'D'); // Display [I]nline, Save to [F]ile, [D]ownload
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,433 +1,433 @@
<?php
$text['title-default_settings']['en-us'] = "Default Settings";
$text['title-default_settings']['es-cl'] = "Condiciones Predeterminadas";
$text['title-default_settings']['pt-pt'] = "Predefinições";
$text['title-default_settings']['fr-fr'] = "Configurations par Défaut";
$text['title-default_settings']['nl-nl'] = "";
$text['title-default_settings']['pt-br'] = "Configurações";
$text['title-default_settings']['pl'] = "Ustawienia domyślne";
$text['title-default_settings']['sv-se'] = "Standard Inställningar";
$text['title-default_settings']['uk'] = "Налаштування за замовчуванням";
$text['title-default_settings']['de-at'] = "Standardeinstellungen";
$text['title-default_setting-edit']['en-us'] = "Default Setting";
$text['title-default_setting-edit']['es-cl'] = "Configuraciones Predeterminadas";
$text['title-default_setting-edit']['pt-pt'] = "Predefinições";
$text['title-default_setting-edit']['fr-fr'] = "Configurations par Défaut";
$text['title-default_setting-edit']['nl-nl'] = "";
$text['title-default_setting-edit']['pt-br'] = "Configurações";
$text['title-default_setting-edit']['pl'] = "Ustawienie domyślne";
$text['title-default_setting-edit']['sv-se'] = "Standard Inställning";
$text['title-default_setting-edit']['uk'] = "Налаштування за замовчуванням";
$text['title-default_setting-edit']['de-at'] = "Standardeinstellungen";
$text['title-default_setting-add']['en-us'] = "Default Setting Add";
$text['title-default_setting-add']['es-cl'] = "Agregar Configuración Predeterminada";
$text['title-default_setting-add']['pt-pt'] = "Adicionar Predefinição";
$text['title-default_setting-add']['fr-fr'] = "Ajouter une configuration per défaut";
$text['title-default_setting-add']['nl-nl'] = "";
$text['title-default_setting-add']['pt-br'] = "Adicionar Configurações";
$text['title-default_setting-add']['pl'] = "Dodaj ustawienie domyślne";
$text['title-default_setting-add']['sv-se'] = "Lägg Till Standard Inställning";
$text['title-default_setting-add']['uk'] = "";
$text['title-default_setting-add']['de-at'] = "Standardeinstellungen";
$text['option-voicemail_file_listen']['en-us'] = "Listen Link (Login Required)";
$text['option-voicemail_file_listen']['es-cl'] = "Escuchar Link (Se requiere entrar)";
$text['option-voicemail_file_listen']['pt-pt'] = "Ouça Link (login requerido)";
$text['option-voicemail_file_listen']['fr-fr'] = "Écouter Link (Connexion requise)";
$text['option-voicemail_file_listen']['nl-nl'] = "";
$text['option-voicemail_file_listen']['pt-br'] = "Arquivo Voicemail";
$text['option-voicemail_file_listen']['pl'] = "Link do odsłuchu (po zalogowaniu)";
$text['option-voicemail_file_listen']['sv-se'] = "Lyssna-länk (Måste Logga In)";
$text['option-voicemail_file_listen']['uk'] = "Посилання на прослуховування (Входити обов’язково)";
$text['option-voicemail_file_listen']['de-at'] = "Link zur Nachricht (Login erforderlich)";
$text['option-voicemail_file_link']['en-us'] = "Download Link (No Login Required)";
$text['option-voicemail_file_link']['es-cl'] = "Enlace de descarga (No se requiere conexión)";
$text['option-voicemail_file_link']['pt-pt'] = "Link para download (Não é necessário login)";
$text['option-voicemail_file_link']['fr-fr'] = "Lien de téléchargement (Connexion non requise)";
$text['option-voicemail_file_link']['nl-nl'] = "";
$text['option-voicemail_file_link']['pt-br'] = "Link para download (Não é necessário login)";
$text['option-voicemail_file_link']['pl'] = "Link do pobrania (logowanie nie jest wymagane)";
$text['option-voicemail_file_link']['sv-se'] = "Nedladdnings-länk (Ingen Inloggning Krävs)";
$text['option-voicemail_file_link']['uk'] = "Посилання на завантаження (Входити не обов’язково)";
$text['option-voicemail_file_link']['de-at'] = "Link zur Nachricht (kein Login erforderlich)";
$text['option-voicemail_file_attach']['en-us'] = "Audio File Attachment";
$text['option-voicemail_file_attach']['es-cl'] = "Archivo Adjunto Audio";
$text['option-voicemail_file_attach']['pt-pt'] = "Anexo de arquivo de áudio";
$text['option-voicemail_file_attach']['fr-fr'] = "Audio File Attachment";
$text['option-voicemail_file_attach']['nl-nl'] = "";
$text['option-voicemail_file_attach']['pt-br'] = "Anexo de arquivo de áudio";
$text['option-voicemail_file_attach']['pl'] = "Załącznik plik audio";
$text['option-voicemail_file_attach']['sv-se'] = "Ljudfil Bifogad";
$text['option-voicemail_file_attach']['uk'] = "Приєднати аудіофайл";
$text['option-voicemail_file_attach']['de-at'] = "Audiodatei als Anhang";
$text['message-toggled']['en-us'] = "Toggle Completed";
$text['message-toggled']['es-cl'] = "Alternar Completado";
$text['message-toggled']['pt-pt'] = "Alternar Concluído";
$text['message-toggled']['fr-fr'] = "Basculer Terminé";
$text['message-toggled']['pt-br'] = "Alternar Concluído";
$text['message-toggled']['pl'] = "Przegubowe Zakończony";
$text['message-toggled']['he'] = "הושלם Toggle";
$text['message-toggled']['uk'] = "переключити Завершений";
$text['message-toggled']['sv-se'] = "Växla Avslutade";
$text['message-toggled']['de-at'] = "Toggle Completed";
$text['message-toggled']['ro'] = "Completat toggle";
$text['message-toggled']['fa'] = "";
$text['message-toggled']['ar-eg'] = "الانتهاء من تبديل";
$text['message-settings_reloaded']['en-us'] = "Settings Reloaded";
$text['message-settings_reloaded']['es-cl'] = "Ajustes Reloaded";
$text['message-settings_reloaded']['pt-pt'] = "Configurações Reloaded";
$text['message-settings_reloaded']['fr-fr'] = "Paramètres Reloaded";
$text['message-settings_reloaded']['nl-nl'] = "";
$text['message-settings_reloaded']['pt-br'] = "Configurações Reloaded";
$text['message-settings_reloaded']['pl'] = "Ustawienia Reloaded";
$text['message-settings_reloaded']['sv-se'] = "Inställningar Reloaded";
$text['message-settings_reloaded']['uk'] = "налаштування Reloaded";
$text['message-settings_reloaded']['de-at'] = "Einstellungen neu geladen";
$text['message-delete_failed']['en-us'] = "No Settings Checked";
$text['message-delete_failed']['es-cl'] = "No hay ajustes facturado";
$text['message-delete_failed']['pt-pt'] = "Nenhuma configuração marcada";
$text['message-delete_failed']['fr-fr'] = "Pas de paramètres enregistrés";
$text['message-delete_failed']['nl-nl'] = "";
$text['message-delete_failed']['pt-br'] = "Falha na exclusão";
$text['message-delete_failed']['pl'] = "Próba usunięcia zakończyła się niepowodzeniem";
$text['message-delete_failed']['sv-se'] = "Borttagning Misslyckades";
$text['message-delete_failed']['uk'] = "Налаштування не вказано";
$text['message-delete_failed']['de-at'] = "Löschen fehlgeschlagen";
$text['message-copy_failed']['en-us'] = "No Settings Checked or Invalid Domain";
$text['message-copy_failed']['es-cl'] = "No hay ajustes facturado o de dominio no válido";
$text['message-copy_failed']['pt-pt'] = "Nenhuma configuração marcada ou domínio inválido";
$text['message-copy_failed']['fr-fr'] = "Pas de paramètres enregistrés ou domaine non valide";
$text['message-copy_failed']['nl-nl'] = "";
$text['message-copy_failed']['pt-br'] = "Nenhuma configuração selecionada ou dominio inválido";
$text['message-copy_failed']['pl'] = "Nie zaznaczono ustawień lub domena jest niepoprawna";
$text['message-copy_failed']['sv-se'] = "Ingen inställning markerad eller ogiltig domän.";
$text['message-copy_failed']['uk'] = "";
$text['message-copy_failed']['de-at'] = "Keine Einstellungen ausgewählt oder ungültige Domain";
$text['label-top']['en-us'] = "Top";
$text['label-top']['es-cl'] = "encima";
$text['label-top']['pt-pt'] = "Topo";
$text['label-top']['fr-fr'] = "Meilleur";
$text['label-top']['pt-br'] = "Topo";
$text['label-top']['pl'] = "Top";
$text['label-top']['he'] = "עליון";
$text['label-top']['uk'] = "топ";
$text['label-top']['sv-se'] = "Topp";
$text['label-top']['de-at'] = "Oben";
$text['label-top']['ro'] = "Top";
$text['label-top']['fa'] = "";
$text['label-top']['ar-eg'] = "أعلى";
$text['label-text']['en-us'] = "Text";
$text['label-text']['es-cl'] = "Texto";
$text['label-text']['pt-pt'] = "Texto";
$text['label-text']['fr-fr'] = "Texte";
$text['label-text']['pt-br'] = "Texto";
$text['label-text']['pl'] = "Tekst";
$text['label-text']['he'] = "טֶקסט";
$text['label-text']['uk'] = "текст";
$text['label-text']['sv-se'] = "Text";
$text['label-text']['de-at'] = "Text";
$text['label-text']['ro'] = "Text";
$text['label-text']['fa'] = "";
$text['label-text']['ar-eg'] = "نص";
$text['label-superfine']['en-us'] = "Superfine";
$text['label-superfine']['es-cl'] = "Superfino";
$text['label-superfine']['pt-pt'] = "Extrafino";
$text['label-superfine']['fr-fr'] = "Superfin";
$text['label-superfine']['nl-nl'] = "";
$text['label-superfine']['pt-br'] = "Resumido";
$text['label-superfine']['pl'] = "Najlepsza";
$text['label-superfine']['sv-se'] = "Superfin";
$text['label-superfine']['uk'] = "";
$text['label-superfine']['de-at'] = "Superfein";
$text['label-static']['en-us'] = "Static";
$text['label-static']['es-cl'] = "Estático";
$text['label-static']['pt-pt'] = "Estático";
$text['label-static']['fr-fr'] = "Statique";
$text['label-static']['pt-br'] = "Estático";
$text['label-static']['pl'] = "Statyczny";
$text['label-static']['he'] = "סטָטִי";
$text['label-static']['uk'] = "статичний";
$text['label-static']['sv-se'] = "Statisk";
$text['label-static']['de-at'] = "Statisch";
$text['label-static']['ro'] = "Static";
$text['label-static']['fa'] = "";
$text['label-static']['ar-eg'] = "ساكن";
$text['label-right']['en-us'] = "Right";
$text['label-right']['es-cl'] = "Derecha";
$text['label-right']['pt-pt'] = "Certo";
$text['label-right']['fr-fr'] = "Droite";
$text['label-right']['pt-br'] = "Certo";
$text['label-right']['pl'] = "Dobrze";
$text['label-right']['he'] = "יָמִינָה";
$text['label-right']['uk'] = "правий";
$text['label-right']['sv-se'] = "Höger";
$text['label-right']['de-at'] = "Recht";
$text['label-right']['ro'] = "Dreapta";
$text['label-right']['fa'] = "";
$text['label-right']['ar-eg'] = "حق";
$text['label-normal']['en-us'] = "Normal";
$text['label-normal']['es-cl'] = "Normal";
$text['label-normal']['pt-pt'] = "Normal";
$text['label-normal']['fr-fr'] = "Normal";
$text['label-normal']['nl-nl'] = "";
$text['label-normal']['pt-br'] = "Normal";
$text['label-normal']['pl'] = "Normalny";
$text['label-normal']['sv-se'] = "normal";
$text['label-normal']['uk'] = "звичайно";
$text['label-normal']['de-at'] = "normal";
$text['label-none']['en-us'] = "None";
$text['label-none']['es-cl'] = "Ninguna";
$text['label-none']['pt-pt'] = "Nenhum";
$text['label-none']['fr-fr'] = "Aucun";
$text['label-none']['pt-br'] = "Nenhum";
$text['label-none']['pl'] = "Żaden";
$text['label-none']['he'] = "אף לא אחד";
$text['label-none']['uk'] = "жоден";
$text['label-none']['sv-se'] = "Ingen";
$text['label-none']['de-at'] = "Keiner";
$text['label-none']['ro'] = "Nici unul";
$text['label-none']['fa'] = "";
$text['label-none']['ar-eg'] = "لا شيء";
$text['label-left']['en-us'] = "Left";
$text['label-left']['es-cl'] = "Izquierda";
$text['label-left']['pt-pt'] = "Esquerda";
$text['label-left']['fr-fr'] = "À gauche";
$text['label-left']['pt-br'] = "Esquerda";
$text['label-left']['pl'] = "Lewo";
$text['label-left']['he'] = "שְׁמֹאל";
$text['label-left']['uk'] = "лівий";
$text['label-left']['sv-se'] = "Vänster";
$text['label-left']['de-at'] = "Links";
$text['label-left']['ro'] = "Stânga";
$text['label-left']['fa'] = "";
$text['label-left']['ar-eg'] = "اليسار";
$text['label-inline']['en-us'] = "Inline";
$text['label-inline']['es-cl'] = "En línea";
$text['label-inline']['pt-pt'] = "Na linha";
$text['label-inline']['fr-fr'] = "En ligne";
$text['label-inline']['pt-br'] = "Na linha";
$text['label-inline']['pl'] = "inline";
$text['label-inline']['he'] = "בשורה";
$text['label-inline']['uk'] = "В лінію";
$text['label-inline']['sv-se'] = "I kö";
$text['label-inline']['de-at'] = "In der Reihe";
$text['label-inline']['ro'] = "In linie";
$text['label-inline']['fa'] = "";
$text['label-inline']['ar-eg'] = "في النسق";
$text['label-image']['en-us'] = "Image";
$text['label-image']['es-cl'] = "Imagen";
$text['label-image']['pt-pt'] = "Imagem";
$text['label-image']['fr-fr'] = "image";
$text['label-image']['pt-br'] = "Imagem";
$text['label-image']['pl'] = "Obraz";
$text['label-image']['he'] = "תמונה";
$text['label-image']['uk'] = "зображення";
$text['label-image']['sv-se'] = "Bild";
$text['label-image']['de-at'] = "Image";
$text['label-image']['ro'] = "Imagine";
$text['label-image']['fa'] = "";
$text['label-image']['ar-eg'] = "صورة";
$text['label-fixed']['en-us'] = "Fixed";
$text['label-fixed']['es-cl'] = "Fijo";
$text['label-fixed']['pt-pt'] = "Fixo";
$text['label-fixed']['fr-fr'] = "Fixé";
$text['label-fixed']['pt-br'] = "Fixo";
$text['label-fixed']['pl'] = "Naprawiony";
$text['label-fixed']['he'] = "קָבוּעַ";
$text['label-fixed']['uk'] = "фіксований";
$text['label-fixed']['sv-se'] = "Fast";
$text['label-fixed']['de-at'] = "fest";
$text['label-fixed']['ro'] = "Fix";
$text['label-fixed']['fa'] = "";
$text['label-fixed']['ar-eg'] = "ثابت";
$text['label-fine']['en-us'] = "Fine";
$text['label-fine']['es-cl'] = "Fine";
$text['label-fine']['pt-pt'] = "Belas";
$text['label-fine']['fr-fr'] = "Fin";
$text['label-fine']['nl-nl'] = "";
$text['label-fine']['pt-br'] = "Agradável ";
$text['label-fine']['pl'] = "Dobry";
$text['label-fine']['sv-se'] = "Fin";
$text['label-fine']['uk'] = "";
$text['label-fine']['de-at'] = "Fein";
$text['label-center']['en-us'] = "Center";
$text['label-center']['es-cl'] = "Centrar";
$text['label-center']['pt-pt'] = "Centro";
$text['label-center']['fr-fr'] = "centre";
$text['label-center']['pt-br'] = "Centro";
$text['label-center']['pl'] = "Centrum";
$text['label-center']['he'] = "מֶרְכָּז";
$text['label-center']['uk'] = "центр";
$text['label-center']['sv-se'] = "Centrum";
$text['label-center']['de-at'] = "Center";
$text['label-center']['ro'] = "Centru";
$text['label-center']['fa'] = "";
$text['label-center']['ar-eg'] = "مركز";
$text['label-bottom']['en-us'] = "Bottom";
$text['label-bottom']['es-cl'] = "Fondo";
$text['label-bottom']['pt-pt'] = "Inferior";
$text['label-bottom']['fr-fr'] = "Bas";
$text['label-bottom']['pt-br'] = "Inferior";
$text['label-bottom']['pl'] = "Dolny";
$text['label-bottom']['he'] = "תַחתִית";
$text['label-bottom']['uk'] = "дно";
$text['label-bottom']['sv-se'] = "Botten";
$text['label-bottom']['de-at'] = "Boden";
$text['label-bottom']['ro'] = "Fund";
$text['label-bottom']['fa'] = "";
$text['label-bottom']['ar-eg'] = "أسفل";
$text['label-24-hour']['en-us'] = "24-Hour";
$text['label-24-hour']['es-cl'] = "24 horas";
$text['label-24-hour']['pt-pt'] = "24 horas";
$text['label-24-hour']['fr-fr'] = "24 heures";
$text['label-24-hour']['pt-br'] = "24 horas";
$text['label-24-hour']['pl'] = "24-godzinny";
$text['label-24-hour']['he'] = "24 שעות";
$text['label-24-hour']['uk'] = "24-годинний";
$text['label-24-hour']['sv-se'] = "24-timmars";
$text['label-24-hour']['de-at'] = "24 Stunden";
$text['label-24-hour']['ro'] = "24 de ore";
$text['label-24-hour']['fa'] = "";
$text['label-24-hour']['ar-eg'] = "24 ساعة";
$text['label-12-hour']['en-us'] = "12-Hour";
$text['label-12-hour']['es-cl'] = "12 horas";
$text['label-12-hour']['pt-pt'] = "12 horas";
$text['label-12-hour']['fr-fr'] = "12 heures";
$text['label-12-hour']['pt-br'] = "12 horas";
$text['label-12-hour']['pl'] = "12-godzinny";
$text['label-12-hour']['he'] = "12 שעות";
$text['label-12-hour']['uk'] = "12-годинний";
$text['label-12-hour']['sv-se'] = "12-timmars";
$text['label-12-hour']['de-at'] = "12 Stunden";
$text['label-12-hour']['ro'] = "12 de ore";
$text['label-12-hour']['fa'] = "";
$text['label-12-hour']['ar-eg'] = "12 ساعة";
$text['header-default_settings']['en-us'] = "Default Settings";
$text['header-default_settings']['es-cl'] = "Condiciones Predeterminadas";
$text['header-default_settings']['pt-pt'] = "Predefinições";
$text['header-default_settings']['fr-fr'] = "Configurations par Défaut";
$text['header-default_settings']['nl-nl'] = "";
$text['header-default_settings']['pt-br'] = "Configurações";
$text['header-default_settings']['pl'] = "Ustawienia domyślne";
$text['header-default_settings']['sv-se'] = "Standard Inställningar";
$text['header-default_settings']['uk'] = "";
$text['header-default_settings']['de-at'] = "Standard Einstellungen";
$text['header-default_setting-edit']['en-us'] = "Default Setting";
$text['header-default_setting-edit']['es-cl'] = "Configuraciones Predeterminadas";
$text['header-default_setting-edit']['pt-pt'] = "Predefinições";
$text['header-default_setting-edit']['fr-fr'] = "Configurations par Défaut";
$text['header-default_setting-edit']['nl-nl'] = "";
$text['header-default_setting-edit']['pt-br'] = "Configurações";
$text['header-default_setting-edit']['pl'] = "Ustawienie domyślne";
$text['header-default_setting-edit']['sv-se'] = "Standard Inställning";
$text['header-default_setting-edit']['uk'] = "";
$text['header-default_setting-edit']['de-at'] = "Standard Einstellungen";
$text['header-default_setting-add']['en-us'] = "Default Setting Add";
$text['header-default_setting-add']['es-cl'] = "Agregar Configuración Predeterminada";
$text['header-default_setting-add']['pt-pt'] = "Adicionar Predefinição ";
$text['header-default_setting-add']['fr-fr'] = "Ajouter une configuration per défaut";
$text['header-default_setting-add']['nl-nl'] = "";
$text['header-default_setting-add']['pt-br'] = "Adicionar configurações";
$text['header-default_setting-add']['pl'] = "Dodaj ustawienie domyślne";
$text['header-default_setting-add']['sv-se'] = "Lägg Till Standard Inställning";
$text['header-default_setting-add']['uk'] = "";
$text['header-default_setting-add']['de-at'] = "Standard Einstellungen hinzufügen";
$text['description-order']['en-us'] = "Set the order (index) for this array element.";
$text['description-order']['es-cl'] = "Establecer el orden (índice) para este elemento de la matriz.";
$text['description-order']['pt-pt'] = "Defina a ordem (índice) para este elemento da matriz.";
$text['description-order']['fr-fr'] = "Définir l'ordre (index) pour cet élément de tableau.";
$text['description-order']['nl-nl'] = "";
$text['description-order']['pt-br'] = "Defina a ordem (indice) para este elemento da matriz";
$text['description-order']['pl'] = "Wybierz kolejność.";
$text['description-order']['sv-se'] = "Ställ in ordningen (index) för detta element.";
$text['description-order']['uk'] = "";
$text['description-order']['de-at'] = "Wählen Sie die Reihenfolge (Index) für das Array Element.";
$text['description-enabled']['en-us'] = "Set the status of this default setting.";
$text['description-enabled']['es-cl'] = "Ingrese el estado de esta configuración.";
$text['description-enabled']['pt-pt'] = "Escolha o estado desta predefinição.";
$text['description-enabled']['fr-fr'] = "Choisir l'état de ce paraètre";
$text['description-enabled']['nl-nl'] = "";
$text['description-enabled']['pt-br'] = "Escolha o estado desta definição";
$text['description-enabled']['pl'] = "Ustaw status ustawienia domyślnego.";
$text['description-enabled']['sv-se'] = "Välj status på denna standardinställning.";
$text['description-enabled']['uk'] = "";
$text['description-enabled']['de-at'] = "Setzen Sie den Status dieser Standardeinstellung.";
$text['description-default_settings']['en-us'] = "Settings used for all domains.";
$text['description-default_settings']['es-cl'] = "Configuraciones usadas por todos los dominios";
$text['description-default_settings']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_settings']['fr-fr'] = "Configurations communes à tous les domaines.";
$text['description-default_settings']['nl-nl'] = "";
$text['description-default_settings']['pt-br'] = "Configurações comuns a todos os dominios";
$text['description-default_settings']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_settings']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_settings']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_settings']['de-at'] = "Einstellungen für alle Domains.";
$text['description-default_setting-edit']['en-us'] = "Settings used for all domains.";
$text['description-default_setting-edit']['es-cl'] = "Configuraciones usadas para todos los dominios.";
$text['description-default_setting-edit']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_setting-edit']['fr-fr'] = "Configurations communes à tous les domaines";
$text['description-default_setting-edit']['nl-nl'] = "";
$text['description-default_setting-edit']['pt-br'] = "Configurações comuns a todos os dominios";
$text['description-default_setting-edit']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_setting-edit']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_setting-edit']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_setting-edit']['de-at'] = "Einstellungen für alle Domains.";
$text['description-default_setting-add']['en-us'] = "Settings used for all domains.";
$text['description-default_setting-add']['es-cl'] = "Configuraciones usadas para todos los dominios.";
$text['description-default_setting-add']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_setting-add']['fr-fr'] = "Configurations communes à tous les domaines";
$text['description-default_setting-add']['nl-nl'] = "";
$text['description-default_setting-add']['pt-br'] = "Configurações comuns a todos os dominio";
$text['description-default_setting-add']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_setting-add']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_setting-add']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_setting-add']['de-at'] = "Einstellungen für alle Domains.";
$text['button-toggle']['en-us'] = "Toggle";
$text['button-toggle']['es-cl'] = "Palanca";
$text['button-toggle']['pt-pt'] = "Alternar";
$text['button-toggle']['fr-fr'] = "Basculer";
$text['button-toggle']['pt-br'] = "Alternar";
$text['button-toggle']['pl'] = "Przełącznik";
$text['button-toggle']['he'] = "לְמַתֵג";
$text['button-toggle']['uk'] = "тумблер";
$text['button-toggle']['sv-se'] = "toggle";
$text['button-toggle']['de-at'] = "Umschalten";
$text['button-toggle']['ro'] = "Comutare";
$text['button-toggle']['fa'] = "";
$text['button-toggle']['ar-eg'] = "تبديل";
<?php
$text['title-default_settings']['en-us'] = "Default Settings";
$text['title-default_settings']['es-cl'] = "Condiciones Predeterminadas";
$text['title-default_settings']['pt-pt'] = "Predefinições";
$text['title-default_settings']['fr-fr'] = "Configurations par Défaut";
$text['title-default_settings']['nl-nl'] = "";
$text['title-default_settings']['pt-br'] = "Configurações";
$text['title-default_settings']['pl'] = "Ustawienia domyślne";
$text['title-default_settings']['sv-se'] = "Standard Inställningar";
$text['title-default_settings']['uk'] = "Налаштування за замовчуванням";
$text['title-default_settings']['de-at'] = "Standardeinstellungen";
$text['title-default_setting-edit']['en-us'] = "Default Setting";
$text['title-default_setting-edit']['es-cl'] = "Configuraciones Predeterminadas";
$text['title-default_setting-edit']['pt-pt'] = "Predefinições";
$text['title-default_setting-edit']['fr-fr'] = "Configurations par Défaut";
$text['title-default_setting-edit']['nl-nl'] = "";
$text['title-default_setting-edit']['pt-br'] = "Configurações";
$text['title-default_setting-edit']['pl'] = "Ustawienie domyślne";
$text['title-default_setting-edit']['sv-se'] = "Standard Inställning";
$text['title-default_setting-edit']['uk'] = "Налаштування за замовчуванням";
$text['title-default_setting-edit']['de-at'] = "Standardeinstellungen";
$text['title-default_setting-add']['en-us'] = "Default Setting Add";
$text['title-default_setting-add']['es-cl'] = "Agregar Configuración Predeterminada";
$text['title-default_setting-add']['pt-pt'] = "Adicionar Predefinição";
$text['title-default_setting-add']['fr-fr'] = "Ajouter une configuration per défaut";
$text['title-default_setting-add']['nl-nl'] = "";
$text['title-default_setting-add']['pt-br'] = "Adicionar Configurações";
$text['title-default_setting-add']['pl'] = "Dodaj ustawienie domyślne";
$text['title-default_setting-add']['sv-se'] = "Lägg Till Standard Inställning";
$text['title-default_setting-add']['uk'] = "";
$text['title-default_setting-add']['de-at'] = "Standardeinstellungen";
$text['option-voicemail_file_listen']['en-us'] = "Listen Link (Login Required)";
$text['option-voicemail_file_listen']['es-cl'] = "Escuchar Link (Se requiere entrar)";
$text['option-voicemail_file_listen']['pt-pt'] = "Ouça Link (login requerido)";
$text['option-voicemail_file_listen']['fr-fr'] = "Écouter Link (Connexion requise)";
$text['option-voicemail_file_listen']['nl-nl'] = "";
$text['option-voicemail_file_listen']['pt-br'] = "Arquivo Voicemail";
$text['option-voicemail_file_listen']['pl'] = "Link do odsłuchu (po zalogowaniu)";
$text['option-voicemail_file_listen']['sv-se'] = "Lyssna-länk (Måste Logga In)";
$text['option-voicemail_file_listen']['uk'] = "Посилання на прослуховування (Входити обов’язково)";
$text['option-voicemail_file_listen']['de-at'] = "Link zur Nachricht (Login erforderlich)";
$text['option-voicemail_file_link']['en-us'] = "Download Link (No Login Required)";
$text['option-voicemail_file_link']['es-cl'] = "Enlace de descarga (No se requiere conexión)";
$text['option-voicemail_file_link']['pt-pt'] = "Link para download (Não é necessário login)";
$text['option-voicemail_file_link']['fr-fr'] = "Lien de téléchargement (Connexion non requise)";
$text['option-voicemail_file_link']['nl-nl'] = "";
$text['option-voicemail_file_link']['pt-br'] = "Link para download (Não é necessário login)";
$text['option-voicemail_file_link']['pl'] = "Link do pobrania (logowanie nie jest wymagane)";
$text['option-voicemail_file_link']['sv-se'] = "Nedladdnings-länk (Ingen Inloggning Krävs)";
$text['option-voicemail_file_link']['uk'] = "Посилання на завантаження (Входити не обов’язково)";
$text['option-voicemail_file_link']['de-at'] = "Link zur Nachricht (kein Login erforderlich)";
$text['option-voicemail_file_attach']['en-us'] = "Audio File Attachment";
$text['option-voicemail_file_attach']['es-cl'] = "Archivo Adjunto Audio";
$text['option-voicemail_file_attach']['pt-pt'] = "Anexo de arquivo de áudio";
$text['option-voicemail_file_attach']['fr-fr'] = "Audio File Attachment";
$text['option-voicemail_file_attach']['nl-nl'] = "";
$text['option-voicemail_file_attach']['pt-br'] = "Anexo de arquivo de áudio";
$text['option-voicemail_file_attach']['pl'] = "Załącznik plik audio";
$text['option-voicemail_file_attach']['sv-se'] = "Ljudfil Bifogad";
$text['option-voicemail_file_attach']['uk'] = "Приєднати аудіофайл";
$text['option-voicemail_file_attach']['de-at'] = "Audiodatei als Anhang";
$text['message-toggled']['en-us'] = "Toggle Completed";
$text['message-toggled']['es-cl'] = "Alternar Completado";
$text['message-toggled']['pt-pt'] = "Alternar Concluído";
$text['message-toggled']['fr-fr'] = "Basculer Terminé";
$text['message-toggled']['pt-br'] = "Alternar Concluído";
$text['message-toggled']['pl'] = "Przegubowe Zakończony";
$text['message-toggled']['he'] = "הושלם Toggle";
$text['message-toggled']['uk'] = "переключити Завершений";
$text['message-toggled']['sv-se'] = "Växla Avslutade";
$text['message-toggled']['de-at'] = "Toggle Completed";
$text['message-toggled']['ro'] = "Completat toggle";
$text['message-toggled']['fa'] = "";
$text['message-toggled']['ar-eg'] = "الانتهاء من تبديل";
$text['message-settings_reloaded']['en-us'] = "Settings Reloaded";
$text['message-settings_reloaded']['es-cl'] = "Ajustes Reloaded";
$text['message-settings_reloaded']['pt-pt'] = "Configurações Reloaded";
$text['message-settings_reloaded']['fr-fr'] = "Paramètres Reloaded";
$text['message-settings_reloaded']['nl-nl'] = "";
$text['message-settings_reloaded']['pt-br'] = "Configurações Reloaded";
$text['message-settings_reloaded']['pl'] = "Ustawienia Reloaded";
$text['message-settings_reloaded']['sv-se'] = "Inställningar Reloaded";
$text['message-settings_reloaded']['uk'] = "налаштування Reloaded";
$text['message-settings_reloaded']['de-at'] = "Einstellungen neu geladen";
$text['message-delete_failed']['en-us'] = "No Settings Checked";
$text['message-delete_failed']['es-cl'] = "No hay ajustes facturado";
$text['message-delete_failed']['pt-pt'] = "Nenhuma configuração marcada";
$text['message-delete_failed']['fr-fr'] = "Pas de paramètres enregistrés";
$text['message-delete_failed']['nl-nl'] = "";
$text['message-delete_failed']['pt-br'] = "Falha na exclusão";
$text['message-delete_failed']['pl'] = "Próba usunięcia zakończyła się niepowodzeniem";
$text['message-delete_failed']['sv-se'] = "Borttagning Misslyckades";
$text['message-delete_failed']['uk'] = "Налаштування не вказано";
$text['message-delete_failed']['de-at'] = "Löschen fehlgeschlagen";
$text['message-copy_failed']['en-us'] = "No Settings Checked or Invalid Domain";
$text['message-copy_failed']['es-cl'] = "No hay ajustes facturado o de dominio no válido";
$text['message-copy_failed']['pt-pt'] = "Nenhuma configuração marcada ou domínio inválido";
$text['message-copy_failed']['fr-fr'] = "Pas de paramètres enregistrés ou domaine non valide";
$text['message-copy_failed']['nl-nl'] = "";
$text['message-copy_failed']['pt-br'] = "Nenhuma configuração selecionada ou dominio inválido";
$text['message-copy_failed']['pl'] = "Nie zaznaczono ustawień lub domena jest niepoprawna";
$text['message-copy_failed']['sv-se'] = "Ingen inställning markerad eller ogiltig domän.";
$text['message-copy_failed']['uk'] = "";
$text['message-copy_failed']['de-at'] = "Keine Einstellungen ausgewählt oder ungültige Domain";
$text['label-top']['en-us'] = "Top";
$text['label-top']['es-cl'] = "encima";
$text['label-top']['pt-pt'] = "Topo";
$text['label-top']['fr-fr'] = "Meilleur";
$text['label-top']['pt-br'] = "Topo";
$text['label-top']['pl'] = "Top";
$text['label-top']['he'] = "עליון";
$text['label-top']['uk'] = "топ";
$text['label-top']['sv-se'] = "Topp";
$text['label-top']['de-at'] = "Oben";
$text['label-top']['ro'] = "Top";
$text['label-top']['fa'] = "";
$text['label-top']['ar-eg'] = "أعلى";
$text['label-text']['en-us'] = "Text";
$text['label-text']['es-cl'] = "Texto";
$text['label-text']['pt-pt'] = "Texto";
$text['label-text']['fr-fr'] = "Texte";
$text['label-text']['pt-br'] = "Texto";
$text['label-text']['pl'] = "Tekst";
$text['label-text']['he'] = "טֶקסט";
$text['label-text']['uk'] = "текст";
$text['label-text']['sv-se'] = "Text";
$text['label-text']['de-at'] = "Text";
$text['label-text']['ro'] = "Text";
$text['label-text']['fa'] = "";
$text['label-text']['ar-eg'] = "نص";
$text['label-superfine']['en-us'] = "Superfine";
$text['label-superfine']['es-cl'] = "Superfino";
$text['label-superfine']['pt-pt'] = "Extrafino";
$text['label-superfine']['fr-fr'] = "Superfin";
$text['label-superfine']['nl-nl'] = "";
$text['label-superfine']['pt-br'] = "Resumido";
$text['label-superfine']['pl'] = "Najlepsza";
$text['label-superfine']['sv-se'] = "Superfin";
$text['label-superfine']['uk'] = "";
$text['label-superfine']['de-at'] = "Superfein";
$text['label-static']['en-us'] = "Static";
$text['label-static']['es-cl'] = "Estático";
$text['label-static']['pt-pt'] = "Estático";
$text['label-static']['fr-fr'] = "Statique";
$text['label-static']['pt-br'] = "Estático";
$text['label-static']['pl'] = "Statyczny";
$text['label-static']['he'] = "סטָטִי";
$text['label-static']['uk'] = "статичний";
$text['label-static']['sv-se'] = "Statisk";
$text['label-static']['de-at'] = "Statisch";
$text['label-static']['ro'] = "Static";
$text['label-static']['fa'] = "";
$text['label-static']['ar-eg'] = "ساكن";
$text['label-right']['en-us'] = "Right";
$text['label-right']['es-cl'] = "Derecha";
$text['label-right']['pt-pt'] = "Certo";
$text['label-right']['fr-fr'] = "Droite";
$text['label-right']['pt-br'] = "Certo";
$text['label-right']['pl'] = "Dobrze";
$text['label-right']['he'] = "יָמִינָה";
$text['label-right']['uk'] = "правий";
$text['label-right']['sv-se'] = "Höger";
$text['label-right']['de-at'] = "Recht";
$text['label-right']['ro'] = "Dreapta";
$text['label-right']['fa'] = "";
$text['label-right']['ar-eg'] = "حق";
$text['label-normal']['en-us'] = "Normal";
$text['label-normal']['es-cl'] = "Normal";
$text['label-normal']['pt-pt'] = "Normal";
$text['label-normal']['fr-fr'] = "Normal";
$text['label-normal']['nl-nl'] = "";
$text['label-normal']['pt-br'] = "Normal";
$text['label-normal']['pl'] = "Normalny";
$text['label-normal']['sv-se'] = "normal";
$text['label-normal']['uk'] = "звичайно";
$text['label-normal']['de-at'] = "normal";
$text['label-none']['en-us'] = "None";
$text['label-none']['es-cl'] = "Ninguna";
$text['label-none']['pt-pt'] = "Nenhum";
$text['label-none']['fr-fr'] = "Aucun";
$text['label-none']['pt-br'] = "Nenhum";
$text['label-none']['pl'] = "Żaden";
$text['label-none']['he'] = "אף לא אחד";
$text['label-none']['uk'] = "жоден";
$text['label-none']['sv-se'] = "Ingen";
$text['label-none']['de-at'] = "Keiner";
$text['label-none']['ro'] = "Nici unul";
$text['label-none']['fa'] = "";
$text['label-none']['ar-eg'] = "لا شيء";
$text['label-left']['en-us'] = "Left";
$text['label-left']['es-cl'] = "Izquierda";
$text['label-left']['pt-pt'] = "Esquerda";
$text['label-left']['fr-fr'] = "À gauche";
$text['label-left']['pt-br'] = "Esquerda";
$text['label-left']['pl'] = "Lewo";
$text['label-left']['he'] = "שְׁמֹאל";
$text['label-left']['uk'] = "лівий";
$text['label-left']['sv-se'] = "Vänster";
$text['label-left']['de-at'] = "Links";
$text['label-left']['ro'] = "Stânga";
$text['label-left']['fa'] = "";
$text['label-left']['ar-eg'] = "اليسار";
$text['label-inline']['en-us'] = "Inline";
$text['label-inline']['es-cl'] = "En línea";
$text['label-inline']['pt-pt'] = "Na linha";
$text['label-inline']['fr-fr'] = "En ligne";
$text['label-inline']['pt-br'] = "Na linha";
$text['label-inline']['pl'] = "inline";
$text['label-inline']['he'] = "בשורה";
$text['label-inline']['uk'] = "В лінію";
$text['label-inline']['sv-se'] = "I kö";
$text['label-inline']['de-at'] = "In der Reihe";
$text['label-inline']['ro'] = "In linie";
$text['label-inline']['fa'] = "";
$text['label-inline']['ar-eg'] = "في النسق";
$text['label-image']['en-us'] = "Image";
$text['label-image']['es-cl'] = "Imagen";
$text['label-image']['pt-pt'] = "Imagem";
$text['label-image']['fr-fr'] = "image";
$text['label-image']['pt-br'] = "Imagem";
$text['label-image']['pl'] = "Obraz";
$text['label-image']['he'] = "תמונה";
$text['label-image']['uk'] = "зображення";
$text['label-image']['sv-se'] = "Bild";
$text['label-image']['de-at'] = "Image";
$text['label-image']['ro'] = "Imagine";
$text['label-image']['fa'] = "";
$text['label-image']['ar-eg'] = "صورة";
$text['label-fixed']['en-us'] = "Fixed";
$text['label-fixed']['es-cl'] = "Fijo";
$text['label-fixed']['pt-pt'] = "Fixo";
$text['label-fixed']['fr-fr'] = "Fixé";
$text['label-fixed']['pt-br'] = "Fixo";
$text['label-fixed']['pl'] = "Naprawiony";
$text['label-fixed']['he'] = "קָבוּעַ";
$text['label-fixed']['uk'] = "фіксований";
$text['label-fixed']['sv-se'] = "Fast";
$text['label-fixed']['de-at'] = "fest";
$text['label-fixed']['ro'] = "Fix";
$text['label-fixed']['fa'] = "";
$text['label-fixed']['ar-eg'] = "ثابت";
$text['label-fine']['en-us'] = "Fine";
$text['label-fine']['es-cl'] = "Fine";
$text['label-fine']['pt-pt'] = "Belas";
$text['label-fine']['fr-fr'] = "Fin";
$text['label-fine']['nl-nl'] = "";
$text['label-fine']['pt-br'] = "Agradável ";
$text['label-fine']['pl'] = "Dobry";
$text['label-fine']['sv-se'] = "Fin";
$text['label-fine']['uk'] = "";
$text['label-fine']['de-at'] = "Fein";
$text['label-center']['en-us'] = "Center";
$text['label-center']['es-cl'] = "Centrar";
$text['label-center']['pt-pt'] = "Centro";
$text['label-center']['fr-fr'] = "centre";
$text['label-center']['pt-br'] = "Centro";
$text['label-center']['pl'] = "Centrum";
$text['label-center']['he'] = "מֶרְכָּז";
$text['label-center']['uk'] = "центр";
$text['label-center']['sv-se'] = "Centrum";
$text['label-center']['de-at'] = "Center";
$text['label-center']['ro'] = "Centru";
$text['label-center']['fa'] = "";
$text['label-center']['ar-eg'] = "مركز";
$text['label-bottom']['en-us'] = "Bottom";
$text['label-bottom']['es-cl'] = "Fondo";
$text['label-bottom']['pt-pt'] = "Inferior";
$text['label-bottom']['fr-fr'] = "Bas";
$text['label-bottom']['pt-br'] = "Inferior";
$text['label-bottom']['pl'] = "Dolny";
$text['label-bottom']['he'] = "תַחתִית";
$text['label-bottom']['uk'] = "дно";
$text['label-bottom']['sv-se'] = "Botten";
$text['label-bottom']['de-at'] = "Boden";
$text['label-bottom']['ro'] = "Fund";
$text['label-bottom']['fa'] = "";
$text['label-bottom']['ar-eg'] = "أسفل";
$text['label-24-hour']['en-us'] = "24-Hour";
$text['label-24-hour']['es-cl'] = "24 horas";
$text['label-24-hour']['pt-pt'] = "24 horas";
$text['label-24-hour']['fr-fr'] = "24 heures";
$text['label-24-hour']['pt-br'] = "24 horas";
$text['label-24-hour']['pl'] = "24-godzinny";
$text['label-24-hour']['he'] = "24 שעות";
$text['label-24-hour']['uk'] = "24-годинний";
$text['label-24-hour']['sv-se'] = "24-timmars";
$text['label-24-hour']['de-at'] = "24 Stunden";
$text['label-24-hour']['ro'] = "24 de ore";
$text['label-24-hour']['fa'] = "";
$text['label-24-hour']['ar-eg'] = "24 ساعة";
$text['label-12-hour']['en-us'] = "12-Hour";
$text['label-12-hour']['es-cl'] = "12 horas";
$text['label-12-hour']['pt-pt'] = "12 horas";
$text['label-12-hour']['fr-fr'] = "12 heures";
$text['label-12-hour']['pt-br'] = "12 horas";
$text['label-12-hour']['pl'] = "12-godzinny";
$text['label-12-hour']['he'] = "12 שעות";
$text['label-12-hour']['uk'] = "12-годинний";
$text['label-12-hour']['sv-se'] = "12-timmars";
$text['label-12-hour']['de-at'] = "12 Stunden";
$text['label-12-hour']['ro'] = "12 de ore";
$text['label-12-hour']['fa'] = "";
$text['label-12-hour']['ar-eg'] = "12 ساعة";
$text['header-default_settings']['en-us'] = "Default Settings";
$text['header-default_settings']['es-cl'] = "Condiciones Predeterminadas";
$text['header-default_settings']['pt-pt'] = "Predefinições";
$text['header-default_settings']['fr-fr'] = "Configurations par Défaut";
$text['header-default_settings']['nl-nl'] = "";
$text['header-default_settings']['pt-br'] = "Configurações";
$text['header-default_settings']['pl'] = "Ustawienia domyślne";
$text['header-default_settings']['sv-se'] = "Standard Inställningar";
$text['header-default_settings']['uk'] = "";
$text['header-default_settings']['de-at'] = "Standard Einstellungen";
$text['header-default_setting-edit']['en-us'] = "Default Setting";
$text['header-default_setting-edit']['es-cl'] = "Configuraciones Predeterminadas";
$text['header-default_setting-edit']['pt-pt'] = "Predefinições";
$text['header-default_setting-edit']['fr-fr'] = "Configurations par Défaut";
$text['header-default_setting-edit']['nl-nl'] = "";
$text['header-default_setting-edit']['pt-br'] = "Configurações";
$text['header-default_setting-edit']['pl'] = "Ustawienie domyślne";
$text['header-default_setting-edit']['sv-se'] = "Standard Inställning";
$text['header-default_setting-edit']['uk'] = "";
$text['header-default_setting-edit']['de-at'] = "Standard Einstellungen";
$text['header-default_setting-add']['en-us'] = "Default Setting Add";
$text['header-default_setting-add']['es-cl'] = "Agregar Configuración Predeterminada";
$text['header-default_setting-add']['pt-pt'] = "Adicionar Predefinição ";
$text['header-default_setting-add']['fr-fr'] = "Ajouter une configuration per défaut";
$text['header-default_setting-add']['nl-nl'] = "";
$text['header-default_setting-add']['pt-br'] = "Adicionar configurações";
$text['header-default_setting-add']['pl'] = "Dodaj ustawienie domyślne";
$text['header-default_setting-add']['sv-se'] = "Lägg Till Standard Inställning";
$text['header-default_setting-add']['uk'] = "";
$text['header-default_setting-add']['de-at'] = "Standard Einstellungen hinzufügen";
$text['description-order']['en-us'] = "Set the order (index) for this array element.";
$text['description-order']['es-cl'] = "Establecer el orden (índice) para este elemento de la matriz.";
$text['description-order']['pt-pt'] = "Defina a ordem (índice) para este elemento da matriz.";
$text['description-order']['fr-fr'] = "Définir l'ordre (index) pour cet élément de tableau.";
$text['description-order']['nl-nl'] = "";
$text['description-order']['pt-br'] = "Defina a ordem (indice) para este elemento da matriz";
$text['description-order']['pl'] = "Wybierz kolejność.";
$text['description-order']['sv-se'] = "Ställ in ordningen (index) för detta element.";
$text['description-order']['uk'] = "";
$text['description-order']['de-at'] = "Wählen Sie die Reihenfolge (Index) für das Array Element.";
$text['description-enabled']['en-us'] = "Set the status of this default setting.";
$text['description-enabled']['es-cl'] = "Ingrese el estado de esta configuración.";
$text['description-enabled']['pt-pt'] = "Escolha o estado desta predefinição.";
$text['description-enabled']['fr-fr'] = "Choisir l'état de ce paraètre";
$text['description-enabled']['nl-nl'] = "";
$text['description-enabled']['pt-br'] = "Escolha o estado desta definição";
$text['description-enabled']['pl'] = "Ustaw status ustawienia domyślnego.";
$text['description-enabled']['sv-se'] = "Välj status på denna standardinställning.";
$text['description-enabled']['uk'] = "";
$text['description-enabled']['de-at'] = "Setzen Sie den Status dieser Standardeinstellung.";
$text['description-default_settings']['en-us'] = "Settings used for all domains.";
$text['description-default_settings']['es-cl'] = "Configuraciones usadas por todos los dominios";
$text['description-default_settings']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_settings']['fr-fr'] = "Configurations communes à tous les domaines.";
$text['description-default_settings']['nl-nl'] = "";
$text['description-default_settings']['pt-br'] = "Configurações comuns a todos os dominios";
$text['description-default_settings']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_settings']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_settings']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_settings']['de-at'] = "Einstellungen für alle Domains.";
$text['description-default_setting-edit']['en-us'] = "Settings used for all domains.";
$text['description-default_setting-edit']['es-cl'] = "Configuraciones usadas para todos los dominios.";
$text['description-default_setting-edit']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_setting-edit']['fr-fr'] = "Configurations communes à tous les domaines";
$text['description-default_setting-edit']['nl-nl'] = "";
$text['description-default_setting-edit']['pt-br'] = "Configurações comuns a todos os dominios";
$text['description-default_setting-edit']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_setting-edit']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_setting-edit']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_setting-edit']['de-at'] = "Einstellungen für alle Domains.";
$text['description-default_setting-add']['en-us'] = "Settings used for all domains.";
$text['description-default_setting-add']['es-cl'] = "Configuraciones usadas para todos los dominios.";
$text['description-default_setting-add']['pt-pt'] = "Definições comuns a todos os domínios.";
$text['description-default_setting-add']['fr-fr'] = "Configurations communes à tous les domaines";
$text['description-default_setting-add']['nl-nl'] = "";
$text['description-default_setting-add']['pt-br'] = "Configurações comuns a todos os dominio";
$text['description-default_setting-add']['pl'] = "Ustawienia stosowane dla wszystkich domen.";
$text['description-default_setting-add']['sv-se'] = "Inställning används för alla domäner.";
$text['description-default_setting-add']['uk'] = "Налаштування використовується для всіх доменів";
$text['description-default_setting-add']['de-at'] = "Einstellungen für alle Domains.";
$text['button-toggle']['en-us'] = "Toggle";
$text['button-toggle']['es-cl'] = "Palanca";
$text['button-toggle']['pt-pt'] = "Alternar";
$text['button-toggle']['fr-fr'] = "Basculer";
$text['button-toggle']['pt-br'] = "Alternar";
$text['button-toggle']['pl'] = "Przełącznik";
$text['button-toggle']['he'] = "לְמַתֵג";
$text['button-toggle']['uk'] = "тумблер";
$text['button-toggle']['sv-se'] = "toggle";
$text['button-toggle']['de-at'] = "Umschalten";
$text['button-toggle']['ro'] = "Comutare";
$text['button-toggle']['fa'] = "";
$text['button-toggle']['ar-eg'] = "تبديل";
?>

View File

@@ -1,72 +1,72 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('voicemail_message_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get submitted variables
$search = $_REQUEST['search'];
$default_setting_uuids = $_REQUEST["id"];
//toggle the setting
$toggled = 0;
if (is_array($default_setting_uuids) && sizeof($default_setting_uuids) > 0) {
foreach ($default_setting_uuids as $default_setting_uuid) {
//get current status
$sql = "select default_setting_enabled from v_default_settings where default_setting_uuid = '".check_str($default_setting_uuid)."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_NAMED);
$new_status = ($row['default_setting_enabled'] == 'true') ? 'false' : "true";
unset ($sql, $prep_statement, $row);
//set new status
$sql = "update v_default_settings set default_setting_enabled = '".$new_status."' where default_setting_uuid = '".check_str($default_setting_uuid)."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset ($sql, $prep_statement);
$toggled++;
}
}
//redirect the user
if ($toggled > 0) {
$_SESSION["message"] = $text['message-toggled'].': '.$toggled;
}
header("Location: default_settings.php".(($search != '') ? '?search='.$search : null));
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('voicemail_message_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//get submitted variables
$search = $_REQUEST['search'];
$default_setting_uuids = $_REQUEST["id"];
//toggle the setting
$toggled = 0;
if (is_array($default_setting_uuids) && sizeof($default_setting_uuids) > 0) {
foreach ($default_setting_uuids as $default_setting_uuid) {
//get current status
$sql = "select default_setting_enabled from v_default_settings where default_setting_uuid = '".check_str($default_setting_uuid)."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_NAMED);
$new_status = ($row['default_setting_enabled'] == 'true') ? 'false' : "true";
unset ($sql, $prep_statement, $row);
//set new status
$sql = "update v_default_settings set default_setting_enabled = '".$new_status."' where default_setting_uuid = '".check_str($default_setting_uuid)."'";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
unset ($sql, $prep_statement);
$toggled++;
}
}
//redirect the user
if ($toggled > 0) {
$_SESSION["message"] = $text['message-toggled'].': '.$toggled;
}
header("Location: default_settings.php".(($search != '') ? '?search='.$search : null));
?>

View File

@@ -1,51 +1,51 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('default_setting_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
$search = check_str($_REQUEST['search']);
require "resources/classes/domains.php";
$domain = new domains();
$domain->db = $db;
$domain->set();
$_SESSION["message"] = $text['message-settings_reloaded'];
header("Location: default_settings.php".(($search != '') ? "?search=".$search : null));
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (permission_exists('default_setting_view')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
$search = check_str($_REQUEST['search']);
require "resources/classes/domains.php";
$domain = new domains();
$domain->db = $db;
$domain->set();
$_SESSION["message"] = $text['message-settings_reloaded'];
header("Location: default_settings.php".(($search != '') ? "?search=".$search : null));
?>

View File

@@ -1,35 +1,35 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2010
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//proccess this only one time
if ($domains_processed == 1) {
//set domains with enabled status of empty or null to true
$sql = "update v_domains set domain_enabled = 'true' where domain_enabled = '' or domain_enabled is null";
$db->exec(check_sql($sql));
unset($sql);
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2010
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
//proccess this only one time
if ($domains_processed == 1) {
//set domains with enabled status of empty or null to true
$sql = "update v_domains set domain_enabled = 'true' where domain_enabled = '' or domain_enabled is null";
$db->exec(check_sql($sql));
unset($sql);
}
?>

View File

@@ -1,445 +1,445 @@
<?php
$text['title-domains']['en-us'] = "Domains";
$text['title-domains']['es-cl'] = "Dominios";
$text['title-domains']['pt-pt'] = "Domínios";
$text['title-domains']['fr-fr'] = "Domaines";
$text['title-domains']['pt-br'] = "Dominios";
$text['title-domains']['pl'] = "Domeny";
$text['title-domains']['sv-se'] = "Domäner";
$text['title-domains']['uk'] = "Домени";
$text['title-domains']['de-at'] = "Domains";
$text['title-domain_setting-edit']['en-us'] = "Domain Setting";
$text['title-domain_setting-edit']['es-cl'] = "Configuraciones de dominio.";
$text['title-domain_setting-edit']['pt-pt'] = "Definições do Domínio";
$text['title-domain_setting-edit']['fr-fr'] = "Paramètres du domaine";
$text['title-domain_setting-edit']['pt-br'] = "Configurações do dominio";
$text['title-domain_setting-edit']['pl'] = "Ustawienia domen";
$text['title-domain_setting-edit']['sv-se'] = "Domän Inställning";
$text['title-domain_setting-edit']['uk'] = "Налаштування доменів";
$text['title-domain_setting-edit']['de-at'] = "Domain Einstellungen";
$text['title-domain_setting-add']['en-us'] = "Domain Setting Add";
$text['title-domain_setting-add']['es-cl'] = "Agregar Configuración de Dominio";
$text['title-domain_setting-add']['pt-pt'] = "Adicionar Definição ao Domínio";
$text['title-domain_setting-add']['fr-fr'] = "Ajouter un paramètre au domaine";
$text['title-domain_setting-add']['pt-br'] = "Adicionar configurações do dominio";
$text['title-domain_setting-add']['pl'] = "Dodaj ustawienie domeny";
$text['title-domain_setting-add']['sv-se'] = "Lägg Till Domän Inställning";
$text['title-domain_setting-add']['uk'] = "Додавання домену";
$text['title-domain_setting-add']['de-at'] = "Domain Einstellungen hinzufügen";
$text['title-domain-edit']['en-us'] = "Domain";
$text['title-domain-edit']['es-cl'] = "Dominio";
$text['title-domain-edit']['pt-pt'] = "Domínio";
$text['title-domain-edit']['fr-fr'] = "Domaines";
$text['title-domain-edit']['pt-br'] = "Dominio";
$text['title-domain-edit']['pl'] = "Domena";
$text['title-domain-edit']['sv-se'] = "Domän";
$text['title-domain-edit']['uk'] = "Домен";
$text['title-domain-edit']['de-at'] = "Domain";
$text['title-domain-add']['en-us'] = "Domain Add";
$text['title-domain-add']['es-cl'] = "Agregar Dominio";
$text['title-domain-add']['pt-pt'] = "Adicionar Domínio";
$text['title-domain-add']['fr-fr'] = "Ajouter un Domaine";
$text['title-domain-add']['pt-br'] = "Adicionar dominio";
$text['title-domain-add']['pl'] = "Dodaj domenę";
$text['title-domain-add']['sv-se'] = "Lägg Till Domän";
$text['title-domain-add']['uk'] = "Новий домен";
$text['title-domain-add']['de-at'] = "Domain hinzufügen";
$text['message-delete_failed']['en-us'] = "No Settings Checked";
$text['message-delete_failed']['es-cl'] = "No hay ajustes facturado";
$text['message-delete_failed']['pt-pt'] = "Nenhuma configuração marcada";
$text['message-delete_failed']['fr-fr'] = "Pas de paramètres enregistrés";
$text['message-delete_failed']['pt-br'] = "Falha na exclusão";
$text['message-delete_failed']['pl'] = "Próba usunięcia zakończyła się niepowodzeniem";
$text['message-delete_failed']['sv-se'] = "Ingen Inställning Markerad";
$text['message-delete_failed']['uk'] = "Налаштування не вказано";
$text['message-delete_failed']['de-at'] = "Keine Einstellungen ausgewählt";
$text['label-top']['en-us'] = "Top";
$text['label-top']['es-cl'] = "encima";
$text['label-top']['pt-pt'] = "Topo";
$text['label-top']['fr-fr'] = "Meilleur";
$text['label-top']['pt-br'] = "Topo";
$text['label-top']['pl'] = "Top";
$text['label-top']['he'] = "עליון";
$text['label-top']['uk'] = "топ";
$text['label-top']['sv-se'] = "Topp";
$text['label-top']['de-at'] = "Oben";
$text['label-top']['ro'] = "Top";
$text['label-top']['fa'] = "";
$text['label-top']['ar-eg'] = "أعلى";
$text['label-tools']['en-us'] = "Tools";
$text['label-tools']['es-cl'] = "Herramientas";
$text['label-tools']['pt-pt'] = "Ferramentas";
$text['label-tools']['fr-fr'] = "Outils";
$text['label-tools']['pt-br'] = "Ferramentas";
$text['label-tools']['pl'] = "Narzędzia";
$text['label-tools']['sv-se'] = "Verktyg";
$text['label-tools']['uk'] = "Параметри";
$text['label-tools']['de-at'] = "Werkzeug";
$text['label-text']['en-us'] = "Text";
$text['label-text']['es-cl'] = "Texto";
$text['label-text']['pt-pt'] = "Texto";
$text['label-text']['fr-fr'] = "Texte";
$text['label-text']['pt-br'] = "Texto";
$text['label-text']['pl'] = "Tekst";
$text['label-text']['he'] = "טֶקסט";
$text['label-text']['uk'] = "текст";
$text['label-text']['sv-se'] = "Text";
$text['label-text']['de-at'] = "Text";
$text['label-text']['ro'] = "Text";
$text['label-text']['fa'] = "";
$text['label-text']['ar-eg'] = "نص";
$text['label-static']['en-us'] = "Static";
$text['label-static']['es-cl'] = "Estático";
$text['label-static']['pt-pt'] = "Estático";
$text['label-static']['fr-fr'] = "Statique";
$text['label-static']['pt-br'] = "Estático";
$text['label-static']['pl'] = "Statyczny";
$text['label-static']['he'] = "סטָטִי";
$text['label-static']['uk'] = "статичний";
$text['label-static']['sv-se'] = "Statisk";
$text['label-static']['de-at'] = "Statisch";
$text['label-static']['ro'] = "Static";
$text['label-static']['fa'] = "";
$text['label-static']['ar-eg'] = "ساكن";
$text['label-right']['en-us'] = "Right";
$text['label-right']['es-cl'] = "Derecha";
$text['label-right']['pt-pt'] = "Certo";
$text['label-right']['fr-fr'] = "Droite";
$text['label-right']['pt-br'] = "Certo";
$text['label-right']['pl'] = "Dobrze";
$text['label-right']['he'] = "יָמִינָה";
$text['label-right']['uk'] = "правий";
$text['label-right']['sv-se'] = "Höger";
$text['label-right']['de-at'] = "Recht";
$text['label-right']['ro'] = "Dreapta";
$text['label-right']['fa'] = "";
$text['label-right']['ar-eg'] = "حق";
$text['label-parent_domain']['en-us'] = "Parent Domain";
$text['label-parent_domain']['es-cl'] = "Dominio de los Padres";
$text['label-parent_domain']['pt-pt'] = "Domínio Parent";
$text['label-parent_domain']['fr-fr'] = "Domaine Parent";
$text['label-parent_domain']['pt-br'] = "Dominio principal";
$text['label-parent_domain']['pl'] = "Domena nadrzędna";
$text['label-parent_domain']['sv-se'] = "Överordnad Domän";
$text['label-parent_domain']['uk'] = "Батьківський домен";
$text['label-parent_domain']['de-at'] = "Übergeordnete Domain";
$text['label-none']['en-us'] = "None";
$text['label-none']['es-cl'] = "Ninguna";
$text['label-none']['pt-pt'] = "Nenhum";
$text['label-none']['fr-fr'] = "Aucun";
$text['label-none']['pt-br'] = "Nenhum";
$text['label-none']['pl'] = "Żaden";
$text['label-none']['he'] = "אף לא אחד";
$text['label-none']['uk'] = "жоден";
$text['label-none']['sv-se'] = "Ingen";
$text['label-none']['de-at'] = "Keiner";
$text['label-none']['ro'] = "Nici unul";
$text['label-none']['fa'] = "";
$text['label-none']['ar-eg'] = "لا شيء";
$text['label-manage']['en-us'] = "Manage";
$text['label-manage']['es-cl'] = "Gestionar";
$text['label-manage']['pt-pt'] = "Gerir";
$text['label-manage']['fr-fr'] = "Gérer";
$text['label-manage']['pt-br'] = "Gerenciar";
$text['label-manage']['pl'] = "Zarządzaj";
$text['label-manage']['sv-se'] = "Hantera";
$text['label-manage']['uk'] = "Керувати";
$text['label-manage']['de-at'] = "Verwalten";
$text['label-left']['en-us'] = "Left";
$text['label-left']['es-cl'] = "Izquierda";
$text['label-left']['pt-pt'] = "Esquerda";
$text['label-left']['fr-fr'] = "À gauche";
$text['label-left']['pt-br'] = "Esquerda";
$text['label-left']['pl'] = "Lewo";
$text['label-left']['he'] = "שְׁמֹאל";
$text['label-left']['uk'] = "лівий";
$text['label-left']['sv-se'] = "Vänster";
$text['label-left']['de-at'] = "Links";
$text['label-left']['ro'] = "Stânga";
$text['label-left']['fa'] = "";
$text['label-left']['ar-eg'] = "اليسار";
$text['label-inline']['en-us'] = "Inline";
$text['label-inline']['es-cl'] = "En línea";
$text['label-inline']['pt-pt'] = "Na linha";
$text['label-inline']['fr-fr'] = "En ligne";
$text['label-inline']['pt-br'] = "Na linha";
$text['label-inline']['pl'] = "inline";
$text['label-inline']['he'] = "בשורה";
$text['label-inline']['uk'] = "В лінію";
$text['label-inline']['sv-se'] = "I kö";
$text['label-inline']['de-at'] = "In der Reihe";
$text['label-inline']['ro'] = "In linie";
$text['label-inline']['fa'] = "";
$text['label-inline']['ar-eg'] = "في النسق";
$text['label-image']['en-us'] = "Image";
$text['label-image']['es-cl'] = "Imagen";
$text['label-image']['pt-pt'] = "Imagem";
$text['label-image']['fr-fr'] = "image";
$text['label-image']['pt-br'] = "Imagem";
$text['label-image']['pl'] = "Obraz";
$text['label-image']['he'] = "תמונה";
$text['label-image']['uk'] = "зображення";
$text['label-image']['sv-se'] = "Bild";
$text['label-image']['de-at'] = "Image";
$text['label-image']['ro'] = "Imagine";
$text['label-image']['fa'] = "";
$text['label-image']['ar-eg'] = "صورة";
$text['label-fixed']['en-us'] = "Fixed";
$text['label-fixed']['es-cl'] = "Fijo";
$text['label-fixed']['pt-pt'] = "Fixo";
$text['label-fixed']['fr-fr'] = "Fixé";
$text['label-fixed']['pt-br'] = "Fixo";
$text['label-fixed']['pl'] = "Naprawiony";
$text['label-fixed']['he'] = "קָבוּעַ";
$text['label-fixed']['uk'] = "фіксований";
$text['label-fixed']['sv-se'] = "Fast";
$text['label-fixed']['de-at'] = "fest";
$text['label-fixed']['ro'] = "Fix";
$text['label-fixed']['fa'] = "";
$text['label-fixed']['ar-eg'] = "ثابت";
$text['label-domain']['en-us'] = "Domain";
$text['label-domain']['es-cl'] = "Dominio";
$text['label-domain']['pt-pt'] = "Domínio";
$text['label-domain']['fr-fr'] = "Domaine";
$text['label-domain']['pt-br'] = "Dominio";
$text['label-domain']['pl'] = "Domena";
$text['label-domain']['sv-se'] = "Domän";
$text['label-domain']['uk'] = "Домен";
$text['label-domain']['de-at'] = "Domain";
$text['label-center']['en-us'] = "Center";
$text['label-center']['es-cl'] = "Centrar";
$text['label-center']['pt-pt'] = "Centro";
$text['label-center']['fr-fr'] = "centre";
$text['label-center']['pt-br'] = "Centro";
$text['label-center']['pl'] = "Centrum";
$text['label-center']['he'] = "מֶרְכָּז";
$text['label-center']['uk'] = "центр";
$text['label-center']['sv-se'] = "Centrum";
$text['label-center']['de-at'] = "Center";
$text['label-center']['ro'] = "Centru";
$text['label-center']['fa'] = "";
$text['label-center']['ar-eg'] = "مركز";
$text['label-bottom']['en-us'] = "Bottom";
$text['label-bottom']['es-cl'] = "Fondo";
$text['label-bottom']['pt-pt'] = "Inferior";
$text['label-bottom']['fr-fr'] = "Bas";
$text['label-bottom']['pt-br'] = "Inferior";
$text['label-bottom']['pl'] = "Dolny";
$text['label-bottom']['he'] = "תַחתִית";
$text['label-bottom']['uk'] = "дно";
$text['label-bottom']['sv-se'] = "Botten";
$text['label-bottom']['de-at'] = "Boden";
$text['label-bottom']['ro'] = "Fund";
$text['label-bottom']['fa'] = "";
$text['label-bottom']['ar-eg'] = "أسفل";
$text['label-24-hour']['en-us'] = "24-Hour";
$text['label-24-hour']['es-cl'] = "24 horas";
$text['label-24-hour']['pt-pt'] = "24 horas";
$text['label-24-hour']['fr-fr'] = "24 heures";
$text['label-24-hour']['pt-br'] = "24 horas";
$text['label-24-hour']['pl'] = "24-godzinny";
$text['label-24-hour']['he'] = "24 שעות";
$text['label-24-hour']['uk'] = "24-годинний";
$text['label-24-hour']['sv-se'] = "24-timmars";
$text['label-24-hour']['de-at'] = "24 Stunden";
$text['label-24-hour']['ro'] = "24 de ore";
$text['label-24-hour']['fa'] = "";
$text['label-24-hour']['ar-eg'] = "24 ساعة";
$text['label-12-hour']['en-us'] = "12-Hour";
$text['label-12-hour']['es-cl'] = "12 horas";
$text['label-12-hour']['pt-pt'] = "12 horas";
$text['label-12-hour']['fr-fr'] = "12 heures";
$text['label-12-hour']['pt-br'] = "12 horas";
$text['label-12-hour']['pl'] = "12-godzinny";
$text['label-12-hour']['he'] = "12 שעות";
$text['label-12-hour']['uk'] = "12-годинний";
$text['label-12-hour']['sv-se'] = "12-timmars";
$text['label-12-hour']['de-at'] = "12 Stunden";
$text['label-12-hour']['ro'] = "12 de ore";
$text['label-12-hour']['fa'] = "";
$text['label-12-hour']['ar-eg'] = "12 ساعة";
$text['header-settings']['en-us'] = "Settings";
$text['header-settings']['es-cl'] = "Configuraciones";
$text['header-settings']['pt-pt'] = "Definições";
$text['header-settings']['fr-fr'] = "Paramètres";
$text['header-settings']['pt-br'] = "Configurações";
$text['header-settings']['pl'] = "Ustawienia";
$text['header-settings']['sv-se'] = "Inställning";
$text['header-settings']['uk'] = "Налаштування";
$text['header-settings']['de-at'] = "Einstellungen";
$text['header-domains']['en-us'] = "Domains";
$text['header-domains']['es-cl'] = "Dominios";
$text['header-domains']['pt-pt'] = "Domínios";
$text['header-domains']['fr-fr'] = "Domaines";
$text['header-domains']['pt-br'] = "Dominios";
$text['header-domains']['pl'] = "Domeny";
$text['header-domains']['sv-se'] = "Domäner";
$text['header-domains']['uk'] = "Домени";
$text['header-domains']['de-at'] = "Domains";
$text['header-domain_setting-edit']['en-us'] = "Domain Setting";
$text['header-domain_setting-edit']['es-cl'] = "Configuraciones de dominio";
$text['header-domain_setting-edit']['pt-pt'] = "Definições do Domínio";
$text['header-domain_setting-edit']['fr-fr'] = "Paramètres du domaine";
$text['header-domain_setting-edit']['pt-br'] = "Configurações do dominio";
$text['header-domain_setting-edit']['pl'] = "Ustawienia domeny";
$text['header-domain_setting-edit']['sv-se'] = "Domän Inställning";
$text['header-domain_setting-edit']['uk'] = "Налаштування домену";
$text['header-domain_setting-edit']['de-at'] = "Domain Einstellungen";
$text['header-domain_setting-add']['en-us'] = "Domain Setting Add";
$text['header-domain_setting-add']['es-cl'] = "Agregar Configuración de Dominio";
$text['header-domain_setting-add']['pt-pt'] = "Adicionar Definição ao Domínio";
$text['header-domain_setting-add']['fr-fr'] = "Ajouter un paramètre au domaine";
$text['header-domain_setting-add']['pt-br'] = "Adicionar configuração ao dominio";
$text['header-domain_setting-add']['pl'] = "Dodaj ustawienie domeny";
$text['header-domain_setting-add']['sv-se'] = "Lägg Till Domän Inställning";
$text['header-domain_setting-add']['uk'] = "Параметри домену";
$text['header-domain_setting-add']['de-at'] = "Domain Einstellungen hinzufügen";
$text['header-domain-edit']['en-us'] = "Domain";
$text['header-domain-edit']['es-cl'] = "Dominio";
$text['header-domain-edit']['pt-pt'] = "Domínio";
$text['header-domain-edit']['fr-fr'] = "Domaine";
$text['header-domain-edit']['pt-br'] = "Dominio";
$text['header-domain-edit']['pl'] = "Domena";
$text['header-domain-edit']['sv-se'] = "Domän";
$text['header-domain-edit']['uk'] = "Домен";
$text['header-domain-edit']['de-at'] = "Domain";
$text['header-domain-add']['en-us'] = "Domain Add";
$text['header-domain-add']['es-cl'] = "Agregar Dominio";
$text['header-domain-add']['pt-pt'] = "Adicionar Domínio";
$text['header-domain-add']['fr-fr'] = "Ajouter un Domaine";
$text['header-domain-add']['pt-br'] = "Adicionar dominio";
$text['header-domain-add']['pl'] = "Dodaj domenę";
$text['header-domain-add']['sv-se'] = "Lägg Till Domän";
$text['header-domain-add']['uk'] = "Новий домен";
$text['header-domain-add']['de-at'] = "Domain hinzufügen";
$text['description-setting_enabled']['en-us'] = "Set the status of this default setting.";
$text['description-setting_enabled']['es-cl'] = "Configure el estado de esta configuración predeterminada.";
$text['description-setting_enabled']['pt-pt'] = "Escolha o estado desta definição por omissão.";
$text['description-setting_enabled']['fr-fr'] = "Choisir l'état de ce paramètre";
$text['description-setting_enabled']['pt-br'] = "Escolha o estado desta configuração";
$text['description-setting_enabled']['pl'] = "Wybierz, aby włączyć lub wyłączyć tę funkcję.";
$text['description-setting_enabled']['sv-se'] = "Ange status på denna standard inställning.";
$text['description-setting_enabled']['uk'] = "Встановіть стан цього параметра за замовчуванням.";
$text['description-setting_enabled']['de-at'] = "Setzen Sie den Status dieser Standardeinstellung.";
$text['description-parent_domain']['en-us'] = "Set the parent domain.";
$text['description-parent_domain']['es-cl'] = "Establecer el dominio principal.";
$text['description-parent_domain']['pt-pt'] = "Defina o domínio pai.";
$text['description-parent_domain']['fr-fr'] = "Réglez le domaine parent.";
$text['description-parent_domain']['pt-br'] = "Defina o dominio pai";
$text['description-parent_domain']['pl'] = "Ustaw domenę nadrzędną";
$text['description-parent_domain']['sv-se'] = "Ange Överordan Domän.";
$text['description-parent_domain']['uk'] = "Вкажіть батьківський домен";
$text['description-parent_domain']['de-at'] = "Setzen Sie die übergeordnete Domain.";
$text['description-order']['en-us'] = "Set the order for this array element.";
$text['description-order']['es-cl'] = "Establecer el orden para este elemento de la matriz.";
$text['description-order']['pt-pt'] = "Definir a ordem para este elemento do array.";
$text['description-order']['fr-fr'] = "Définissez l'ordre de cet élément de tableau.";
$text['description-order']['pt-br'] = "Defina a ordem (indice) para este elemento da matriz";
$text['description-order']['pl'] = "Wybierz kolejność.";
$text['description-order']['sv-se'] = "Ställ in ordningen för detta element.";
$text['description-order']['uk'] = "Вкажіть порядок для масиву елементів";
$text['description-order']['de-at'] = "Wählen Sie die Reihenfolge des Array Elements.";
$text['description-name']['en-us'] = "Enter the name of the domain.";
$text['description-name']['es-cl'] = "Ingrese el nombre del dominio";
$text['description-name']['pt-pt'] = "Introduza o nome do domínio.";
$text['description-name']['fr-fr'] = "Entrer le nom du domaine.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Ange namn på Domänen.";
$text['description-name']['uk'] = "Вкажіть назву домену";
$text['description-name']['de-at'] = "Geben Sie den Namen dieser Domain an";
$text['description-domains']['en-us'] = "Control the list of domains to manage.";
$text['description-domains']['es-cl'] = "Controlar la lista de dominios a gestionar.";
$text['description-domains']['pt-pt'] = "Controlar a lista dos domínios a gerir";
$text['description-domains']['fr-fr'] = "Contrôler la liste des domaines à gérer";
$text['description-domains']['pt-br'] = "Gerencie a lista dos dominios";
$text['description-domains']['pl'] = "Zarządzanie listą domen.";
$text['description-domains']['sv-se'] = "Kontrollera lista med Domäner att hantera.";
$text['description-domains']['uk'] = "Список доменів для керування";
$text['description-domains']['de-at'] = "Eine Liste aller Domains.";
$text['description-domain_setting-edit']['en-us'] = "Edit a setting for this domain.";
$text['description-domain_setting-edit']['es-cl'] = "Edita una configuración para este dominio.";
$text['description-domain_setting-edit']['pt-pt'] = "Editar uma definição deste domínio.";
$text['description-domain_setting-edit']['fr-fr'] = "Editer un paramètre du domaine.";
$text['description-domain_setting-edit']['pt-br'] = "Editar uma configuração deste dominio";
$text['description-domain_setting-edit']['pl'] = "Edytuj ustawienia w tej domenie";
$text['description-domain_setting-edit']['sv-se'] = "Ändra en inställning för denna Domän.";
$text['description-domain_setting-edit']['uk'] = "Редагування параметрів для домену";
$text['description-domain_setting-edit']['de-at'] = "Eine Einstellung für diese Domain ändern.";
$text['description-domain_setting-add']['en-us'] = "Add a setting for this domain.";
$text['description-domain_setting-add']['es-cl'] = "Agregar una configuración para este dominio.";
$text['description-domain_setting-add']['pt-pt'] = "Adicionar uma definição a este domínio.";
$text['description-domain_setting-add']['fr-fr'] = "";
$text['description-domain_setting-add']['pt-br'] = "Adicionar uma configuração a este dominio";
$text['description-domain_setting-add']['pl'] = "Dodaj ustawienie w tej domenie";
$text['description-domain_setting-add']['sv-se'] = "Lägg Till en inställning för denna Domän.";
$text['description-domain_setting-add']['uk'] = "Додавання параметра для домену";
$text['description-domain_setting-add']['de-at'] = "Eine Einstellung für diese Domain hinzufügen.";
$text['description-domain_enabled']['en-us'] = "Set the status of the domain.";
$text['description-domain_enabled']['es-cl'] = "Ajuste el estado del dominio.";
$text['description-domain_enabled']['pt-pt'] = "Definir o estado do domínio.";
$text['description-domain_enabled']['fr-fr'] = "Régler le statut du domaine.";
$text['description-domain_enabled']['pt-br'] = "Definir o estado do dominio";
$text['description-domain_enabled']['pl'] = "Ustaw status tej domeny.";
$text['description-domain_enabled']['sv-se'] = "Ange status för Domänen.";
$text['description-domain_enabled']['uk'] = "Вкажіть стан домену";
$text['description-domain_enabled']['de-at'] = "Den Status der Domain setzen.";
$text['description-domain-edit']['en-us'] = "Edit the details of this domain.";
$text['description-domain-edit']['es-cl'] = "Editar detalles de este dominio.";
$text['description-domain-edit']['pt-pt'] = "Editar detalhes deste domínio.";
$text['description-domain-edit']['fr-fr'] = "Editer les détaisl de ce domaine. ";
$text['description-domain-edit']['pt-br'] = "Editar detalhes deste dominio";
$text['description-domain-edit']['pl'] = "Edytuj szczegóły tej domeny.";
$text['description-domain-edit']['sv-se'] = "Ändra detaljer för denna Domän.";
$text['description-domain-edit']['uk'] = "Редагування деталей домену";
$text['description-domain-edit']['de-at'] = "Die Details dieser Domain ändern.";
$text['description-domain-add']['en-us'] = "Enter the domain details below.";
$text['description-domain-add']['es-cl'] = "Ingrese los detalles del dominio a continuación.";
$text['description-domain-add']['pt-pt'] = "Introduza os detalhes do domínio abaixo.";
$text['description-domain-add']['fr-fr'] = "Entrer les détails du domaine ci-dessous.";
$text['description-domain-add']['pt-br'] = "Insira os detalhes do dominio abaixo";
$text['description-domain-add']['pl'] = "Poniżej wprowadź szczegóły domeny";
$text['description-domain-add']['sv-se'] = "Ange domändetaljer nedan.";
$text['description-domain-add']['uk'] = "Введіть дані домену нижче.";
$text['description-domain-add']['de-at'] = "Geben Sie die Domain Details unten an.";
<?php
$text['title-domains']['en-us'] = "Domains";
$text['title-domains']['es-cl'] = "Dominios";
$text['title-domains']['pt-pt'] = "Domínios";
$text['title-domains']['fr-fr'] = "Domaines";
$text['title-domains']['pt-br'] = "Dominios";
$text['title-domains']['pl'] = "Domeny";
$text['title-domains']['sv-se'] = "Domäner";
$text['title-domains']['uk'] = "Домени";
$text['title-domains']['de-at'] = "Domains";
$text['title-domain_setting-edit']['en-us'] = "Domain Setting";
$text['title-domain_setting-edit']['es-cl'] = "Configuraciones de dominio.";
$text['title-domain_setting-edit']['pt-pt'] = "Definições do Domínio";
$text['title-domain_setting-edit']['fr-fr'] = "Paramètres du domaine";
$text['title-domain_setting-edit']['pt-br'] = "Configurações do dominio";
$text['title-domain_setting-edit']['pl'] = "Ustawienia domen";
$text['title-domain_setting-edit']['sv-se'] = "Domän Inställning";
$text['title-domain_setting-edit']['uk'] = "Налаштування доменів";
$text['title-domain_setting-edit']['de-at'] = "Domain Einstellungen";
$text['title-domain_setting-add']['en-us'] = "Domain Setting Add";
$text['title-domain_setting-add']['es-cl'] = "Agregar Configuración de Dominio";
$text['title-domain_setting-add']['pt-pt'] = "Adicionar Definição ao Domínio";
$text['title-domain_setting-add']['fr-fr'] = "Ajouter un paramètre au domaine";
$text['title-domain_setting-add']['pt-br'] = "Adicionar configurações do dominio";
$text['title-domain_setting-add']['pl'] = "Dodaj ustawienie domeny";
$text['title-domain_setting-add']['sv-se'] = "Lägg Till Domän Inställning";
$text['title-domain_setting-add']['uk'] = "Додавання домену";
$text['title-domain_setting-add']['de-at'] = "Domain Einstellungen hinzufügen";
$text['title-domain-edit']['en-us'] = "Domain";
$text['title-domain-edit']['es-cl'] = "Dominio";
$text['title-domain-edit']['pt-pt'] = "Domínio";
$text['title-domain-edit']['fr-fr'] = "Domaines";
$text['title-domain-edit']['pt-br'] = "Dominio";
$text['title-domain-edit']['pl'] = "Domena";
$text['title-domain-edit']['sv-se'] = "Domän";
$text['title-domain-edit']['uk'] = "Домен";
$text['title-domain-edit']['de-at'] = "Domain";
$text['title-domain-add']['en-us'] = "Domain Add";
$text['title-domain-add']['es-cl'] = "Agregar Dominio";
$text['title-domain-add']['pt-pt'] = "Adicionar Domínio";
$text['title-domain-add']['fr-fr'] = "Ajouter un Domaine";
$text['title-domain-add']['pt-br'] = "Adicionar dominio";
$text['title-domain-add']['pl'] = "Dodaj domenę";
$text['title-domain-add']['sv-se'] = "Lägg Till Domän";
$text['title-domain-add']['uk'] = "Новий домен";
$text['title-domain-add']['de-at'] = "Domain hinzufügen";
$text['message-delete_failed']['en-us'] = "No Settings Checked";
$text['message-delete_failed']['es-cl'] = "No hay ajustes facturado";
$text['message-delete_failed']['pt-pt'] = "Nenhuma configuração marcada";
$text['message-delete_failed']['fr-fr'] = "Pas de paramètres enregistrés";
$text['message-delete_failed']['pt-br'] = "Falha na exclusão";
$text['message-delete_failed']['pl'] = "Próba usunięcia zakończyła się niepowodzeniem";
$text['message-delete_failed']['sv-se'] = "Ingen Inställning Markerad";
$text['message-delete_failed']['uk'] = "Налаштування не вказано";
$text['message-delete_failed']['de-at'] = "Keine Einstellungen ausgewählt";
$text['label-top']['en-us'] = "Top";
$text['label-top']['es-cl'] = "encima";
$text['label-top']['pt-pt'] = "Topo";
$text['label-top']['fr-fr'] = "Meilleur";
$text['label-top']['pt-br'] = "Topo";
$text['label-top']['pl'] = "Top";
$text['label-top']['he'] = "עליון";
$text['label-top']['uk'] = "топ";
$text['label-top']['sv-se'] = "Topp";
$text['label-top']['de-at'] = "Oben";
$text['label-top']['ro'] = "Top";
$text['label-top']['fa'] = "";
$text['label-top']['ar-eg'] = "أعلى";
$text['label-tools']['en-us'] = "Tools";
$text['label-tools']['es-cl'] = "Herramientas";
$text['label-tools']['pt-pt'] = "Ferramentas";
$text['label-tools']['fr-fr'] = "Outils";
$text['label-tools']['pt-br'] = "Ferramentas";
$text['label-tools']['pl'] = "Narzędzia";
$text['label-tools']['sv-se'] = "Verktyg";
$text['label-tools']['uk'] = "Параметри";
$text['label-tools']['de-at'] = "Werkzeug";
$text['label-text']['en-us'] = "Text";
$text['label-text']['es-cl'] = "Texto";
$text['label-text']['pt-pt'] = "Texto";
$text['label-text']['fr-fr'] = "Texte";
$text['label-text']['pt-br'] = "Texto";
$text['label-text']['pl'] = "Tekst";
$text['label-text']['he'] = "טֶקסט";
$text['label-text']['uk'] = "текст";
$text['label-text']['sv-se'] = "Text";
$text['label-text']['de-at'] = "Text";
$text['label-text']['ro'] = "Text";
$text['label-text']['fa'] = "";
$text['label-text']['ar-eg'] = "نص";
$text['label-static']['en-us'] = "Static";
$text['label-static']['es-cl'] = "Estático";
$text['label-static']['pt-pt'] = "Estático";
$text['label-static']['fr-fr'] = "Statique";
$text['label-static']['pt-br'] = "Estático";
$text['label-static']['pl'] = "Statyczny";
$text['label-static']['he'] = "סטָטִי";
$text['label-static']['uk'] = "статичний";
$text['label-static']['sv-se'] = "Statisk";
$text['label-static']['de-at'] = "Statisch";
$text['label-static']['ro'] = "Static";
$text['label-static']['fa'] = "";
$text['label-static']['ar-eg'] = "ساكن";
$text['label-right']['en-us'] = "Right";
$text['label-right']['es-cl'] = "Derecha";
$text['label-right']['pt-pt'] = "Certo";
$text['label-right']['fr-fr'] = "Droite";
$text['label-right']['pt-br'] = "Certo";
$text['label-right']['pl'] = "Dobrze";
$text['label-right']['he'] = "יָמִינָה";
$text['label-right']['uk'] = "правий";
$text['label-right']['sv-se'] = "Höger";
$text['label-right']['de-at'] = "Recht";
$text['label-right']['ro'] = "Dreapta";
$text['label-right']['fa'] = "";
$text['label-right']['ar-eg'] = "حق";
$text['label-parent_domain']['en-us'] = "Parent Domain";
$text['label-parent_domain']['es-cl'] = "Dominio de los Padres";
$text['label-parent_domain']['pt-pt'] = "Domínio Parent";
$text['label-parent_domain']['fr-fr'] = "Domaine Parent";
$text['label-parent_domain']['pt-br'] = "Dominio principal";
$text['label-parent_domain']['pl'] = "Domena nadrzędna";
$text['label-parent_domain']['sv-se'] = "Överordnad Domän";
$text['label-parent_domain']['uk'] = "Батьківський домен";
$text['label-parent_domain']['de-at'] = "Übergeordnete Domain";
$text['label-none']['en-us'] = "None";
$text['label-none']['es-cl'] = "Ninguna";
$text['label-none']['pt-pt'] = "Nenhum";
$text['label-none']['fr-fr'] = "Aucun";
$text['label-none']['pt-br'] = "Nenhum";
$text['label-none']['pl'] = "Żaden";
$text['label-none']['he'] = "אף לא אחד";
$text['label-none']['uk'] = "жоден";
$text['label-none']['sv-se'] = "Ingen";
$text['label-none']['de-at'] = "Keiner";
$text['label-none']['ro'] = "Nici unul";
$text['label-none']['fa'] = "";
$text['label-none']['ar-eg'] = "لا شيء";
$text['label-manage']['en-us'] = "Manage";
$text['label-manage']['es-cl'] = "Gestionar";
$text['label-manage']['pt-pt'] = "Gerir";
$text['label-manage']['fr-fr'] = "Gérer";
$text['label-manage']['pt-br'] = "Gerenciar";
$text['label-manage']['pl'] = "Zarządzaj";
$text['label-manage']['sv-se'] = "Hantera";
$text['label-manage']['uk'] = "Керувати";
$text['label-manage']['de-at'] = "Verwalten";
$text['label-left']['en-us'] = "Left";
$text['label-left']['es-cl'] = "Izquierda";
$text['label-left']['pt-pt'] = "Esquerda";
$text['label-left']['fr-fr'] = "À gauche";
$text['label-left']['pt-br'] = "Esquerda";
$text['label-left']['pl'] = "Lewo";
$text['label-left']['he'] = "שְׁמֹאל";
$text['label-left']['uk'] = "лівий";
$text['label-left']['sv-se'] = "Vänster";
$text['label-left']['de-at'] = "Links";
$text['label-left']['ro'] = "Stânga";
$text['label-left']['fa'] = "";
$text['label-left']['ar-eg'] = "اليسار";
$text['label-inline']['en-us'] = "Inline";
$text['label-inline']['es-cl'] = "En línea";
$text['label-inline']['pt-pt'] = "Na linha";
$text['label-inline']['fr-fr'] = "En ligne";
$text['label-inline']['pt-br'] = "Na linha";
$text['label-inline']['pl'] = "inline";
$text['label-inline']['he'] = "בשורה";
$text['label-inline']['uk'] = "В лінію";
$text['label-inline']['sv-se'] = "I kö";
$text['label-inline']['de-at'] = "In der Reihe";
$text['label-inline']['ro'] = "In linie";
$text['label-inline']['fa'] = "";
$text['label-inline']['ar-eg'] = "في النسق";
$text['label-image']['en-us'] = "Image";
$text['label-image']['es-cl'] = "Imagen";
$text['label-image']['pt-pt'] = "Imagem";
$text['label-image']['fr-fr'] = "image";
$text['label-image']['pt-br'] = "Imagem";
$text['label-image']['pl'] = "Obraz";
$text['label-image']['he'] = "תמונה";
$text['label-image']['uk'] = "зображення";
$text['label-image']['sv-se'] = "Bild";
$text['label-image']['de-at'] = "Image";
$text['label-image']['ro'] = "Imagine";
$text['label-image']['fa'] = "";
$text['label-image']['ar-eg'] = "صورة";
$text['label-fixed']['en-us'] = "Fixed";
$text['label-fixed']['es-cl'] = "Fijo";
$text['label-fixed']['pt-pt'] = "Fixo";
$text['label-fixed']['fr-fr'] = "Fixé";
$text['label-fixed']['pt-br'] = "Fixo";
$text['label-fixed']['pl'] = "Naprawiony";
$text['label-fixed']['he'] = "קָבוּעַ";
$text['label-fixed']['uk'] = "фіксований";
$text['label-fixed']['sv-se'] = "Fast";
$text['label-fixed']['de-at'] = "fest";
$text['label-fixed']['ro'] = "Fix";
$text['label-fixed']['fa'] = "";
$text['label-fixed']['ar-eg'] = "ثابت";
$text['label-domain']['en-us'] = "Domain";
$text['label-domain']['es-cl'] = "Dominio";
$text['label-domain']['pt-pt'] = "Domínio";
$text['label-domain']['fr-fr'] = "Domaine";
$text['label-domain']['pt-br'] = "Dominio";
$text['label-domain']['pl'] = "Domena";
$text['label-domain']['sv-se'] = "Domän";
$text['label-domain']['uk'] = "Домен";
$text['label-domain']['de-at'] = "Domain";
$text['label-center']['en-us'] = "Center";
$text['label-center']['es-cl'] = "Centrar";
$text['label-center']['pt-pt'] = "Centro";
$text['label-center']['fr-fr'] = "centre";
$text['label-center']['pt-br'] = "Centro";
$text['label-center']['pl'] = "Centrum";
$text['label-center']['he'] = "מֶרְכָּז";
$text['label-center']['uk'] = "центр";
$text['label-center']['sv-se'] = "Centrum";
$text['label-center']['de-at'] = "Center";
$text['label-center']['ro'] = "Centru";
$text['label-center']['fa'] = "";
$text['label-center']['ar-eg'] = "مركز";
$text['label-bottom']['en-us'] = "Bottom";
$text['label-bottom']['es-cl'] = "Fondo";
$text['label-bottom']['pt-pt'] = "Inferior";
$text['label-bottom']['fr-fr'] = "Bas";
$text['label-bottom']['pt-br'] = "Inferior";
$text['label-bottom']['pl'] = "Dolny";
$text['label-bottom']['he'] = "תַחתִית";
$text['label-bottom']['uk'] = "дно";
$text['label-bottom']['sv-se'] = "Botten";
$text['label-bottom']['de-at'] = "Boden";
$text['label-bottom']['ro'] = "Fund";
$text['label-bottom']['fa'] = "";
$text['label-bottom']['ar-eg'] = "أسفل";
$text['label-24-hour']['en-us'] = "24-Hour";
$text['label-24-hour']['es-cl'] = "24 horas";
$text['label-24-hour']['pt-pt'] = "24 horas";
$text['label-24-hour']['fr-fr'] = "24 heures";
$text['label-24-hour']['pt-br'] = "24 horas";
$text['label-24-hour']['pl'] = "24-godzinny";
$text['label-24-hour']['he'] = "24 שעות";
$text['label-24-hour']['uk'] = "24-годинний";
$text['label-24-hour']['sv-se'] = "24-timmars";
$text['label-24-hour']['de-at'] = "24 Stunden";
$text['label-24-hour']['ro'] = "24 de ore";
$text['label-24-hour']['fa'] = "";
$text['label-24-hour']['ar-eg'] = "24 ساعة";
$text['label-12-hour']['en-us'] = "12-Hour";
$text['label-12-hour']['es-cl'] = "12 horas";
$text['label-12-hour']['pt-pt'] = "12 horas";
$text['label-12-hour']['fr-fr'] = "12 heures";
$text['label-12-hour']['pt-br'] = "12 horas";
$text['label-12-hour']['pl'] = "12-godzinny";
$text['label-12-hour']['he'] = "12 שעות";
$text['label-12-hour']['uk'] = "12-годинний";
$text['label-12-hour']['sv-se'] = "12-timmars";
$text['label-12-hour']['de-at'] = "12 Stunden";
$text['label-12-hour']['ro'] = "12 de ore";
$text['label-12-hour']['fa'] = "";
$text['label-12-hour']['ar-eg'] = "12 ساعة";
$text['header-settings']['en-us'] = "Settings";
$text['header-settings']['es-cl'] = "Configuraciones";
$text['header-settings']['pt-pt'] = "Definições";
$text['header-settings']['fr-fr'] = "Paramètres";
$text['header-settings']['pt-br'] = "Configurações";
$text['header-settings']['pl'] = "Ustawienia";
$text['header-settings']['sv-se'] = "Inställning";
$text['header-settings']['uk'] = "Налаштування";
$text['header-settings']['de-at'] = "Einstellungen";
$text['header-domains']['en-us'] = "Domains";
$text['header-domains']['es-cl'] = "Dominios";
$text['header-domains']['pt-pt'] = "Domínios";
$text['header-domains']['fr-fr'] = "Domaines";
$text['header-domains']['pt-br'] = "Dominios";
$text['header-domains']['pl'] = "Domeny";
$text['header-domains']['sv-se'] = "Domäner";
$text['header-domains']['uk'] = "Домени";
$text['header-domains']['de-at'] = "Domains";
$text['header-domain_setting-edit']['en-us'] = "Domain Setting";
$text['header-domain_setting-edit']['es-cl'] = "Configuraciones de dominio";
$text['header-domain_setting-edit']['pt-pt'] = "Definições do Domínio";
$text['header-domain_setting-edit']['fr-fr'] = "Paramètres du domaine";
$text['header-domain_setting-edit']['pt-br'] = "Configurações do dominio";
$text['header-domain_setting-edit']['pl'] = "Ustawienia domeny";
$text['header-domain_setting-edit']['sv-se'] = "Domän Inställning";
$text['header-domain_setting-edit']['uk'] = "Налаштування домену";
$text['header-domain_setting-edit']['de-at'] = "Domain Einstellungen";
$text['header-domain_setting-add']['en-us'] = "Domain Setting Add";
$text['header-domain_setting-add']['es-cl'] = "Agregar Configuración de Dominio";
$text['header-domain_setting-add']['pt-pt'] = "Adicionar Definição ao Domínio";
$text['header-domain_setting-add']['fr-fr'] = "Ajouter un paramètre au domaine";
$text['header-domain_setting-add']['pt-br'] = "Adicionar configuração ao dominio";
$text['header-domain_setting-add']['pl'] = "Dodaj ustawienie domeny";
$text['header-domain_setting-add']['sv-se'] = "Lägg Till Domän Inställning";
$text['header-domain_setting-add']['uk'] = "Параметри домену";
$text['header-domain_setting-add']['de-at'] = "Domain Einstellungen hinzufügen";
$text['header-domain-edit']['en-us'] = "Domain";
$text['header-domain-edit']['es-cl'] = "Dominio";
$text['header-domain-edit']['pt-pt'] = "Domínio";
$text['header-domain-edit']['fr-fr'] = "Domaine";
$text['header-domain-edit']['pt-br'] = "Dominio";
$text['header-domain-edit']['pl'] = "Domena";
$text['header-domain-edit']['sv-se'] = "Domän";
$text['header-domain-edit']['uk'] = "Домен";
$text['header-domain-edit']['de-at'] = "Domain";
$text['header-domain-add']['en-us'] = "Domain Add";
$text['header-domain-add']['es-cl'] = "Agregar Dominio";
$text['header-domain-add']['pt-pt'] = "Adicionar Domínio";
$text['header-domain-add']['fr-fr'] = "Ajouter un Domaine";
$text['header-domain-add']['pt-br'] = "Adicionar dominio";
$text['header-domain-add']['pl'] = "Dodaj domenę";
$text['header-domain-add']['sv-se'] = "Lägg Till Domän";
$text['header-domain-add']['uk'] = "Новий домен";
$text['header-domain-add']['de-at'] = "Domain hinzufügen";
$text['description-setting_enabled']['en-us'] = "Set the status of this default setting.";
$text['description-setting_enabled']['es-cl'] = "Configure el estado de esta configuración predeterminada.";
$text['description-setting_enabled']['pt-pt'] = "Escolha o estado desta definição por omissão.";
$text['description-setting_enabled']['fr-fr'] = "Choisir l'état de ce paramètre";
$text['description-setting_enabled']['pt-br'] = "Escolha o estado desta configuração";
$text['description-setting_enabled']['pl'] = "Wybierz, aby włączyć lub wyłączyć tę funkcję.";
$text['description-setting_enabled']['sv-se'] = "Ange status på denna standard inställning.";
$text['description-setting_enabled']['uk'] = "Встановіть стан цього параметра за замовчуванням.";
$text['description-setting_enabled']['de-at'] = "Setzen Sie den Status dieser Standardeinstellung.";
$text['description-parent_domain']['en-us'] = "Set the parent domain.";
$text['description-parent_domain']['es-cl'] = "Establecer el dominio principal.";
$text['description-parent_domain']['pt-pt'] = "Defina o domínio pai.";
$text['description-parent_domain']['fr-fr'] = "Réglez le domaine parent.";
$text['description-parent_domain']['pt-br'] = "Defina o dominio pai";
$text['description-parent_domain']['pl'] = "Ustaw domenę nadrzędną";
$text['description-parent_domain']['sv-se'] = "Ange Överordan Domän.";
$text['description-parent_domain']['uk'] = "Вкажіть батьківський домен";
$text['description-parent_domain']['de-at'] = "Setzen Sie die übergeordnete Domain.";
$text['description-order']['en-us'] = "Set the order for this array element.";
$text['description-order']['es-cl'] = "Establecer el orden para este elemento de la matriz.";
$text['description-order']['pt-pt'] = "Definir a ordem para este elemento do array.";
$text['description-order']['fr-fr'] = "Définissez l'ordre de cet élément de tableau.";
$text['description-order']['pt-br'] = "Defina a ordem (indice) para este elemento da matriz";
$text['description-order']['pl'] = "Wybierz kolejność.";
$text['description-order']['sv-se'] = "Ställ in ordningen för detta element.";
$text['description-order']['uk'] = "Вкажіть порядок для масиву елементів";
$text['description-order']['de-at'] = "Wählen Sie die Reihenfolge des Array Elements.";
$text['description-name']['en-us'] = "Enter the name of the domain.";
$text['description-name']['es-cl'] = "Ingrese el nombre del dominio";
$text['description-name']['pt-pt'] = "Introduza o nome do domínio.";
$text['description-name']['fr-fr'] = "Entrer le nom du domaine.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pl'] = "Wprowadź nazwę";
$text['description-name']['sv-se'] = "Ange namn på Domänen.";
$text['description-name']['uk'] = "Вкажіть назву домену";
$text['description-name']['de-at'] = "Geben Sie den Namen dieser Domain an";
$text['description-domains']['en-us'] = "Control the list of domains to manage.";
$text['description-domains']['es-cl'] = "Controlar la lista de dominios a gestionar.";
$text['description-domains']['pt-pt'] = "Controlar a lista dos domínios a gerir";
$text['description-domains']['fr-fr'] = "Contrôler la liste des domaines à gérer";
$text['description-domains']['pt-br'] = "Gerencie a lista dos dominios";
$text['description-domains']['pl'] = "Zarządzanie listą domen.";
$text['description-domains']['sv-se'] = "Kontrollera lista med Domäner att hantera.";
$text['description-domains']['uk'] = "Список доменів для керування";
$text['description-domains']['de-at'] = "Eine Liste aller Domains.";
$text['description-domain_setting-edit']['en-us'] = "Edit a setting for this domain.";
$text['description-domain_setting-edit']['es-cl'] = "Edita una configuración para este dominio.";
$text['description-domain_setting-edit']['pt-pt'] = "Editar uma definição deste domínio.";
$text['description-domain_setting-edit']['fr-fr'] = "Editer un paramètre du domaine.";
$text['description-domain_setting-edit']['pt-br'] = "Editar uma configuração deste dominio";
$text['description-domain_setting-edit']['pl'] = "Edytuj ustawienia w tej domenie";
$text['description-domain_setting-edit']['sv-se'] = "Ändra en inställning för denna Domän.";
$text['description-domain_setting-edit']['uk'] = "Редагування параметрів для домену";
$text['description-domain_setting-edit']['de-at'] = "Eine Einstellung für diese Domain ändern.";
$text['description-domain_setting-add']['en-us'] = "Add a setting for this domain.";
$text['description-domain_setting-add']['es-cl'] = "Agregar una configuración para este dominio.";
$text['description-domain_setting-add']['pt-pt'] = "Adicionar uma definição a este domínio.";
$text['description-domain_setting-add']['fr-fr'] = "";
$text['description-domain_setting-add']['pt-br'] = "Adicionar uma configuração a este dominio";
$text['description-domain_setting-add']['pl'] = "Dodaj ustawienie w tej domenie";
$text['description-domain_setting-add']['sv-se'] = "Lägg Till en inställning för denna Domän.";
$text['description-domain_setting-add']['uk'] = "Додавання параметра для домену";
$text['description-domain_setting-add']['de-at'] = "Eine Einstellung für diese Domain hinzufügen.";
$text['description-domain_enabled']['en-us'] = "Set the status of the domain.";
$text['description-domain_enabled']['es-cl'] = "Ajuste el estado del dominio.";
$text['description-domain_enabled']['pt-pt'] = "Definir o estado do domínio.";
$text['description-domain_enabled']['fr-fr'] = "Régler le statut du domaine.";
$text['description-domain_enabled']['pt-br'] = "Definir o estado do dominio";
$text['description-domain_enabled']['pl'] = "Ustaw status tej domeny.";
$text['description-domain_enabled']['sv-se'] = "Ange status för Domänen.";
$text['description-domain_enabled']['uk'] = "Вкажіть стан домену";
$text['description-domain_enabled']['de-at'] = "Den Status der Domain setzen.";
$text['description-domain-edit']['en-us'] = "Edit the details of this domain.";
$text['description-domain-edit']['es-cl'] = "Editar detalles de este dominio.";
$text['description-domain-edit']['pt-pt'] = "Editar detalhes deste domínio.";
$text['description-domain-edit']['fr-fr'] = "Editer les détaisl de ce domaine. ";
$text['description-domain-edit']['pt-br'] = "Editar detalhes deste dominio";
$text['description-domain-edit']['pl'] = "Edytuj szczegóły tej domeny.";
$text['description-domain-edit']['sv-se'] = "Ändra detaljer för denna Domän.";
$text['description-domain-edit']['uk'] = "Редагування деталей домену";
$text['description-domain-edit']['de-at'] = "Die Details dieser Domain ändern.";
$text['description-domain-add']['en-us'] = "Enter the domain details below.";
$text['description-domain-add']['es-cl'] = "Ingrese los detalles del dominio a continuación.";
$text['description-domain-add']['pt-pt'] = "Introduza os detalhes do domínio abaixo.";
$text['description-domain-add']['fr-fr'] = "Entrer les détails du domaine ci-dessous.";
$text['description-domain-add']['pt-br'] = "Insira os detalhes do dominio abaixo";
$text['description-domain-add']['pl'] = "Poniżej wprowadź szczegóły domeny";
$text['description-domain-add']['sv-se'] = "Ange domändetaljer nedan.";
$text['description-domain-add']['uk'] = "Введіть дані домену нижче.";
$text['description-domain-add']['de-at'] = "Geben Sie die Domain Details unten an.";
?>

View File

@@ -1,164 +1,164 @@
<?php
/**
* events class provides an event system
*
* @method void load_plugins
* @method dynamic __call
*/
class events {
/**
* @var obj $db Database connnection object
* @var array $plugins Store available plugin classes
* @var array $methods store methods found on each plugin
* @var array $headers headers provide information about the events
* @var array $required array of items that are required
* @var string $content optional additional data about the event
*/
public $db;
private $plugins = array();
private $methods = array();
public $headers = array();
public $required = array();
private $content;
/**
* Called when the object is created
* Creates the database connection object
*/
public function __construct() {
//create the database connection
include "root.php";
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$this->db = $database->db;
return $this->db = $database->db;
//load the plugins
$this->load_plugins();
//add values to the required array
$this->required['headers'][] = "content-type";
$this->required['headers'][] = "date";
$this->required['headers'][] = "host";
$this->required['headers'][] = "status";
$this->required['headers'][] = "app_name";
$this->required['headers'][] = "app_uuid";
$this->required['headers'][] = "domain_uuid";
$this->required['headers'][] = "user_uuid";
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* This function will load all available plugins into the memory
* Rules:
* plugins are stored in ./plugins
* plugin class is named plugin_<name>
* php file is named <name>.php
*/
private function load_plugins() {
$base = realpath(dirname(__FILE__)) . "/plugins";
$this->plugins = glob($base . "/*.php");
foreach($this->plugins as $plugin) {
//include the plugin php file and define the class name
include_once $plugin;
$plugin_name = basename($plugin, ".php");
$class_name = "plugin_".$plugin_name;
//create the plugin object so that it can be stored and called later
$obj = new $class_name();
$this->plugins[$plugin_name] = $obj;
//store all methods found in the plugin
foreach (get_class_methods($obj) as $method ) {
$this->methods[$method] = $plugin_name;
}
}
}
/**
* Run the plugin method
* @param strint $method
* @param string $args
*
*/
public function __call($method, $args) {
if (! key_exists($method, $this->methods)) {
throw new Exception ("Call to undefined method: " . $method);
}
array_unshift($args, $this);
try {
$obj = call_user_func_array(array($this->plugins[$this->methods[$method]], $method), $args);
}
catch (Exception $e) {
echo 'Exception: ', $e->getMessage(), "\n";
}
return $obj;
}
/**
* Set a new event header
* @param string $category
* @param string $name
* @param string $value
*/
public function set_header($category, $name, $value) {
$this->headers[$category][$name] = $value;
}
/**
* check for required headers
* @param string $category
* @return bolean $value
*/
public function check_required($category) {
foreach ($this->required['headers'] as &$header) {
if ($category == $header) {
return true;
}
}
return false;
}
/**
* Send the event
*/
public function send() {
//check for required headers are present return false if any are missing
foreach ($this->headers as &$header) {
if (!$this->check_required($header)) {
return false;
}
}
//$this->content;
}
/**
* Serialize the event headers
* @param string $type values: array, json
*/
public function serialize($type) {
$array = $this->headers;
if ($type == "array") {
return $array;
} elseif ($type == "json") {
return json_encode($array);
}
}
}
<?php
/**
* events class provides an event system
*
* @method void load_plugins
* @method dynamic __call
*/
class events {
/**
* @var obj $db Database connnection object
* @var array $plugins Store available plugin classes
* @var array $methods store methods found on each plugin
* @var array $headers headers provide information about the events
* @var array $required array of items that are required
* @var string $content optional additional data about the event
*/
public $db;
private $plugins = array();
private $methods = array();
public $headers = array();
public $required = array();
private $content;
/**
* Called when the object is created
* Creates the database connection object
*/
public function __construct() {
//create the database connection
include "root.php";
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$this->db = $database->db;
return $this->db = $database->db;
//load the plugins
$this->load_plugins();
//add values to the required array
$this->required['headers'][] = "content-type";
$this->required['headers'][] = "date";
$this->required['headers'][] = "host";
$this->required['headers'][] = "status";
$this->required['headers'][] = "app_name";
$this->required['headers'][] = "app_uuid";
$this->required['headers'][] = "domain_uuid";
$this->required['headers'][] = "user_uuid";
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* This function will load all available plugins into the memory
* Rules:
* plugins are stored in ./plugins
* plugin class is named plugin_<name>
* php file is named <name>.php
*/
private function load_plugins() {
$base = realpath(dirname(__FILE__)) . "/plugins";
$this->plugins = glob($base . "/*.php");
foreach($this->plugins as $plugin) {
//include the plugin php file and define the class name
include_once $plugin;
$plugin_name = basename($plugin, ".php");
$class_name = "plugin_".$plugin_name;
//create the plugin object so that it can be stored and called later
$obj = new $class_name();
$this->plugins[$plugin_name] = $obj;
//store all methods found in the plugin
foreach (get_class_methods($obj) as $method ) {
$this->methods[$method] = $plugin_name;
}
}
}
/**
* Run the plugin method
* @param strint $method
* @param string $args
*
*/
public function __call($method, $args) {
if (! key_exists($method, $this->methods)) {
throw new Exception ("Call to undefined method: " . $method);
}
array_unshift($args, $this);
try {
$obj = call_user_func_array(array($this->plugins[$this->methods[$method]], $method), $args);
}
catch (Exception $e) {
echo 'Exception: ', $e->getMessage(), "\n";
}
return $obj;
}
/**
* Set a new event header
* @param string $category
* @param string $name
* @param string $value
*/
public function set_header($category, $name, $value) {
$this->headers[$category][$name] = $value;
}
/**
* check for required headers
* @param string $category
* @return bolean $value
*/
public function check_required($category) {
foreach ($this->required['headers'] as &$header) {
if ($category == $header) {
return true;
}
}
return false;
}
/**
* Send the event
*/
public function send() {
//check for required headers are present return false if any are missing
foreach ($this->headers as &$header) {
if (!$this->check_required($header)) {
return false;
}
}
//$this->content;
}
/**
* Serialize the event headers
* @param string $type values: array, json
*/
public function serialize($type) {
$array = $this->headers;
if ($type == "array") {
return $array;
} elseif ($type == "json") {
return json_encode($array);
}
}
}
?>

View File

@@ -1,421 +1,421 @@
<?php
$text['title-install']['en-us'] = "Install";
$text['title-install']['es-cl'] = "Instale";
$text['title-install']['pt-pt'] = "Installation";
$text['title-install']['fr-fr'] = "Installation";
$text['title-install']['pt-br'] = "Installation";
$text['title-install']['pl'] = "Zainstalować";
$text['title-install']['sv-se'] = "Installera";
$text['title-install']['uk'] = "Перший раз Встановіть";
$text['title-install']['de-at'] = "Erstinstallation";
$text['title-install']['ar-eg'] = "للمرة الأولى قم بتثبيت";
$text['title-detected_configuration']['en-us'] = "Detected Configuration";
$text['title-detected_configuration']['es-cl'] = "Configuración detectado";
$text['title-detected_configuration']['pt-pt'] = "Configuração detectado";
$text['title-detected_configuration']['fr-fr'] = "Detected Configuration";
$text['title-detected_configuration']['pt-br'] = "Configuração detectado";
$text['title-detected_configuration']['pl'] = "Wykryto Konfiguracja";
$text['title-detected_configuration']['sv-se'] = "Detekterad Konfiguration";
$text['title-detected_configuration']['uk'] = "виявлено Конфігурація";
$text['title-detected_configuration']['de-at'] = "Erkannt Configuration";
$text['title-detected_configuration']['ar-eg'] = "تكوين الكشف عن";
$text['title-assumed_configuration']['en-us'] = "Assumed Configuration";
$text['title-assumed_configuration']['es-cl'] = "Configuración adoptada";
$text['title-assumed_configuration']['pt-pt'] = "Assumed Configuration";
$text['title-assumed_configuration']['fr-fr'] = "Configuration supposée";
$text['title-assumed_configuration']['pt-br'] = "Assumed Configuration";
$text['title-assumed_configuration']['pl'] = "Zakładana Konfiguracja";
$text['title-assumed_configuration']['sv-se'] = "Antagen Konfiguration";
$text['title-assumed_configuration']['uk'] = "передбачуваний Конфігурація";
$text['title-assumed_configuration']['de-at'] = "Angenommene Configuration";
$text['title-assumed_configuration']['ar-eg'] = "تكوين المفترضة";
$text['label-ft-install']['en-us'] = "First Time Install";
$text['label-ft-install']['es-cl'] = "La primera instalación";
$text['label-ft-install']['pt-pt'] = "First Time Install";
$text['label-ft-install']['fr-fr'] = "Première installation";
$text['label-ft-install']['pt-br'] = "First Time Install";
$text['label-ft-install']['pl'] = "Zainstalować";
$text['label-ft-install']['sv-se'] = "Första gången Installera";
$text['label-ft-install']['uk'] = "Перший раз Встановіть";
$text['label-ft-install']['de-at'] = "Erstinstallation";
$text['label-ft-install']['ar-eg'] = "للمرة الأولى قم بتثبيت";
$text['description-ft-install']['en-us'] = "Perform all actions for a First Time Install";
$text['description-ft-install']['es-cl'] = "Realizar todas las acciones para una primera instalación";
$text['description-ft-install']['pt-pt'] = "Executar todas as ações para uma primeira vez Instalar";
$text['description-ft-install']['fr-fr'] = "Effectuer toutes les actions pour une première installation";
$text['description-ft-install']['pt-br'] = "Executar todas as ações para uma primeira vez Instalar";
$text['description-ft-install']['pl'] = "Wykonać wszystkie czynności dla pierwszy raz zainstalować";
$text['description-ft-install']['sv-se'] = "Utföra alla åtgärder för första gången Installera";
$text['description-ft-install']['uk'] = "Виконайте всі дії для першого разу Встановіть";
$text['description-ft-install']['de-at'] = "Führen Sie alle Aktionen für einen ersten Mal installieren";
$text['description-ft-install']['ar-eg'] = "تنفيذ كافة الإجراءات لأول مرة التثبيت";
$text['label-add-switch']['en-us'] = "Add a new switch";
$text['label-add-switch']['es-cl'] = "Añadir un nuevo conmutador";
$text['label-add-switch']['pt-pt'] = "Adicionar um novo switch";
$text['label-add-switch']['fr-fr'] = "Ajouter un nouveau commutateur";
$text['label-add-switch']['pt-br'] = "Adicionar um novo switch";
$text['label-add-switch']['pl'] = "Dodaj nowy przełącznik";
$text['label-add-switch']['sv-se'] = "Lägg till en ny switch";
$text['label-add-switch']['uk'] = "Додати новий перемикач";
$text['label-add-switch']['de-at'] = "Fügen Sie einen neuen Schalter";
$text['label-add-switch']['ar-eg'] = "إضافة مفتاح جديد";
$text['label-select_language']['en-us'] = "Language";
$text['label-select_language']['es-cl'] = "Idioma";
$text['label-select_language']['pt-pt'] = "Idioma";
$text['label-select_language']['fr-fr'] = "Langue";
$text['label-select_language']['pt-br'] = "Idioma";
$text['label-select_language']['pl'] = "Język";
$text['label-select_language']['sv-se'] = "Språk";
$text['label-select_language']['uk'] = "Мова";
$text['label-select_language']['de-at'] = "Sprache";
$text['label-select_language']['ar-eg'] = "لغة";
$text['label-event_host']['en-us'] = "Host address";
$text['label-event_host']['es-cl'] = "Dirección de host";
$text['label-event_host']['pt-pt'] = "Endereço do host";
$text['label-event_host']['fr-fr'] = "Adresse de l'hôte";
$text['label-event_host']['pt-br'] = "Endereço do host";
$text['label-event_host']['pl'] = "Adres hosta";
$text['label-event_host']['sv-se'] = "Host adress";
$text['label-event_host']['uk'] = "адреса хоста";
$text['label-event_host']['de-at'] = "Host-Adresse";
$text['label-event_host']['ar-eg'] = "عنوان المضيف";
$text['label-event_port']['en-us'] = "Port";
$text['label-event_port']['es-cl'] = "Puerto";
$text['label-event_port']['pt-pt'] = "Porto";
$text['label-event_port']['fr-fr'] = "Port";
$text['label-event_port']['pt-br'] = "Porta";
$text['label-event_port']['pl'] = "Port";
$text['label-event_port']['sv-se'] = "Port";
$text['label-event_port']['uk'] = "Порт";
$text['label-event_port']['de-at'] = "Port";
$text['label-event_port']['ar-eg'] = "منفذ";
$text['label-event_password']['en-us'] = "Password";
$text['label-event_password']['es-cl'] = "Contreseña";
$text['label-event_password']['pt-pt'] = "Palavra-Chave";
$text['label-event_password']['fr-fr'] = "Mot de Passe";
$text['label-event_password']['pt-br'] = "Senha";
$text['label-event_password']['pl'] = "Hasło";
$text['label-event_password']['sv-se'] = "Lösenord";
$text['label-event_password']['uk'] = "Пароль";
$text['label-event_password']['de-at'] = "Passwort";
$text['label-event_password']['ar-eg'] = "كلمة السر";
$text['label-username']['en-us'] = "Username";
$text['label-username']['es-cl'] = "Nombre de usuario";
$text['label-username']['pt-pt'] = "Utilizador";
$text['label-username']['fr-fr'] = "Utilisateur";
$text['label-username']['pt-br'] = "Nome do Usuário";
$text['label-username']['pl'] = "Użytkownik";
$text['label-username']['sv-se'] = "Användarnamn";
$text['label-username']['uk'] = "Ім’я користувача";
$text['label-username']['de-at'] = "Benutzername";
$text['label-username']['ar-eg'] = "اسم المستخدم";
$text['label-port']['en-us'] = "Port";
$text['label-port']['es-cl'] = "Puerto";
$text['label-port']['pt-pt'] = "Porto";
$text['label-port']['fr-fr'] = "Port";
$text['label-port']['pt-br'] = "Porta";
$text['label-port']['pl'] = "Port";
$text['label-port']['sv-se'] = "Port";
$text['label-port']['uk'] = "Порт";
$text['label-port']['de-at'] = "Port";
$text['label-port']['ar-eg'] = "منفذ";
$text['label-path']['en-us'] = "Path";
$text['label-path']['es-cl'] = "Ruta";
$text['label-path']['pt-pt'] = "Caminho";
$text['label-path']['fr-fr'] = "Chemin";
$text['label-path']['pt-br'] = "Caminho";
$text['label-path']['pl'] = "Ścieżka";
$text['label-path']['sv-se'] = "Sökväg";
$text['label-path']['uk'] = "Шлях";
$text['label-path']['de-at'] = "Pfad";
$text['label-path']['ar-eg'] = "مسار";
$text['label-host']['en-us'] = "Host";
$text['label-host']['es-cl'] = "Host";
$text['label-host']['pt-pt'] = "Máquina";
$text['label-host']['fr-fr'] = "Hôte";
$text['label-host']['pt-br'] = "Máquina";
$text['label-host']['pl'] = "Host";
$text['label-host']['sv-se'] = "Värd";
$text['label-host']['uk'] = "Хост";
$text['label-host']['de-at'] = "Host";
$text['label-host']['ar-eg'] = "مضيف";
$text['label-driver']['en-us'] = "Driver";
$text['label-driver']['es-cl'] = "Controlador";
$text['label-driver']['pt-pt'] = "Driver";
$text['label-driver']['fr-fr'] = "Driver";
$text['label-driver']['pt-br'] = "Driver";
$text['label-driver']['pl'] = "Sterownik";
$text['label-driver']['sv-se'] = "Drivrutin";
$text['label-driver']['uk'] = "Драйвер";
$text['label-driver']['de-at'] = "Treiber";
$text['label-driver']['ar-eg'] = "سائق";
$text['header-install']['en-us'] = "Install";
$text['header-install']['es-cl'] = "Instalar";
$text['header-install']['pt-pt'] = "Instalar";
$text['header-install']['fr-fr'] = "Installer";
$text['header-install']['pt-br'] = "Instalar";
$text['header-install']['pl'] = "Zainstalować";
$text['header-install']['sv-se'] = "Installera";
$text['header-install']['uk'] = "встановлювати";
$text['header-install']['de-at'] = "Installieren";
$text['header-install']['ar-eg'] = "تثبيت";
$text['header-select_language']['en-us'] = "Select Language";
$text['header-select_language']['es-cl'] = "Selecciona idioma";
$text['header-select_language']['pt-pt'] = "Selecione o idioma";
$text['header-select_language']['fr-fr'] = "Sélectionnez la langue";
$text['header-select_language']['pt-br'] = "Selecione o idioma";
$text['header-select_language']['pl'] = "Wybierz język";
$text['header-select_language']['sv-se'] = "Välj språk";
$text['header-select_language']['uk'] = "вибір мови";
$text['header-select_language']['de-at'] = "Sprache wählen";
$text['header-select_language']['ar-eg'] = "اختار اللغة";
$text['header-event_socket']['en-us'] = "Event Socket Configuration";
$text['header-event_socket']['es-cl'] = "Configuración del zócalo evento";
$text['header-event_socket']['pt-pt'] = "Configuração soquete evento";
$text['header-event_socket']['fr-fr'] = "Event Configuration Socket";
$text['header-event_socket']['pt-br'] = "Configuração soquete evento";
$text['header-event_socket']['pl'] = "Zdarzenie Gniazdo Konfiguracja";
$text['header-event_socket']['sv-se'] = "Händelse Socket Konfiguration";
$text['header-event_socket']['uk'] = "Конфігурація гніздо Подія";
$text['header-event_socket']['de-at'] = "Veranstaltungssockelkonfiguration";
$text['header-event_socket']['ar-eg'] = "تكوين المقبس الحدث";
$text['header-config_detail']['en-us'] = "Admin Configuration";
$text['header-config_detail']['es-cl'] = "Configuración de administración";
$text['header-config_detail']['pt-pt'] = "Configuração de administrador";
$text['header-config_detail']['fr-fr'] = "Configuration Admin";
$text['header-config_detail']['pt-br'] = "Configuração de administrador";
$text['header-config_detail']['pl'] = "Konfiguracja Admin";
$text['header-config_detail']['sv-se'] = "Admin Konfiguration";
$text['header-config_detail']['uk'] = "конфігурація Адмін";
$text['header-config_detail']['de-at'] = "Admin-Konfiguration";
$text['header-config_detail']['ar-eg'] = "تكوين المشرف";
$text['header-config_database']['en-us'] = "Database Configuration";
$text['header-config_database']['es-cl'] = "Configuración de la base de datos";
$text['header-config_database']['pt-pt'] = "Configuration Database";
$text['header-config_database']['fr-fr'] = "Configuration de base de données";
$text['header-config_database']['pt-br'] = "Configuration Database";
$text['header-config_database']['pl'] = "Konfiguracja bazy danych";
$text['header-config_database']['sv-se'] = "Databaskonfiguration ";
$text['header-config_database']['uk'] = "конфігурація бази даних";
$text['header-config_database']['de-at'] = "Datenbankkonfiguration ";
$text['header-config_database']['ar-eg'] = "تكوين قاعدة بيانات";
$text['header-installing']['en-us'] = "Executing Install";
$text['header-installing']['es-cl'] = "Instalar la ejecución";
$text['header-installing']['pt-pt'] = "Execução Instalar";
$text['header-installing']['fr-fr'] = "Installez exécution";
$text['header-installing']['pt-br'] = "Execução Instalar";
$text['header-installing']['pl'] = "Wykonywanie Install";
$text['header-installing']['sv-se'] = "Exekvera Installera";
$text['header-installing']['uk'] = "виконання Встановіть";
$text['header-installing']['de-at'] = "Ausführen Installieren";
$text['header-installing']['ar-eg'] = "تنفيذ التثبيت";
$text['description-event_host']['en-us'] = "Enter the event socket host name or IP address.";
$text['description-event_host']['es-cl'] = "Introduzca el nombre de host toma evento o dirección IP.";
$text['description-event_host']['pt-pt'] = "Digite o nome do host tomada evento ou endereço IP.";
$text['description-event_host']['fr-fr'] = "Entrez le socket nom d'hôte de l'événement ou de l'adresse IP.";
$text['description-event_host']['pt-br'] = "Digite o nome do host tomada evento ou endereço IP.";
$text['description-event_host']['pl'] = "Wprowadź nazwę hosta gniazda wydarzenie lub adres IP.";
$text['description-event_host']['sv-se'] = "Ange händelsen uttag värdnamn eller IP-adress.";
$text['description-event_host']['uk'] = "Введіть проведення сокета ім'я хоста або IP-адресу.";
$text['description-event_host']['de-at'] = "Geben Sie das Ereignis Buchse Hostnamen oder die IP-Adresse .";
$text['description-event_host']['ar-eg'] = "أدخل اسم المضيف مأخذ الحدث.";
$text['description-event_port']['en-us'] = "Enter the event socket port number.";
$text['description-event_port']['es-cl'] = "Introduzca el número de puerto de socket evento.";
$text['description-event_port']['pt-pt'] = "Digite o número do evento porta de soquete.";
$text['description-event_port']['fr-fr'] = "Entrez le numéro cas de port du socket.";
$text['description-event_port']['pt-br'] = "Digite o número do evento porta de soquete.";
$text['description-event_port']['pl'] = "Wprowadź numer portu gniazda zdarzenia.";
$text['description-event_port']['sv-se'] = "Ange händelsen socket portnummer.";
$text['description-event_port']['uk'] = "Введіть номер подія гніздо порту.";
$text['description-event_port']['de-at'] = "Geben Sie das Ereignis Socket-Portnummer.";
$text['description-event_port']['ar-eg'] = "أدخل رقم الحدث ميناء المقبس.";
$text['description-event_password']['en-us'] = "Enter the event socket password.";
$text['description-event_password']['es-cl'] = "Introduzca la toma evento contraseña.";
$text['description-event_password']['pt-pt'] = "Digite tomada a senha evento.";
$text['description-event_password']['fr-fr'] = "Saisissez la prise de mot de passe de l'événement.";
$text['description-event_password']['pt-br'] = "Digite tomada a senha evento.";
$text['description-event_password']['pl'] = "Wprowadź hasło gniazda zdarzenia.";
$text['description-event_password']['sv-se'] = "Ange händelsen uttag lösenord.";
$text['description-event_password']['uk'] = "Введіть гніздо пароль подією.";
$text['description-event_password']['de-at'] = "Geben Sie das Ereignis Passwort Steckdose.";
$text['description-event_password']['ar-eg'] = "أدخل كلمة المرور مأخذ الحدث.";
$text['description-username']['en-us'] = "Enter the database username.";
$text['description-username']['es-cl'] = "Ingrese el nombre de usuario de la base de datos.";
$text['description-username']['pt-pt'] = "Introduza o utilizador da base de dados.";
$text['description-username']['fr-fr'] = "Entrer le nom d'utilisateur de la Base de données.";
$text['description-username']['pt-br'] = "Insira o nome do usuário";
$text['description-username']['pl'] = "Wprowadź nazwę użytkownika";
$text['description-username']['sv-se'] = "Ange databasen användarnamn här.";
$text['description-username']['uk'] = "Введіть ім’я користувача бази даних";
$text['description-username']['de-at'] = "Geben Sie den Datenbank Benutzernamen an.";
$text['description-username']['ar-eg'] = "أدخل اسم المستخدم هنا";
$text['description-type']['en-us'] = "Select the database type.";
$text['description-type']['es-cl'] = "Seleccione el tipo de base de datos";
$text['description-type']['pt-pt'] = "Escolha o tipo de base de dados.";
$text['description-type']['fr-fr'] = "Choisir le type de Base de données.";
$text['description-type']['pt-br'] = "Introduza o tipo de definição.";
$text['description-type']['pl'] = "Wprowadź rodzaj bazy danych";
$text['description-type']['sv-se'] = "Välj databastyp";
$text['description-type']['uk'] = "Виберіть тип бази даних";
$text['description-type']['de-at'] = "Wählen Sie den Datenbank Typ.";
$text['description-type']['ar-eg'] = "إختر نوع قاعدة البيانات";
$text['description-port']['en-us'] = "Enter the port number.";
$text['description-port']['es-cl'] = "Ingrese el número del puerto.";
$text['description-port']['pt-pt'] = "Introduza o número do porto.";
$text['description-port']['fr-fr'] = "Entrer le numéro de port.";
$text['description-port']['pt-br'] = "Insira o número da porta";
$text['description-port']['pl'] = "Wprowadź numer portu";
$text['description-port']['sv-se'] = "Ange portnummer";
$text['description-port']['uk'] = "Введіть номер порта";
$text['description-port']['de-at'] = "Geben Sie die Port Nummer an.";
$text['description-port']['ar-eg'] = "أدخل رقم المنفذ";
$text['description-path']['en-us'] = "Enter the database file path (SQLite only).";
$text['description-path']['es-cl'] = "Ingrese la ruta al archivo de datos (solo SQLite).";
$text['description-path']['pt-pt'] = "Introduza o caminho da base de dados (apenas SQLite)";
$text['description-path']['fr-fr'] = "Entrer le chemin du fichier Base de données (Spécifique SQLite).";
$text['description-path']['pt-br'] = "Insira o caminho da base de dados (SQLite)";
$text['description-path']['pl'] = "Wprowadź ścieżkę do pliku bazy danych (tylko SQLite)";
$text['description-path']['sv-se'] = "Ange databasens sökväg (gäller endast SQLite).";
$text['description-path']['uk'] = "Вкажіть шлях до файлу бази даних (тільки SQLite).";
$text['description-path']['de-at'] = "Geben Sie den Datenbank Pfad an (nur für SQLite).";
$text['description-path']['ar-eg'] = "أدخل مسار ملف قاعدة البيانات (سكليتي فقط).";
$text['description-password']['en-us'] = "Enter the database password.";
$text['description-password']['es-cl'] = "Ingrese la contraseña de la base de datos.";
$text['description-password']['pt-pt'] = "Introduza a palavra-chave da base de dados.";
$text['description-password']['fr-fr'] = "Entrer le mot de passe pour la Base de données.";
$text['description-password']['pt-br'] = "Introduza a senha";
$text['description-password']['pl'] = "Wpisz hasło";
$text['description-password']['sv-se'] = "Ange databasens lösenord.";
$text['description-password']['uk'] = "Введіть пароль бази даних.";
$text['description-password']['de-at'] = "Geben Sie das Datenbank Passwort ein.";
$text['description-password']['ar-eg'] = "أدخل الرقم السري الخاص بقاعدة البيانات";
$text['description-name']['en-us'] = "Enter the database name.";
$text['description-name']['es-cl'] = "Ingrese el nombre de la base de datos.";
$text['description-name']['pt-pt'] = "Introduza o nome da base de dados.";
$text['description-name']['fr-fr'] = "Entrer le nom de la Base de données.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pl'] = "Wprowadź nazwę bazy danych.";
$text['description-name']['sv-se'] = "Ange databasens namn.";
$text['description-name']['uk'] = "Введіть ім'я бази даних.";
$text['description-name']['de-at'] = "Geben Sie den Namen der Datenbank an";
$text['description-name']['ar-eg'] = "أدخل إسم قاعدة البيانات";
$text['description-host']['en-us'] = "Enter the host name.";
$text['description-host']['es-cl'] = "Ingrese el nombre de host";
$text['description-host']['pt-pt'] = "Introduza o nome da máquina.";
$text['description-host']['fr-fr'] = "Entrer le nom de l'hôte.";
$text['description-host']['pt-br'] = "Insira o nome da máquina ";
$text['description-host']['pl'] = "Wprowadź nazwę hosta.";
$text['description-host']['sv-se'] = "Ange värdnamnet";
$text['description-host']['uk'] = "Введіть ім'я хоста.";
$text['description-host']['de-at'] = "Geben Sie den Host Namen ein.";
$text['description-host']['ar-eg'] = "أدخل إسم المضيف";
$text['description-driver']['en-us'] = "Select the database driver.";
$text['description-driver']['es-cl'] = "Seleccione un controlador de base de datos.";
$text['description-driver']['pt-pt'] = "Escolha o driver da base de dados";
$text['description-driver']['fr-fr'] = "Choisir le driver de la Base de données.";
$text['description-driver']['pt-br'] = "Escolha o driver da base de dados";
$text['description-driver']['pl'] = "Wybierz sterownik bazy danych.";
$text['description-driver']['sv-se'] = "Välj databas drivrutin.";
$text['description-driver']['uk'] = "Виберіть драйвер бази даних.";
$text['description-driver']['de-at'] = "Wählen Sie den Datenbank Treiber.";
$text['description-driver']['ar-eg'] = "حدد برنامج تشغيل قاعدة البيانات.";
$text['description-install']['en-us'] = "Select the action below you wish to perform.";
$text['description-install']['es-cl'] = "Seleccione las accion a continuación que desea realizar.";
$text['description-install']['pt-pt'] = "Selecione as ações abaixo você deseja executar."; //action signular needed
$text['description-install']['fr-fr'] = "Sélectionnez les action ci-dessous que vous souhaitez effectuer.";
$text['description-install']['pt-br'] = "Seleciona as ações abaixo que deseja executar "; //action signular needed
$text['description-install']['pl'] = "Wybierz opcje, które chcesz wykonać."; //action signular needed
$text['description-install']['sv-se'] = "Välj de åtgärder nedan som du vill utföra."; //action signular needed
$text['description-install']['uk'] = "Виберіть об’єкти для оновлення"; //action signular needed
$text['description-install']['de-at'] = "Wählen Sie eine Aktion."; //action signular needed
$text['description-install']['ar-eg'] = "حدد الإجراء أدناه كنت ترغب في القيام بها.";
$text['description-database-edit']['en-us'] = "Database connection information.";
$text['description-database-edit']['es-cl'] = "Información de conexión a base de datos.";
$text['description-database-edit']['pt-pt'] = "Informação da ligação à base de dados.";
$text['description-database-edit']['fr-fr'] = "Informations de connexion à la Base";
$text['description-database-edit']['pt-br'] = "Informações da ligação na base de dados";
$text['description-database-edit']['pl'] = "Informacje o połączeniach z bazą danych.";
$text['description-database-edit']['sv-se'] = "Information om Databasanslutning";
$text['description-database-edit']['uk'] = "інформація про підключення до бази даних.";
$text['description-database-edit']['de-at'] = "Datenbank Verbindungs Information.";
$text['description-database-edit']['ar-eg'] = "بيانات الإتصال الخاص بقاعدة البيانات";
$text['description-database-add']['en-us'] = "Database connection information.";
$text['description-database-add']['es-cl'] = "Información de conexión a base de datos.";
$text['description-database-add']['pt-pt'] = "Informação da ligação à base de dados.";
$text['description-database-add']['fr-fr'] = "Informations de connexion à la Base.";
$text['description-database-add']['pt-br'] = "Informações da ligação na base de dados";
$text['description-database-add']['pl'] = "Informacje o połączeniach z bazą danych.";
$text['description-database-add']['sv-se'] = "Information om Databasanslutning";
$text['description-database-add']['uk'] = "інформація про підключення до бази даних.";
$text['description-database-add']['de-at'] = "Datenbank Verbindungs Information.";
$text['description-database-add']['ar-eg'] = "بيانات الإتصال الخاص بقاعدة البيانات";
$text['description-select_language']['en-us'] = "Please select the language you want to use";
$text['description-select_language']['es-cl'] = "Por favor, seleccione el idioma que desea utilizar";
$text['description-select_language']['pt-pt'] = "Por favor, selecione o idioma que deseja usar";
$text['description-select_language']['fr-fr'] = "S'il vous plaît choisir la langue que vous souhaitez utiliser";
$text['description-select_language']['pt-br'] = "Por favor, selecione o idioma que deseja usar";
$text['description-select_language']['pl'] = "Wybierz język, którego chcesz używać";
$text['description-select_language']['sv-se'] = "Välj det språk du vill använda";
$text['description-select_language']['uk'] = "Виберіть мову, який ви хочете використовувати";
$text['description-select_language']['de-at'] = "Bitte wählen Sie die gewünschte Sprache zu verwenden";
$text['description-select_language']['ar-eg'] = "يرجى اختيار اللغة التي تريد استخدامها";
$text['button-detect']['en-us'] = "Detect Configuration";
$text['button-detect']['es-cl'] = "Detectar Configuración";
$text['button-detect']['pt-pt'] = "Detectar Configuração";
$text['button-detect']['fr-fr'] = "Détecter Configuration";
$text['button-detect']['pt-br'] = "Detectar Configuração";
$text['button-detect']['pl'] = "Wykrywanie Konfiguracja";
$text['button-detect']['sv-se'] = "Detektera Konfiguration";
$text['button-detect']['uk'] = "виявлення Конфігурація";
$text['button-detect']['de-at'] = "Detect-Konfiguration";
$text['button-detect']['ar-eg'] = "كشف تكوين";
$text['button-select']['en-us'] = "Select";
$text['button-select']['es-cl'] = "Seleccionar";
$text['button-select']['pt-pt'] = "Selecionar";
$text['button-select']['fr-fr'] = "Sélectionner";
$text['button-select']['pt-br'] = "Selecionar";
$text['button-select']['pl'] = "Wybierz";
$text['button-select']['sv-se'] = "Välj";
$text['button-select']['uk'] = "вибрати";
$text['button-select']['de-at'] = "Wählen";
$text['button-select']['ar-eg'] = "اختار";
<?php
$text['title-install']['en-us'] = "Install";
$text['title-install']['es-cl'] = "Instale";
$text['title-install']['pt-pt'] = "Installation";
$text['title-install']['fr-fr'] = "Installation";
$text['title-install']['pt-br'] = "Installation";
$text['title-install']['pl'] = "Zainstalować";
$text['title-install']['sv-se'] = "Installera";
$text['title-install']['uk'] = "Перший раз Встановіть";
$text['title-install']['de-at'] = "Erstinstallation";
$text['title-install']['ar-eg'] = "للمرة الأولى قم بتثبيت";
$text['title-detected_configuration']['en-us'] = "Detected Configuration";
$text['title-detected_configuration']['es-cl'] = "Configuración detectado";
$text['title-detected_configuration']['pt-pt'] = "Configuração detectado";
$text['title-detected_configuration']['fr-fr'] = "Detected Configuration";
$text['title-detected_configuration']['pt-br'] = "Configuração detectado";
$text['title-detected_configuration']['pl'] = "Wykryto Konfiguracja";
$text['title-detected_configuration']['sv-se'] = "Detekterad Konfiguration";
$text['title-detected_configuration']['uk'] = "виявлено Конфігурація";
$text['title-detected_configuration']['de-at'] = "Erkannt Configuration";
$text['title-detected_configuration']['ar-eg'] = "تكوين الكشف عن";
$text['title-assumed_configuration']['en-us'] = "Assumed Configuration";
$text['title-assumed_configuration']['es-cl'] = "Configuración adoptada";
$text['title-assumed_configuration']['pt-pt'] = "Assumed Configuration";
$text['title-assumed_configuration']['fr-fr'] = "Configuration supposée";
$text['title-assumed_configuration']['pt-br'] = "Assumed Configuration";
$text['title-assumed_configuration']['pl'] = "Zakładana Konfiguracja";
$text['title-assumed_configuration']['sv-se'] = "Antagen Konfiguration";
$text['title-assumed_configuration']['uk'] = "передбачуваний Конфігурація";
$text['title-assumed_configuration']['de-at'] = "Angenommene Configuration";
$text['title-assumed_configuration']['ar-eg'] = "تكوين المفترضة";
$text['label-ft-install']['en-us'] = "First Time Install";
$text['label-ft-install']['es-cl'] = "La primera instalación";
$text['label-ft-install']['pt-pt'] = "First Time Install";
$text['label-ft-install']['fr-fr'] = "Première installation";
$text['label-ft-install']['pt-br'] = "First Time Install";
$text['label-ft-install']['pl'] = "Zainstalować";
$text['label-ft-install']['sv-se'] = "Första gången Installera";
$text['label-ft-install']['uk'] = "Перший раз Встановіть";
$text['label-ft-install']['de-at'] = "Erstinstallation";
$text['label-ft-install']['ar-eg'] = "للمرة الأولى قم بتثبيت";
$text['description-ft-install']['en-us'] = "Perform all actions for a First Time Install";
$text['description-ft-install']['es-cl'] = "Realizar todas las acciones para una primera instalación";
$text['description-ft-install']['pt-pt'] = "Executar todas as ações para uma primeira vez Instalar";
$text['description-ft-install']['fr-fr'] = "Effectuer toutes les actions pour une première installation";
$text['description-ft-install']['pt-br'] = "Executar todas as ações para uma primeira vez Instalar";
$text['description-ft-install']['pl'] = "Wykonać wszystkie czynności dla pierwszy raz zainstalować";
$text['description-ft-install']['sv-se'] = "Utföra alla åtgärder för första gången Installera";
$text['description-ft-install']['uk'] = "Виконайте всі дії для першого разу Встановіть";
$text['description-ft-install']['de-at'] = "Führen Sie alle Aktionen für einen ersten Mal installieren";
$text['description-ft-install']['ar-eg'] = "تنفيذ كافة الإجراءات لأول مرة التثبيت";
$text['label-add-switch']['en-us'] = "Add a new switch";
$text['label-add-switch']['es-cl'] = "Añadir un nuevo conmutador";
$text['label-add-switch']['pt-pt'] = "Adicionar um novo switch";
$text['label-add-switch']['fr-fr'] = "Ajouter un nouveau commutateur";
$text['label-add-switch']['pt-br'] = "Adicionar um novo switch";
$text['label-add-switch']['pl'] = "Dodaj nowy przełącznik";
$text['label-add-switch']['sv-se'] = "Lägg till en ny switch";
$text['label-add-switch']['uk'] = "Додати новий перемикач";
$text['label-add-switch']['de-at'] = "Fügen Sie einen neuen Schalter";
$text['label-add-switch']['ar-eg'] = "إضافة مفتاح جديد";
$text['label-select_language']['en-us'] = "Language";
$text['label-select_language']['es-cl'] = "Idioma";
$text['label-select_language']['pt-pt'] = "Idioma";
$text['label-select_language']['fr-fr'] = "Langue";
$text['label-select_language']['pt-br'] = "Idioma";
$text['label-select_language']['pl'] = "Język";
$text['label-select_language']['sv-se'] = "Språk";
$text['label-select_language']['uk'] = "Мова";
$text['label-select_language']['de-at'] = "Sprache";
$text['label-select_language']['ar-eg'] = "لغة";
$text['label-event_host']['en-us'] = "Host address";
$text['label-event_host']['es-cl'] = "Dirección de host";
$text['label-event_host']['pt-pt'] = "Endereço do host";
$text['label-event_host']['fr-fr'] = "Adresse de l'hôte";
$text['label-event_host']['pt-br'] = "Endereço do host";
$text['label-event_host']['pl'] = "Adres hosta";
$text['label-event_host']['sv-se'] = "Host adress";
$text['label-event_host']['uk'] = "адреса хоста";
$text['label-event_host']['de-at'] = "Host-Adresse";
$text['label-event_host']['ar-eg'] = "عنوان المضيف";
$text['label-event_port']['en-us'] = "Port";
$text['label-event_port']['es-cl'] = "Puerto";
$text['label-event_port']['pt-pt'] = "Porto";
$text['label-event_port']['fr-fr'] = "Port";
$text['label-event_port']['pt-br'] = "Porta";
$text['label-event_port']['pl'] = "Port";
$text['label-event_port']['sv-se'] = "Port";
$text['label-event_port']['uk'] = "Порт";
$text['label-event_port']['de-at'] = "Port";
$text['label-event_port']['ar-eg'] = "منفذ";
$text['label-event_password']['en-us'] = "Password";
$text['label-event_password']['es-cl'] = "Contreseña";
$text['label-event_password']['pt-pt'] = "Palavra-Chave";
$text['label-event_password']['fr-fr'] = "Mot de Passe";
$text['label-event_password']['pt-br'] = "Senha";
$text['label-event_password']['pl'] = "Hasło";
$text['label-event_password']['sv-se'] = "Lösenord";
$text['label-event_password']['uk'] = "Пароль";
$text['label-event_password']['de-at'] = "Passwort";
$text['label-event_password']['ar-eg'] = "كلمة السر";
$text['label-username']['en-us'] = "Username";
$text['label-username']['es-cl'] = "Nombre de usuario";
$text['label-username']['pt-pt'] = "Utilizador";
$text['label-username']['fr-fr'] = "Utilisateur";
$text['label-username']['pt-br'] = "Nome do Usuário";
$text['label-username']['pl'] = "Użytkownik";
$text['label-username']['sv-se'] = "Användarnamn";
$text['label-username']['uk'] = "Ім’я користувача";
$text['label-username']['de-at'] = "Benutzername";
$text['label-username']['ar-eg'] = "اسم المستخدم";
$text['label-port']['en-us'] = "Port";
$text['label-port']['es-cl'] = "Puerto";
$text['label-port']['pt-pt'] = "Porto";
$text['label-port']['fr-fr'] = "Port";
$text['label-port']['pt-br'] = "Porta";
$text['label-port']['pl'] = "Port";
$text['label-port']['sv-se'] = "Port";
$text['label-port']['uk'] = "Порт";
$text['label-port']['de-at'] = "Port";
$text['label-port']['ar-eg'] = "منفذ";
$text['label-path']['en-us'] = "Path";
$text['label-path']['es-cl'] = "Ruta";
$text['label-path']['pt-pt'] = "Caminho";
$text['label-path']['fr-fr'] = "Chemin";
$text['label-path']['pt-br'] = "Caminho";
$text['label-path']['pl'] = "Ścieżka";
$text['label-path']['sv-se'] = "Sökväg";
$text['label-path']['uk'] = "Шлях";
$text['label-path']['de-at'] = "Pfad";
$text['label-path']['ar-eg'] = "مسار";
$text['label-host']['en-us'] = "Host";
$text['label-host']['es-cl'] = "Host";
$text['label-host']['pt-pt'] = "Máquina";
$text['label-host']['fr-fr'] = "Hôte";
$text['label-host']['pt-br'] = "Máquina";
$text['label-host']['pl'] = "Host";
$text['label-host']['sv-se'] = "Värd";
$text['label-host']['uk'] = "Хост";
$text['label-host']['de-at'] = "Host";
$text['label-host']['ar-eg'] = "مضيف";
$text['label-driver']['en-us'] = "Driver";
$text['label-driver']['es-cl'] = "Controlador";
$text['label-driver']['pt-pt'] = "Driver";
$text['label-driver']['fr-fr'] = "Driver";
$text['label-driver']['pt-br'] = "Driver";
$text['label-driver']['pl'] = "Sterownik";
$text['label-driver']['sv-se'] = "Drivrutin";
$text['label-driver']['uk'] = "Драйвер";
$text['label-driver']['de-at'] = "Treiber";
$text['label-driver']['ar-eg'] = "سائق";
$text['header-install']['en-us'] = "Install";
$text['header-install']['es-cl'] = "Instalar";
$text['header-install']['pt-pt'] = "Instalar";
$text['header-install']['fr-fr'] = "Installer";
$text['header-install']['pt-br'] = "Instalar";
$text['header-install']['pl'] = "Zainstalować";
$text['header-install']['sv-se'] = "Installera";
$text['header-install']['uk'] = "встановлювати";
$text['header-install']['de-at'] = "Installieren";
$text['header-install']['ar-eg'] = "تثبيت";
$text['header-select_language']['en-us'] = "Select Language";
$text['header-select_language']['es-cl'] = "Selecciona idioma";
$text['header-select_language']['pt-pt'] = "Selecione o idioma";
$text['header-select_language']['fr-fr'] = "Sélectionnez la langue";
$text['header-select_language']['pt-br'] = "Selecione o idioma";
$text['header-select_language']['pl'] = "Wybierz język";
$text['header-select_language']['sv-se'] = "Välj språk";
$text['header-select_language']['uk'] = "вибір мови";
$text['header-select_language']['de-at'] = "Sprache wählen";
$text['header-select_language']['ar-eg'] = "اختار اللغة";
$text['header-event_socket']['en-us'] = "Event Socket Configuration";
$text['header-event_socket']['es-cl'] = "Configuración del zócalo evento";
$text['header-event_socket']['pt-pt'] = "Configuração soquete evento";
$text['header-event_socket']['fr-fr'] = "Event Configuration Socket";
$text['header-event_socket']['pt-br'] = "Configuração soquete evento";
$text['header-event_socket']['pl'] = "Zdarzenie Gniazdo Konfiguracja";
$text['header-event_socket']['sv-se'] = "Händelse Socket Konfiguration";
$text['header-event_socket']['uk'] = "Конфігурація гніздо Подія";
$text['header-event_socket']['de-at'] = "Veranstaltungssockelkonfiguration";
$text['header-event_socket']['ar-eg'] = "تكوين المقبس الحدث";
$text['header-config_detail']['en-us'] = "Admin Configuration";
$text['header-config_detail']['es-cl'] = "Configuración de administración";
$text['header-config_detail']['pt-pt'] = "Configuração de administrador";
$text['header-config_detail']['fr-fr'] = "Configuration Admin";
$text['header-config_detail']['pt-br'] = "Configuração de administrador";
$text['header-config_detail']['pl'] = "Konfiguracja Admin";
$text['header-config_detail']['sv-se'] = "Admin Konfiguration";
$text['header-config_detail']['uk'] = "конфігурація Адмін";
$text['header-config_detail']['de-at'] = "Admin-Konfiguration";
$text['header-config_detail']['ar-eg'] = "تكوين المشرف";
$text['header-config_database']['en-us'] = "Database Configuration";
$text['header-config_database']['es-cl'] = "Configuración de la base de datos";
$text['header-config_database']['pt-pt'] = "Configuration Database";
$text['header-config_database']['fr-fr'] = "Configuration de base de données";
$text['header-config_database']['pt-br'] = "Configuration Database";
$text['header-config_database']['pl'] = "Konfiguracja bazy danych";
$text['header-config_database']['sv-se'] = "Databaskonfiguration ";
$text['header-config_database']['uk'] = "конфігурація бази даних";
$text['header-config_database']['de-at'] = "Datenbankkonfiguration ";
$text['header-config_database']['ar-eg'] = "تكوين قاعدة بيانات";
$text['header-installing']['en-us'] = "Executing Install";
$text['header-installing']['es-cl'] = "Instalar la ejecución";
$text['header-installing']['pt-pt'] = "Execução Instalar";
$text['header-installing']['fr-fr'] = "Installez exécution";
$text['header-installing']['pt-br'] = "Execução Instalar";
$text['header-installing']['pl'] = "Wykonywanie Install";
$text['header-installing']['sv-se'] = "Exekvera Installera";
$text['header-installing']['uk'] = "виконання Встановіть";
$text['header-installing']['de-at'] = "Ausführen Installieren";
$text['header-installing']['ar-eg'] = "تنفيذ التثبيت";
$text['description-event_host']['en-us'] = "Enter the event socket host name or IP address.";
$text['description-event_host']['es-cl'] = "Introduzca el nombre de host toma evento o dirección IP.";
$text['description-event_host']['pt-pt'] = "Digite o nome do host tomada evento ou endereço IP.";
$text['description-event_host']['fr-fr'] = "Entrez le socket nom d'hôte de l'événement ou de l'adresse IP.";
$text['description-event_host']['pt-br'] = "Digite o nome do host tomada evento ou endereço IP.";
$text['description-event_host']['pl'] = "Wprowadź nazwę hosta gniazda wydarzenie lub adres IP.";
$text['description-event_host']['sv-se'] = "Ange händelsen uttag värdnamn eller IP-adress.";
$text['description-event_host']['uk'] = "Введіть проведення сокета ім'я хоста або IP-адресу.";
$text['description-event_host']['de-at'] = "Geben Sie das Ereignis Buchse Hostnamen oder die IP-Adresse .";
$text['description-event_host']['ar-eg'] = "أدخل اسم المضيف مأخذ الحدث.";
$text['description-event_port']['en-us'] = "Enter the event socket port number.";
$text['description-event_port']['es-cl'] = "Introduzca el número de puerto de socket evento.";
$text['description-event_port']['pt-pt'] = "Digite o número do evento porta de soquete.";
$text['description-event_port']['fr-fr'] = "Entrez le numéro cas de port du socket.";
$text['description-event_port']['pt-br'] = "Digite o número do evento porta de soquete.";
$text['description-event_port']['pl'] = "Wprowadź numer portu gniazda zdarzenia.";
$text['description-event_port']['sv-se'] = "Ange händelsen socket portnummer.";
$text['description-event_port']['uk'] = "Введіть номер подія гніздо порту.";
$text['description-event_port']['de-at'] = "Geben Sie das Ereignis Socket-Portnummer.";
$text['description-event_port']['ar-eg'] = "أدخل رقم الحدث ميناء المقبس.";
$text['description-event_password']['en-us'] = "Enter the event socket password.";
$text['description-event_password']['es-cl'] = "Introduzca la toma evento contraseña.";
$text['description-event_password']['pt-pt'] = "Digite tomada a senha evento.";
$text['description-event_password']['fr-fr'] = "Saisissez la prise de mot de passe de l'événement.";
$text['description-event_password']['pt-br'] = "Digite tomada a senha evento.";
$text['description-event_password']['pl'] = "Wprowadź hasło gniazda zdarzenia.";
$text['description-event_password']['sv-se'] = "Ange händelsen uttag lösenord.";
$text['description-event_password']['uk'] = "Введіть гніздо пароль подією.";
$text['description-event_password']['de-at'] = "Geben Sie das Ereignis Passwort Steckdose.";
$text['description-event_password']['ar-eg'] = "أدخل كلمة المرور مأخذ الحدث.";
$text['description-username']['en-us'] = "Enter the database username.";
$text['description-username']['es-cl'] = "Ingrese el nombre de usuario de la base de datos.";
$text['description-username']['pt-pt'] = "Introduza o utilizador da base de dados.";
$text['description-username']['fr-fr'] = "Entrer le nom d'utilisateur de la Base de données.";
$text['description-username']['pt-br'] = "Insira o nome do usuário";
$text['description-username']['pl'] = "Wprowadź nazwę użytkownika";
$text['description-username']['sv-se'] = "Ange databasen användarnamn här.";
$text['description-username']['uk'] = "Введіть ім’я користувача бази даних";
$text['description-username']['de-at'] = "Geben Sie den Datenbank Benutzernamen an.";
$text['description-username']['ar-eg'] = "أدخل اسم المستخدم هنا";
$text['description-type']['en-us'] = "Select the database type.";
$text['description-type']['es-cl'] = "Seleccione el tipo de base de datos";
$text['description-type']['pt-pt'] = "Escolha o tipo de base de dados.";
$text['description-type']['fr-fr'] = "Choisir le type de Base de données.";
$text['description-type']['pt-br'] = "Introduza o tipo de definição.";
$text['description-type']['pl'] = "Wprowadź rodzaj bazy danych";
$text['description-type']['sv-se'] = "Välj databastyp";
$text['description-type']['uk'] = "Виберіть тип бази даних";
$text['description-type']['de-at'] = "Wählen Sie den Datenbank Typ.";
$text['description-type']['ar-eg'] = "إختر نوع قاعدة البيانات";
$text['description-port']['en-us'] = "Enter the port number.";
$text['description-port']['es-cl'] = "Ingrese el número del puerto.";
$text['description-port']['pt-pt'] = "Introduza o número do porto.";
$text['description-port']['fr-fr'] = "Entrer le numéro de port.";
$text['description-port']['pt-br'] = "Insira o número da porta";
$text['description-port']['pl'] = "Wprowadź numer portu";
$text['description-port']['sv-se'] = "Ange portnummer";
$text['description-port']['uk'] = "Введіть номер порта";
$text['description-port']['de-at'] = "Geben Sie die Port Nummer an.";
$text['description-port']['ar-eg'] = "أدخل رقم المنفذ";
$text['description-path']['en-us'] = "Enter the database file path (SQLite only).";
$text['description-path']['es-cl'] = "Ingrese la ruta al archivo de datos (solo SQLite).";
$text['description-path']['pt-pt'] = "Introduza o caminho da base de dados (apenas SQLite)";
$text['description-path']['fr-fr'] = "Entrer le chemin du fichier Base de données (Spécifique SQLite).";
$text['description-path']['pt-br'] = "Insira o caminho da base de dados (SQLite)";
$text['description-path']['pl'] = "Wprowadź ścieżkę do pliku bazy danych (tylko SQLite)";
$text['description-path']['sv-se'] = "Ange databasens sökväg (gäller endast SQLite).";
$text['description-path']['uk'] = "Вкажіть шлях до файлу бази даних (тільки SQLite).";
$text['description-path']['de-at'] = "Geben Sie den Datenbank Pfad an (nur für SQLite).";
$text['description-path']['ar-eg'] = "أدخل مسار ملف قاعدة البيانات (سكليتي فقط).";
$text['description-password']['en-us'] = "Enter the database password.";
$text['description-password']['es-cl'] = "Ingrese la contraseña de la base de datos.";
$text['description-password']['pt-pt'] = "Introduza a palavra-chave da base de dados.";
$text['description-password']['fr-fr'] = "Entrer le mot de passe pour la Base de données.";
$text['description-password']['pt-br'] = "Introduza a senha";
$text['description-password']['pl'] = "Wpisz hasło";
$text['description-password']['sv-se'] = "Ange databasens lösenord.";
$text['description-password']['uk'] = "Введіть пароль бази даних.";
$text['description-password']['de-at'] = "Geben Sie das Datenbank Passwort ein.";
$text['description-password']['ar-eg'] = "أدخل الرقم السري الخاص بقاعدة البيانات";
$text['description-name']['en-us'] = "Enter the database name.";
$text['description-name']['es-cl'] = "Ingrese el nombre de la base de datos.";
$text['description-name']['pt-pt'] = "Introduza o nome da base de dados.";
$text['description-name']['fr-fr'] = "Entrer le nom de la Base de données.";
$text['description-name']['pt-br'] = "Insira o nome do menu";
$text['description-name']['pl'] = "Wprowadź nazwę bazy danych.";
$text['description-name']['sv-se'] = "Ange databasens namn.";
$text['description-name']['uk'] = "Введіть ім'я бази даних.";
$text['description-name']['de-at'] = "Geben Sie den Namen der Datenbank an";
$text['description-name']['ar-eg'] = "أدخل إسم قاعدة البيانات";
$text['description-host']['en-us'] = "Enter the host name.";
$text['description-host']['es-cl'] = "Ingrese el nombre de host";
$text['description-host']['pt-pt'] = "Introduza o nome da máquina.";
$text['description-host']['fr-fr'] = "Entrer le nom de l'hôte.";
$text['description-host']['pt-br'] = "Insira o nome da máquina ";
$text['description-host']['pl'] = "Wprowadź nazwę hosta.";
$text['description-host']['sv-se'] = "Ange värdnamnet";
$text['description-host']['uk'] = "Введіть ім'я хоста.";
$text['description-host']['de-at'] = "Geben Sie den Host Namen ein.";
$text['description-host']['ar-eg'] = "أدخل إسم المضيف";
$text['description-driver']['en-us'] = "Select the database driver.";
$text['description-driver']['es-cl'] = "Seleccione un controlador de base de datos.";
$text['description-driver']['pt-pt'] = "Escolha o driver da base de dados";
$text['description-driver']['fr-fr'] = "Choisir le driver de la Base de données.";
$text['description-driver']['pt-br'] = "Escolha o driver da base de dados";
$text['description-driver']['pl'] = "Wybierz sterownik bazy danych.";
$text['description-driver']['sv-se'] = "Välj databas drivrutin.";
$text['description-driver']['uk'] = "Виберіть драйвер бази даних.";
$text['description-driver']['de-at'] = "Wählen Sie den Datenbank Treiber.";
$text['description-driver']['ar-eg'] = "حدد برنامج تشغيل قاعدة البيانات.";
$text['description-install']['en-us'] = "Select the action below you wish to perform.";
$text['description-install']['es-cl'] = "Seleccione las accion a continuación que desea realizar.";
$text['description-install']['pt-pt'] = "Selecione as ações abaixo você deseja executar."; //action signular needed
$text['description-install']['fr-fr'] = "Sélectionnez les action ci-dessous que vous souhaitez effectuer.";
$text['description-install']['pt-br'] = "Seleciona as ações abaixo que deseja executar "; //action signular needed
$text['description-install']['pl'] = "Wybierz opcje, które chcesz wykonać."; //action signular needed
$text['description-install']['sv-se'] = "Välj de åtgärder nedan som du vill utföra."; //action signular needed
$text['description-install']['uk'] = "Виберіть об’єкти для оновлення"; //action signular needed
$text['description-install']['de-at'] = "Wählen Sie eine Aktion."; //action signular needed
$text['description-install']['ar-eg'] = "حدد الإجراء أدناه كنت ترغب في القيام بها.";
$text['description-database-edit']['en-us'] = "Database connection information.";
$text['description-database-edit']['es-cl'] = "Información de conexión a base de datos.";
$text['description-database-edit']['pt-pt'] = "Informação da ligação à base de dados.";
$text['description-database-edit']['fr-fr'] = "Informations de connexion à la Base";
$text['description-database-edit']['pt-br'] = "Informações da ligação na base de dados";
$text['description-database-edit']['pl'] = "Informacje o połączeniach z bazą danych.";
$text['description-database-edit']['sv-se'] = "Information om Databasanslutning";
$text['description-database-edit']['uk'] = "інформація про підключення до бази даних.";
$text['description-database-edit']['de-at'] = "Datenbank Verbindungs Information.";
$text['description-database-edit']['ar-eg'] = "بيانات الإتصال الخاص بقاعدة البيانات";
$text['description-database-add']['en-us'] = "Database connection information.";
$text['description-database-add']['es-cl'] = "Información de conexión a base de datos.";
$text['description-database-add']['pt-pt'] = "Informação da ligação à base de dados.";
$text['description-database-add']['fr-fr'] = "Informations de connexion à la Base.";
$text['description-database-add']['pt-br'] = "Informações da ligação na base de dados";
$text['description-database-add']['pl'] = "Informacje o połączeniach z bazą danych.";
$text['description-database-add']['sv-se'] = "Information om Databasanslutning";
$text['description-database-add']['uk'] = "інформація про підключення до бази даних.";
$text['description-database-add']['de-at'] = "Datenbank Verbindungs Information.";
$text['description-database-add']['ar-eg'] = "بيانات الإتصال الخاص بقاعدة البيانات";
$text['description-select_language']['en-us'] = "Please select the language you want to use";
$text['description-select_language']['es-cl'] = "Por favor, seleccione el idioma que desea utilizar";
$text['description-select_language']['pt-pt'] = "Por favor, selecione o idioma que deseja usar";
$text['description-select_language']['fr-fr'] = "S'il vous plaît choisir la langue que vous souhaitez utiliser";
$text['description-select_language']['pt-br'] = "Por favor, selecione o idioma que deseja usar";
$text['description-select_language']['pl'] = "Wybierz język, którego chcesz używać";
$text['description-select_language']['sv-se'] = "Välj det språk du vill använda";
$text['description-select_language']['uk'] = "Виберіть мову, який ви хочете використовувати";
$text['description-select_language']['de-at'] = "Bitte wählen Sie die gewünschte Sprache zu verwenden";
$text['description-select_language']['ar-eg'] = "يرجى اختيار اللغة التي تريد استخدامها";
$text['button-detect']['en-us'] = "Detect Configuration";
$text['button-detect']['es-cl'] = "Detectar Configuración";
$text['button-detect']['pt-pt'] = "Detectar Configuração";
$text['button-detect']['fr-fr'] = "Détecter Configuration";
$text['button-detect']['pt-br'] = "Detectar Configuração";
$text['button-detect']['pl'] = "Wykrywanie Konfiguracja";
$text['button-detect']['sv-se'] = "Detektera Konfiguration";
$text['button-detect']['uk'] = "виявлення Конфігурація";
$text['button-detect']['de-at'] = "Detect-Konfiguration";
$text['button-detect']['ar-eg'] = "كشف تكوين";
$text['button-select']['en-us'] = "Select";
$text['button-select']['es-cl'] = "Seleccionar";
$text['button-select']['pt-pt'] = "Selecionar";
$text['button-select']['fr-fr'] = "Sélectionner";
$text['button-select']['pt-br'] = "Selecionar";
$text['button-select']['pl'] = "Wybierz";
$text['button-select']['sv-se'] = "Välj";
$text['button-select']['uk'] = "вибрати";
$text['button-select']['de-at'] = "Wählen";
$text['button-select']['ar-eg'] = "اختار";
?>

View File

@@ -1,83 +1,83 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//detect install state
$install_enabled = true;
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
$install_enabled = false;
} elseif (file_exists("/etc/fusionpbx/config.php")) {
//linux
$install_enabled = false;
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
$install_enabled = false;
}
if($install_enabled) {
header("Location: ".PROJECT_PATH."/core/install/install.php");
exit;
}
require_once "resources/check_auth.php";
if (!if_group("superadmin")) {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//includes and title
require_once "resources/header.php";
$document['title'] = $text['title-install'];
echo "<b>".$text['header-install']."</b>";
echo "<br><br>";
echo $text['description-install'];
echo "<br><br>";
echo "<form name='frm' method='post' action='/core/install/install.php'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " <input id='do_ft-install' type='submit' class='btn' value='".$text['label-ft-install']."'/>";
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_ft-install'>";
echo " ".$text['description-ft-install'];
echo " </label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</form>\n";
//include the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//detect install state
$install_enabled = true;
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
$install_enabled = false;
} elseif (file_exists("/etc/fusionpbx/config.php")) {
//linux
$install_enabled = false;
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
$install_enabled = false;
}
if($install_enabled) {
header("Location: ".PROJECT_PATH."/core/install/install.php");
exit;
}
require_once "resources/check_auth.php";
if (!if_group("superadmin")) {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//includes and title
require_once "resources/header.php";
$document['title'] = $text['title-install'];
echo "<b>".$text['header-install']."</b>";
echo "<br><br>";
echo $text['description-install'];
echo "<br><br>";
echo "<form name='frm' method='post' action='/core/install/install.php'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " <input id='do_ft-install' type='submit' class='btn' value='".$text['label-ft-install']."'/>";
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_ft-install'>";
echo " ".$text['description-ft-install'];
echo " </label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</form>\n";
//include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,367 +1,367 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
//add the required includes
require_once "root.php";
require_once "resources/functions.php";
require_once "resources/classes/text.php";
//initialize variables we are going to use
$event_host = '';
$event_port = '';
$event_password = '';
$install_language = 'en-us';
$admin_username = '';
$admin_password = '';
$install_default_country = 'US';
$install_template_name = '';
$domain_name = '';
$db_type = '';
$db_path = '';
$db_host = '';
$db_port = '';
$db_name = '';
$db_username = '';
$db_password = '';
$db_create = '';
$db_create_username = '';
$db_create_password = '';
//detect the iso country code from the locale
//$locale = Locale::getDefault();
$timezone = 'UTC';
if (is_link('/etc/localtime')) {
// Mac OS X (and older Linuxes)
// /etc/localtime is a symlink to the
// timezone in /usr/share/zoneinfo.
$filename = readlink('/etc/localtime');
if (strpos($filename, '/usr/share/zoneinfo/') === 0) {
$timezone = substr($filename, 20);
}
} elseif (file_exists('/etc/timezone')) {
// Ubuntu / Debian.
$data = file_get_contents('/etc/timezone');
if ($data) {
$timezone = rtrim($data);
}
} elseif (file_exists('/etc/sysconfig/clock')) {
// RHEL / CentOS
$data = parse_ini_file('/etc/sysconfig/clock');
if (!empty($data['ZONE'])) {
$timezone = $data['ZONE'];
}
}
//set the time zone
date_default_timezone_set($timezone);
//if the config.php exists deny access to install.php
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
echo "access denied";
exit;
} elseif (file_exists("/etc/fusionpbx/config.php")) {
echo "access denied";
exit;
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
echo "access denied";
exit;
}
//intialize variables
$install_step = '';
$return_install_step = '';
//process the the HTTP POST
if (count($_POST) > 0) {
$install_language = check_str($_POST["install_language"]);
$install_step = check_str($_POST["install_step"]);
$return_install_step = check_str($_POST["return_install_step"]);
if(isset($_POST["event_host"])){
$event_host = check_str($_POST["event_host"]);
$event_port = check_str($_POST["event_port"]);
$event_password = check_str($_POST["event_password"]);
}
if(isset($_POST["db_type"])){
$db_type = $_POST["db_type"];
$admin_username = $_POST["admin_username"];
$admin_password = $_POST["admin_password"];
$install_default_country = $_POST["install_default_country"];
$install_template_name = $_POST["install_template_name"];
$domain_name = $_POST["domain_name"];
}
}
//set the install step if it is not set
if(!$install_step) { $install_step = 'select_language'; }
//set the language for the install
$_SESSION['domain']['language']['code'] = $install_language;
//add multi-lingual support
$language = new text;
$text = $language->get();
//set a default enviroment if first_time
//initialize some varibles to cut down on warnings
$_SESSION['message'] = '';
$v_link_label_play = '';
$v_link_label_pause = '';
$default_login = 0;
$onload = '';
//buffer the content
ob_end_clean(); //clean the buffer
ob_start();
$messages = array();
if (!extension_loaded('PDO')) {
$messages[] = "<b>PHP PDO was not detected</b>. Please install it before proceeding";
}
echo "<div align='center'>\n";
$msg = '';
//make sure the includes directory is writable so the config.php file can be written.
if (!is_writable($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/pdo.php")) {
$messages[] = "<b>Write access to ".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."</b> and its sub-directories are required during the install.";
}
//test for selinux
if (file_exists('/usr/sbin/getenforce')) {
$enforcing;
exec('getenforce', $enforcing);
if($enforcing[0] == 'Enforcing'){
$messages[] = "<b>SELinux is enabled and enforcing</b> you must have a policy installed to let the webserver connect to the switch event socket<br/>".
"<sm>You can use the following to find what ports are allowed<pre>semanage port -l | grep '^http_port_t'</pre></sm>";
}
}
//test for windows and non sqlite
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' and strlen($db_type) > 0 and $db_type !='sqlite') {
$messages[] = "<b>Windows requires a system DSN ODBC connection</b> this must be configured.";
}
//action code
if($return_install_step == 'config_detail'){
//check for all required data
$existing_errors = count($messages);
if (strlen($admin_username) == 0) { $messages[] = "Please provide the Admin Username"; }
if (strlen($admin_password) == 0) { $messages[] = "Please provide the Admin Password"; }
elseif (strlen($admin_password) < 5) { $messages[] = "Please provide an Admin Password that is 5 or more characters.<br>\n"; }
if ( count($messages) > $existing_errors) { $install_step = 'config_detail'; }
}
if($install_step =='execute') {
//set the max execution time to 1 hour
ini_set('max_execution_time',3600);
}
//display messages
if (count($messages)>0) {
echo "<br />\n";
echo "<div align='center'>\n";
echo "<table width='75%'>\n";
echo "<tr>\n";
echo "<th align='left'>Messages</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='row_style1'><strong><ul>\n";
foreach ($messages as $message){
echo "<li>$message</li>\n";
}
echo "</ul></strong></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
//includes and title
$document['title'] = $text['title-install'];
//view code
if($install_step == 'select_language'){
echo " <form method='post' name='frm' action=''>\n";
include "resources/page_parts/install_select_language.php";
echo " <input type='hidden' name='return_install_step' value='select_language'/>\n";
echo " <input type='hidden' name='install_step' value='detect_config'/>\n";
echo "</form>\n";
} elseif($install_step == 'detect_config'){
if(!($event_host == '' || $event_host == 'localhost' || $event_host == '::1' || $event_host == '127.0.0.1' )){
echo "<p><b>Warning</b> you have choosen a value other than localhost for event_host, this is unsoported at present</p>\n";
}
//if($detect_ok){
echo "<form method='post' name='frm' action=''>\n";
include "resources/page_parts/install_event_socket.php";
echo " <input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo " <input type='hidden' name='return_install_step' value='detect_config'/>\n";
echo " <input type='hidden' name='install_step' value='config_detail'/>\n";
echo " <input type='hidden' name='event_host' value='$event_host'/>\n";
echo " <input type='hidden' name='event_port' value='$event_port'/>\n";
echo " <input type='hidden' name='event_password' value='$event_password'/>\n";
//echo " <div style='text-align:right'>\n";
//echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
//echo " <button type='submit' class='btn' id='next'>".$text['button-next']."</button>\n";
//echo " </div>\n";
echo "</form>\n";
//} else {
// echo "<form method='post' name='frm' action=''>\n";
// echo " <div style='text-align:right'>\n";
// echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
// echo " </div>\n";
// echo "</form>\n";
//}
}
elseif($install_step == 'config_detail'){
//get the domain
if(!$domain_name){
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
$domain_name = $domain_array[0];
}
include "resources/page_parts/install_config_detail.php";
}
elseif($install_step == 'config_database'){
include "resources/page_parts/install_config_database.php";
}
elseif($install_step == 'execute'){
echo "<p><b>".$text['header-installing']."</b></p>\n";
//$protocol = 'http';
//if($_SERVER['HTTPS']) { $protocol = 'https'; }
//echo "<iframe src='$protocol://$domain_name/core/install/install_first_time.php' style='border:solid 1px #000;width:100%;height:auto'></iframe>";
require_once "core/install/resources/classes/detect_switch.php";
$detect_switch = new detect_switch($event_host, $event_port, $event_password);
$detect_ok = true;
try {
$detect_switch->detect();
} catch(Exception $e){
//echo "<p>Failed to detect configuration detect_switch reported: " . $e->getMessage() . "</p>\n";
//$detect_ok = false;
}
if($detect_ok){
$install_ok = true;
echo "<pre style='text-align:left;'>\n";
function error_handler($err_severity, $errstr, $errfile, $errline ) {
if (0 === error_reporting()) { return false;}
switch($err_severity)
{
case E_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_PARSE: throw new Exception ($errstr . " in $errfile line: $errline");
case E_CORE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_COMPILE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_USER_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_STRICT: throw new Exception ($errstr . " in $errfile line: $errline");
case E_RECOVERABLE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
default: return false;
}
}
#set_error_handler("error_handler");
try {
require_once "resources/classes/global_settings.php";
$global_settings = new global_settings($detect_switch, $domain_name);
if(is_null($global_settings)){ throw new Exception("Error global_settings came back with null"); }
require_once "resources/classes/install_fusionpbx.php";
$system = new install_fusionpbx($global_settings);
$system->admin_username = $admin_username;
$system->admin_password = $admin_password;
$system->default_country = $install_default_country;
$system->install_language = $install_language;
$system->template_name = $install_template_name;
require_once "resources/classes/install_switch.php";
$switch = new install_switch($global_settings);
//$switch->debug = true;
//$system->debug = true;
$switch->echo_progress = true;
$system->echo_progress = true;
$system->install_phase_1();
$switch->install_phase_1();
$system->install_phase_2();
$switch->install_phase_2();
} catch(Exception $e){
echo "</pre>\n";
echo "<p><b>Failed to install</b><br/>" . $e->getMessage() . "</p>\n";
try {
require_once "resources/classes/install_fusionpbx.php";
$system = new install_fusionpbx($global_settings);
$system->remove_config();
} catch(Exception $e){
echo "<p><b>Failed to remove config:</b> " . $e->getMessage() . "</p>\n";
}
$install_ok = false;
}
restore_error_handler();
if($install_ok){
echo "</pre>\n";
header("Location: ".PROJECT_PATH."/logout.php");
$_SESSION['message'] = 'Install complete';
} else {
echo "<form method='post' name='frm' action=''>\n";
echo " <div style='text-align:right'>\n";
echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
echo " <button type='button' class='btn' onclick=\"location.reload(true);\">".$text['button-execute']."</button>\n";
echo " </div>\n";
echo "</form>\n";
}
}
}
else {
echo "<p>Unkown install_step '$install_step'</p>\n";
}
//initialize some defaults so we can be 'logged in'
$_SESSION['username'] = 'install_enabled';
$_SESSION['permissions'][]['permission_name'] = 'superadmin';
$_SESSION['menu'] = '';
//add the content to the template and then send output
$body = ob_get_contents(); //get the output from the buffer
ob_end_clean(); //clean the buffer
//set a default template
$default_template = 'default';
$_SESSION['domain']['template']['name'] = $default_template;
$_SESSION['theme']['menu_brand_type']['text'] = "text";
//set the default template path
$template_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes/'.$default_template.'/template.php';
//get the content of the template
$template_content = file_get_contents($template_path);
//replace the variables in the template
$template_content = str_replace ("<!--{title}-->", $document['title'], $template_content); //<!--{title}--> defined in each individual page
$template_content = str_replace ("<!--{head}-->", '', $template_content); //<!--{head}--> defined in each individual page
//$template_content = str_replace ("<!--{menu}-->", $_SESSION["menu"], $template_content); //included in the theme
$template_content = str_replace ("<!--{body}-->", $body, $template_content); //defined in /themes/default/template.php
$template_content = str_replace ("<!--{project_path}-->", PROJECT_PATH, $template_content); //defined in /themes/default/template.php
//get the contents of the template and save it to the template variable
ob_start();
require_once "resources/classes/menu.php";
eval('?>' . $template_content . '<?php ');
$content = ob_get_contents(); //get the output from the buffer
ob_end_clean(); //clean the buffer
//send the content to the browser and then clear the variable
echo $content;
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
//add the required includes
require_once "root.php";
require_once "resources/functions.php";
require_once "resources/classes/text.php";
//initialize variables we are going to use
$event_host = '';
$event_port = '';
$event_password = '';
$install_language = 'en-us';
$admin_username = '';
$admin_password = '';
$install_default_country = 'US';
$install_template_name = '';
$domain_name = '';
$db_type = '';
$db_path = '';
$db_host = '';
$db_port = '';
$db_name = '';
$db_username = '';
$db_password = '';
$db_create = '';
$db_create_username = '';
$db_create_password = '';
//detect the iso country code from the locale
//$locale = Locale::getDefault();
$timezone = 'UTC';
if (is_link('/etc/localtime')) {
// Mac OS X (and older Linuxes)
// /etc/localtime is a symlink to the
// timezone in /usr/share/zoneinfo.
$filename = readlink('/etc/localtime');
if (strpos($filename, '/usr/share/zoneinfo/') === 0) {
$timezone = substr($filename, 20);
}
} elseif (file_exists('/etc/timezone')) {
// Ubuntu / Debian.
$data = file_get_contents('/etc/timezone');
if ($data) {
$timezone = rtrim($data);
}
} elseif (file_exists('/etc/sysconfig/clock')) {
// RHEL / CentOS
$data = parse_ini_file('/etc/sysconfig/clock');
if (!empty($data['ZONE'])) {
$timezone = $data['ZONE'];
}
}
//set the time zone
date_default_timezone_set($timezone);
//if the config.php exists deny access to install.php
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
echo "access denied";
exit;
} elseif (file_exists("/etc/fusionpbx/config.php")) {
echo "access denied";
exit;
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
echo "access denied";
exit;
}
//intialize variables
$install_step = '';
$return_install_step = '';
//process the the HTTP POST
if (count($_POST) > 0) {
$install_language = check_str($_POST["install_language"]);
$install_step = check_str($_POST["install_step"]);
$return_install_step = check_str($_POST["return_install_step"]);
if(isset($_POST["event_host"])){
$event_host = check_str($_POST["event_host"]);
$event_port = check_str($_POST["event_port"]);
$event_password = check_str($_POST["event_password"]);
}
if(isset($_POST["db_type"])){
$db_type = $_POST["db_type"];
$admin_username = $_POST["admin_username"];
$admin_password = $_POST["admin_password"];
$install_default_country = $_POST["install_default_country"];
$install_template_name = $_POST["install_template_name"];
$domain_name = $_POST["domain_name"];
}
}
//set the install step if it is not set
if(!$install_step) { $install_step = 'select_language'; }
//set the language for the install
$_SESSION['domain']['language']['code'] = $install_language;
//add multi-lingual support
$language = new text;
$text = $language->get();
//set a default enviroment if first_time
//initialize some varibles to cut down on warnings
$_SESSION['message'] = '';
$v_link_label_play = '';
$v_link_label_pause = '';
$default_login = 0;
$onload = '';
//buffer the content
ob_end_clean(); //clean the buffer
ob_start();
$messages = array();
if (!extension_loaded('PDO')) {
$messages[] = "<b>PHP PDO was not detected</b>. Please install it before proceeding";
}
echo "<div align='center'>\n";
$msg = '';
//make sure the includes directory is writable so the config.php file can be written.
if (!is_writable($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/pdo.php")) {
$messages[] = "<b>Write access to ".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."</b> and its sub-directories are required during the install.";
}
//test for selinux
if (file_exists('/usr/sbin/getenforce')) {
$enforcing;
exec('getenforce', $enforcing);
if($enforcing[0] == 'Enforcing'){
$messages[] = "<b>SELinux is enabled and enforcing</b> you must have a policy installed to let the webserver connect to the switch event socket<br/>".
"<sm>You can use the following to find what ports are allowed<pre>semanage port -l | grep '^http_port_t'</pre></sm>";
}
}
//test for windows and non sqlite
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' and strlen($db_type) > 0 and $db_type !='sqlite') {
$messages[] = "<b>Windows requires a system DSN ODBC connection</b> this must be configured.";
}
//action code
if($return_install_step == 'config_detail'){
//check for all required data
$existing_errors = count($messages);
if (strlen($admin_username) == 0) { $messages[] = "Please provide the Admin Username"; }
if (strlen($admin_password) == 0) { $messages[] = "Please provide the Admin Password"; }
elseif (strlen($admin_password) < 5) { $messages[] = "Please provide an Admin Password that is 5 or more characters.<br>\n"; }
if ( count($messages) > $existing_errors) { $install_step = 'config_detail'; }
}
if($install_step =='execute') {
//set the max execution time to 1 hour
ini_set('max_execution_time',3600);
}
//display messages
if (count($messages)>0) {
echo "<br />\n";
echo "<div align='center'>\n";
echo "<table width='75%'>\n";
echo "<tr>\n";
echo "<th align='left'>Messages</th>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='row_style1'><strong><ul>\n";
foreach ($messages as $message){
echo "<li>$message</li>\n";
}
echo "</ul></strong></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
//includes and title
$document['title'] = $text['title-install'];
//view code
if($install_step == 'select_language'){
echo " <form method='post' name='frm' action=''>\n";
include "resources/page_parts/install_select_language.php";
echo " <input type='hidden' name='return_install_step' value='select_language'/>\n";
echo " <input type='hidden' name='install_step' value='detect_config'/>\n";
echo "</form>\n";
} elseif($install_step == 'detect_config'){
if(!($event_host == '' || $event_host == 'localhost' || $event_host == '::1' || $event_host == '127.0.0.1' )){
echo "<p><b>Warning</b> you have choosen a value other than localhost for event_host, this is unsoported at present</p>\n";
}
//if($detect_ok){
echo "<form method='post' name='frm' action=''>\n";
include "resources/page_parts/install_event_socket.php";
echo " <input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo " <input type='hidden' name='return_install_step' value='detect_config'/>\n";
echo " <input type='hidden' name='install_step' value='config_detail'/>\n";
echo " <input type='hidden' name='event_host' value='$event_host'/>\n";
echo " <input type='hidden' name='event_port' value='$event_port'/>\n";
echo " <input type='hidden' name='event_password' value='$event_password'/>\n";
//echo " <div style='text-align:right'>\n";
//echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
//echo " <button type='submit' class='btn' id='next'>".$text['button-next']."</button>\n";
//echo " </div>\n";
echo "</form>\n";
//} else {
// echo "<form method='post' name='frm' action=''>\n";
// echo " <div style='text-align:right'>\n";
// echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
// echo " </div>\n";
// echo "</form>\n";
//}
}
elseif($install_step == 'config_detail'){
//get the domain
if(!$domain_name){
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
$domain_name = $domain_array[0];
}
include "resources/page_parts/install_config_detail.php";
}
elseif($install_step == 'config_database'){
include "resources/page_parts/install_config_database.php";
}
elseif($install_step == 'execute'){
echo "<p><b>".$text['header-installing']."</b></p>\n";
//$protocol = 'http';
//if($_SERVER['HTTPS']) { $protocol = 'https'; }
//echo "<iframe src='$protocol://$domain_name/core/install/install_first_time.php' style='border:solid 1px #000;width:100%;height:auto'></iframe>";
require_once "core/install/resources/classes/detect_switch.php";
$detect_switch = new detect_switch($event_host, $event_port, $event_password);
$detect_ok = true;
try {
$detect_switch->detect();
} catch(Exception $e){
//echo "<p>Failed to detect configuration detect_switch reported: " . $e->getMessage() . "</p>\n";
//$detect_ok = false;
}
if($detect_ok){
$install_ok = true;
echo "<pre style='text-align:left;'>\n";
function error_handler($err_severity, $errstr, $errfile, $errline ) {
if (0 === error_reporting()) { return false;}
switch($err_severity)
{
case E_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_PARSE: throw new Exception ($errstr . " in $errfile line: $errline");
case E_CORE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_COMPILE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_USER_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
case E_STRICT: throw new Exception ($errstr . " in $errfile line: $errline");
case E_RECOVERABLE_ERROR: throw new Exception ($errstr . " in $errfile line: $errline");
default: return false;
}
}
#set_error_handler("error_handler");
try {
require_once "resources/classes/global_settings.php";
$global_settings = new global_settings($detect_switch, $domain_name);
if(is_null($global_settings)){ throw new Exception("Error global_settings came back with null"); }
require_once "resources/classes/install_fusionpbx.php";
$system = new install_fusionpbx($global_settings);
$system->admin_username = $admin_username;
$system->admin_password = $admin_password;
$system->default_country = $install_default_country;
$system->install_language = $install_language;
$system->template_name = $install_template_name;
require_once "resources/classes/install_switch.php";
$switch = new install_switch($global_settings);
//$switch->debug = true;
//$system->debug = true;
$switch->echo_progress = true;
$system->echo_progress = true;
$system->install_phase_1();
$switch->install_phase_1();
$system->install_phase_2();
$switch->install_phase_2();
} catch(Exception $e){
echo "</pre>\n";
echo "<p><b>Failed to install</b><br/>" . $e->getMessage() . "</p>\n";
try {
require_once "resources/classes/install_fusionpbx.php";
$system = new install_fusionpbx($global_settings);
$system->remove_config();
} catch(Exception $e){
echo "<p><b>Failed to remove config:</b> " . $e->getMessage() . "</p>\n";
}
$install_ok = false;
}
restore_error_handler();
if($install_ok){
echo "</pre>\n";
header("Location: ".PROJECT_PATH."/logout.php");
$_SESSION['message'] = 'Install complete';
} else {
echo "<form method='post' name='frm' action=''>\n";
echo " <div style='text-align:right'>\n";
echo " <button type='button' class='btn' onclick=\"history.go(-1);\">".$text['button-back']."</button>\n";
echo " <button type='button' class='btn' onclick=\"location.reload(true);\">".$text['button-execute']."</button>\n";
echo " </div>\n";
echo "</form>\n";
}
}
}
else {
echo "<p>Unkown install_step '$install_step'</p>\n";
}
//initialize some defaults so we can be 'logged in'
$_SESSION['username'] = 'install_enabled';
$_SESSION['permissions'][]['permission_name'] = 'superadmin';
$_SESSION['menu'] = '';
//add the content to the template and then send output
$body = ob_get_contents(); //get the output from the buffer
ob_end_clean(); //clean the buffer
//set a default template
$default_template = 'default';
$_SESSION['domain']['template']['name'] = $default_template;
$_SESSION['theme']['menu_brand_type']['text'] = "text";
//set the default template path
$template_path = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes/'.$default_template.'/template.php';
//get the content of the template
$template_content = file_get_contents($template_path);
//replace the variables in the template
$template_content = str_replace ("<!--{title}-->", $document['title'], $template_content); //<!--{title}--> defined in each individual page
$template_content = str_replace ("<!--{head}-->", '', $template_content); //<!--{head}--> defined in each individual page
//$template_content = str_replace ("<!--{menu}-->", $_SESSION["menu"], $template_content); //included in the theme
$template_content = str_replace ("<!--{body}-->", $body, $template_content); //defined in /themes/default/template.php
$template_content = str_replace ("<!--{project_path}-->", PROJECT_PATH, $template_content); //defined in /themes/default/template.php
//get the contents of the template and save it to the template variable
ob_start();
require_once "resources/classes/menu.php";
eval('?>' . $template_content . '<?php ');
$content = ob_get_contents(); //get the output from the buffer
ob_end_clean(); //clean the buffer
//send the content to the browser and then clear the variable
echo $content;
?>

View File

@@ -1,170 +1,170 @@
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
require_once "resources/classes/event_socket.php";
//define the install class
class detect_switch {
// cached data
protected $_dirs;
protected $_vdirs;
public function get_dirs() { return $this->_dirs; }
public function get_vdirs() { return $this->_vdirs; }
// version information
protected $_major;
protected $_minor;
protected $_build;
protected $_bits;
public function major() { return $this->_major; }
public function minor() { return $this->_minor; }
public function build() { return $this->_build; }
public function bits() { return $this->_bits; }
public function version() { return $this->_major.".".$this->_minor.".".$this->_build." (".$this->_bits.")"; }
// dirs - detected by from the switch
protected $_base_dir = '';
protected $_cache_dir = '';
protected $_conf_dir = '';
protected $_db_dir = '';
protected $_grammar_dir = '';
protected $_htdocs_dir = '';
protected $_log_dir = '';
protected $_mod_dir = '';
protected $_recordings_dir = '';
protected $_run_dir = '';
protected $_script_dir = '';
protected $_sounds_dir = '';
protected $_storage_dir = '';
protected $_temp_dir = '';
public function base_dir() { return $this->_base_dir; }
public function cache_dir() { return $this->_cache_dir; }
public function conf_dir() { return $this->_conf_dir; }
public function db_dir() { return $this->_db_dir; }
public function grammar_dir() { return $this->_grammar_dir; }
public function htdocs_dir() { return $this->_htdocs_dir; }
public function log_dir() { return $this->_log_dir; }
public function mod_dir() { return $this->_mod_dir; }
public function recordings_dir() { return $this->_recordings_dir; }
public function run_dir() { return $this->_run_dir; }
public function script_dir() { return $this->_script_dir; }
public function sounds_dir() { return $this->_sounds_dir; }
public function storage_dir() { return $this->_storage_dir; }
public function temp_dir() { return $this->_temp_dir; }
// virtual dirs - assumed based on the detected dirs
protected $_voicemail_vdir = '';
protected $_phrases_vdir = '';
protected $_extensions_vdir = '';
protected $_sip_profiles_vdir = '';
protected $_dialplan_vdir = '';
protected $_backup_vdir = '';
public function voicemail_vdir() { return $this->_voicemail_vdir; }
public function phrases_vdir() { return $this->_phrases_vdir; }
public function extensions_vdir() { return $this->_extensions_vdir; }
public function sip_profiles_vdir() { return $this->_sip_profiles_vdir; }
public function dialplan_vdir() { return $this->_dialplan_vdir; }
public function backup_vdir() { return $this->_backup_vdir; }
// event socket
public $event_host = 'localhost';
public $event_port = '8021';
public $event_password = 'ClueCon';
protected $event_socket;
public function __construct($event_host, $event_port, $event_password) {
//do not take these settings from session as they be detecting a new switch
if($event_host){ $this->event_host = $event_host; }
if($event_port){ $this->event_port = $event_port; }
if($event_password){ $this->event_password = $event_password; }
$this->connect_event_socket();
if(!$this->event_socket){
$this->detect_event_socket();
}
$this->_dirs = preg_grep ('/.*_dir$/', get_class_methods('detect_switch') );
sort( $this->_dirs );
$this->_vdirs = preg_grep ('/.*_vdir$/', get_class_methods('detect_switch') );
sort( $this->_vdirs );
}
protected function detect_event_socket() {
//perform searches for user's config here
}
public function detect() {
$this->connect_event_socket();
if(!$this->event_socket){
throw new Exception('Failed to use event socket');
}
$FS_Version = $this->event_socket_request('api version');
preg_match("/FreeSWITCH Version (\d+)\.(\d+)\.(\d+(?:\.\d+)?).*\(.*?(\d+\w+)\s*\)/", $FS_Version, $matches);
$this->_major = $matches[1];
$this->_minor = $matches[2];
$this->_build = $matches[3];
$this->_bits = $matches[4];
$FS_Vars = $this->event_socket_request('api global_getvar');
foreach (explode("\n",$FS_Vars) as $FS_Var){
preg_match("/(\w+_dir)=(.*)/", $FS_Var, $matches);
if(count($matches) > 0 and property_exists($this, "_" . $matches[1])){
$field = "_" . $matches[1];
$this->$field = normalize_path($matches[2]);
}
}
$this->_voicemail_vdir = normalize_path($this->_storage_dir . DIRECTORY_SEPARATOR . "voicemail");
$this->_phrases_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "lang");
$this->_extensions_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "directory");
$this->_sip_profiles_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "sip_profiles");
$this->_dialplan_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "dialplan");
$this->_backup_vdir = normalize_path(sys_get_temp_dir());
}
protected function connect_event_socket(){
$esl = new event_socket;
if ($esl->connect($this->event_host, $this->event_port, $this->event_password)) {
$this->event_socket = $esl->reset_fp();
return true;
}
return false;
}
protected function event_socket_request($cmd) {
$esl = new event_socket($this->event_socket);
$result = $esl->request($cmd);
$esl->reset_fp();
return $result;
}
public function restart_switch() {
$this->connect_event_socket();
if(!$this->event_socket){
throw new Exception('Failed to use event socket');
}
$this->event_socket_request('api fsctl shutdown restart elegant');
}
}
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
require_once "resources/classes/event_socket.php";
//define the install class
class detect_switch {
// cached data
protected $_dirs;
protected $_vdirs;
public function get_dirs() { return $this->_dirs; }
public function get_vdirs() { return $this->_vdirs; }
// version information
protected $_major;
protected $_minor;
protected $_build;
protected $_bits;
public function major() { return $this->_major; }
public function minor() { return $this->_minor; }
public function build() { return $this->_build; }
public function bits() { return $this->_bits; }
public function version() { return $this->_major.".".$this->_minor.".".$this->_build." (".$this->_bits.")"; }
// dirs - detected by from the switch
protected $_base_dir = '';
protected $_cache_dir = '';
protected $_conf_dir = '';
protected $_db_dir = '';
protected $_grammar_dir = '';
protected $_htdocs_dir = '';
protected $_log_dir = '';
protected $_mod_dir = '';
protected $_recordings_dir = '';
protected $_run_dir = '';
protected $_script_dir = '';
protected $_sounds_dir = '';
protected $_storage_dir = '';
protected $_temp_dir = '';
public function base_dir() { return $this->_base_dir; }
public function cache_dir() { return $this->_cache_dir; }
public function conf_dir() { return $this->_conf_dir; }
public function db_dir() { return $this->_db_dir; }
public function grammar_dir() { return $this->_grammar_dir; }
public function htdocs_dir() { return $this->_htdocs_dir; }
public function log_dir() { return $this->_log_dir; }
public function mod_dir() { return $this->_mod_dir; }
public function recordings_dir() { return $this->_recordings_dir; }
public function run_dir() { return $this->_run_dir; }
public function script_dir() { return $this->_script_dir; }
public function sounds_dir() { return $this->_sounds_dir; }
public function storage_dir() { return $this->_storage_dir; }
public function temp_dir() { return $this->_temp_dir; }
// virtual dirs - assumed based on the detected dirs
protected $_voicemail_vdir = '';
protected $_phrases_vdir = '';
protected $_extensions_vdir = '';
protected $_sip_profiles_vdir = '';
protected $_dialplan_vdir = '';
protected $_backup_vdir = '';
public function voicemail_vdir() { return $this->_voicemail_vdir; }
public function phrases_vdir() { return $this->_phrases_vdir; }
public function extensions_vdir() { return $this->_extensions_vdir; }
public function sip_profiles_vdir() { return $this->_sip_profiles_vdir; }
public function dialplan_vdir() { return $this->_dialplan_vdir; }
public function backup_vdir() { return $this->_backup_vdir; }
// event socket
public $event_host = 'localhost';
public $event_port = '8021';
public $event_password = 'ClueCon';
protected $event_socket;
public function __construct($event_host, $event_port, $event_password) {
//do not take these settings from session as they be detecting a new switch
if($event_host){ $this->event_host = $event_host; }
if($event_port){ $this->event_port = $event_port; }
if($event_password){ $this->event_password = $event_password; }
$this->connect_event_socket();
if(!$this->event_socket){
$this->detect_event_socket();
}
$this->_dirs = preg_grep ('/.*_dir$/', get_class_methods('detect_switch') );
sort( $this->_dirs );
$this->_vdirs = preg_grep ('/.*_vdir$/', get_class_methods('detect_switch') );
sort( $this->_vdirs );
}
protected function detect_event_socket() {
//perform searches for user's config here
}
public function detect() {
$this->connect_event_socket();
if(!$this->event_socket){
throw new Exception('Failed to use event socket');
}
$FS_Version = $this->event_socket_request('api version');
preg_match("/FreeSWITCH Version (\d+)\.(\d+)\.(\d+(?:\.\d+)?).*\(.*?(\d+\w+)\s*\)/", $FS_Version, $matches);
$this->_major = $matches[1];
$this->_minor = $matches[2];
$this->_build = $matches[3];
$this->_bits = $matches[4];
$FS_Vars = $this->event_socket_request('api global_getvar');
foreach (explode("\n",$FS_Vars) as $FS_Var){
preg_match("/(\w+_dir)=(.*)/", $FS_Var, $matches);
if(count($matches) > 0 and property_exists($this, "_" . $matches[1])){
$field = "_" . $matches[1];
$this->$field = normalize_path($matches[2]);
}
}
$this->_voicemail_vdir = normalize_path($this->_storage_dir . DIRECTORY_SEPARATOR . "voicemail");
$this->_phrases_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "lang");
$this->_extensions_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "directory");
$this->_sip_profiles_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "sip_profiles");
$this->_dialplan_vdir = normalize_path($this->_conf_dir . DIRECTORY_SEPARATOR . "dialplan");
$this->_backup_vdir = normalize_path(sys_get_temp_dir());
}
protected function connect_event_socket(){
$esl = new event_socket;
if ($esl->connect($this->event_host, $this->event_port, $this->event_password)) {
$this->event_socket = $esl->reset_fp();
return true;
}
return false;
}
protected function event_socket_request($cmd) {
$esl = new event_socket($this->event_socket);
$result = $esl->request($cmd);
$esl->reset_fp();
return $result;
}
public function restart_switch() {
$this->connect_event_socket();
if(!$this->event_socket){
throw new Exception('Failed to use event socket');
}
$this->event_socket_request('api fsctl shutdown restart elegant');
}
}
?>

View File

@@ -1,214 +1,214 @@
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
//define the install class
class global_settings {
// cached data
protected $_switch_dirs;
protected $_switch_vdirs;
public function get_switch_dirs() { return $this->_switch_dirs; }
public function get_switch_vdirs() { return $this->_switch_vdirs; }
// dirs - detected from the switch
protected $_switch_base_dir = '';
protected $_switch_cache_dir = '';
protected $_switch_conf_dir = '';
protected $_switch_db_dir = '';
protected $_switch_grammar_dir = '';
protected $_switch_htdocs_dir = '';
protected $_switch_log_dir = '';
protected $_switch_mod_dir = '';
protected $_switch_recordings_dir = '';
protected $_switch_run_dir = '';
protected $_switch_script_dir = '';
protected $_switch_sounds_dir = '';
protected $_switch_storage_dir = '';
protected $_switch_temp_dir = '';
public function switch_base_dir() { return $this->_switch_base_dir; }
public function switch_cache_dir() { return $this->_switch_cache_dir; }
public function switch_conf_dir() { return $this->_switch_conf_dir; }
public function switch_db_dir() { return $this->_switch_db_dir; }
public function switch_grammar_dir() { return $this->_switch_grammar_dir; }
public function switch_htdocs_dir() { return $this->_switch_htdocs_dir; }
public function switch_log_dir() { return $this->_switch_log_dir; }
public function switch_mod_dir() { return $this->_switch_mod_dir; }
public function switch_recordings_dir() { return $this->_switch_recordings_dir; }
public function switch_run_dir() { return $this->_switch_run_dir; }
public function switch_script_dir() { return $this->_switch_script_dir; }
public function switch_sounds_dir() { return $this->_switch_sounds_dir; }
public function switch_storage_dir() { return $this->_switch_storage_dir; }
public function switch_temp_dir() { return $this->_switch_temp_dir; }
// virtual dirs - assumed based on the detected dirs
protected $_switch_voicemail_vdir = '';
protected $_switch_phrases_vdir = '';
protected $_switch_extensions_vdir = '';
protected $_switch_sip_profiles_vdir = '';
protected $_switch_dialplan_vdir = '';
protected $_switch_backup_vdir = '';
public function switch_voicemail_vdir() { return $this->_switch_voicemail_vdir; }
public function switch_phrases_vdir() { return $this->_switch_phrases_vdir; }
public function switch_extensions_vdir() { return $this->_switch_extensions_vdir; }
public function switch_sip_profiles_vdir() { return $this->_switch_sip_profiles_vdir; }
public function switch_dialplan_vdir() { return $this->_switch_dialplan_vdir; }
public function switch_backup_vdir() { return $this->_switch_backup_vdir; }
// event socket
protected $_switch_event_host;
protected $_switch_event_port;
protected $_switch_event_password;
public function switch_event_host() { return $this->_switch_event_host; }
public function switch_event_port() { return $this->_switch_event_port; }
public function switch_event_password() { return $this->_switch_event_password; }
// database information
protected $_db_type;
protected $_db_path;
protected $_db_host;
protected $_db_port;
protected $_db_name;
protected $_db_username;
protected $_db_password;
protected $_db_create;
protected $_db_create_username;
protected $_db_create_password;
public function db_type() { return $this->_db_type; }
public function db_path() { return $this->_db_path; }
public function db_host() { return $this->_db_host; }
public function db_port() { return $this->_db_port; }
public function db_name() { return $this->_db_name; }
public function db_username() { return $this->_db_username; }
public function db_password() { return $this->_db_password; }
public function db_create() { return $this->_db_create; }
public function db_create_username() { return $this->_db_create_username; }
public function db_create_password() { return $this->_db_create_password; }
//misc information
protected $_domain_uuid;
protected $_domain_name;
protected $_domain_count;
public function domain_uuid() { return $this->_domain_uuid; }
public function domain_name() { return $this->_domain_name; }
public function domain_count() { return $this->_domain_count; }
public function set_domain_uuid($domain_uuid) {
$e = new Exception();
$trace = $e->getTrace();
if($trace[1]['function'] != 'create_domain'){
throw new Exception('Only create_domain is allowed to update the domain_uuid');
}
$this->_domain_uuid = $domain_uuid;
}
public function __construct($detect_switch = null, $domain_name = null, $domain_uuid = null) {
$this->_switch_dirs = preg_grep ('/^switch_.*_dir$/', get_class_methods('global_settings') );
sort( $this->_switch_dirs );
$this->_switch_vdirs = preg_grep ('/^switch_.*_vdir$/', get_class_methods('global_settings') );
sort( $this->_switch_vdirs );
if(is_null($detect_switch)){
//take settings from session
foreach ($this->_switch_dirs as $dir){
$category = 'switch';
$session_var;
preg_match( '/^switch_(.*)_dir$/', $dir, $session_var);
$dir = "_$dir";
if($session_var[1] == 'script'){ $session_var[1] = 'scripts'; }
if($session_var[1] == 'temp'){ $category = 'server'; }
$this->$dir = $_SESSION[$category][$session_var[1]]['dir'];
}
foreach ($this->_switch_vdirs as $vdir){
$category = 'switch';
$session_var;
preg_match( '/^switch_(.*)_vdir$/', $vdir, $session_var);
$vdir = "_$vdir";
if($session_var[1] == 'backup'){ $category = 'server'; }
$this->$vdir = $_SESSION[$category][$session_var[1]]['dir'];
}
$this->_switch_event_host = $_SESSION['event_socket_ip_address'];
$this->_switch_event_port = $_SESSION['event_socket_port'];
$this->_switch_event_password = $_SESSION['event_socket_password'];
// domain info
$this->_domain_name = $_SESSION['domain_name'];
$this->_domain_uuid = $_SESSION['domain_uuid'];
// collect misc info
$this->_domain_count = count($_SESSION["domains"]);
// collect db_info
global $db_type, $db_path, $db_host, $db_port, $db_name, $db_username, $db_password;
$this->_db_type = $db_type;
$this->_db_path = $db_path;
$this->_db_host = $db_host;
$this->_db_port = $db_port;
$this->_db_name = $db_name;
$this->_db_username = $db_username;
$this->_db_password = $db_password;
}elseif(!is_a($detect_switch, 'detect_switch')){
throw new Exception('The parameter $detect_switch must be a detect_switch object (or a subclass of)');
}else{
//copy from detect_switch
foreach($detect_switch->get_dirs() as $dir){
$t_dir = "_switch_$dir";
$this->$t_dir = $detect_switch->$dir();
}
foreach($detect_switch->get_vdirs() as $vdir){
$t_vdir = "_switch_$vdir";
$this->$t_vdir = $detect_switch->$vdir();
}
$this->_switch_event_host = $detect_switch->event_host;
$this->_switch_event_port = $detect_switch->event_port;
$this->_switch_event_password = $detect_switch->event_password;
//copy from _POST
foreach($_POST as $key=>$value){
if(substr($key,0,3) == "db_"){
$o_key = "_$key";
$this->$o_key = $value;
}
}
if($this->_db_create and strlen($this->_db_create_username) == 0)
{
$this->_db_create_username = $this->_db_username;
$this->_db_create_password = $this->_db_password;
}
if (strlen($this->_db_port) == 0) { $this->_db_port = "5432"; }
// domain info
if(strlen($domain_uuid) == 0){ $domain_uuid = uuid(); }
$this->_domain_name = $domain_name;
$this->_domain_uuid = $domain_uuid;
//collect misc info
$this->_domain_count = 1; //assumed to be one
}
}
}
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
require_once "root.php";
//define the install class
class global_settings {
// cached data
protected $_switch_dirs;
protected $_switch_vdirs;
public function get_switch_dirs() { return $this->_switch_dirs; }
public function get_switch_vdirs() { return $this->_switch_vdirs; }
// dirs - detected from the switch
protected $_switch_base_dir = '';
protected $_switch_cache_dir = '';
protected $_switch_conf_dir = '';
protected $_switch_db_dir = '';
protected $_switch_grammar_dir = '';
protected $_switch_htdocs_dir = '';
protected $_switch_log_dir = '';
protected $_switch_mod_dir = '';
protected $_switch_recordings_dir = '';
protected $_switch_run_dir = '';
protected $_switch_script_dir = '';
protected $_switch_sounds_dir = '';
protected $_switch_storage_dir = '';
protected $_switch_temp_dir = '';
public function switch_base_dir() { return $this->_switch_base_dir; }
public function switch_cache_dir() { return $this->_switch_cache_dir; }
public function switch_conf_dir() { return $this->_switch_conf_dir; }
public function switch_db_dir() { return $this->_switch_db_dir; }
public function switch_grammar_dir() { return $this->_switch_grammar_dir; }
public function switch_htdocs_dir() { return $this->_switch_htdocs_dir; }
public function switch_log_dir() { return $this->_switch_log_dir; }
public function switch_mod_dir() { return $this->_switch_mod_dir; }
public function switch_recordings_dir() { return $this->_switch_recordings_dir; }
public function switch_run_dir() { return $this->_switch_run_dir; }
public function switch_script_dir() { return $this->_switch_script_dir; }
public function switch_sounds_dir() { return $this->_switch_sounds_dir; }
public function switch_storage_dir() { return $this->_switch_storage_dir; }
public function switch_temp_dir() { return $this->_switch_temp_dir; }
// virtual dirs - assumed based on the detected dirs
protected $_switch_voicemail_vdir = '';
protected $_switch_phrases_vdir = '';
protected $_switch_extensions_vdir = '';
protected $_switch_sip_profiles_vdir = '';
protected $_switch_dialplan_vdir = '';
protected $_switch_backup_vdir = '';
public function switch_voicemail_vdir() { return $this->_switch_voicemail_vdir; }
public function switch_phrases_vdir() { return $this->_switch_phrases_vdir; }
public function switch_extensions_vdir() { return $this->_switch_extensions_vdir; }
public function switch_sip_profiles_vdir() { return $this->_switch_sip_profiles_vdir; }
public function switch_dialplan_vdir() { return $this->_switch_dialplan_vdir; }
public function switch_backup_vdir() { return $this->_switch_backup_vdir; }
// event socket
protected $_switch_event_host;
protected $_switch_event_port;
protected $_switch_event_password;
public function switch_event_host() { return $this->_switch_event_host; }
public function switch_event_port() { return $this->_switch_event_port; }
public function switch_event_password() { return $this->_switch_event_password; }
// database information
protected $_db_type;
protected $_db_path;
protected $_db_host;
protected $_db_port;
protected $_db_name;
protected $_db_username;
protected $_db_password;
protected $_db_create;
protected $_db_create_username;
protected $_db_create_password;
public function db_type() { return $this->_db_type; }
public function db_path() { return $this->_db_path; }
public function db_host() { return $this->_db_host; }
public function db_port() { return $this->_db_port; }
public function db_name() { return $this->_db_name; }
public function db_username() { return $this->_db_username; }
public function db_password() { return $this->_db_password; }
public function db_create() { return $this->_db_create; }
public function db_create_username() { return $this->_db_create_username; }
public function db_create_password() { return $this->_db_create_password; }
//misc information
protected $_domain_uuid;
protected $_domain_name;
protected $_domain_count;
public function domain_uuid() { return $this->_domain_uuid; }
public function domain_name() { return $this->_domain_name; }
public function domain_count() { return $this->_domain_count; }
public function set_domain_uuid($domain_uuid) {
$e = new Exception();
$trace = $e->getTrace();
if($trace[1]['function'] != 'create_domain'){
throw new Exception('Only create_domain is allowed to update the domain_uuid');
}
$this->_domain_uuid = $domain_uuid;
}
public function __construct($detect_switch = null, $domain_name = null, $domain_uuid = null) {
$this->_switch_dirs = preg_grep ('/^switch_.*_dir$/', get_class_methods('global_settings') );
sort( $this->_switch_dirs );
$this->_switch_vdirs = preg_grep ('/^switch_.*_vdir$/', get_class_methods('global_settings') );
sort( $this->_switch_vdirs );
if(is_null($detect_switch)){
//take settings from session
foreach ($this->_switch_dirs as $dir){
$category = 'switch';
$session_var;
preg_match( '/^switch_(.*)_dir$/', $dir, $session_var);
$dir = "_$dir";
if($session_var[1] == 'script'){ $session_var[1] = 'scripts'; }
if($session_var[1] == 'temp'){ $category = 'server'; }
$this->$dir = $_SESSION[$category][$session_var[1]]['dir'];
}
foreach ($this->_switch_vdirs as $vdir){
$category = 'switch';
$session_var;
preg_match( '/^switch_(.*)_vdir$/', $vdir, $session_var);
$vdir = "_$vdir";
if($session_var[1] == 'backup'){ $category = 'server'; }
$this->$vdir = $_SESSION[$category][$session_var[1]]['dir'];
}
$this->_switch_event_host = $_SESSION['event_socket_ip_address'];
$this->_switch_event_port = $_SESSION['event_socket_port'];
$this->_switch_event_password = $_SESSION['event_socket_password'];
// domain info
$this->_domain_name = $_SESSION['domain_name'];
$this->_domain_uuid = $_SESSION['domain_uuid'];
// collect misc info
$this->_domain_count = count($_SESSION["domains"]);
// collect db_info
global $db_type, $db_path, $db_host, $db_port, $db_name, $db_username, $db_password;
$this->_db_type = $db_type;
$this->_db_path = $db_path;
$this->_db_host = $db_host;
$this->_db_port = $db_port;
$this->_db_name = $db_name;
$this->_db_username = $db_username;
$this->_db_password = $db_password;
}elseif(!is_a($detect_switch, 'detect_switch')){
throw new Exception('The parameter $detect_switch must be a detect_switch object (or a subclass of)');
}else{
//copy from detect_switch
foreach($detect_switch->get_dirs() as $dir){
$t_dir = "_switch_$dir";
$this->$t_dir = $detect_switch->$dir();
}
foreach($detect_switch->get_vdirs() as $vdir){
$t_vdir = "_switch_$vdir";
$this->$t_vdir = $detect_switch->$vdir();
}
$this->_switch_event_host = $detect_switch->event_host;
$this->_switch_event_port = $detect_switch->event_port;
$this->_switch_event_password = $detect_switch->event_password;
//copy from _POST
foreach($_POST as $key=>$value){
if(substr($key,0,3) == "db_"){
$o_key = "_$key";
$this->$o_key = $value;
}
}
if($this->_db_create and strlen($this->_db_create_username) == 0)
{
$this->_db_create_username = $this->_db_username;
$this->_db_create_password = $this->_db_password;
}
if (strlen($this->_db_port) == 0) { $this->_db_port = "5432"; }
// domain info
if(strlen($domain_uuid) == 0){ $domain_uuid = uuid(); }
$this->_domain_name = $domain_name;
$this->_domain_uuid = $domain_uuid;
//collect misc info
$this->_domain_count = 1; //assumed to be one
}
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,146 +1,146 @@
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
//define the install class
class install_switch {
protected $global_settings;
protected $dbh;
public $debug = false;
public $echo_progress = false;
function __construct($global_settings) {
if(is_null($global_settings)){
require_once "core/install/resources/classes/global_settings.php";
$global_settings = new global_settings();
}elseif(!is_a($global_settings, 'global_settings')){
throw new Exception('The parameter $global_settings must be a global_settings object (or a subclass of)');
}
$this->global_settings = $global_settings;
}
//utility Functions
function write_debug($message) {
if($this->debug){
echo "$message\n";
}
}
function write_progress($message) {
if($this->echo_progress){
echo "$message\n";
}
}
protected function backup_dir($dir, $backup_name){
if (!is_readable($dir)) {
throw new Exception("backup_dir() source directory '".$dir."' does not exist.");
}
$dst_tar = join( DIRECTORY_SEPARATOR, array(sys_get_temp_dir(), "$backup_name.tar"));
//pharData is the correct way to do it, but it keeps creating incomplete archives
//$tar = new PharData($dst_tar);
//$tar->buildFromDirectory($dir);
$this->write_debug("backing up to $dst_tar");
if (file_exists('/bin/tar')) {
exec('tar -cvf ' .$dst_tar. ' -C '.$dir .' .');
}else{
$this->write_debug('WARN: old config could not be compressed');
$dst_dir = join( DIRECTORY_SEPARATOR, array(sys_get_temp_dir(), "$backup_name"));
recursive_copy($dir, $dst_dir);
}
}
function install_phase_1() {
$this->write_progress("Install phase 1 started for switch");
$this->copy_conf();
$this->write_progress("Install phase 1 completed for switch");
}
function install_phase_2() {
$this->write_progress("Install phase 2 started for switch");
$this->restart_switch();
$this->write_progress("Install phase 2 completed for switch");
}
protected function copy_conf() {
//send a message
$this->write_progress("\tCopying Config");
//make a backup of the config
if (file_exists($this->global_settings->switch_conf_dir())) {
$this->backup_dir($this->global_settings->switch_conf_dir(), 'fusionpbx_switch_config');
recursive_delete($this->global_settings->switch_conf_dir());
}
//make sure the conf directory exists
if (!is_dir($this->global_settings->switch_conf_dir())) {
if (!mkdir($this->global_settings->switch_conf_dir(), 0774, true)) {
throw new Exception("Failed to create the switch conf directory '".$this->global_settings->switch_conf_dir()."'. ");
}
}
//copy resources/templates/conf to the freeswitch conf dir
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')){
$src_dir = "/usr/share/examples/fusionpbx/resources/templates/conf";
}
else {
$src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/templates/conf";
}
$dst_dir = $this->global_settings->switch_conf_dir();
if (is_readable($dst_dir)) {
recursive_copy($src_dir, $dst_dir);
unset($src_dir, $dst_dir);
}
$fax_dir = join( DIRECTORY_SEPARATOR, array($this->global_settings->switch_storage_dir(), 'fax'));
if (!is_readable($fax_dir)) { mkdir($fax_dir,0777,true); }
$voicemail_dir = join( DIRECTORY_SEPARATOR, array($this->global_settings->switch_storage_dir(), 'voicemail'));
if (!is_readable($voicemail_dir)) { mkdir($voicemail_dir,0777,true); }
//write the xml_cdr.conf.xml file
if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/xml_cdr")) {
xml_cdr_conf_xml();
}
//write the switch.conf.xml file
if (file_exists($this->global_settings->switch_conf_dir())) {
switch_conf_xml();
}
}
protected function restart_switch() {
$esl = new event_socket;
if(!$esl->connect($this->global_settings->switch_event_host(), $this->global_settings->switch_event_port(), $this->global_settings->switch_event_password())) {
throw new Exception("Failed to connect to switch");
}
if (!$esl->request('api fsctl shutdown restart elegant')){
throw new Exception("Failed to send switch restart");
}
$esl->reset_fp();
}
}
<?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) 2010-2015
All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
//define the install class
class install_switch {
protected $global_settings;
protected $dbh;
public $debug = false;
public $echo_progress = false;
function __construct($global_settings) {
if(is_null($global_settings)){
require_once "core/install/resources/classes/global_settings.php";
$global_settings = new global_settings();
}elseif(!is_a($global_settings, 'global_settings')){
throw new Exception('The parameter $global_settings must be a global_settings object (or a subclass of)');
}
$this->global_settings = $global_settings;
}
//utility Functions
function write_debug($message) {
if($this->debug){
echo "$message\n";
}
}
function write_progress($message) {
if($this->echo_progress){
echo "$message\n";
}
}
protected function backup_dir($dir, $backup_name){
if (!is_readable($dir)) {
throw new Exception("backup_dir() source directory '".$dir."' does not exist.");
}
$dst_tar = join( DIRECTORY_SEPARATOR, array(sys_get_temp_dir(), "$backup_name.tar"));
//pharData is the correct way to do it, but it keeps creating incomplete archives
//$tar = new PharData($dst_tar);
//$tar->buildFromDirectory($dir);
$this->write_debug("backing up to $dst_tar");
if (file_exists('/bin/tar')) {
exec('tar -cvf ' .$dst_tar. ' -C '.$dir .' .');
}else{
$this->write_debug('WARN: old config could not be compressed');
$dst_dir = join( DIRECTORY_SEPARATOR, array(sys_get_temp_dir(), "$backup_name"));
recursive_copy($dir, $dst_dir);
}
}
function install_phase_1() {
$this->write_progress("Install phase 1 started for switch");
$this->copy_conf();
$this->write_progress("Install phase 1 completed for switch");
}
function install_phase_2() {
$this->write_progress("Install phase 2 started for switch");
$this->restart_switch();
$this->write_progress("Install phase 2 completed for switch");
}
protected function copy_conf() {
//send a message
$this->write_progress("\tCopying Config");
//make a backup of the config
if (file_exists($this->global_settings->switch_conf_dir())) {
$this->backup_dir($this->global_settings->switch_conf_dir(), 'fusionpbx_switch_config');
recursive_delete($this->global_settings->switch_conf_dir());
}
//make sure the conf directory exists
if (!is_dir($this->global_settings->switch_conf_dir())) {
if (!mkdir($this->global_settings->switch_conf_dir(), 0774, true)) {
throw new Exception("Failed to create the switch conf directory '".$this->global_settings->switch_conf_dir()."'. ");
}
}
//copy resources/templates/conf to the freeswitch conf dir
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')){
$src_dir = "/usr/share/examples/fusionpbx/resources/templates/conf";
}
else {
$src_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/resources/templates/conf";
}
$dst_dir = $this->global_settings->switch_conf_dir();
if (is_readable($dst_dir)) {
recursive_copy($src_dir, $dst_dir);
unset($src_dir, $dst_dir);
}
$fax_dir = join( DIRECTORY_SEPARATOR, array($this->global_settings->switch_storage_dir(), 'fax'));
if (!is_readable($fax_dir)) { mkdir($fax_dir,0777,true); }
$voicemail_dir = join( DIRECTORY_SEPARATOR, array($this->global_settings->switch_storage_dir(), 'voicemail'));
if (!is_readable($voicemail_dir)) { mkdir($voicemail_dir,0777,true); }
//write the xml_cdr.conf.xml file
if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/app/xml_cdr")) {
xml_cdr_conf_xml();
}
//write the switch.conf.xml file
if (file_exists($this->global_settings->switch_conf_dir())) {
switch_conf_xml();
}
}
protected function restart_switch() {
$esl = new event_socket;
if(!$esl->connect($this->global_settings->switch_event_host(), $this->global_settings->switch_event_port(), $this->global_settings->switch_event_password())) {
throw new Exception("Failed to connect to switch");
}
if (!$esl->request('api fsctl shutdown restart elegant')){
throw new Exception("Failed to send switch restart");
}
$esl->reset_fp();
}
}
?>

View File

@@ -1,252 +1,252 @@
<?php
$iso_countries = array
(
'AF' => 'Afghanistan',
'AX' => 'Aland Islands',
'AL' => 'Albania',
'DZ' => 'Algeria',
'AS' => 'American Samoa',
'AD' => 'Andorra',
'AO' => 'Angola',
'AI' => 'Anguilla',
'AQ' => 'Antarctica',
'AG' => 'Antigua And Barbuda',
'AR' => 'Argentina',
'AM' => 'Armenia',
'AW' => 'Aruba',
'AU' => 'Australia',
'AT' => 'Austria',
'AZ' => 'Azerbaijan',
'BS' => 'Bahamas',
'BH' => 'Bahrain',
'BD' => 'Bangladesh',
'BB' => 'Barbados',
'BY' => 'Belarus',
'BE' => 'Belgium',
'BZ' => 'Belize',
'BJ' => 'Benin',
'BM' => 'Bermuda',
'BT' => 'Bhutan',
'BO' => 'Bolivia',
'BA' => 'Bosnia And Herzegovina',
'BW' => 'Botswana',
'BV' => 'Bouvet Island',
'BR' => 'Brazil',
'IO' => 'British Indian Ocean Territory',
'BN' => 'Brunei Darussalam',
'BG' => 'Bulgaria',
'BF' => 'Burkina Faso',
'BI' => 'Burundi',
'KH' => 'Cambodia',
'CM' => 'Cameroon',
'CA' => 'Canada',
'CV' => 'Cape Verde',
'KY' => 'Cayman Islands',
'CF' => 'Central African Republic',
'TD' => 'Chad',
'CL' => 'Chile',
'CN' => 'China',
'CX' => 'Christmas Island',
'CC' => 'Cocos (Keeling) Islands',
'CO' => 'Colombia',
'KM' => 'Comoros',
'CG' => 'Congo',
'CD' => 'Congo, Democratic Republic',
'CK' => 'Cook Islands',
'CR' => 'Costa Rica',
'CI' => 'Cote D\'Ivoire',
'HR' => 'Croatia',
'CU' => 'Cuba',
'CY' => 'Cyprus',
'CZ' => 'Czech Republic',
'DK' => 'Denmark',
'DJ' => 'Djibouti',
'DM' => 'Dominica',
'DO' => 'Dominican Republic',
'EC' => 'Ecuador',
'EG' => 'Egypt',
'SV' => 'El Salvador',
'GQ' => 'Equatorial Guinea',
'ER' => 'Eritrea',
'EE' => 'Estonia',
'ET' => 'Ethiopia',
'FK' => 'Falkland Islands (Malvinas)',
'FO' => 'Faroe Islands',
'FJ' => 'Fiji',
'FI' => 'Finland',
'FR' => 'France',
'GF' => 'French Guiana',
'PF' => 'French Polynesia',
'TF' => 'French Southern Territories',
'GA' => 'Gabon',
'GM' => 'Gambia',
'GE' => 'Georgia',
'DE' => 'Germany',
'GH' => 'Ghana',
'GI' => 'Gibraltar',
'GR' => 'Greece',
'GL' => 'Greenland',
'GD' => 'Grenada',
'GP' => 'Guadeloupe',
'GU' => 'Guam',
'GT' => 'Guatemala',
'GG' => 'Guernsey',
'GN' => 'Guinea',
'GW' => 'Guinea-Bissau',
'GY' => 'Guyana',
'HT' => 'Haiti',
'HM' => 'Heard Island & Mcdonald Islands',
'VA' => 'Holy See (Vatican City State)',
'HN' => 'Honduras',
'HK' => 'Hong Kong',
'HU' => 'Hungary',
'IS' => 'Iceland',
'IN' => 'India',
'ID' => 'Indonesia',
'IR' => 'Iran, Islamic Republic Of',
'IQ' => 'Iraq',
'IE' => 'Ireland',
'IM' => 'Isle Of Man',
'IL' => 'Israel',
'IT' => 'Italy',
'JM' => 'Jamaica',
'JP' => 'Japan',
'JE' => 'Jersey',
'JO' => 'Jordan',
'KZ' => 'Kazakhstan',
'KE' => 'Kenya',
'KI' => 'Kiribati',
'KR' => 'Korea',
'KW' => 'Kuwait',
'KG' => 'Kyrgyzstan',
'LA' => 'Lao People\'s Democratic Republic',
'LV' => 'Latvia',
'LB' => 'Lebanon',
'LS' => 'Lesotho',
'LR' => 'Liberia',
'LY' => 'Libyan Arab Jamahiriya',
'LI' => 'Liechtenstein',
'LT' => 'Lithuania',
'LU' => 'Luxembourg',
'MO' => 'Macao',
'MK' => 'Macedonia',
'MG' => 'Madagascar',
'MW' => 'Malawi',
'MY' => 'Malaysia',
'MV' => 'Maldives',
'ML' => 'Mali',
'MT' => 'Malta',
'MH' => 'Marshall Islands',
'MQ' => 'Martinique',
'MR' => 'Mauritania',
'MU' => 'Mauritius',
'YT' => 'Mayotte',
'MX' => 'Mexico',
'FM' => 'Micronesia, Federated States Of',
'MD' => 'Moldova',
'MC' => 'Monaco',
'MN' => 'Mongolia',
'ME' => 'Montenegro',
'MS' => 'Montserrat',
'MA' => 'Morocco',
'MZ' => 'Mozambique',
'MM' => 'Myanmar',
'NA' => 'Namibia',
'NR' => 'Nauru',
'NP' => 'Nepal',
'NL' => 'Netherlands',
'AN' => 'Netherlands Antilles',
'NC' => 'New Caledonia',
'NZ' => 'New Zealand',
'NI' => 'Nicaragua',
'NE' => 'Niger',
'NG' => 'Nigeria',
'NU' => 'Niue',
'NF' => 'Norfolk Island',
'MP' => 'Northern Mariana Islands',
'NO' => 'Norway',
'OM' => 'Oman',
'PK' => 'Pakistan',
'PW' => 'Palau',
'PS' => 'Palestinian Territory, Occupied',
'PA' => 'Panama',
'PG' => 'Papua New Guinea',
'PY' => 'Paraguay',
'PE' => 'Peru',
'PH' => 'Philippines',
'PN' => 'Pitcairn',
'PL' => 'Poland',
'PT' => 'Portugal',
'PR' => 'Puerto Rico',
'QA' => 'Qatar',
'RE' => 'Reunion',
'RO' => 'Romania',
'RU' => 'Russian Federation',
'RW' => 'Rwanda',
'BL' => 'Saint Barthelemy',
'SH' => 'Saint Helena',
'KN' => 'Saint Kitts And Nevis',
'LC' => 'Saint Lucia',
'MF' => 'Saint Martin',
'PM' => 'Saint Pierre And Miquelon',
'VC' => 'Saint Vincent And Grenadines',
'WS' => 'Samoa',
'SM' => 'San Marino',
'ST' => 'Sao Tome And Principe',
'SA' => 'Saudi Arabia',
'SN' => 'Senegal',
'RS' => 'Serbia',
'SC' => 'Seychelles',
'SL' => 'Sierra Leone',
'SG' => 'Singapore',
'SK' => 'Slovakia',
'SI' => 'Slovenia',
'SB' => 'Solomon Islands',
'SO' => 'Somalia',
'ZA' => 'South Africa',
'GS' => 'South Georgia And Sandwich Isl.',
'ES' => 'Spain',
'LK' => 'Sri Lanka',
'SD' => 'Sudan',
'SR' => 'Suriname',
'SJ' => 'Svalbard And Jan Mayen',
'SZ' => 'Swaziland',
'SE' => 'Sweden',
'CH' => 'Switzerland',
'SY' => 'Syrian Arab Republic',
'TW' => 'Taiwan',
'TJ' => 'Tajikistan',
'TZ' => 'Tanzania',
'TH' => 'Thailand',
'TL' => 'Timor-Leste',
'TG' => 'Togo',
'TK' => 'Tokelau',
'TO' => 'Tonga',
'TT' => 'Trinidad And Tobago',
'TN' => 'Tunisia',
'TR' => 'Turkey',
'TM' => 'Turkmenistan',
'TC' => 'Turks And Caicos Islands',
'TV' => 'Tuvalu',
'UG' => 'Uganda',
'UA' => 'Ukraine',
'AE' => 'United Arab Emirates',
'GB' => 'United Kingdom',
'US' => 'United States',
'UM' => 'United States Outlying Islands',
'UY' => 'Uruguay',
'UZ' => 'Uzbekistan',
'VU' => 'Vanuatu',
'VE' => 'Venezuela',
'VN' => 'Viet Nam',
'VG' => 'Virgin Islands, British',
'VI' => 'Virgin Islands, U.S.',
'WF' => 'Wallis And Futuna',
'EH' => 'Western Sahara',
'YE' => 'Yemen',
'ZM' => 'Zambia',
'ZW' => 'Zimbabwe',
);
<?php
$iso_countries = array
(
'AF' => 'Afghanistan',
'AX' => 'Aland Islands',
'AL' => 'Albania',
'DZ' => 'Algeria',
'AS' => 'American Samoa',
'AD' => 'Andorra',
'AO' => 'Angola',
'AI' => 'Anguilla',
'AQ' => 'Antarctica',
'AG' => 'Antigua And Barbuda',
'AR' => 'Argentina',
'AM' => 'Armenia',
'AW' => 'Aruba',
'AU' => 'Australia',
'AT' => 'Austria',
'AZ' => 'Azerbaijan',
'BS' => 'Bahamas',
'BH' => 'Bahrain',
'BD' => 'Bangladesh',
'BB' => 'Barbados',
'BY' => 'Belarus',
'BE' => 'Belgium',
'BZ' => 'Belize',
'BJ' => 'Benin',
'BM' => 'Bermuda',
'BT' => 'Bhutan',
'BO' => 'Bolivia',
'BA' => 'Bosnia And Herzegovina',
'BW' => 'Botswana',
'BV' => 'Bouvet Island',
'BR' => 'Brazil',
'IO' => 'British Indian Ocean Territory',
'BN' => 'Brunei Darussalam',
'BG' => 'Bulgaria',
'BF' => 'Burkina Faso',
'BI' => 'Burundi',
'KH' => 'Cambodia',
'CM' => 'Cameroon',
'CA' => 'Canada',
'CV' => 'Cape Verde',
'KY' => 'Cayman Islands',
'CF' => 'Central African Republic',
'TD' => 'Chad',
'CL' => 'Chile',
'CN' => 'China',
'CX' => 'Christmas Island',
'CC' => 'Cocos (Keeling) Islands',
'CO' => 'Colombia',
'KM' => 'Comoros',
'CG' => 'Congo',
'CD' => 'Congo, Democratic Republic',
'CK' => 'Cook Islands',
'CR' => 'Costa Rica',
'CI' => 'Cote D\'Ivoire',
'HR' => 'Croatia',
'CU' => 'Cuba',
'CY' => 'Cyprus',
'CZ' => 'Czech Republic',
'DK' => 'Denmark',
'DJ' => 'Djibouti',
'DM' => 'Dominica',
'DO' => 'Dominican Republic',
'EC' => 'Ecuador',
'EG' => 'Egypt',
'SV' => 'El Salvador',
'GQ' => 'Equatorial Guinea',
'ER' => 'Eritrea',
'EE' => 'Estonia',
'ET' => 'Ethiopia',
'FK' => 'Falkland Islands (Malvinas)',
'FO' => 'Faroe Islands',
'FJ' => 'Fiji',
'FI' => 'Finland',
'FR' => 'France',
'GF' => 'French Guiana',
'PF' => 'French Polynesia',
'TF' => 'French Southern Territories',
'GA' => 'Gabon',
'GM' => 'Gambia',
'GE' => 'Georgia',
'DE' => 'Germany',
'GH' => 'Ghana',
'GI' => 'Gibraltar',
'GR' => 'Greece',
'GL' => 'Greenland',
'GD' => 'Grenada',
'GP' => 'Guadeloupe',
'GU' => 'Guam',
'GT' => 'Guatemala',
'GG' => 'Guernsey',
'GN' => 'Guinea',
'GW' => 'Guinea-Bissau',
'GY' => 'Guyana',
'HT' => 'Haiti',
'HM' => 'Heard Island & Mcdonald Islands',
'VA' => 'Holy See (Vatican City State)',
'HN' => 'Honduras',
'HK' => 'Hong Kong',
'HU' => 'Hungary',
'IS' => 'Iceland',
'IN' => 'India',
'ID' => 'Indonesia',
'IR' => 'Iran, Islamic Republic Of',
'IQ' => 'Iraq',
'IE' => 'Ireland',
'IM' => 'Isle Of Man',
'IL' => 'Israel',
'IT' => 'Italy',
'JM' => 'Jamaica',
'JP' => 'Japan',
'JE' => 'Jersey',
'JO' => 'Jordan',
'KZ' => 'Kazakhstan',
'KE' => 'Kenya',
'KI' => 'Kiribati',
'KR' => 'Korea',
'KW' => 'Kuwait',
'KG' => 'Kyrgyzstan',
'LA' => 'Lao People\'s Democratic Republic',
'LV' => 'Latvia',
'LB' => 'Lebanon',
'LS' => 'Lesotho',
'LR' => 'Liberia',
'LY' => 'Libyan Arab Jamahiriya',
'LI' => 'Liechtenstein',
'LT' => 'Lithuania',
'LU' => 'Luxembourg',
'MO' => 'Macao',
'MK' => 'Macedonia',
'MG' => 'Madagascar',
'MW' => 'Malawi',
'MY' => 'Malaysia',
'MV' => 'Maldives',
'ML' => 'Mali',
'MT' => 'Malta',
'MH' => 'Marshall Islands',
'MQ' => 'Martinique',
'MR' => 'Mauritania',
'MU' => 'Mauritius',
'YT' => 'Mayotte',
'MX' => 'Mexico',
'FM' => 'Micronesia, Federated States Of',
'MD' => 'Moldova',
'MC' => 'Monaco',
'MN' => 'Mongolia',
'ME' => 'Montenegro',
'MS' => 'Montserrat',
'MA' => 'Morocco',
'MZ' => 'Mozambique',
'MM' => 'Myanmar',
'NA' => 'Namibia',
'NR' => 'Nauru',
'NP' => 'Nepal',
'NL' => 'Netherlands',
'AN' => 'Netherlands Antilles',
'NC' => 'New Caledonia',
'NZ' => 'New Zealand',
'NI' => 'Nicaragua',
'NE' => 'Niger',
'NG' => 'Nigeria',
'NU' => 'Niue',
'NF' => 'Norfolk Island',
'MP' => 'Northern Mariana Islands',
'NO' => 'Norway',
'OM' => 'Oman',
'PK' => 'Pakistan',
'PW' => 'Palau',
'PS' => 'Palestinian Territory, Occupied',
'PA' => 'Panama',
'PG' => 'Papua New Guinea',
'PY' => 'Paraguay',
'PE' => 'Peru',
'PH' => 'Philippines',
'PN' => 'Pitcairn',
'PL' => 'Poland',
'PT' => 'Portugal',
'PR' => 'Puerto Rico',
'QA' => 'Qatar',
'RE' => 'Reunion',
'RO' => 'Romania',
'RU' => 'Russian Federation',
'RW' => 'Rwanda',
'BL' => 'Saint Barthelemy',
'SH' => 'Saint Helena',
'KN' => 'Saint Kitts And Nevis',
'LC' => 'Saint Lucia',
'MF' => 'Saint Martin',
'PM' => 'Saint Pierre And Miquelon',
'VC' => 'Saint Vincent And Grenadines',
'WS' => 'Samoa',
'SM' => 'San Marino',
'ST' => 'Sao Tome And Principe',
'SA' => 'Saudi Arabia',
'SN' => 'Senegal',
'RS' => 'Serbia',
'SC' => 'Seychelles',
'SL' => 'Sierra Leone',
'SG' => 'Singapore',
'SK' => 'Slovakia',
'SI' => 'Slovenia',
'SB' => 'Solomon Islands',
'SO' => 'Somalia',
'ZA' => 'South Africa',
'GS' => 'South Georgia And Sandwich Isl.',
'ES' => 'Spain',
'LK' => 'Sri Lanka',
'SD' => 'Sudan',
'SR' => 'Suriname',
'SJ' => 'Svalbard And Jan Mayen',
'SZ' => 'Swaziland',
'SE' => 'Sweden',
'CH' => 'Switzerland',
'SY' => 'Syrian Arab Republic',
'TW' => 'Taiwan',
'TJ' => 'Tajikistan',
'TZ' => 'Tanzania',
'TH' => 'Thailand',
'TL' => 'Timor-Leste',
'TG' => 'Togo',
'TK' => 'Tokelau',
'TO' => 'Tonga',
'TT' => 'Trinidad And Tobago',
'TN' => 'Tunisia',
'TR' => 'Turkey',
'TM' => 'Turkmenistan',
'TC' => 'Turks And Caicos Islands',
'TV' => 'Tuvalu',
'UG' => 'Uganda',
'UA' => 'Ukraine',
'AE' => 'United Arab Emirates',
'GB' => 'United Kingdom',
'US' => 'United States',
'UM' => 'United States Outlying Islands',
'UY' => 'Uruguay',
'UZ' => 'Uzbekistan',
'VU' => 'Vanuatu',
'VE' => 'Venezuela',
'VN' => 'Viet Nam',
'VG' => 'Virgin Islands, British',
'VI' => 'Virgin Islands, U.S.',
'WF' => 'Wallis And Futuna',
'EH' => 'Western Sahara',
'YE' => 'Yemen',
'ZM' => 'Zambia',
'ZW' => 'Zimbabwe',
);
?>

View File

@@ -1,276 +1,276 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
echo "<form method='post' name='frm' action=''>\n";
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='return_install_step' value='config_database'/>\n";
echo "<input type='hidden' name='install_step' value='execute'/>\n";
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
echo "<input type='hidden' name='db_type' value='$db_type'/>\n";
echo "<input type='hidden' name='admin_username' value='$admin_username'/>\n";
echo "<input type='hidden' name='admin_password' value='$admin_password'/>\n";
echo "<input type='hidden' name='install_default_country' value='$install_default_country'/>\n";
echo "<input type='hidden' name='install_template_name' value='$install_template_name'/>\n";
echo "<input type='hidden' name='domain_name' value='$domain_name'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap><b>".$text['header-config_database']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
if ($db_type == "sqlite") {
echo "<tr>\n";
echo "<td class='vncell' 'valign='top' align='left' nowrap>\n";
echo " Database Filename\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Set the database filename. The file extension should be '.db'.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' 'valign='top' align='left' nowrap>\n";
echo " Database Directory\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_path' maxlength='255' value=\"$db_path\"><br />\n";
echo " Set the path to the database directory.\n";
echo "</td>\n";
echo "</tr>\n";
}
if ($db_type == "mysql") {
//set defaults
if (strlen($db_host) == 0) { $db_host = 'localhost'; }
if (strlen($db_port) == 0) { $db_port = '3306'; }
//if (strlen($db_name) == 0) { $db_name = 'fusionpbx'; }
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Host\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_host' maxlength='255' value=\"$db_host\"><br />\n";
echo " Enter the host address for the database server.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Database Port\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_port' maxlength='255' value=\"$db_port\"><br />\n";
echo " Enter the port number. It is optional if the database is using the default port.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Enter the name of the database.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_username' maxlength='255' value=\"$db_username\"><br />\n";
echo " Enter the database username. \n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_password' maxlength='255' value=\"$db_password\"><br />\n";
echo " Enter the database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Options\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if($db_create=='1') { $checked = "checked='checked'"; } else { $checked = ''; }
echo " <label><input type='checkbox' name='db_create' value='1' $checked /> Create the database</label>\n";
echo "<br />\n";
echo "Choose whether to create the database\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_username' maxlength='255' value=\"$db_create_username\"><br />\n";
echo " Optional, this username is used to create the database, a database user and set the permissions. \n";
echo " By default this username is 'root' however it can be any account with permission to add a database, user, and grant permissions. \n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_password' maxlength='255' value=\"$db_create_password\"><br />\n";
echo " Enter the create database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
}
if ($db_type == "pgsql") {
if (strlen($db_host) == 0) { $db_host = 'localhost'; }
if (strlen($db_port) == 0) { $db_port = '5432'; }
if (strlen($db_name) == 0) { $db_name = 'fusionpbx'; }
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Host\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_host' maxlength='255' value=\"$db_host\"><br />\n";
echo " Enter the host address for the database server.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Database Port\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_port' maxlength='255' value=\"$db_port\"><br />\n";
echo " Enter the port number. It is optional if the database is using the default port.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Enter the name of the database.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_username' maxlength='255' value=\"$db_username\"><br />\n";
echo " Enter the database username.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_password' maxlength='255' value=\"$db_password\"><br />\n";
echo " Enter the database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Options\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if($db_create=='1') { $checked = "checked='checked'"; } else { $checked = ''; }
echo " <label><input type='checkbox' name='db_create' value='1' $checked /> Create the database</label>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_username' maxlength='255' value=\"$db_create_username\"><br />\n";
echo " Optional, this username is used to create the database, a database user and set the permissions. \n";
echo " By default this username is 'pgsql' however it can be any account with permission to add a database, user, and grant permissions. \n";
echo " Leave blank to use the details above. \n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_password' maxlength='255' value=\"$db_create_password\"><br />\n";
echo " Enter the create database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "</table>";
//echo " <div style='text-align:right'>\n";
//echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
//echo " <input type='submit' name='execute' class='btn' name='".$text['button-execute']."'>\n";
//echo " </div>\n";
echo "</form>\n";
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
echo "<form method='post' name='frm' action=''>\n";
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='return_install_step' value='config_database'/>\n";
echo "<input type='hidden' name='install_step' value='execute'/>\n";
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
echo "<input type='hidden' name='db_type' value='$db_type'/>\n";
echo "<input type='hidden' name='admin_username' value='$admin_username'/>\n";
echo "<input type='hidden' name='admin_password' value='$admin_password'/>\n";
echo "<input type='hidden' name='install_default_country' value='$install_default_country'/>\n";
echo "<input type='hidden' name='install_template_name' value='$install_template_name'/>\n";
echo "<input type='hidden' name='domain_name' value='$domain_name'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap><b>".$text['header-config_database']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
if ($db_type == "sqlite") {
echo "<tr>\n";
echo "<td class='vncell' 'valign='top' align='left' nowrap>\n";
echo " Database Filename\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Set the database filename. The file extension should be '.db'.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' 'valign='top' align='left' nowrap>\n";
echo " Database Directory\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_path' maxlength='255' value=\"$db_path\"><br />\n";
echo " Set the path to the database directory.\n";
echo "</td>\n";
echo "</tr>\n";
}
if ($db_type == "mysql") {
//set defaults
if (strlen($db_host) == 0) { $db_host = 'localhost'; }
if (strlen($db_port) == 0) { $db_port = '3306'; }
//if (strlen($db_name) == 0) { $db_name = 'fusionpbx'; }
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Host\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_host' maxlength='255' value=\"$db_host\"><br />\n";
echo " Enter the host address for the database server.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Database Port\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_port' maxlength='255' value=\"$db_port\"><br />\n";
echo " Enter the port number. It is optional if the database is using the default port.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Enter the name of the database.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_username' maxlength='255' value=\"$db_username\"><br />\n";
echo " Enter the database username. \n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_password' maxlength='255' value=\"$db_password\"><br />\n";
echo " Enter the database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Options\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if($db_create=='1') { $checked = "checked='checked'"; } else { $checked = ''; }
echo " <label><input type='checkbox' name='db_create' value='1' $checked /> Create the database</label>\n";
echo "<br />\n";
echo "Choose whether to create the database\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_username' maxlength='255' value=\"$db_create_username\"><br />\n";
echo " Optional, this username is used to create the database, a database user and set the permissions. \n";
echo " By default this username is 'root' however it can be any account with permission to add a database, user, and grant permissions. \n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_password' maxlength='255' value=\"$db_create_password\"><br />\n";
echo " Enter the create database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
}
if ($db_type == "pgsql") {
if (strlen($db_host) == 0) { $db_host = 'localhost'; }
if (strlen($db_port) == 0) { $db_port = '5432'; }
if (strlen($db_name) == 0) { $db_name = 'fusionpbx'; }
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Host\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_host' maxlength='255' value=\"$db_host\"><br />\n";
echo " Enter the host address for the database server.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Database Port\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_port' maxlength='255' value=\"$db_port\"><br />\n";
echo " Enter the port number. It is optional if the database is using the default port.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_name' maxlength='255' value=\"$db_name\"><br />\n";
echo " Enter the name of the database.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_username' maxlength='255' value=\"$db_username\"><br />\n";
echo " Enter the database username.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_password' maxlength='255' value=\"$db_password\"><br />\n";
echo " Enter the database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Options\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
if($db_create=='1') { $checked = "checked='checked'"; } else { $checked = ''; }
echo " <label><input type='checkbox' name='db_create' value='1' $checked /> Create the database</label>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_username' maxlength='255' value=\"$db_create_username\"><br />\n";
echo " Optional, this username is used to create the database, a database user and set the permissions. \n";
echo " By default this username is 'pgsql' however it can be any account with permission to add a database, user, and grant permissions. \n";
echo " Leave blank to use the details above. \n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap>\n";
echo " Create Database Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='db_create_password' maxlength='255' value=\"$db_create_password\"><br />\n";
echo " Enter the create database password.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
}
echo "</table>";
//echo " <div style='text-align:right'>\n";
//echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
//echo " <input type='submit' name='execute' class='btn' name='".$text['button-execute']."'>\n";
//echo " </div>\n";
echo "</form>\n";
?>

View File

@@ -1,150 +1,150 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
echo "<form method='post' name='frm' action=''>\n";
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='return_install_step' value='config_detail'/>\n";
echo "<input type='hidden' name='install_step' value='config_database'/>\n";
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap><b>".$text['header-config_detail']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='admin_username' maxlength='255' value=\"$admin_username\"><br />\n";
echo " Enter the username to use when logging in with the browser.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='admin_password' maxlength='255' value=\"$admin_password\"><br />\n";
echo " Enter the password to use when logging in with the browser.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Country\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select id='install_default_country' name='install_default_country' class='formfld' style=''>\n";
require "resources/countries.php";
foreach ($countries as $iso_code => $country ){
if($iso_code == $install_default_country){
echo " <option value='$iso_code' selected='selected'>".$country['country']."</option>\n";
}else{
echo " <option value='$iso_code'>".$country['country']."</option>\n";
}
}
echo " </select>\n";
echo " <br />\n";
echo " Select ISO country code used to initialize calling contry code variables.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td width='20%' class=\"vncellreq\" align='left' nowrap='nowrap'>\n";
echo " Theme: \n";
echo " </td>\n";
echo " <td class=\"vtable\" align='left'>\n";
echo " <select id='install_template_name' name='install_template_name' class='formfld' style=''>\n";
echo " <option value=''></option>\n";
//add all the themes to the list
$theme_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes';
if ($handle = opendir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes')) {
while (false !== ($dir_name = readdir($handle))) {
if ($dir_name != "." && $dir_name != ".." && $dir_name != ".svn" && $dir_name != ".git" && $dir_name != "flags" && is_readable($theme_dir.'/'.$dir_name)) {
$dir_label = str_replace('_', ' ', $dir_name);
$dir_label = str_replace('-', ' ', $dir_label);
if ($dir_name == 'enhanced') {
echo " <option value='$dir_name' selected='selected'>$dir_label</option>\n";
}
else {
echo " <option value='$dir_name'>$dir_label</option>\n";
}
}
}
closedir($handle);
}
echo " </select>\n";
echo " <br />\n";
echo " Select a theme to set as the default.<br />\n";
echo " </td>\n";
echo " </tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Domain name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='domain_name' maxlength='255' value=\"$domain_name\"><br />\n";
echo " Enter the default domain name. \n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Type\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select name='db_type' id='db_type' class='formfld' id='form_tag' onchange='db_type_onchange();'>\n";
if (extension_loaded('pdo_pgsql')) { echo " <option value='pgsql'>postgresql</option>\n"; }
if (extension_loaded('pdo_mysql')) { echo " <option value='mysql'>mysql</option>\n"; }
if (extension_loaded('pdo_sqlite')) { echo " <option value='sqlite' selected='selected'>sqlite</option>\n"; } //set sqlite as the default
echo " </select><br />\n";
echo " Select the database type.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
//echo " <div style='text-align:right'>\n";
//echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
//echo " <input type='submit' class='btn' name='execute' name='".$text['button-next']."'>\n";
//echo " </div>\n";
echo "</form>\n";
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
Matthew Vale <github@mafoo.org>
*/
echo "<form method='post' name='frm' action=''>\n";
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='return_install_step' value='config_detail'/>\n";
echo "<input type='hidden' name='install_step' value='config_database'/>\n";
echo "<input type='hidden' name='event_host' value='$event_host'/>\n";
echo "<input type='hidden' name='event_port' value='$event_port'/>\n";
echo "<input type='hidden' name='event_password' value='$event_password'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td align='left' width='30%' nowrap><b>".$text['header-config_detail']."</b></td>\n";
echo "<td width='70%' align='right'>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Username\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='admin_username' maxlength='255' value=\"$admin_username\"><br />\n";
echo " Enter the username to use when logging in with the browser.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Password\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='admin_password' maxlength='255' value=\"$admin_password\"><br />\n";
echo " Enter the password to use when logging in with the browser.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap'>\n";
echo " Country\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select id='install_default_country' name='install_default_country' class='formfld' style=''>\n";
require "resources/countries.php";
foreach ($countries as $iso_code => $country ){
if($iso_code == $install_default_country){
echo " <option value='$iso_code' selected='selected'>".$country['country']."</option>\n";
}else{
echo " <option value='$iso_code'>".$country['country']."</option>\n";
}
}
echo " </select>\n";
echo " <br />\n";
echo " Select ISO country code used to initialize calling contry code variables.<br />\n";
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td width='20%' class=\"vncellreq\" align='left' nowrap='nowrap'>\n";
echo " Theme: \n";
echo " </td>\n";
echo " <td class=\"vtable\" align='left'>\n";
echo " <select id='install_template_name' name='install_template_name' class='formfld' style=''>\n";
echo " <option value=''></option>\n";
//add all the themes to the list
$theme_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes';
if ($handle = opendir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes')) {
while (false !== ($dir_name = readdir($handle))) {
if ($dir_name != "." && $dir_name != ".." && $dir_name != ".svn" && $dir_name != ".git" && $dir_name != "flags" && is_readable($theme_dir.'/'.$dir_name)) {
$dir_label = str_replace('_', ' ', $dir_name);
$dir_label = str_replace('-', ' ', $dir_label);
if ($dir_name == 'enhanced') {
echo " <option value='$dir_name' selected='selected'>$dir_label</option>\n";
}
else {
echo " <option value='$dir_name'>$dir_label</option>\n";
}
}
}
closedir($handle);
}
echo " </select>\n";
echo " <br />\n";
echo " Select a theme to set as the default.<br />\n";
echo " </td>\n";
echo " </tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Domain name\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='domain_name' maxlength='255' value=\"$domain_name\"><br />\n";
echo " Enter the default domain name. \n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " Database Type\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select name='db_type' id='db_type' class='formfld' id='form_tag' onchange='db_type_onchange();'>\n";
if (extension_loaded('pdo_pgsql')) { echo " <option value='pgsql'>postgresql</option>\n"; }
if (extension_loaded('pdo_mysql')) { echo " <option value='mysql'>mysql</option>\n"; }
if (extension_loaded('pdo_sqlite')) { echo " <option value='sqlite' selected='selected'>sqlite</option>\n"; } //set sqlite as the default
echo " </select><br />\n";
echo " Select the database type.\n";
echo "\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>";
//echo " <div style='text-align:right'>\n";
//echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
//echo " <input type='submit' class='btn' name='execute' name='".$text['button-next']."'>\n";
//echo " </div>\n";
echo "</form>\n";
?>

View File

@@ -1,137 +1,137 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
//fetch the values
require_once "core/install/resources/classes/detect_switch.php";
$switch_detect = new detect_switch($event_host, $event_port, $event_password);
//$switch_detect->event_port = 2021;
$detect_ok = true;
try {
$switch_detect->detect();
} catch(Exception $e){
//echo "<p><b>Failed to detect configuration</b> detect_switch reported: " . $e->getMessage() ."</p>\n";
//$detect_ok = false;
}
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='install_step' value='detect_config'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' align='left' nowrap><b>".$text['header-event_socket']."</b><br><br></td>\n";
echo "<td width='70%' align='right'>";
//echo " <input type='button' name='detect' class='btn' onclick=\"location.reload();\" value='".$text['button-detect']."'/>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_host']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='event_host' maxlength='255' value=\"".$switch_detect->event_host."\" />\n";
echo "<br />\n";
echo $text['description-event_host']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_port']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='event_port' maxlength='255' value=\"".$switch_detect->event_port."\"/>\n";
echo "<br />\n";
echo $text['description-event_port']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_password']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='password' name='event_password' maxlength='255' value=\"".$switch_detect->event_password."\"/>\n";
echo "<br />\n";
echo $text['description-event_password']."\n";
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " </td>\n";
echo " </tr>";
echo "</table>";
if($detect_ok){
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td colspan='4' align='left' nowrap><b>".$text['title-detected_configuration']."</b></td>\n";
echo "</tr>\n";
$id = 1;
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo "Switch version\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->version()."\n";
echo "</td>\n";
foreach ($switch_detect->get_dirs() as $folder)
{
if($id % 2 == 0){ echo "<tr>\n"; }
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo $folder."\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->$folder()."\n";
echo "</td>\n";
if($id % 2 == 1){ echo "</tr>\n"; }
$id++;
}
if($id % 2 == 1){ echo "</tr>\n"; }
echo "<tr>\n";
echo "<td colspan='4' align='left' nowrap><br/><b>".$text['title-assumed_configuration']."</b></td>\n";
echo "</tr>\n";
$id=0;
foreach ($switch_detect->get_vdirs() as $folder) {
if($id % 2 == 0){ echo "<tr>\n"; }
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo $folder."\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->$folder()."\n";
echo "</td>\n";
if($id % 2 == 1){ echo "</tr>\n"; }
$id++;
}
echo "</table>";
}
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
//fetch the values
require_once "core/install/resources/classes/detect_switch.php";
$switch_detect = new detect_switch($event_host, $event_port, $event_password);
//$switch_detect->event_port = 2021;
$detect_ok = true;
try {
$switch_detect->detect();
} catch(Exception $e){
//echo "<p><b>Failed to detect configuration</b> detect_switch reported: " . $e->getMessage() ."</p>\n";
//$detect_ok = false;
}
echo "<input type='hidden' name='install_language' value='".$_SESSION['domain']['language']['code']."'/>\n";
echo "<input type='hidden' name='install_step' value='detect_config'/>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' align='left' nowrap><b>".$text['header-event_socket']."</b><br><br></td>\n";
echo "<td width='70%' align='right'>";
//echo " <input type='button' name='detect' class='btn' onclick=\"location.reload();\" value='".$text['button-detect']."'/>\n";
echo " <input type='button' name='back' class='btn' onclick=\"history.go(-1);\" value='".$text['button-back']."'/>\n";
echo " <input type='submit' name='next' class='btn' value='".$text['button-next']."'/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_host']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='event_host' maxlength='255' value=\"".$switch_detect->event_host."\" />\n";
echo "<br />\n";
echo $text['description-event_host']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_port']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='event_port' maxlength='255' value=\"".$switch_detect->event_port."\"/>\n";
echo "<br />\n";
echo $text['description-event_port']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-event_password']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input class='formfld' type='password' name='event_password' maxlength='255' value=\"".$switch_detect->event_password."\"/>\n";
echo "<br />\n";
echo $text['description-event_password']."\n";
echo "</td>\n";
echo "</tr>\n";
echo " <tr>\n";
echo " <td colspan='2' align='right'>\n";
echo " <br>";
echo " </td>\n";
echo " </tr>";
echo "</table>";
if($detect_ok){
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td colspan='4' align='left' nowrap><b>".$text['title-detected_configuration']."</b></td>\n";
echo "</tr>\n";
$id = 1;
echo "<tr>\n";
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo "Switch version\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->version()."\n";
echo "</td>\n";
foreach ($switch_detect->get_dirs() as $folder)
{
if($id % 2 == 0){ echo "<tr>\n"; }
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo $folder."\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->$folder()."\n";
echo "</td>\n";
if($id % 2 == 1){ echo "</tr>\n"; }
$id++;
}
if($id % 2 == 1){ echo "</tr>\n"; }
echo "<tr>\n";
echo "<td colspan='4' align='left' nowrap><br/><b>".$text['title-assumed_configuration']."</b></td>\n";
echo "</tr>\n";
$id=0;
foreach ($switch_detect->get_vdirs() as $folder) {
if($id % 2 == 0){ echo "<tr>\n"; }
echo "<td class='vncellreq' valign='top' align='left' nowrap='nowrap' width='15%'>\n";
echo $folder."\n";
echo "</td>\n";
echo "<td class='vtable' width='35%' align='left'>\n";
echo " ".$switch_detect->$folder()."\n";
echo "</td>\n";
if($id % 2 == 1){ echo "</tr>\n"; }
$id++;
}
echo "</table>";
}
?>

View File

@@ -1,65 +1,65 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2015-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='30%' align='left' nowrap='nowrap'><b>".$text['header-select_language']."</b><br><br></td>\n";
echo " <td width='70%' align='right'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-next']."'/>\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-select_language']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <table cellpadding='0' cellspacing='0'>";
foreach($_SESSION['app']['languages'] as $lang_code){
echo " <tr>";
echo " <td width='15' class='vtable' valign='top' nowrap='nowrap'>\n";
echo " <input type='radio' name='install_language' value='$lang_code' id='lang_$lang_code' ";
if($lang_code == $_SESSION['domain']['language']['code']) {
echo " checked='checked'";
}
echo "/>";
echo " </td>";
echo " <td class='vtable' align='left' valign='top' nowrap='nowrap'>\n";
echo " <img src='<!--{project_path}-->/core/install/resources/images/flags/$lang_code.png' alt='$lang_code'/>&nbsp;".$text["language-$lang_code"];
echo " </td>";
echo " <td width='100%' class='vtable' valign='top'>\n";
echo " &nbsp;\n";
echo " </td>";
echo " </tr>";
}
echo " </table>";
echo " <br />\n";
echo " ".$text['description-select_language']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>";
echo "<br><br>";
<?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>
Portions created by the Initial Developer are Copyright (C) 2015-2016
the Initial Developer. All Rights Reserved.
Contributor(s):
Matthew Vale <github@mafoo.org>
*/
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td width='30%' align='left' nowrap='nowrap'><b>".$text['header-select_language']."</b><br><br></td>\n";
echo " <td width='70%' align='right'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-next']."'/>\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncellreq' valign='top' align='left' nowrap>\n";
echo " ".$text['label-select_language']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <table cellpadding='0' cellspacing='0'>";
foreach($_SESSION['app']['languages'] as $lang_code){
echo " <tr>";
echo " <td width='15' class='vtable' valign='top' nowrap='nowrap'>\n";
echo " <input type='radio' name='install_language' value='$lang_code' id='lang_$lang_code' ";
if($lang_code == $_SESSION['domain']['language']['code']) {
echo " checked='checked'";
}
echo "/>";
echo " </td>";
echo " <td class='vtable' align='left' valign='top' nowrap='nowrap'>\n";
echo " <img src='<!--{project_path}-->/core/install/resources/images/flags/$lang_code.png' alt='$lang_code'/>&nbsp;".$text["language-$lang_code"];
echo " </td>";
echo " <td width='100%' class='vtable' valign='top'>\n";
echo " &nbsp;\n";
echo " </td>";
echo " </tr>";
}
echo " </table>";
echo " <br />\n";
echo " ".$text['description-select_language']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>";
echo "<br><br>";
?>

View File

@@ -1,461 +1,461 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (if_group('superadmin')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
// retrieve software uuid
$sql = "select software_uuid, software_url, software_version from v_software";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$software_uuid = $row["software_uuid"];
$software_url = $row["software_url"];
$software_version = $row["software_version"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
if (count($_REQUEST) > 0) {
// prepare demographic information **********************************************
// fusionpbx version
$software_ver = $software_version;
// php version
$php_ver = phpversion();
// webserver name & version
$web_server = $_SERVER['SERVER_SOFTWARE'];
// switch version
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api version');
}
$switch_ver = trim($switch_result);
// database name & version
switch ($db_type) {
case "pgsql" : $db_ver_query = "select version() as db_ver;"; break;
case "mysql" : $db_ver_query = "select version() as db_ver;"; break;
case "sqlite" : $db_ver_query = "select sqlite_version() as db_ver;"; break;
}
$prep_statement = $db->prepare($db_ver_query);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$database_version = $row["db_ver"];
break; // limit to 1 row
}
}
unset($db_ver_query, $prep_statement);
$db_ver = $database_version;
// operating system name & version
$os_platform = PHP_OS;
$os_info_1 = php_uname("a");
if ($os_platform == "Linux") {
$os_info_2 = shell_exec("cat /etc/*{release,version}");
$os_info_2 .= shell_exec("lsb_release -d -s");
}
else if (substr(strtoupper($os_platform), 0, 3) == "WIN") {
$os_info_2 = trim(shell_exec("ver"));
}
// **************************************************************************
// check for demographic only submit
if (isset($_GET["demo"])) {
// update remote server record with new values
$url = "https://".$software_url."/app/notifications/notifications_manage.php";
$url .= "?demo";
$url .= "&id=".$software_uuid;
$url .= "&software_ver=".urlencode($software_ver);
$url .= "&php_ver=".urlencode($php_ver);
$url .= "&web_server=".urlencode($web_server);
$url .= "&switch_ver=".urlencode($switch_ver);
$url .= "&db_type=".urlencode($db_type);
$url .= "&db_ver=".urlencode($db_ver);
$url .= "&os_platform=".urlencode($os_platform);
$url .= "&os_info_1=".urlencode($os_info_1);
$url .= "&os_info_2=".urlencode($os_info_2);
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'submitted') {
// set message
$_SESSION["message"] = $text['message-demographics_submitted'];
}
header("Location: notification_edit.php");
exit;
}
// retrieve submitted values
$project_notifications = check_str($_POST["project_notifications"]);
$project_security = check_str($_POST["project_security"]);
$project_releases = check_str($_POST["project_releases"]);
$project_events = check_str($_POST["project_events"]);
$project_news = check_str($_POST["project_news"]);
$project_notification_method = check_str($_POST["project_notification_method"]);
$project_notification_recipient = check_str($_POST["project_notification_recipient"]);
// get local project notification participation flag
$sql = "select project_notifications from v_notifications";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$current_project_notifications = $row["project_notifications"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
// check if remote record should be removed
if ($project_notifications == 'false') {
if ($current_project_notifications == 'true') {
// remove remote server record
$url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid."&action=delete";
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'deleted') {
// set local project notification participation flag to false
$sql = "update v_notifications set project_notifications = 'false'";
$db->exec(check_sql($sql));
unset($sql);
}
}
// redirect
$_SESSION["message"] = $text['message-update'];
header("Location: notification_edit.php");
exit;
}
// check for invalid values
if ($project_notifications == 'true') {
if (
($project_notification_method == 'email' && !valid_email($project_notification_recipient)) ||
($project_notification_method == 'email' && $project_notification_recipient == '')
) {
$_SESSION["postback"] = $_POST;
$_SESSION["message_mood"] = 'negative';
$_SESSION["message"] = $text['message-invalid_recipient'];
header("Location: notification_edit.php");
exit;
}
}
// update remote server record with new values
$url = "https://".$software_url."/app/notifications/notifications_manage.php";
$url .= "?id=".$software_uuid;
$url .= "&security=".$project_security;
$url .= "&releases=".$project_releases;
$url .= "&events=".$project_events;
$url .= "&news=".$project_news;
$url .= "&method=".$project_notification_method;
$url .= "&recipient=".urlencode($project_notification_recipient);
$url .= "&software_ver=".urlencode($software_ver);
$url .= "&php_ver=".urlencode($php_ver);
$url .= "&web_server=".urlencode($web_server);
$url .= "&switch_ver=".urlencode($switch_ver);
$url .= "&db_type=".urlencode($db_type);
$url .= "&db_ver=".urlencode($db_ver);
$url .= "&os_platform=".urlencode($os_platform);
$url .= "&os_info_1=".urlencode($os_info_1);
$url .= "&os_info_2=".urlencode($os_info_2);
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'updated' || $response['result'] == 'inserted') {
// set local project notification participation flag to true
$sql = "update v_notifications set project_notifications = 'true'";
$db->exec(check_sql($sql));
unset($sql);
// set message
$_SESSION["message"] = $text['message-update'];
if (
$project_security == 'false' &&
$project_releases == 'false' &&
$project_events == 'false' &&
$project_news == 'false'
) {
$_SESSION["message_mood"] = 'alert';
$_SESSION["message"] = $_SESSION["message"]." - ".$text['message-no_channels'];
}
// redirect
header("Location: notification_edit.php");
exit;
}
}
// check postback session
if (!isset($_SESSION["postback"])) {
// check local project notification participation flag
$sql = "select project_notifications from v_notifications";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$setting["project_notifications"] = $row["project_notifications"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
// if participation enabled
if ($setting["project_notifications"] == 'true') {
// get current project notification preferences
$url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid;
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$setting = json_decode($response, true);
$setting["project_notifications"] = 'true';
}
}
else {
// load postback variables
$setting = fix_postback($_SESSION["postback"]);
unset($_SESSION["postback"]);
}
require_once "resources/header.php";
$document['title'] = $text['title-notifications'];
// show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td align='left' nowrap='nowrap'><b>".$text['header-notifications']."</b><br><br></td>\n";
echo " <td align='right'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " <br><br>";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " ".$text['description-notifications']."<br /><br />\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
echo $text['label-project_notifications']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_notifications' class='formfld' style='width: auto;' onchange=\"$('#notification_channels').slideToggle();\">\n";
echo " <option value='false' ".(($setting["project_notifications"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_notifications"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_notifications']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<div id='notification_channels' ".(($setting["project_notifications"] != 'true') ? "style='display: none;'" : null).">\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_security']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_security' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_security"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_security"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_security']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_releases']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <select name='project_releases' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_releases"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_releases"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_releases']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_events']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_events' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_events"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_events"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_events']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_news']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <select name='project_news' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_news"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_news"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_news']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <input type='hidden' name='project_notification_method' value='email'>\n";
/*
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_notification_method']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_notification_method' class='formfld' style='width: auto;'>\n";
echo " <option value='email' ".(($setting["project_notification_method"] == 'email') ? "selected='selected'" : null).">".$text['option-email']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_notification_method']."\n";
echo " </td>\n";
echo " </tr>\n";
*/
echo " <tr>\n";
echo " <td class='vncellreq' valign='top' align='left' nowrap>\n";
echo $text['label-project_notification_recipient']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='project_notification_recipient' maxlength='50' value='".$setting["project_notification_recipient"]."'><br />\n";
echo $text['description-project_notification_recipient']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td colspan='2' class='vtable' style='padding: 15px;' align='right'>\n";
echo " ".$text['message-disclaimer']."\n";
echo " <br /><br />\n";
echo " ".$text['message-demographics']." <a href='?demo'>".$text['message-demographics_click_here']."</a>.\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td align='right'>\n";
echo " <br>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table>\n";
echo "</form>\n";
// include the footer
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2012
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
if (if_group('superadmin')) {
//access granted
}
else {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
// retrieve software uuid
$sql = "select software_uuid, software_url, software_version from v_software";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$software_uuid = $row["software_uuid"];
$software_url = $row["software_url"];
$software_version = $row["software_version"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
if (count($_REQUEST) > 0) {
// prepare demographic information **********************************************
// fusionpbx version
$software_ver = $software_version;
// php version
$php_ver = phpversion();
// webserver name & version
$web_server = $_SERVER['SERVER_SOFTWARE'];
// switch version
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp) {
$switch_result = event_socket_request($fp, 'api version');
}
$switch_ver = trim($switch_result);
// database name & version
switch ($db_type) {
case "pgsql" : $db_ver_query = "select version() as db_ver;"; break;
case "mysql" : $db_ver_query = "select version() as db_ver;"; break;
case "sqlite" : $db_ver_query = "select sqlite_version() as db_ver;"; break;
}
$prep_statement = $db->prepare($db_ver_query);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$database_version = $row["db_ver"];
break; // limit to 1 row
}
}
unset($db_ver_query, $prep_statement);
$db_ver = $database_version;
// operating system name & version
$os_platform = PHP_OS;
$os_info_1 = php_uname("a");
if ($os_platform == "Linux") {
$os_info_2 = shell_exec("cat /etc/*{release,version}");
$os_info_2 .= shell_exec("lsb_release -d -s");
}
else if (substr(strtoupper($os_platform), 0, 3) == "WIN") {
$os_info_2 = trim(shell_exec("ver"));
}
// **************************************************************************
// check for demographic only submit
if (isset($_GET["demo"])) {
// update remote server record with new values
$url = "https://".$software_url."/app/notifications/notifications_manage.php";
$url .= "?demo";
$url .= "&id=".$software_uuid;
$url .= "&software_ver=".urlencode($software_ver);
$url .= "&php_ver=".urlencode($php_ver);
$url .= "&web_server=".urlencode($web_server);
$url .= "&switch_ver=".urlencode($switch_ver);
$url .= "&db_type=".urlencode($db_type);
$url .= "&db_ver=".urlencode($db_ver);
$url .= "&os_platform=".urlencode($os_platform);
$url .= "&os_info_1=".urlencode($os_info_1);
$url .= "&os_info_2=".urlencode($os_info_2);
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'submitted') {
// set message
$_SESSION["message"] = $text['message-demographics_submitted'];
}
header("Location: notification_edit.php");
exit;
}
// retrieve submitted values
$project_notifications = check_str($_POST["project_notifications"]);
$project_security = check_str($_POST["project_security"]);
$project_releases = check_str($_POST["project_releases"]);
$project_events = check_str($_POST["project_events"]);
$project_news = check_str($_POST["project_news"]);
$project_notification_method = check_str($_POST["project_notification_method"]);
$project_notification_recipient = check_str($_POST["project_notification_recipient"]);
// get local project notification participation flag
$sql = "select project_notifications from v_notifications";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$current_project_notifications = $row["project_notifications"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
// check if remote record should be removed
if ($project_notifications == 'false') {
if ($current_project_notifications == 'true') {
// remove remote server record
$url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid."&action=delete";
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'deleted') {
// set local project notification participation flag to false
$sql = "update v_notifications set project_notifications = 'false'";
$db->exec(check_sql($sql));
unset($sql);
}
}
// redirect
$_SESSION["message"] = $text['message-update'];
header("Location: notification_edit.php");
exit;
}
// check for invalid values
if ($project_notifications == 'true') {
if (
($project_notification_method == 'email' && !valid_email($project_notification_recipient)) ||
($project_notification_method == 'email' && $project_notification_recipient == '')
) {
$_SESSION["postback"] = $_POST;
$_SESSION["message_mood"] = 'negative';
$_SESSION["message"] = $text['message-invalid_recipient'];
header("Location: notification_edit.php");
exit;
}
}
// update remote server record with new values
$url = "https://".$software_url."/app/notifications/notifications_manage.php";
$url .= "?id=".$software_uuid;
$url .= "&security=".$project_security;
$url .= "&releases=".$project_releases;
$url .= "&events=".$project_events;
$url .= "&news=".$project_news;
$url .= "&method=".$project_notification_method;
$url .= "&recipient=".urlencode($project_notification_recipient);
$url .= "&software_ver=".urlencode($software_ver);
$url .= "&php_ver=".urlencode($php_ver);
$url .= "&web_server=".urlencode($web_server);
$url .= "&switch_ver=".urlencode($switch_ver);
$url .= "&db_type=".urlencode($db_type);
$url .= "&db_ver=".urlencode($db_ver);
$url .= "&os_platform=".urlencode($os_platform);
$url .= "&os_info_1=".urlencode($os_info_1);
$url .= "&os_info_2=".urlencode($os_info_2);
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$response = json_decode($response, true);
if ($response['result'] == 'updated' || $response['result'] == 'inserted') {
// set local project notification participation flag to true
$sql = "update v_notifications set project_notifications = 'true'";
$db->exec(check_sql($sql));
unset($sql);
// set message
$_SESSION["message"] = $text['message-update'];
if (
$project_security == 'false' &&
$project_releases == 'false' &&
$project_events == 'false' &&
$project_news == 'false'
) {
$_SESSION["message_mood"] = 'alert';
$_SESSION["message"] = $_SESSION["message"]." - ".$text['message-no_channels'];
}
// redirect
header("Location: notification_edit.php");
exit;
}
}
// check postback session
if (!isset($_SESSION["postback"])) {
// check local project notification participation flag
$sql = "select project_notifications from v_notifications";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$setting["project_notifications"] = $row["project_notifications"];
break; // limit to 1 row
}
}
unset($sql, $prep_statement);
// if participation enabled
if ($setting["project_notifications"] == 'true') {
// get current project notification preferences
$url = "https://".$software_url."/app/notifications/notifications_manage.php?id=".$software_uuid;
if (file_get_contents(__FILE__) && ini_get('allow_url_fopen')) {
$response = file_get_contents($url);
}
else if (function_exists('curl_version')) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
}
// parse response
$setting = json_decode($response, true);
$setting["project_notifications"] = 'true';
}
}
else {
// load postback variables
$setting = fix_postback($_SESSION["postback"]);
unset($_SESSION["postback"]);
}
require_once "resources/header.php";
$document['title'] = $text['title-notifications'];
// show the content
echo "<form method='post' name='frm' action=''>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td align='left' nowrap='nowrap'><b>".$text['header-notifications']."</b><br><br></td>\n";
echo " <td align='right'>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " <br><br>";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align='left' colspan='2'>\n";
echo " ".$text['description-notifications']."<br /><br />\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncellreq' valign='top' align='left' nowrap>\n";
echo $text['label-project_notifications']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_notifications' class='formfld' style='width: auto;' onchange=\"$('#notification_channels').slideToggle();\">\n";
echo " <option value='false' ".(($setting["project_notifications"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_notifications"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_notifications']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<div id='notification_channels' ".(($setting["project_notifications"] != 'true') ? "style='display: none;'" : null).">\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_security']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_security' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_security"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_security"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_security']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_releases']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <select name='project_releases' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_releases"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_releases"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_releases']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_events']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_events' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_events"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_events"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_events']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_news']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <select name='project_news' class='formfld' style='width: auto;'>\n";
echo " <option value='false' ".(($setting["project_news"] == 'false') ? "selected='selected'" : null).">".$text['option-disabled']."</option>\n";
echo " <option value='true' ".(($setting["project_news"] == 'true') ? "selected='selected'" : null).">".$text['option-enabled']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_news']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <input type='hidden' name='project_notification_method' value='email'>\n";
/*
echo " <tr>\n";
echo " <td width='30%' class='vncell' valign='top' align='left' nowrap>\n";
echo $text['label-project_notification_method']."\n";
echo " </td>\n";
echo " <td width='70%' class='vtable' align='left'>\n";
echo " <select name='project_notification_method' class='formfld' style='width: auto;'>\n";
echo " <option value='email' ".(($setting["project_notification_method"] == 'email') ? "selected='selected'" : null).">".$text['option-email']."</option>\n";
echo " </select><br />\n";
echo $text['description-project_notification_method']."\n";
echo " </td>\n";
echo " </tr>\n";
*/
echo " <tr>\n";
echo " <td class='vncellreq' valign='top' align='left' nowrap>\n";
echo $text['label-project_notification_recipient']."\n";
echo " </td>\n";
echo " <td class='vtable' align='left'>\n";
echo " <input class='formfld' type='text' name='project_notification_recipient' maxlength='50' value='".$setting["project_notification_recipient"]."'><br />\n";
echo $text['description-project_notification_recipient']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "</div>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td colspan='2' class='vtable' style='padding: 15px;' align='right'>\n";
echo " ".$text['message-disclaimer']."\n";
echo " <br /><br />\n";
echo " ".$text['message-demographics']." <a href='?demo'>".$text['message-demographics_click_here']."</a>.\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<table cellpadding='0' cellspacing='0' width='100%' border='0'>\n";
echo " <tr>\n";
echo " <td align='right'>\n";
echo " <br>";
echo " <input type='submit' name='submit' class='btn' value='".$text['button-save']."'>\n";
echo " </td>\n";
echo " </tr>";
echo "</table>\n";
echo "</form>\n";
// include the footer
require_once "resources/footer.php";
?>

View File

@@ -1,249 +1,249 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
set_time_limit(600); //sec (10 min)
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//check the permission
if (
!permission_exists('upgrade_source') &&
!permission_exists('upgrade_schema') &&
!permission_exists('upgrade_apps') &&
!permission_exists('menu_restore') &&
!permission_exists('group_edit')
) {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
if (sizeof($_POST) > 0) {
$do = $_POST['do'];
// run source update
if ($do["source"] && permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx")) {
chdir($_SERVER["PROJECT_ROOT"]);
exec("git pull", $response_source_update);
$update_failed = true;
if (sizeof($response_source_update) > 0) {
$_SESSION["response_source_update"] = $response_source_update;
foreach ($response_source_update as $response_line) {
if (substr_count($response_line, "Updating ") > 0 || substr_count($response_line, "Already up-to-date.") > 0) {
$update_failed = false;
}
}
}
if ($update_failed) {
$_SESSION["message_delay"] = 3500;
$_SESSION["message_mood"] = 'negative';
$response_message = $text['message-upgrade_source_failed'];
}
}
// load an array of the database schema and compare it with the active database
if ($do["schema"] && permission_exists("upgrade_schema")) {
$response_message = $text['message-upgrade_schema'];
$upgrade_data_types = check_str($do["data_types"]);
require_once "resources/classes/schema.php";
$obj = new schema();
$_SESSION["schema"]["response"] = $obj->schema("html");
}
// process the apps defaults
if ($do["apps"] && permission_exists("upgrade_apps")) {
$response_message = $text['message-upgrade_apps'];
require_once "resources/classes/domains.php";
$domain = new domains;
$domain->upgrade();
}
// restore defaults of the selected menu
if ($do["menu"] && permission_exists("menu_restore")) {
$sel_menu = explode('|', check_str($_POST["sel_menu"]));
$menu_uuid = $sel_menu[0];
$menu_language = $sel_menu[1];
$included = true;
require_once("core/menu/menu_restore_default.php");
unset($sel_menu);
$response_message = $text['message-upgrade_menu'];
}
// restore default permissions
if ($do["permissions"] && permission_exists("group_edit")) {
$included = true;
require_once("core/users/permissions_default.php");
$response_message = "Permission Defaults Restored";
}
if (sizeof($_POST['do']) > 1) {
$response_message = $text['message-upgrade'];
}
$_SESSION["message"] = $response_message;
header("Location: ".PROJECT_PATH."/core/upgrade/index.php");
exit;
} // end if
require_once "resources/header.php";
$document['title'] = $text['title-upgrade'];
echo "<b>".$text['header-upgrade']."</b>";
echo "<br><br>";
echo $text['description-upgrade'];
echo "<br><br>";
echo "<form name='frm' method='post' action=''>\n";
if (permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx") && is_writeable($_SERVER["PROJECT_ROOT"]."/.git")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_source'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_source'><input type='checkbox' name='do[source]' id='do_source' value='1'> ".$text['description-upgrade_source']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("upgrade_schema")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_schema'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_schema'><input type='checkbox' name='do[schema]' id='do_schema' value='1' onchange=\"$('#do_data_types').prop('checked', false); $('#tr_data_types').slideToggle('fast');\"> ".$text['description-upgrade_schema']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<div id='tr_data_types' style='display: none;'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_data_types'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_data_types'><input type='checkbox' name='do[data_types]' id='do_data_types' value='true'> ".$text['description-upgrade_data_types']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
if (permission_exists("upgrade_apps")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_apps'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_apps'><input type='checkbox' name='do[apps]' id='do_apps' value='1'> ".$text['description-upgrade_apps']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("menu_restore")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_menu'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_menu'>";
echo "<input type='checkbox' name='do[menu]' id='do_menu' value='1' onchange=\"$('#sel_menu').fadeToggle('fast');\">";
echo "<select name='sel_menu' id='sel_menu' class='formfld' style='display: none; vertical-align: middle; margin-left: 5px;'>";
$sql = "select * from v_menus ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
echo "<option value='".$row["menu_uuid"]."|".$row["menu_language"]."'>".$row["menu_name"]."</option>";
}
unset ($sql, $result, $prep_statement);
echo "</select>";
echo " ".$text['description-upgrade_menu'];
echo "</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("group_edit")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_permissions'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_permissions'><input type='checkbox' name='do[permissions]' id='do_permissions' value='1'> ".$text['description-upgrade_permissions']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
echo "<br>";
echo "<div style='text-align: right;'><input type='submit' class='btn' value='".$text['button-upgrade_execute']."'></div>";
echo "<br><br>";
echo "</form>\n";
// output result of source update
if (sizeof($_SESSION["response_source_update"]) > 0) {
echo "<br />";
echo "<b>".$text['header-source_update_results']."</b>";
echo "<br /><br />";
echo "<pre>";
echo implode("\n", $_SESSION["response_source_update"]);
echo "</pre>";
echo "<br /><br />";
unset($_SESSION["response_source_update"]);
}
// output result of upgrade schema
if ($_SESSION["schema"]["response"] != '') {
echo "<br />";
echo "<b>".$text['header-upgrade_schema_results']."</b>";
echo "<br /><br />";
echo $_SESSION["schema"]["response"];
unset($_SESSION["schema"]["response"]);
}
require_once "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2015
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
set_time_limit(600); //sec (10 min)
include "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
//check the permission
if (
!permission_exists('upgrade_source') &&
!permission_exists('upgrade_schema') &&
!permission_exists('upgrade_apps') &&
!permission_exists('menu_restore') &&
!permission_exists('group_edit')
) {
echo "access denied";
exit;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
if (sizeof($_POST) > 0) {
$do = $_POST['do'];
// run source update
if ($do["source"] && permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx")) {
chdir($_SERVER["PROJECT_ROOT"]);
exec("git pull", $response_source_update);
$update_failed = true;
if (sizeof($response_source_update) > 0) {
$_SESSION["response_source_update"] = $response_source_update;
foreach ($response_source_update as $response_line) {
if (substr_count($response_line, "Updating ") > 0 || substr_count($response_line, "Already up-to-date.") > 0) {
$update_failed = false;
}
}
}
if ($update_failed) {
$_SESSION["message_delay"] = 3500;
$_SESSION["message_mood"] = 'negative';
$response_message = $text['message-upgrade_source_failed'];
}
}
// load an array of the database schema and compare it with the active database
if ($do["schema"] && permission_exists("upgrade_schema")) {
$response_message = $text['message-upgrade_schema'];
$upgrade_data_types = check_str($do["data_types"]);
require_once "resources/classes/schema.php";
$obj = new schema();
$_SESSION["schema"]["response"] = $obj->schema("html");
}
// process the apps defaults
if ($do["apps"] && permission_exists("upgrade_apps")) {
$response_message = $text['message-upgrade_apps'];
require_once "resources/classes/domains.php";
$domain = new domains;
$domain->upgrade();
}
// restore defaults of the selected menu
if ($do["menu"] && permission_exists("menu_restore")) {
$sel_menu = explode('|', check_str($_POST["sel_menu"]));
$menu_uuid = $sel_menu[0];
$menu_language = $sel_menu[1];
$included = true;
require_once("core/menu/menu_restore_default.php");
unset($sel_menu);
$response_message = $text['message-upgrade_menu'];
}
// restore default permissions
if ($do["permissions"] && permission_exists("group_edit")) {
$included = true;
require_once("core/users/permissions_default.php");
$response_message = "Permission Defaults Restored";
}
if (sizeof($_POST['do']) > 1) {
$response_message = $text['message-upgrade'];
}
$_SESSION["message"] = $response_message;
header("Location: ".PROJECT_PATH."/core/upgrade/index.php");
exit;
} // end if
require_once "resources/header.php";
$document['title'] = $text['title-upgrade'];
echo "<b>".$text['header-upgrade']."</b>";
echo "<br><br>";
echo $text['description-upgrade'];
echo "<br><br>";
echo "<form name='frm' method='post' action=''>\n";
if (permission_exists("upgrade_source") && !is_dir("/usr/share/examples/fusionpbx") && is_writeable($_SERVER["PROJECT_ROOT"]."/.git")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_source'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_source'><input type='checkbox' name='do[source]' id='do_source' value='1'> ".$text['description-upgrade_source']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("upgrade_schema")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_schema'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_schema'><input type='checkbox' name='do[schema]' id='do_schema' value='1' onchange=\"$('#do_data_types').prop('checked', false); $('#tr_data_types').slideToggle('fast');\"> ".$text['description-upgrade_schema']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<div id='tr_data_types' style='display: none;'>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_data_types'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_data_types'><input type='checkbox' name='do[data_types]' id='do_data_types' value='true'> ".$text['description-upgrade_data_types']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</div>\n";
}
if (permission_exists("upgrade_apps")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_apps'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_apps'><input type='checkbox' name='do[apps]' id='do_apps' value='1'> ".$text['description-upgrade_apps']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("menu_restore")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_menu'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_menu'>";
echo "<input type='checkbox' name='do[menu]' id='do_menu' value='1' onchange=\"$('#sel_menu').fadeToggle('fast');\">";
echo "<select name='sel_menu' id='sel_menu' class='formfld' style='display: none; vertical-align: middle; margin-left: 5px;'>";
$sql = "select * from v_menus ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
echo "<option value='".$row["menu_uuid"]."|".$row["menu_language"]."'>".$row["menu_name"]."</option>";
}
unset ($sql, $result, $prep_statement);
echo "</select>";
echo " ".$text['description-upgrade_menu'];
echo "</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
if (permission_exists("group_edit")) {
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td width='30%' class='vncell'>\n";
echo " ".$text['label-upgrade_permissions'];
echo " </td>\n";
echo " <td width='70%' class='vtable' style='height: 50px;'>\n";
echo " <label for='do_permissions'><input type='checkbox' name='do[permissions]' id='do_permissions' value='1'> ".$text['description-upgrade_permissions']."</label>\n";
echo " </td>\n";
echo "</tr>\n";
echo "</table>\n";
}
echo "<br>";
echo "<div style='text-align: right;'><input type='submit' class='btn' value='".$text['button-upgrade_execute']."'></div>";
echo "<br><br>";
echo "</form>\n";
// output result of source update
if (sizeof($_SESSION["response_source_update"]) > 0) {
echo "<br />";
echo "<b>".$text['header-source_update_results']."</b>";
echo "<br /><br />";
echo "<pre>";
echo implode("\n", $_SESSION["response_source_update"]);
echo "</pre>";
echo "<br /><br />";
unset($_SESSION["response_source_update"]);
}
// output result of upgrade schema
if ($_SESSION["schema"]["response"] != '') {
echo "<br />";
echo "<b>".$text['header-upgrade_schema_results']."</b>";
echo "<br /><br />";
echo $_SESSION["schema"]["response"];
unset($_SESSION["schema"]["response"]);
}
require_once "resources/footer.php";
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,43 +1,43 @@
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Account Settings";
$apps[$x]['menu'][0]['title']['es-cl'] = "Config de Cuenta";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Configuration du Compte";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Configurações da Conta";
$apps[$x]['menu'][0]['title']['pt-br'] = "Configurações da Conta";
$apps[$x]['menu'][0]['title']['pl'] = "Ustawienia konta";
$apps[$x]['menu'][0]['title']['he'] = "הגדרת חשבון";
$apps[$x]['menu'][0]['title']['uk'] = "Обліковий запис";
$apps[$x]['menu'][0]['title']['sv-se'] = "Kontoinställningar";
$apps[$x]['menu'][0]['title']['de-at'] = "Kontoeinstellungen";
$apps[$x]['menu'][0]['title']['ro'] = "Setări cont";
$apps[$x]['menu'][0]['title']['ar-eg'] = "إعدادات الحساب";
$apps[$x]['menu'][0]['uuid'] = "4d532f0b-c206-c39d-ff33-fc67d668fb69";
$apps[$x]['menu'][0]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/core/user_settings/user_edit.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
$apps[$x]['menu'][1]['title']['en-us'] = "Dashboard";
$apps[$x]['menu'][1]['title']['es-cl'] = "Dashboard Usuario";
$apps[$x]['menu'][1]['title']['fr-fr'] = "Tableau de bord de l'utilisateur";
$apps[$x]['menu'][1]['title']['pt-pt'] = "Painel de Controle do Usuário";
$apps[$x]['menu'][1]['title']['pt-br'] = "Painel de Controle do Usuário";
$apps[$x]['menu'][1]['title']['pl'] = "Panel użytkowników";
$apps[$x]['menu'][1]['title']['he'] = "ממשק משתמש";
$apps[$x]['menu'][1]['title']['uk'] = "Панель користувача";
$apps[$x]['menu'][1]['title']['sv-se'] = "Användarpanel";
$apps[$x]['menu'][1]['title']['de-at'] = "Benutzerübersicht";
$apps[$x]['menu'][1]['title']['ro'] = "Panou control utilizator";
$apps[$x]['menu'][1]['title']['ar-eg'] = "الصفحه الرئيسيه للمستخدم";
$apps[$x]['menu'][1]['uuid'] = "92c8ffdb-3c82-4f08-aec0-82421ec41bb5";
$apps[$x]['menu'][1]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
$apps[$x]['menu'][1]['category'] = "internal";
$apps[$x]['menu'][1]['path'] = "/core/user_settings/user_dashboard.php";
$apps[$x]['menu'][1]['groups'][] = "user";
$apps[$x]['menu'][1]['groups'][] = "admin";
$apps[$x]['menu'][1]['groups'][] = "superadmin";
<?php
$apps[$x]['menu'][0]['title']['en-us'] = "Account Settings";
$apps[$x]['menu'][0]['title']['es-cl'] = "Config de Cuenta";
$apps[$x]['menu'][0]['title']['fr-fr'] = "Configuration du Compte";
$apps[$x]['menu'][0]['title']['pt-pt'] = "Configurações da Conta";
$apps[$x]['menu'][0]['title']['pt-br'] = "Configurações da Conta";
$apps[$x]['menu'][0]['title']['pl'] = "Ustawienia konta";
$apps[$x]['menu'][0]['title']['he'] = "הגדרת חשבון";
$apps[$x]['menu'][0]['title']['uk'] = "Обліковий запис";
$apps[$x]['menu'][0]['title']['sv-se'] = "Kontoinställningar";
$apps[$x]['menu'][0]['title']['de-at'] = "Kontoeinstellungen";
$apps[$x]['menu'][0]['title']['ro'] = "Setări cont";
$apps[$x]['menu'][0]['title']['ar-eg'] = "إعدادات الحساب";
$apps[$x]['menu'][0]['uuid'] = "4d532f0b-c206-c39d-ff33-fc67d668fb69";
$apps[$x]['menu'][0]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
$apps[$x]['menu'][0]['category'] = "internal";
$apps[$x]['menu'][0]['path'] = "/core/user_settings/user_edit.php";
$apps[$x]['menu'][0]['groups'][] = "user";
$apps[$x]['menu'][0]['groups'][] = "admin";
$apps[$x]['menu'][0]['groups'][] = "superadmin";
$apps[$x]['menu'][1]['title']['en-us'] = "Dashboard";
$apps[$x]['menu'][1]['title']['es-cl'] = "Dashboard Usuario";
$apps[$x]['menu'][1]['title']['fr-fr'] = "Tableau de bord de l'utilisateur";
$apps[$x]['menu'][1]['title']['pt-pt'] = "Painel de Controle do Usuário";
$apps[$x]['menu'][1]['title']['pt-br'] = "Painel de Controle do Usuário";
$apps[$x]['menu'][1]['title']['pl'] = "Panel użytkowników";
$apps[$x]['menu'][1]['title']['he'] = "ממשק משתמש";
$apps[$x]['menu'][1]['title']['uk'] = "Панель користувача";
$apps[$x]['menu'][1]['title']['sv-se'] = "Användarpanel";
$apps[$x]['menu'][1]['title']['de-at'] = "Benutzerübersicht";
$apps[$x]['menu'][1]['title']['ro'] = "Panou control utilizator";
$apps[$x]['menu'][1]['title']['ar-eg'] = "الصفحه الرئيسيه للمستخدم";
$apps[$x]['menu'][1]['uuid'] = "92c8ffdb-3c82-4f08-aec0-82421ec41bb5";
$apps[$x]['menu'][1]['parent_uuid'] = "02194288-6d56-6d3e-0b1a-d53a2bc10788";
$apps[$x]['menu'][1]['category'] = "internal";
$apps[$x]['menu'][1]['path'] = "/core/user_settings/user_dashboard.php";
$apps[$x]['menu'][1]['groups'][] = "user";
$apps[$x]['menu'][1]['groups'][] = "admin";
$apps[$x]['menu'][1]['groups'][] = "superadmin";
?>

View File

@@ -1,421 +1,421 @@
<?php
//application details
$apps[$x]['name'] = "User Manager";
$apps[$x]['uuid'] = "112124b3-95c2-5352-7e9d-d14c0b88f207";
$apps[$x]['category'] = "Core";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Add, edit, delete, and search for users.";
$apps[$x]['description']['es-cl'] = "Agregar, Editar, Eliminar y Buscar Usuarios.";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "Ajouter, Editer, Supprimer et Chercher des Usagers";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Adicionar, editar, apagar e pesquisa pelos utilizadores.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$y = 0;
$apps[$x]['permissions'][$y]['name'] = "user_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "0d57cc1e-1874-47b9-7ddd-fe1f57cec99b";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_add";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_edit";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = 'user_domain';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'user_all';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = 'group_domain';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'group_all';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_add";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permissions";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_view";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_category_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
//schema details
$y = 0; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_users";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "password";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "salt";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
//$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
//$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_contacts";
//$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_email";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "useremail";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_status";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "userstatus";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_time_zone";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "usertimezone";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "api_key";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "add_user";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "add_date";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 1; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_groups";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_protected";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_description";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupdesc";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 2; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_group_users";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_groups";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 3; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_group_permissions";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_permission_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "group_permission_name";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "permission_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "permission_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 4; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_user_settings";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_category";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the category.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_subcategory";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the subcategory.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_value";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the value.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_order";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>
<?php
//application details
$apps[$x]['name'] = "User Manager";
$apps[$x]['uuid'] = "112124b3-95c2-5352-7e9d-d14c0b88f207";
$apps[$x]['category'] = "Core";
$apps[$x]['subcategory'] = "";
$apps[$x]['version'] = "";
$apps[$x]['license'] = "Mozilla Public License 1.1";
$apps[$x]['url'] = "http://www.fusionpbx.com";
$apps[$x]['description']['en-us'] = "Add, edit, delete, and search for users.";
$apps[$x]['description']['es-cl'] = "Agregar, Editar, Eliminar y Buscar Usuarios.";
$apps[$x]['description']['de-de'] = "";
$apps[$x]['description']['de-ch'] = "";
$apps[$x]['description']['de-at'] = "";
$apps[$x]['description']['fr-fr'] = "Ajouter, Editer, Supprimer et Chercher des Usagers";
$apps[$x]['description']['fr-ca'] = "";
$apps[$x]['description']['fr-ch'] = "";
$apps[$x]['description']['pt-pt'] = "Adicionar, editar, apagar e pesquisa pelos utilizadores.";
$apps[$x]['description']['pt-br'] = "";
//permission details
$y = 0;
$apps[$x]['permissions'][$y]['name'] = "user_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "0d57cc1e-1874-47b9-7ddd-fe1f57cec99b";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_add";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_edit";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = 'user_domain';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'user_all';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = 'group_domain';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = 'group_all';
$apps[$x]['permissions'][$y]['groups'][] = 'superadmin';
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_add";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_member_delete";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permissions";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_user_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_view";
$apps[$x]['permissions'][$y]['menu']['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "group_permission_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_view";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_add";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_delete";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
$apps[$x]['permissions'][$y]['groups'][] = "admin";
$y++;
$apps[$x]['permissions'][$y]['name'] = "user_setting_category_edit";
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
//schema details
$y = 0; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_users";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "password";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "salt";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "contact_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
//$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
//$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_contacts";
//$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "contact_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_email";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "useremail";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_status";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "userstatus";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "user_time_zone";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "usertimezone";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "api_key";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "add_user";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "add_date";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 1; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_groups";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_protected";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_description";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupdesc";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 2; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_group_users";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "groupid";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_groups";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "username";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 3; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_group_permissions";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_permission_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "id";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "group_permission_name";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "serial";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "integer";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "INT NOT NULL AUTO_INCREMENT";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "v_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$apps[$x]['db'][$y]['fields'][$z]['deprecated'] = "true";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name']['text'] = "permission_name";
$apps[$x]['db'][$y]['fields'][$z]['name']['deprecated'] = "permission_id";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "group_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$y = 4; //table array index
$z = 0; //field array index
$apps[$x]['db'][$y]['table'] = "v_user_settings";
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "primary";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = "foreign";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = "v_domains";
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = "domain_uuid";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_category";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the category.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_subcategory";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the subcategory.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_name";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the name.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_value";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Enter the value.";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_order";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "numeric";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "user_setting_description";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,36 +1,36 @@
<?php
$apps[$x]['menu'][2]['title']['en-us'] = "Users";
$apps[$x]['menu'][2]['title']['es-cl'] = "Gestor de Usuarios";
$apps[$x]['menu'][2]['title']['fr-fr'] = "Gestion des utilisteurs";
$apps[$x]['menu'][2]['title']['pt-pt'] = "Gestão de Utilizadores";
$apps[$x]['menu'][2]['title']['pt-br'] = "Gerencir utiliários";
$apps[$x]['menu'][2]['title']['pl'] = "Menedżer użytkowników";
$apps[$x]['menu'][2]['title']['uk'] = "Користувачі";
$apps[$x]['menu'][2]['title']['sv-se'] = "Användar Inställningar";
$apps[$x]['menu'][2]['title']['de-at'] = "Benutzerverwaltung";
$apps[$x]['menu'][2]['title']['he'] = "מנהל משתמש";
$apps[$x]['menu'][2]['uuid'] = "0d57cc1e-1874-47b9-7ddd-fe1f57cec99b";
$apps[$x]['menu'][2]['parent_uuid'] = "bc96d773-ee57-0cdd-c3ac-2d91aba61b55";
$apps[$x]['menu'][2]['category'] = "internal";
$apps[$x]['menu'][2]['path'] = "/core/users/index.php";
$apps[$x]['menu'][2]['groups'][] = "admin";
$apps[$x]['menu'][2]['groups'][] = "superadmin";
$apps[$x]['menu'][3]['title']['en-us'] = "Group Manager";
$apps[$x]['menu'][3]['title']['es-cl'] = "Administración de Grupos";
$apps[$x]['menu'][3]['title']['fr-fr'] = "Gestion des groupes";
$apps[$x]['menu'][3]['title']['pt-pt'] = "'Gestão de Grupos";
$apps[$x]['menu'][3]['title']['pt-br'] = "Gerenciar grupos";
$apps[$x]['menu'][3]['title']['pl'] = "Menedżer grup";
$apps[$x]['menu'][3]['title']['uk'] = "Групи";
$apps[$x]['menu'][3]['title']['sv-se'] = "Grupp Inställningar";
$apps[$x]['menu'][3]['title']['de-at'] = "Gruppenverwaltung";
$apps[$x]['menu'][3]['title']['he'] = "מנהל קבוצה";
$apps[$x]['menu'][3]['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['menu'][3]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][3]['category'] = "internal";
$apps[$x]['menu'][3]['path'] = "/core/users/groups.php";
$apps[$x]['menu'][3]['groups'][] = "superadmin";
<?php
$apps[$x]['menu'][2]['title']['en-us'] = "Users";
$apps[$x]['menu'][2]['title']['es-cl'] = "Gestor de Usuarios";
$apps[$x]['menu'][2]['title']['fr-fr'] = "Gestion des utilisteurs";
$apps[$x]['menu'][2]['title']['pt-pt'] = "Gestão de Utilizadores";
$apps[$x]['menu'][2]['title']['pt-br'] = "Gerencir utiliários";
$apps[$x]['menu'][2]['title']['pl'] = "Menedżer użytkowników";
$apps[$x]['menu'][2]['title']['uk'] = "Користувачі";
$apps[$x]['menu'][2]['title']['sv-se'] = "Användar Inställningar";
$apps[$x]['menu'][2]['title']['de-at'] = "Benutzerverwaltung";
$apps[$x]['menu'][2]['title']['he'] = "מנהל משתמש";
$apps[$x]['menu'][2]['uuid'] = "0d57cc1e-1874-47b9-7ddd-fe1f57cec99b";
$apps[$x]['menu'][2]['parent_uuid'] = "bc96d773-ee57-0cdd-c3ac-2d91aba61b55";
$apps[$x]['menu'][2]['category'] = "internal";
$apps[$x]['menu'][2]['path'] = "/core/users/index.php";
$apps[$x]['menu'][2]['groups'][] = "admin";
$apps[$x]['menu'][2]['groups'][] = "superadmin";
$apps[$x]['menu'][3]['title']['en-us'] = "Group Manager";
$apps[$x]['menu'][3]['title']['es-cl'] = "Administración de Grupos";
$apps[$x]['menu'][3]['title']['fr-fr'] = "Gestion des groupes";
$apps[$x]['menu'][3]['title']['pt-pt'] = "'Gestão de Grupos";
$apps[$x]['menu'][3]['title']['pt-br'] = "Gerenciar grupos";
$apps[$x]['menu'][3]['title']['pl'] = "Menedżer grup";
$apps[$x]['menu'][3]['title']['uk'] = "Групи";
$apps[$x]['menu'][3]['title']['sv-se'] = "Grupp Inställningar";
$apps[$x]['menu'][3]['title']['de-at'] = "Gruppenverwaltung";
$apps[$x]['menu'][3]['title']['he'] = "מנהל קבוצה";
$apps[$x]['menu'][3]['uuid'] = "3b4acc6d-827b-f537-bf21-0093d94ffec7";
$apps[$x]['menu'][3]['parent_uuid'] = "594d99c5-6128-9c88-ca35-4b33392cec0f";
$apps[$x]['menu'][3]['category'] = "internal";
$apps[$x]['menu'][3]['path'] = "/core/users/groups.php";
$apps[$x]['menu'][3]['groups'][] = "superadmin";
?>

View File

@@ -1,312 +1,312 @@
<?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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
//check permissions
require_once "resources/check_auth.php";
if (permission_exists('group_edit')) {
//access allowed
}
else {
echo "access denied";
return;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//process update
if (count($_POST) > 0) {
//set the variables
$group_uuid = check_str($_POST['group_uuid']);
$group_name = check_str($_POST['group_name']);
$group_name_previous = check_str($_POST['group_name_previous']);
$domain_uuid = check_str($_POST["domain_uuid"]);
$domain_uuid_previous = check_str($_POST["domain_uuid_previous"]);
$group_description = check_str($_POST["group_description"]);
//check for global/domain duplicates
$sql = "select count(*) as num_rows from v_groups where ";
$sql .= "group_name = '".$group_name."' ";
$sql .= "and group_uuid <> '".$group_uuid."' ";
$sql .= "and domain_uuid ".(($domain_uuid != '') ? " = '".$domain_uuid."' " : " is null ");
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$group_exists = ($row['num_rows'] > 0) ? true : false;
}
else {
$group_exists = false;
}
unset($sql, $prep_statement, $row);
//update group
if (!$group_exists) {
$sql = "update v_groups ";
$sql .= "set ";
$sql .= "group_name = '".$group_name."', ";
$sql .= "domain_uuid = ".(($domain_uuid != '') ? "'".$domain_uuid."'" : "null").", ";
$sql .= "group_description = '".$group_description."' ";
$sql .= "where group_uuid = '".$group_uuid."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
echo "<pre>".print_r($error, true)."</pre>";
exit;
}
//group changed from global to domain-specific
if ($domain_uuid_previous == '' && $domain_uuid != '') {
//remove any users assigned to the group from the old domain
$sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid <> '".$domain_uuid."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//update permissions to use new domain uuid
$sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid is null ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
//group changed from one domain to another
else if ($domain_uuid_previous != '' && $domain_uuid != '' && $domain_uuid_previous != $domain_uuid) {
//remove any users assigned to the group from the old domain
$sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//update permissions to use new domain uuid
$sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
//group changed from domain-specific to global
else if ($domain_uuid_previous != '' && $domain_uuid == '') {
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid_previous."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
//update permissions to not use a domain uuid
$sql = "update v_group_permissions set domain_uuid = null where group_name = '".$group_name."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
//domain didn't change, but name may still
else {
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid ".(($domain_uuid != '') ? " = '".$domain_uuid."' " : " is null ")." and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
$_SESSION["message"] = $text['message-update'];
header("Location: groups.php");
}
else {
$_SESSION['message_mood'] = 'negative';
$_SESSION["message"] = $text['message-group_exists'];
header("Location: groupedit.php?id=".$group_uuid);
}
//redirect the user
return;
}
//pre-populate the form
$group_uuid = check_str($_REQUEST['id']);
if ($group_uuid != '') {
$sql = "select * from v_groups where ";
$sql .= "group_uuid = '".$group_uuid."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$group_name = $row['group_name'];
$domain_uuid = $row['domain_uuid'];
$group_description = $row['group_description'];
}
}
//include the header
include "resources/header.php";
$document['title'] = $text['title-group_edit'];
//copy group javascript
echo "<script language='javascript' type='text/javascript'>\n";
echo " function copy_group() {\n";
echo " var new_group_name;\n";
echo " var new_group_desc;\n";
echo " new_group_name = prompt('".$text['message-new_group_name']."');\n";
echo " if (new_group_name != null) {\n";
echo " new_group_desc = prompt('".$text['message-new_group_description']."');\n";
echo " if (new_group_desc != null) {\n";
echo " window.location = 'permissions_copy.php?group_name=".$group_name."&new_group_name=' + new_group_name + '&new_group_desc=' + new_group_desc;\n";
echo " }\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
//show the content
echo "<form name='login' method='post' action=''>\n";
echo "<input type='hidden' name='group_uuid' value='".$group_uuid."'>\n";
echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
echo " <b>".$text['header-group_edit']."</b>\n";
echo " <br><br>\n";
echo " ".$text['description-group_edit']."\n";
echo " </td>\n";
echo " <td align='right' valign='top'>\n";
echo " <input type='button' class='btn' name='' alt='back' onclick=\"window.location='groups.php'\" value='".$text['button-back']."'> ";
echo " <input type='button' class='btn' alt='".$text['button-copy']."' onclick='copy_group();' value='".$text['button-copy']."'>";
echo " <input type='submit' class='btn' value=\"".$text['button-save']."\">\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br>";
echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncellreq' valign='top'>\n";
echo $text['label-group_name']."\n";
echo "</td>\n";
echo "<td width='70%' align='left' class='vtable'>\n";
echo " <input type='hidden' name='group_name_previous' value=\"".$group_name."\">\n";
echo " <input type='text' class='formfld' name='group_name' value=\"".$group_name."\">\n";
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('group_domain')) {
echo "<tr>\n";
echo "<td class='vncell' valign='top'>\n";
echo " ".$text['label-domain']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input type='hidden' name='domain_uuid_previous' value='".$domain_uuid."'>\n";
echo " <select class='formfld' name='domain_uuid'>\n";
echo " <option value='' ".((strlen($domain_uuid) == 0) ? "selected='selected'" : null).">".$text['option-global']."</option>\n";
foreach ($_SESSION['domains'] as $row) {
echo "<option value='".$row['domain_uuid']."' ".(($row['domain_uuid'] == $domain_uuid) ? "selected='selected'" : null).">".$row['domain_name']."</option>\n";
}
echo " </select>\n";
echo " <br />\n";
echo $text['description-domain_name']."\n";
echo "</td>\n";
echo "</tr>\n";
}
else {
echo "<input type='hidden' name='domain_uuid' value='".$domain_uuid."'>";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top'>\n";
echo $text['label-group_description']."\n";
echo "</td>\n";
echo "<td align='left' class='vtable' valign='top'>\n";
echo " <textarea name='group_description' class='formfld' style='width: 250px; height: 50px;'>".$group_description."</textarea>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td colspan='2' align='right'>\n";
echo " <br />";
echo " <input type='submit' class='btn' value=\"".$text['button-save']."\">\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//include the footer
include "resources/footer.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>
Portions created by the Initial Developer are Copyright (C) 2008-2014
the Initial Developer. All Rights Reserved.
Contributor(s):
Mark J Crane <markjcrane@fusionpbx.com>
*/
include "root.php";
require_once "resources/require.php";
//check permissions
require_once "resources/check_auth.php";
if (permission_exists('group_edit')) {
//access allowed
}
else {
echo "access denied";
return;
}
//add multi-lingual support
$language = new text;
$text = $language->get();
//process update
if (count($_POST) > 0) {
//set the variables
$group_uuid = check_str($_POST['group_uuid']);
$group_name = check_str($_POST['group_name']);
$group_name_previous = check_str($_POST['group_name_previous']);
$domain_uuid = check_str($_POST["domain_uuid"]);
$domain_uuid_previous = check_str($_POST["domain_uuid_previous"]);
$group_description = check_str($_POST["group_description"]);
//check for global/domain duplicates
$sql = "select count(*) as num_rows from v_groups where ";
$sql .= "group_name = '".$group_name."' ";
$sql .= "and group_uuid <> '".$group_uuid."' ";
$sql .= "and domain_uuid ".(($domain_uuid != '') ? " = '".$domain_uuid."' " : " is null ");
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$group_exists = ($row['num_rows'] > 0) ? true : false;
}
else {
$group_exists = false;
}
unset($sql, $prep_statement, $row);
//update group
if (!$group_exists) {
$sql = "update v_groups ";
$sql .= "set ";
$sql .= "group_name = '".$group_name."', ";
$sql .= "domain_uuid = ".(($domain_uuid != '') ? "'".$domain_uuid."'" : "null").", ";
$sql .= "group_description = '".$group_description."' ";
$sql .= "where group_uuid = '".$group_uuid."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
echo "<pre>".print_r($error, true)."</pre>";
exit;
}
//group changed from global to domain-specific
if ($domain_uuid_previous == '' && $domain_uuid != '') {
//remove any users assigned to the group from the old domain
$sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid <> '".$domain_uuid."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//update permissions to use new domain uuid
$sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid is null ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
//group changed from one domain to another
else if ($domain_uuid_previous != '' && $domain_uuid != '' && $domain_uuid_previous != $domain_uuid) {
//remove any users assigned to the group from the old domain
$sql = "delete from v_group_users where group_uuid = '".$group_uuid."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//update permissions to use new domain uuid
$sql = "update v_group_permissions set domain_uuid = '".$domain_uuid."' where group_name = '".$group_name_previous."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
//group changed from domain-specific to global
else if ($domain_uuid_previous != '' && $domain_uuid == '') {
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid = '".$domain_uuid_previous."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
//update permissions to not use a domain uuid
$sql = "update v_group_permissions set domain_uuid = null where group_name = '".$group_name."' and domain_uuid = '".$domain_uuid_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
//domain didn't change, but name may still
else {
//change group name
if ($group_name != $group_name_previous && $group_name != '') {
//change group name in group users
$sql = "update v_group_users set group_name = '".$group_name."' where group_uuid = '".$group_uuid."' and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
//change group name in permissions
$sql = "update v_group_permissions set group_name = '".$group_name."' where domain_uuid ".(($domain_uuid != '') ? " = '".$domain_uuid."' " : " is null ")." and group_name = '".$group_name_previous."' ";
if (!$db->exec(check_sql($sql))) {
$error = $db->errorInfo();
//echo "<pre>".print_r($error, true)."</pre>"; exit;
}
}
}
$_SESSION["message"] = $text['message-update'];
header("Location: groups.php");
}
else {
$_SESSION['message_mood'] = 'negative';
$_SESSION["message"] = $text['message-group_exists'];
header("Location: groupedit.php?id=".$group_uuid);
}
//redirect the user
return;
}
//pre-populate the form
$group_uuid = check_str($_REQUEST['id']);
if ($group_uuid != '') {
$sql = "select * from v_groups where ";
$sql .= "group_uuid = '".$group_uuid."' ";
$prep_statement = $db->prepare($sql);
if ($prep_statement) {
$prep_statement->execute();
$row = $prep_statement->fetch(PDO::FETCH_ASSOC);
$group_name = $row['group_name'];
$domain_uuid = $row['domain_uuid'];
$group_description = $row['group_description'];
}
}
//include the header
include "resources/header.php";
$document['title'] = $text['title-group_edit'];
//copy group javascript
echo "<script language='javascript' type='text/javascript'>\n";
echo " function copy_group() {\n";
echo " var new_group_name;\n";
echo " var new_group_desc;\n";
echo " new_group_name = prompt('".$text['message-new_group_name']."');\n";
echo " if (new_group_name != null) {\n";
echo " new_group_desc = prompt('".$text['message-new_group_description']."');\n";
echo " if (new_group_desc != null) {\n";
echo " window.location = 'permissions_copy.php?group_name=".$group_name."&new_group_name=' + new_group_name + '&new_group_desc=' + new_group_desc;\n";
echo " }\n";
echo " }\n";
echo " }\n";
echo "</script>\n";
//show the content
echo "<form name='login' method='post' action=''>\n";
echo "<input type='hidden' name='group_uuid' value='".$group_uuid."'>\n";
echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left' valign='top'>\n";
echo " <b>".$text['header-group_edit']."</b>\n";
echo " <br><br>\n";
echo " ".$text['description-group_edit']."\n";
echo " </td>\n";
echo " <td align='right' valign='top'>\n";
echo " <input type='button' class='btn' name='' alt='back' onclick=\"window.location='groups.php'\" value='".$text['button-back']."'> ";
echo " <input type='button' class='btn' alt='".$text['button-copy']."' onclick='copy_group();' value='".$text['button-copy']."'>";
echo " <input type='submit' class='btn' value=\"".$text['button-save']."\">\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br>";
echo "<table width='100%' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<td width='30%' class='vncellreq' valign='top'>\n";
echo $text['label-group_name']."\n";
echo "</td>\n";
echo "<td width='70%' align='left' class='vtable'>\n";
echo " <input type='hidden' name='group_name_previous' value=\"".$group_name."\">\n";
echo " <input type='text' class='formfld' name='group_name' value=\"".$group_name."\">\n";
echo "</td>\n";
echo "</tr>\n";
if (permission_exists('group_domain')) {
echo "<tr>\n";
echo "<td class='vncell' valign='top'>\n";
echo " ".$text['label-domain']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <input type='hidden' name='domain_uuid_previous' value='".$domain_uuid."'>\n";
echo " <select class='formfld' name='domain_uuid'>\n";
echo " <option value='' ".((strlen($domain_uuid) == 0) ? "selected='selected'" : null).">".$text['option-global']."</option>\n";
foreach ($_SESSION['domains'] as $row) {
echo "<option value='".$row['domain_uuid']."' ".(($row['domain_uuid'] == $domain_uuid) ? "selected='selected'" : null).">".$row['domain_name']."</option>\n";
}
echo " </select>\n";
echo " <br />\n";
echo $text['description-domain_name']."\n";
echo "</td>\n";
echo "</tr>\n";
}
else {
echo "<input type='hidden' name='domain_uuid' value='".$domain_uuid."'>";
}
echo "<tr>\n";
echo "<td class='vncell' valign='top'>\n";
echo $text['label-group_description']."\n";
echo "</td>\n";
echo "<td align='left' class='vtable' valign='top'>\n";
echo " <textarea name='group_description' class='formfld' style='width: 250px; height: 50px;'>".$group_description."</textarea>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td colspan='2' align='right'>\n";
echo " <br />";
echo " <input type='submit' class='btn' value=\"".$text['button-save']."\">\n";
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br><br>";
echo "</form>";
//include the footer
include "resources/footer.php";
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,139 +1,139 @@
<?php
/**
* cache class provides an abstracted cache
*
* @method string set
* @method string get
* @method string delete
* @method string flush
*/
class cache {
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a specific item in the cache
* @var string $key the cache id
* @var string $value string to be cached
*/
public function set($key, $value) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
//run the memcache
$command = "memcache set ".$key." ".$value;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Get a specific item from the cache
* @var string $key cache id
*/
public function get($key) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
//run the memcache
$command = "memcache get ".$key;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Delete a specific item from the cache
* @var string $key cache id
*/
public function delete($key) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
$event = "sendevent CUSTOM\n";
$event .= "Event-Name: MEMCACHE\n";
$event .= "Event-Subclass: delete\n";
$event .= "API-Command: memcache\n";
$event .= "API-Command-Argument: delete ".$key."\n";
event_socket_request($fp, $event);
//run the memcache
$command = "memcache delete ".$key;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Delete the entire cache
*/
public function flush() {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
$event = "sendevent CUSTOM\n";
$event .= "Event-Name: MEMCACHE\n";
$event .= "Event-Subclass: flush\n";
$event .= "API-Command: memcache\n";
$event .= "API-Command-Argument: flush\n";
event_socket_request($fp, $event);
//run the memcache
$command = "memcache flush";
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
}
<?php
/**
* cache class provides an abstracted cache
*
* @method string set
* @method string get
* @method string delete
* @method string flush
*/
class cache {
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Add a specific item in the cache
* @var string $key the cache id
* @var string $value string to be cached
*/
public function set($key, $value) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
//run the memcache
$command = "memcache set ".$key." ".$value;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Get a specific item from the cache
* @var string $key cache id
*/
public function get($key) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
//run the memcache
$command = "memcache get ".$key;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Delete a specific item from the cache
* @var string $key cache id
*/
public function delete($key) {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
$event = "sendevent CUSTOM\n";
$event .= "Event-Name: MEMCACHE\n";
$event .= "Event-Subclass: delete\n";
$event .= "API-Command: memcache\n";
$event .= "API-Command-Argument: delete ".$key."\n";
event_socket_request($fp, $event);
//run the memcache
$command = "memcache delete ".$key;
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
/**
* Delete the entire cache
*/
public function flush() {
// connect to event socket
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
if ($fp === false) {
return false;
}
//send a custom event
$event = "sendevent CUSTOM\n";
$event .= "Event-Name: MEMCACHE\n";
$event .= "Event-Subclass: flush\n";
$event .= "API-Command: memcache\n";
$event .= "API-Command-Argument: flush\n";
event_socket_request($fp, $event);
//run the memcache
$command = "memcache flush";
$result = event_socket_request($fp, 'api '.$command);
//close event socket
fclose($fp);
// return result
return $result;
}
}
?>

View File

@@ -1,127 +1,127 @@
<?php
/**
* config
*
* @method get config.php
* @method find find the path to the config.php file
* @method exists determin if the the config.php file exists
*/
class config {
/**
* database variables and config path
*/
public $db_type;
public $db_name;
public $db_username;
public $db_password;
public $db_host;
public $db_path;
public $db_port;
public $config_path;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Determine whether the config.php exists
* @var string $db_type - type of database
* @var string $db_name - name of the database
* @var string $db_username - username to access the database
* @var string $db_password - password to access the database
* @var string $db_host - hostname of the database server
* @var string $db_path - path of the database file
* @var string $db_port - network port to connect to the database
*/
public function get() {
$this->find();
if ($this->exists()) {
require $this->config_path;
$this->db_type = $db_type;
$this->db_name = $db_name;
$this->db_username = $db_username;
$this->db_password = $db_password;
$this->db_host = $db_host;
$this->db_path = $db_path;
$this->db_port = $db_port;
}
}
/**
* Find the path to the config.php
* @var string $config_path - full path to the config.php file
*/
public function find() {
//get the PROJECT PATH
include "root.php";
// find the file
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
$this->config_path = $_SERVER["PROJECT_ROOT"]."/resources/config.php";
} elseif (file_exists("/etc/fusionpbx/config.php")) {
$this->config_path = "/etc/fusionpbx/config.php";
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
$this->config_path = "/usr/local/etc/fusionpbx/config.php";
}
else {
$this->config_path = '';
}
//return the path
return $this->config_path;
}
/**
* Determine whether the config.php exists
*/
public function exists() {
$this->find();
if (strlen($this->config_path) > 0) {
return true;
}
else {
return false;
}
}
}
/*
$config = new config;
$config_exists = $config->exists();
$config_path = $config->find();
$config->get();
$db_type = $config->db_type;
$db_name = $config->db_name;
$db_username = $config->db_username;
$db_password = $config->db_password;
$db_host = $config->db_host;
$db_path = $config->db_path;
$db_port = $config->db_port;
echo "config_path: ".$config_path."\n";
if ($config_exists) {
echo "config_exists: true\n";
} else {
echo "config_exists: false\n";
}
echo "db_type: ".$db_type."\n";
echo "db_name: ".$db_name."\n";
echo "db_username: ".$db_username."\n";
echo "db_password: ".$db_password."\n";
echo "db_host: ".$db_host."\n";
echo "db_path: ".$db_path."\n";
echo "db_port: ".$db_port."\n";
*/
<?php
/**
* config
*
* @method get config.php
* @method find find the path to the config.php file
* @method exists determin if the the config.php file exists
*/
class config {
/**
* database variables and config path
*/
public $db_type;
public $db_name;
public $db_username;
public $db_password;
public $db_host;
public $db_path;
public $db_port;
public $config_path;
/**
* Called when the object is created
*/
public function __construct() {
//place holder
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Determine whether the config.php exists
* @var string $db_type - type of database
* @var string $db_name - name of the database
* @var string $db_username - username to access the database
* @var string $db_password - password to access the database
* @var string $db_host - hostname of the database server
* @var string $db_path - path of the database file
* @var string $db_port - network port to connect to the database
*/
public function get() {
$this->find();
if ($this->exists()) {
require $this->config_path;
$this->db_type = $db_type;
$this->db_name = $db_name;
$this->db_username = $db_username;
$this->db_password = $db_password;
$this->db_host = $db_host;
$this->db_path = $db_path;
$this->db_port = $db_port;
}
}
/**
* Find the path to the config.php
* @var string $config_path - full path to the config.php file
*/
public function find() {
//get the PROJECT PATH
include "root.php";
// find the file
if (file_exists($_SERVER["PROJECT_ROOT"]."/resources/config.php")) {
$this->config_path = $_SERVER["PROJECT_ROOT"]."/resources/config.php";
} elseif (file_exists("/etc/fusionpbx/config.php")) {
$this->config_path = "/etc/fusionpbx/config.php";
} elseif (file_exists("/usr/local/etc/fusionpbx/config.php")) {
$this->config_path = "/usr/local/etc/fusionpbx/config.php";
}
else {
$this->config_path = '';
}
//return the path
return $this->config_path;
}
/**
* Determine whether the config.php exists
*/
public function exists() {
$this->find();
if (strlen($this->config_path) > 0) {
return true;
}
else {
return false;
}
}
}
/*
$config = new config;
$config_exists = $config->exists();
$config_path = $config->find();
$config->get();
$db_type = $config->db_type;
$db_name = $config->db_name;
$db_username = $config->db_username;
$db_password = $config->db_password;
$db_host = $config->db_host;
$db_path = $config->db_path;
$db_port = $config->db_port;
echo "config_path: ".$config_path."\n";
if ($config_exists) {
echo "config_exists: true\n";
} else {
echo "config_exists: false\n";
}
echo "db_type: ".$db_type."\n";
echo "db_name: ".$db_name."\n";
echo "db_username: ".$db_username."\n";
echo "db_password: ".$db_password."\n";
echo "db_host: ".$db_host."\n";
echo "db_path: ".$db_path."\n";
echo "db_port: ".$db_port."\n";
*/
?>

View File

@@ -1,280 +1,280 @@
<?php
/**
* destinations
*
* @method get_array get the destinations
* @method select build the html select
*/
class destinations {
/**
* destinations array
*/
public $destinations;
/**
* Called when the object is created
*/
public function __construct() {
//set the global variables
global $db, $db_type;
//get the array from the app_config.php files
$config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
$x = 0;
foreach ($config_list as &$config_path) {
include($config_path);
$x++;
}
$i = 0;
foreach ($apps as $x => &$app) {
if (isset($app['destinations'])) foreach ($app['destinations'] as &$row) {
$this->destinations[] = $row;
}
}
//put the array in order
foreach ($this->destinations as $row) {
$option_groups[] = $row['label'];
}
array_multisort($option_groups, SORT_ASC, $this->destinations);
//add the sql and data to the array
$x = 0;
foreach ($this->destinations as $row) {
if ($row['type'] = 'sql') {
if (isset($row['sql'])) {
if (is_array($row['sql'])) {
$sql = trim($row['sql'][$db_type])." ";
}
else {
$sql = trim($row['sql'])." ";
}
}
else {
$field_count = count($row['field']);
$fields = '';
$c = 1;
foreach ($row['field'] as $key => $value) {
if ($field_count != $c) { $delimiter = ','; } else { $delimiter = ''; }
$fields .= $value." as ".$key.$delimiter." ";
$c++;
}
$sql = "select ".$fields;
$sql .= " from v_".$row['name']." ";
}
if (isset($row['where'])) {
$sql .= trim($row['where'])." ";
}
$sql .= "order by ".trim($row['order_by']);
$sql = str_replace("\${domain_uuid}", $_SESSION['domain_uuid'], $sql);
$sql = trim($sql);
$statement = $db->prepare($sql);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_NAMED);
unset($statement);
$this->destinations[$x]['result']['sql'] = $sql;
$this->destinations[$x]['result']['data'] = $result;
}
$x++;
}
$this->destinations[$x]['type'] = 'array';
$this->destinations[$x]['label'] = 'other';
$this->destinations[$x]['name'] = 'dialplan';
$this->destinations[$x]['field']['name'] = "name";
$this->destinations[$x]['field']['destination'] = "destination";
$this->destinations[$x]['select_value']['dialplan'] = "transfer:\${destination}";
$this->destinations[$x]['select_value']['ivr'] = "menu-exec-app:transfer \${destination}";
$this->destinations[$x]['select_label'] = "\${name}";
$y = 0;
$this->destinations[$x]['result']['data'][$y]['label'] = 'check_voicemail';
$this->destinations[$x]['result']['data'][$y]['name'] = '*98';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*98 XML ${context}';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'company_directory';
$this->destinations[$x]['result']['data'][$y]['name'] = '*411';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*411 XML ${context}';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['name'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['application'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['destination'] = '';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'record';
$this->destinations[$x]['result']['data'][$y]['name'] = '*732';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*732 XML ${context}';
$y++;
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Get the destination menu
* @var string $destination_type can be ivr, dialplan, call_center_contact or bridge
* @var string $destination_name - current name
* @var string $destination_value - current value
*/
public function select($destination_type, $destination_name, $destination_value) {
//remove special characters from the name
$destination_id = str_replace("]", "", $destination_name);
$destination_id = str_replace("[", "_", $destination_id);
//add additional
if (if_group("superadmin")) {
$response = "<script>\n";
$response .= "var Objs;\n";
$response .= "\n";
$response .= "function changeToInput".$destination_id."(obj){\n";
$response .= " tb=document.createElement('INPUT');\n";
$response .= " tb.type='text';\n";
$response .= " tb.name=obj.name;\n";
$response .= " tb.className='formfld';\n";
$response .= " tb.setAttribute('id', '".$destination_id."');\n";
$response .= " tb.setAttribute('style', '".$select_style."');\n";
if ($onchange != '') {
$response .= " tb.setAttribute('onchange', \"".$onchange."\");\n";
$response .= " tb.setAttribute('onkeyup', \"".$onchange."\");\n";
}
$response .= " tb.value=obj.options[obj.selectedIndex].value;\n";
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
$response .= " tbb=document.createElement('INPUT');\n";
$response .= " tbb.setAttribute('class', 'btn');\n";
$response .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
$response .= " tbb.type='button';\n";
$response .= " tbb.value=$('<div />').html('&#9665;').text();\n";
$response .= " tbb.objs=[obj,tb,tbb];\n";
$response .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
$response .= " obj.parentNode.insertBefore(tb,obj);\n";
$response .= " obj.parentNode.insertBefore(tbb,obj);\n";
$response .= " obj.parentNode.removeChild(obj);\n";
$response .= " Replace".$destination_id."(this.objs);\n";
$response .= "}\n";
$response .= "\n";
$response .= "function Replace".$destination_id."(obj){\n";
$response .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
$response .= " obj[0].parentNode.removeChild(obj[1]);\n";
$response .= " obj[0].parentNode.removeChild(obj[2]);\n";
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
if ($onchange != '') {
$response .= " ".$onchange.";\n";
}
$response .= "}\n";
$response .= "</script>\n";
$response .= "\n";
}
//set default to false
$select_found = false;
$response .= " <select name='".$destination_name."' id='".$destination_id."' class='formfld' style='".$select_style."' onchange=\"".$onchange."\">\n";
$response .= " <option value=''></option>\n";
foreach ($this->destinations as $row) {
$name = $row['name'];
$label = $row['label'];
$destination = $row['field']['destination'];
//add multi-lingual support
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/".$name."/app_languages.php")) {
$language2 = new text;
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$name);
}
if (count($row['result']['data']) > 0 and strlen($row['select_value'][$destination_type]) > 0) {
$response .= " <optgroup label='".$text2['title-'.$label]."'>\n";
$label2 = $label;
foreach ($row['result']['data'] as $data) {
$select_value = $row['select_value'][$destination_type];
$select_label = $row['select_label'];
foreach ($row['field'] as $key => $value) {
if ($key == 'destination' and is_array($value)){
if ($value['type'] == 'csv') {
$array = explode($value['delimiter'], $data[$key]);
$select_value = str_replace("\${destination}", $array[0], $select_value);
$select_label = str_replace("\${destination}", $array[0], $select_label);
}
}
else {
if (strpos($value,',') !== false) {
$keys = explode(",", $value);
foreach ($keys as $k) {
if (strlen($data[$k]) > 0) {
$select_value = str_replace("\${".$key."}", $data[$k], $select_value);
if (strlen($data['label']) == 0) {
$select_label = str_replace("\${".$key."}", $data[$k], $select_label);
}
else {
$label = $data['label'];
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
}
}
}
}
else {
$select_value = str_replace("\${".$key."}", $data[$key], $select_value);
if (strlen($data['label']) == 0) {
$select_label = str_replace("\${".$key."}", $data[$key], $select_label);
}
else {
$label = $data['label'];
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
}
}
//application: hangup
if (strlen($data['application']) > 0) {
$select_value = str_replace("transfer", $data['application'], $select_value);
}
}
}
$select_value = str_replace("\${domain_name}", $_SESSION['domain_name'], $select_value);
$select_value = str_replace("\${context}", $_SESSION['context'], $select_value); //to do: context can come from the array
$select_label = str_replace("\${domain_name}", $_SESSION['domain_name'], $select_label);
$select_label = str_replace("\${context}", $_SESSION['context'], $select_label);
$select_label = trim($select_label);
if ($select_value == $destination_value) { $selected = "selected='selected' "; $select_found = true; } else { $selected = ''; }
if ($label2 == 'destinations') { $select_label = format_phone($select_label); }
$response .= " <option value='".$select_value."' ".$selected.">".$select_label."</option>\n";
}
$response .= " </optgroup>\n";
unset($text);
}
}
if (!$select_found) {
$destination_label = str_replace(":", " ", $destination_value);
$destination_label = str_replace("menu-exec-app:", " ", $destination_label);
$response .= " <option value='".$destination_value."' selected='selected'>".trim($destination_label)."</option>\n";
}
$response .= " </select>\n";
if (if_group("superadmin")) {
$response .= "<input type='button' id='btn_select_to_input_".$destination_id."' class='btn' name='' alt='back' onclick='changeToInput".$destination_id."(document.getElementById(\"".$destination_id."\"));this.style.visibility = \"hidden\";' value='&#9665;'>";
}
//return the formatted destinations
return $response;
}
}
/*
$obj = new destinations;
//$destinations = $obj->destinations;
echo $obj->select('ivr', 'example1', 'menu-exec-app:transfer 32 XML voip.fusionpbx.com');
echo $obj->select('ivr', 'example2', '');
echo $obj->select('ivr', 'example3', '');
echo $obj->select('ivr', 'example4', '');
echo $obj->select('ivr', 'example5', '');
echo $obj->select('ivr', 'example6', '');
*/
?>
<?php
/**
* destinations
*
* @method get_array get the destinations
* @method select build the html select
*/
class destinations {
/**
* destinations array
*/
public $destinations;
/**
* Called when the object is created
*/
public function __construct() {
//set the global variables
global $db, $db_type;
//get the array from the app_config.php files
$config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php");
$x = 0;
foreach ($config_list as &$config_path) {
include($config_path);
$x++;
}
$i = 0;
foreach ($apps as $x => &$app) {
if (isset($app['destinations'])) foreach ($app['destinations'] as &$row) {
$this->destinations[] = $row;
}
}
//put the array in order
foreach ($this->destinations as $row) {
$option_groups[] = $row['label'];
}
array_multisort($option_groups, SORT_ASC, $this->destinations);
//add the sql and data to the array
$x = 0;
foreach ($this->destinations as $row) {
if ($row['type'] = 'sql') {
if (isset($row['sql'])) {
if (is_array($row['sql'])) {
$sql = trim($row['sql'][$db_type])." ";
}
else {
$sql = trim($row['sql'])." ";
}
}
else {
$field_count = count($row['field']);
$fields = '';
$c = 1;
foreach ($row['field'] as $key => $value) {
if ($field_count != $c) { $delimiter = ','; } else { $delimiter = ''; }
$fields .= $value." as ".$key.$delimiter." ";
$c++;
}
$sql = "select ".$fields;
$sql .= " from v_".$row['name']." ";
}
if (isset($row['where'])) {
$sql .= trim($row['where'])." ";
}
$sql .= "order by ".trim($row['order_by']);
$sql = str_replace("\${domain_uuid}", $_SESSION['domain_uuid'], $sql);
$sql = trim($sql);
$statement = $db->prepare($sql);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_NAMED);
unset($statement);
$this->destinations[$x]['result']['sql'] = $sql;
$this->destinations[$x]['result']['data'] = $result;
}
$x++;
}
$this->destinations[$x]['type'] = 'array';
$this->destinations[$x]['label'] = 'other';
$this->destinations[$x]['name'] = 'dialplan';
$this->destinations[$x]['field']['name'] = "name";
$this->destinations[$x]['field']['destination'] = "destination";
$this->destinations[$x]['select_value']['dialplan'] = "transfer:\${destination}";
$this->destinations[$x]['select_value']['ivr'] = "menu-exec-app:transfer \${destination}";
$this->destinations[$x]['select_label'] = "\${name}";
$y = 0;
$this->destinations[$x]['result']['data'][$y]['label'] = 'check_voicemail';
$this->destinations[$x]['result']['data'][$y]['name'] = '*98';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*98 XML ${context}';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'company_directory';
$this->destinations[$x]['result']['data'][$y]['name'] = '*411';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*411 XML ${context}';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['name'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['application'] = 'hangup';
$this->destinations[$x]['result']['data'][$y]['destination'] = '';
$y++;
$this->destinations[$x]['result']['data'][$y]['label'] = 'record';
$this->destinations[$x]['result']['data'][$y]['name'] = '*732';
$this->destinations[$x]['result']['data'][$y]['destination'] = '*732 XML ${context}';
$y++;
}
/**
* Called when there are no references to a particular object
* unset the variables used in the class
*/
public function __destruct() {
foreach ($this as $key => $value) {
unset($this->$key);
}
}
/**
* Get the destination menu
* @var string $destination_type can be ivr, dialplan, call_center_contact or bridge
* @var string $destination_name - current name
* @var string $destination_value - current value
*/
public function select($destination_type, $destination_name, $destination_value) {
//remove special characters from the name
$destination_id = str_replace("]", "", $destination_name);
$destination_id = str_replace("[", "_", $destination_id);
//add additional
if (if_group("superadmin")) {
$response = "<script>\n";
$response .= "var Objs;\n";
$response .= "\n";
$response .= "function changeToInput".$destination_id."(obj){\n";
$response .= " tb=document.createElement('INPUT');\n";
$response .= " tb.type='text';\n";
$response .= " tb.name=obj.name;\n";
$response .= " tb.className='formfld';\n";
$response .= " tb.setAttribute('id', '".$destination_id."');\n";
$response .= " tb.setAttribute('style', '".$select_style."');\n";
if ($onchange != '') {
$response .= " tb.setAttribute('onchange', \"".$onchange."\");\n";
$response .= " tb.setAttribute('onkeyup', \"".$onchange."\");\n";
}
$response .= " tb.value=obj.options[obj.selectedIndex].value;\n";
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'hidden';\n";
$response .= " tbb=document.createElement('INPUT');\n";
$response .= " tbb.setAttribute('class', 'btn');\n";
$response .= " tbb.setAttribute('style', 'margin-left: 4px;');\n";
$response .= " tbb.type='button';\n";
$response .= " tbb.value=$('<div />').html('&#9665;').text();\n";
$response .= " tbb.objs=[obj,tb,tbb];\n";
$response .= " tbb.onclick=function(){ Replace".$destination_id."(this.objs); }\n";
$response .= " obj.parentNode.insertBefore(tb,obj);\n";
$response .= " obj.parentNode.insertBefore(tbb,obj);\n";
$response .= " obj.parentNode.removeChild(obj);\n";
$response .= " Replace".$destination_id."(this.objs);\n";
$response .= "}\n";
$response .= "\n";
$response .= "function Replace".$destination_id."(obj){\n";
$response .= " obj[2].parentNode.insertBefore(obj[0],obj[2]);\n";
$response .= " obj[0].parentNode.removeChild(obj[1]);\n";
$response .= " obj[0].parentNode.removeChild(obj[2]);\n";
$response .= " document.getElementById('btn_select_to_input_".$destination_id."').style.visibility = 'visible';\n";
if ($onchange != '') {
$response .= " ".$onchange.";\n";
}
$response .= "}\n";
$response .= "</script>\n";
$response .= "\n";
}
//set default to false
$select_found = false;
$response .= " <select name='".$destination_name."' id='".$destination_id."' class='formfld' style='".$select_style."' onchange=\"".$onchange."\">\n";
$response .= " <option value=''></option>\n";
foreach ($this->destinations as $row) {
$name = $row['name'];
$label = $row['label'];
$destination = $row['field']['destination'];
//add multi-lingual support
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/".$name."/app_languages.php")) {
$language2 = new text;
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$name);
}
if (count($row['result']['data']) > 0 and strlen($row['select_value'][$destination_type]) > 0) {
$response .= " <optgroup label='".$text2['title-'.$label]."'>\n";
$label2 = $label;
foreach ($row['result']['data'] as $data) {
$select_value = $row['select_value'][$destination_type];
$select_label = $row['select_label'];
foreach ($row['field'] as $key => $value) {
if ($key == 'destination' and is_array($value)){
if ($value['type'] == 'csv') {
$array = explode($value['delimiter'], $data[$key]);
$select_value = str_replace("\${destination}", $array[0], $select_value);
$select_label = str_replace("\${destination}", $array[0], $select_label);
}
}
else {
if (strpos($value,',') !== false) {
$keys = explode(",", $value);
foreach ($keys as $k) {
if (strlen($data[$k]) > 0) {
$select_value = str_replace("\${".$key."}", $data[$k], $select_value);
if (strlen($data['label']) == 0) {
$select_label = str_replace("\${".$key."}", $data[$k], $select_label);
}
else {
$label = $data['label'];
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
}
}
}
}
else {
$select_value = str_replace("\${".$key."}", $data[$key], $select_value);
if (strlen($data['label']) == 0) {
$select_label = str_replace("\${".$key."}", $data[$key], $select_label);
}
else {
$label = $data['label'];
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
}
}
//application: hangup
if (strlen($data['application']) > 0) {
$select_value = str_replace("transfer", $data['application'], $select_value);
}
}
}
$select_value = str_replace("\${domain_name}", $_SESSION['domain_name'], $select_value);
$select_value = str_replace("\${context}", $_SESSION['context'], $select_value); //to do: context can come from the array
$select_label = str_replace("\${domain_name}", $_SESSION['domain_name'], $select_label);
$select_label = str_replace("\${context}", $_SESSION['context'], $select_label);
$select_label = trim($select_label);
if ($select_value == $destination_value) { $selected = "selected='selected' "; $select_found = true; } else { $selected = ''; }
if ($label2 == 'destinations') { $select_label = format_phone($select_label); }
$response .= " <option value='".$select_value."' ".$selected.">".$select_label."</option>\n";
}
$response .= " </optgroup>\n";
unset($text);
}
}
if (!$select_found) {
$destination_label = str_replace(":", " ", $destination_value);
$destination_label = str_replace("menu-exec-app:", " ", $destination_label);
$response .= " <option value='".$destination_value."' selected='selected'>".trim($destination_label)."</option>\n";
}
$response .= " </select>\n";
if (if_group("superadmin")) {
$response .= "<input type='button' id='btn_select_to_input_".$destination_id."' class='btn' name='' alt='back' onclick='changeToInput".$destination_id."(document.getElementById(\"".$destination_id."\"));this.style.visibility = \"hidden\";' value='&#9665;'>";
}
//return the formatted destinations
return $response;
}
}
/*
$obj = new destinations;
//$destinations = $obj->destinations;
echo $obj->select('ivr', 'example1', 'menu-exec-app:transfer 32 XML voip.fusionpbx.com');
echo $obj->select('ivr', 'example2', '');
echo $obj->select('ivr', 'example3', '');
echo $obj->select('ivr', 'example4', '');
echo $obj->select('ivr', 'example5', '');
echo $obj->select('ivr', 'example6', '');
*/
?>

Some files were not shown because too many files have changed in this diff Show More