Misc: Database class integration.

This commit is contained in:
Nate 2019-08-28 17:53:34 -06:00
parent 95cf94b6d8
commit 04c2f7a132
12 changed files with 1094 additions and 1315 deletions

View File

@ -216,8 +216,11 @@
echo " ".$text['label-module_category']."\n"; echo " ".$text['label-module_category']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' align='left'>\n"; echo "<td class='vtable' align='left'>\n";
$table_name = 'v_modules'; $field_name = 'module_category'; $sql_where_optional = ''; $field_current_value = $module_category; $table_name = 'v_modules';
echo html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value); $field_name = 'module_category';
$sql_where_optional = '';
$field_current_value = $module_category;
echo html_select_other($table_name, $field_name, $sql_where_optional, $field_current_value);
echo "<br />\n"; echo "<br />\n";
echo "\n"; echo "\n";
echo "</td>\n"; echo "</td>\n";

View File

@ -198,9 +198,11 @@
echo " ".$text['label-category']."\n"; echo " ".$text['label-category']."\n";
echo "</td>\n"; echo "</td>\n";
echo "<td class='vtable' align='left'>\n"; echo "<td class='vtable' align='left'>\n";
$table_name = 'v_vars';$field_name = 'var_category';$sql_where_optional = "";$field_current_value = $var_category; $table_name = 'v_vars';
echo html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value); $field_name = 'var_category';
//echo "<br />\n"; $sql_where_optional = "";
$field_current_value = $var_category;
echo html_select_other($table_name, $field_name, $sql_where_optional, $field_current_value);
echo $text['description-category']."\n"; echo $text['description-category']."\n";
echo "</td>\n"; echo "</td>\n";
echo "</tr>\n"; echo "</tr>\n";

View File

@ -61,7 +61,7 @@
} }
//required to be a superadmin to delete a member of the superadmin group //required to be a superadmin to delete a member of the superadmin group
$superadmin_list = superadmin_list($db); $superadmin_list = superadmin_list();
if (if_superadmin($superadmin_list, $user_uuid)) { if (if_superadmin($superadmin_list, $user_uuid)) {
if (!if_group("superadmin")) { if (!if_group("superadmin")) {
//access denied - do not delete the user //access denied - do not delete the user

View File

@ -68,7 +68,7 @@
//required to be a superadmin to update an account that is a member of the superadmin group //required to be a superadmin to update an account that is a member of the superadmin group
if (permission_exists('user_edit') && $action == 'edit') { if (permission_exists('user_edit') && $action == 'edit') {
$superadmins = superadmin_list($db); $superadmins = superadmin_list();
if (if_superadmin($superadmins, $user_uuid)) { if (if_superadmin($superadmins, $user_uuid)) {
if (!if_group("superadmin")) { if (!if_group("superadmin")) {
echo "access denied"; echo "access denied";

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2015 Portions created by the Initial Developer are Copyright (C) 2008-2019
the Initial Developer. All Rights Reserved. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -39,59 +39,60 @@
//convert to relative path //convert to relative path
$referrer = substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], $_SERVER["HTTP_HOST"]) + strlen($_SERVER["HTTP_HOST"])); $referrer = substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], $_SERVER["HTTP_HOST"]) + strlen($_SERVER["HTTP_HOST"]));
//check if destination url already exists //check if destination url already exists
$sql = "select count(*) as num_rows from v_user_settings "; $sql = "select count(*) from v_user_settings ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' "; $sql .= "and user_uuid = :user_uuid ";
$sql .= "and user_setting_category = 'login' "; $sql .= "and user_setting_category = 'login' ";
$sql .= "and user_setting_subcategory = 'destination' "; $sql .= "and user_setting_subcategory = 'destination' ";
$sql .= "and user_setting_name = 'url' "; $sql .= "and user_setting_name = 'url' ";
$prep_statement = $db->prepare($sql); $paramters['domain_uuid'] = $_SESSION['domain_uuid'];
if ($prep_statement) { $paramters['user_uuid'] = $_SESSION['user_uuid'];
$prep_statement->execute(); $database = new database;
$row = $prep_statement->fetch(PDO::FETCH_ASSOC); $num_rows = $database->select($sql, $parameters, 'column');
$exists = ($row['num_rows'] > 0) ? true : false; $exists = ($num_rows > 0) ? true : false;
} unset($sql, $parameters, $num_rows);
unset($sql, $prep_statement, $row);
//if exists, update //if exists, update
if ($exists) { if ($exists) {
$sql = "update v_user_settings set "; $sql = "update v_user_settings set ";
$sql .= "user_setting_value = '".$referrer."', "; $sql .= "user_setting_value = :user_setting_value ";
$sql .= "user_setting_enabled = 'true' "; $sql .= "user_setting_enabled = 'true' ";
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' "; $sql .= "and user_uuid = :user_uuid ";
$sql .= "and user_setting_category = 'login' "; $sql .= "and user_setting_category = 'login' ";
$sql .= "and user_setting_subcategory = 'destination' "; $sql .= "and user_setting_subcategory = 'destination' ";
$sql .= "and user_setting_name = 'url' "; $sql .= "and user_setting_name = 'url' ";
$db->exec(check_sql($sql)); $parameters['user_setting_value'] = $referrer;
unset($sql); $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$parameters['user_uuid'] = $_SESSION["user_uuid"];
$database = new database;
$database->execute($sql, $parameters);
unset($sql, $parameters);
} }
//otherwise, insert //otherwise, insert
else { else {
$sql = "insert into v_user_settings "; //build insert array
$sql .= "( "; $user_setting_uuid = uuid();
$sql .= "user_setting_uuid, "; $array['user_settings'][0]['user_setting_uuid'] = $user_setting_uuid;
$sql .= "domain_uuid, "; $array['user_settings'][0]['domain_uuid'] = $_SESSION['domain_uuid'];
$sql .= "user_uuid, "; $array['user_settings'][0]['user_uuid'] = $_SESSION["user_uuid"];
$sql .= "user_setting_category, "; $array['user_settings'][0]['user_setting_category'] = 'login';
$sql .= "user_setting_subcategory, "; $array['user_settings'][0]['user_setting_subcategory'] = 'destination';
$sql .= "user_setting_name, "; $array['user_settings'][0]['user_setting_name'] = 'url';
$sql .= "user_setting_value, "; $array['user_settings'][0]['user_setting_value'] = $referrer;
$sql .= "user_setting_enabled "; $array['user_settings'][0]['user_setting_enabled'] = 'true';
$sql .= ") "; //grant temporary permissions
$sql .= "values "; $p = new permissions;
$sql .= "( "; $p->add('user_setting_add', 'temp');
$sql .= "'".uuid()."', "; //execute insert
$sql .= "'".$_SESSION['domain_uuid']."', "; $database = new database;
$sql .= "'".$_SESSION["user_uuid"]."', "; $database->app_name = 'logout';
$sql .= "'login', "; $database->app_uuid = 'e9f24006-5da2-417f-94fb-7458348bae29';
$sql .= "'destination', "; $database->save($array);
$sql .= "'url', "; unset($array);
$sql .= "'".$referrer."', "; //revoke temporary permissions
$sql .= "'true' "; $p = new permissions;
$sql .= ") "; $p->delete('user_setting_add', 'temp');
$db->exec(check_sql($sql));
unset($sql);
} }
} }
} }
@ -99,6 +100,6 @@
//redirect the user to the index page //redirect the user to the index page
header("Location: ".PROJECT_PATH."/login.php"); header("Location: ".PROJECT_PATH."/login.php");
return; exit;
?> ?>

View File

@ -261,26 +261,6 @@
} }
} }
if (!function_exists('group_members')) {
function group_members($db, $user_uuid) {
global $domain_uuid;
$sql = "select * from v_user_groups ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and user_uuid = '".$user_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
$group_members = "||";
foreach($result as $field) {
//get the list of groups
$group_members .= $field['group_name']."||";
}
unset($sql, $result, $row_count);
return $group_members;
}
}
if (!function_exists('if_group_member')) { if (!function_exists('if_group_member')) {
function if_group_member($group_members, $group) { function if_group_member($group_members, $group) {
if (stripos($group_members, "||".$group."||") === false) { if (stripos($group_members, "||".$group."||") === false) {
@ -293,24 +273,23 @@
} }
if (!function_exists('superadmin_list')) { if (!function_exists('superadmin_list')) {
function superadmin_list($db) { function superadmin_list() {
global $domain_uuid; global $domain_uuid;
$sql = "select * from v_user_groups "; $sql = "select * from v_user_groups ";
$sql .= "where group_name = 'superadmin' "; $sql .= "where group_name = 'superadmin' ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
$superadmin_list = "||"; $superadmin_list = "||";
if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as $field) { foreach ($result as $field) {
//get the list of superadmins //get the list of superadmins
$superadmin_list .= $field['user_uuid']."||"; $superadmin_list .= $field['user_uuid']."||";
} }
unset($sql, $result, $row_count); }
unset($sql, $result, $field);
return $superadmin_list; return $superadmin_list;
} }
} }
//superadmin_list($db);
if (!function_exists('if_superadmin')) { if (!function_exists('if_superadmin')) {
function if_superadmin($superadmin_list, $user_uuid) { function if_superadmin($superadmin_list, $user_uuid) {
@ -324,7 +303,7 @@
} }
if (!function_exists('html_select_other')) { if (!function_exists('html_select_other')) {
function html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value) { function html_select_other($table_name, $field_name, $sql_where_optional, $field_current_value) {
//html select other: build a select box from distinct items in db with option for other //html select other: build a select box from distinct items in db with option for other
global $domain_uuid; global $domain_uuid;
@ -335,25 +314,18 @@
$html .= "<select id=\"".$field_name."\" name=\"".$field_name."\" class='formfld' onchange=\"if (document.getElementById('".$field_name."').value == 'Other') { /*enabled*/ document.getElementById('".$field_name."_other').style.display=''; document.getElementById('".$field_name."_other').className='formfld'; document.getElementById('".$field_name."_other').focus(); } else { /*disabled*/ document.getElementById('".$field_name."_other').value = ''; document.getElementById('".$field_name."_other').style.display='none'; } \">\n"; $html .= "<select id=\"".$field_name."\" name=\"".$field_name."\" class='formfld' onchange=\"if (document.getElementById('".$field_name."').value == 'Other') { /*enabled*/ document.getElementById('".$field_name."_other').style.display=''; document.getElementById('".$field_name."_other').className='formfld'; document.getElementById('".$field_name."_other').focus(); } else { /*disabled*/ document.getElementById('".$field_name."_other').value = ''; document.getElementById('".$field_name."_other').style.display='none'; } \">\n";
$html .= "<option value=''></option>\n"; $html .= "<option value=''></option>\n";
$sql = "SELECT distinct($field_name) as $field_name FROM $table_name $sql_where_optional "; $sql = "select distinct(".$field_name.") as ".$field_name." ";
$prep_statement = $db->prepare(check_sql($sql)); $sql .= "from ".$table_name." ".$sql_where_optional." ";
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result = $database->select($sql, null, 'all');
$result_count = count($result); if (is_array($result) && @sizeof($result) != 0) {
if ($result_count > 0) { //if user account exists then show login
//print_r($result);
foreach($result as $field) { foreach($result as $field) {
if (strlen($field[$field_name]) > 0) { if (strlen($field[$field_name]) > 0) {
if ($field_current_value == $field[$field_name]) { $html .= "<option value=\"".$field[$field_name]."\" ".($field_current_value == $field[$field_name] ? "selected='selected'" : null).">".$field[$field_name]."</option>\n";
$html .= "<option value=\"".$field[$field_name]."\" selected>".$field[$field_name]."</option>\n";
}
else {
$html .= "<option value=\"".$field[$field_name]."\">".$field[$field_name]."</option>\n";
} }
} }
} }
} unset($sql, $result, $field);
unset($sql, $result, $result_count);
$html .= "<option value='Other'>Other</option>\n"; $html .= "<option value='Other'>Other</option>\n";
$html .= "</select>\n"; $html .= "</select>\n";
@ -369,95 +341,33 @@
} }
if (!function_exists('html_select')) { if (!function_exists('html_select')) {
function html_select($db, $table_name, $field_name, $sql_where_optional, $field_current_value, $field_value = '', $style = '') { function html_select($table_name, $field_name, $sql_where_optional, $field_current_value, $field_value = '', $style = '', $onchange = '') {
//html select other : build a select box from distinct items in db with option for other //html select: build a select box from distinct items in db
global $domain_uuid; global $domain_uuid;
if (strlen($field_value) > 0) { if (strlen($field_value) > 0) {
$html .= "<select id=\"".$field_value."\" name=\"".$field_value."\" class='formfld' style='".$style."'>\n"; $html .= "<select id=\"".$field_value."\" name=\"".$field_value."\" class='formfld' style='".$style."' ".($onchange != '' ? "onchange=\"".$onchange."\"" : null).">\n";
$html .= " <option value=\"\"></option>\n"; $html .= " <option value=\"\"></option>\n";
$sql = "SELECT distinct($field_name) as $field_name, $field_value FROM $table_name $sql_where_optional order by $field_name asc "; $sql = "select distinct(".$field_name.") as ".$field_name.", ".$field_value." from ".$table_name." ".$sql_where_optional." order by ".$field_name." asc ";
} }
else { else {
$html .= "<select id=\"".$field_name."\" name=\"".$field_name."\" class='formfld' style='".$style."'>\n"; $html .= "<select id=\"".$field_name."\" name=\"".$field_name."\" class='formfld' style='".$style."' ".($onchange != '' ? "onchange=\"".$onchange."\"" : null).">\n";
$html .= " <option value=\"\"></option>\n"; $html .= " <option value=\"\"></option>\n";
$sql = "SELECT distinct($field_name) as $field_name FROM $table_name $sql_where_optional "; $sql = "select distinct(".$field_name.") as ".$field_name." from ".$table_name." ".$sql_where_optional." ";
} }
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); if (is_array($result) && @sizeof($result) != 0) {
$result_count = count($result);
if ($result_count > 0) { //if user account exists then show login
foreach($result as $field) { foreach($result as $field) {
if (strlen($field[$field_name]) > 0) { if (strlen($field[$field_name]) > 0) {
if ($field_current_value == $field[$field_name]) { $selected = $field_current_value == $field[$field_name] ? "selected='selected'" : null;
if (strlen($field_value) > 0) { $array_key = strlen($field_value) > 0 ? $field_value : $field_name;
$html .= "<option value=\"".$field[$field_value]."\" selected>".$field[$field_name]."</option>\n"; $html .= "<option value=\"".$field[$array_key]."\" ".$selected.">".$field[$field_name]."</option>\n";
}
else {
$html .= "<option value=\"".$field[$field_name]."\" selected>".$field[$field_name]."</option>\n";
}
}
else {
if (strlen($field_value) > 0) {
$html .= "<option value=\"".$field[$field_value]."\">".$field[$field_name]."</option>\n";
}
else {
$html .= "<option value=\"".$field[$field_name]."\">".$field[$field_name]."</option>\n";
} }
} }
} }
} unset($sql, $result, $field);
}
unset($sql, $result, $result_count);
$html .= "</select>\n";
return $html;
}
}
//$table_name = 'v_templates'; $field_name = 'templatename'; $sql_where_optional = "where domain_uuid = '$domain_uuid' "; $field_current_value = '';
//echo html_select($db, $table_name, $field_name, $sql_where_optional, $field_current_value);
if (!function_exists('html_select_on_change')) {
function html_select_on_change($db, $table_name, $field_name, $sql_where_optional, $field_current_value, $onchange, $field_value = '') {
//html select other : build a select box from distinct items in db with option for other
global $domain_uuid;
$html .= "<select id=\"".$field_name."\" name=\"".$field_name."\" class='formfld' onchange=\"".$onchange."\">\n";
$html .= "<option value=''></option>\n";
$sql = "SELECT distinct($field_name) as $field_name FROM $table_name $sql_where_optional order by $field_name asc ";
//echo $sql;
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
//echo $result_count;
if ($result_count > 0) { //if user account exists then show login
//print_r($result);
foreach($result as $field) {
if (strlen($field[$field_name]) > 0) {
if ($field_current_value == $field[$field_name]) {
if (strlen($field_value) > 0) {
$html .= "<option value=\"".$field[$field_value]."\" selected>".$field[$field_name]."</option>\n";
}
else {
$html .= "<option value=\"".$field[$field_name]."\" selected>".$field[$field_name]."</option>\n";
}
}
else {
if (strlen($field_value) > 0) {
$html .= "<option value=\"".$field[$field_value]."\">".$field[$field_name]."</option>\n";
}
else {
$html .= "<option value=\"".$field[$field_name]."\">".$field[$field_name]."</option>\n";
}
}
}
}
}
unset($sql, $result, $result_count);
$html .= "</select>\n"; $html .= "</select>\n";
return $html; return $html;
@ -485,43 +395,6 @@
return $html; return $html;
} }
} }
////example usage
//$table_name = 'tblcontacts'; $field_name = 'contactcategory'; $sql_where_optional = "", $field_current_value ='';
//echo html_select_other($db, $table_name, $field_name, $sql_where_optional, $field_current_value);
//// On the page that recieves the POST
//if (check_str($_POST["contactcategory"]) == "Other") { //echo "found: ".$contactcategory;
// $contactcategory = check_str($_POST["contactcategoryother"]);
//}
if (!function_exists('log_add')) {
function log_add($db, $log_type, $log_status, $log_desc, $log_add_user, $log_add_user_ip) {
return; //this disables the function
global $domain_uuid;
$sql = "insert into logs ";
$sql .= "(";
$sql .= "log_type, ";
$sql .= "log_status, ";
$sql .= "log_desc, ";
$sql .= "log_add_user, ";
$sql .= "log_add_user_ip, ";
$sql .= "log_add_date ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$log_type', ";
$sql .= "'$log_status', ";
$sql .= "'$log_desc', ";
$sql .= "'$log_add_user', ";
$sql .= "'$log_add_user_ip', ";
$sql .= "now() ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
}
}
//$log_type = ''; $log_status=''; $log_add_user=''; $log_desc='';
//log_add($db, $log_type, $log_status, $log_desc, $log_add_user, $_SERVER["REMOTE_ADDR"]);
if (!function_exists('get_ext')) { if (!function_exists('get_ext')) {
function get_ext($filename) { function get_ext($filename) {
@ -573,37 +446,23 @@
if ($file_type == "img") { if ($file_type == "img") {
switch (strtolower($file_ext)) { switch (strtolower($file_ext)) {
case "jpg": case "jpg":
break;
case "png": case "png":
break;
case "gif": case "gif":
break;
case "bmp": case "bmp":
break;
case "psd": case "psd":
break; case "tif": break;
case "tif": default: return false;
break;
default:
return false;
} }
} }
if ($file_type == "file") { if ($file_type == "file") {
switch (strtolower($file_ext)) { switch (strtolower($file_ext)) {
case "doc": case "doc":
break;
case "pdf": case "pdf":
break;
case "ppt": case "ppt":
break;
case "xls": case "xls":
break;
case "zip": case "zip":
break; case "exe": break;
case "exe": default: return false;
break;
default:
return false;
} }
} }
@ -639,14 +498,14 @@
} }
exit; exit;
} //end function }
} }
if (!function_exists('sys_get_temp_dir')) { if (!function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() { function sys_get_temp_dir() {
if( $temp=getenv('TMP') ) return $temp; if ($temp = getenv('TMP')) { return $temp; }
if( $temp=getenv('TEMP') ) return $temp; if ($temp = getenv('TEMP')) { return $temp; }
if( $temp=getenv('TMPDIR') ) return $temp; if ($temp = getenv('TMPDIR')) { return $temp; }
$temp = tempnam(__FILE__,''); $temp = tempnam(__FILE__,'');
if (file_exists($temp)) { if (file_exists($temp)) {
unlink($temp); unlink($temp);
@ -672,125 +531,109 @@
if (!function_exists('username_exists')) { if (!function_exists('username_exists')) {
function username_exists($username) { function username_exists($username) {
global $db, $domain_uuid; global $domain_uuid;
$sql = "select * from v_users "; $sql = "select count(*) from v_users ";
$sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and username = '".$username."' "; $sql .= "and username = :username ";
//$sql .= "and user_enabled = 'true' "; $parameters['domain_uuid'] = $domain_uuid;
$prep_statement = $db->prepare(check_sql($sql)); $parameters['username'] = $username;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $num_rows = $database->select($sql, $parameters, 'column');
$result_count = count($result); return $num_rows > 0 ? true : false;
if ($result_count > 0) {
return true;
}
else {
return false;
}
} }
} }
if (!function_exists('add_extension_user')) { if (!function_exists('add_extension_user')) {
function add_extension_user($extension_uuid, $username) { function add_extension_user($extension_uuid, $username) {
global $db, $domain_uuid; global $domain_uuid;
//get the user_uuid by using the username //get the user_uuid by using the username
$sql = "select * from v_users "; $sql = "select user_uuid from v_users ";
$sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and username = '$username' "; $sql .= "and username = :username ";
//$sql .= "and user_enabled = 'true' "; $parameters['domain_uuid'] = $domain_uuid;
$prep_statement = $db->prepare(check_sql($sql)); $parameters['username'] = $username;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $user_uuid = $database->select($sql, $parameters, 'column');
unset($prep_statement); unset($sql, $parameters);
foreach ($result as &$row) {
if (is_uuid($user_uuid)) {
//check if the user_uuid exists in v_extension_users //check if the user_uuid exists in v_extension_users
$sql = "select * from v_extension_users "; $sql = "select count(*) from v_extension_users ";
$sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and user_uuid = '".$row["user_uuid"]."' "; $sql .= "and user_uuid = :user_uuid ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $domain_uuid;
$prep_statement->execute(); $parameters['user_uuid'] = $user_uuid;
$extension_users_result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $database = new database;
unset($prep_statement); $num_rows = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
//assign the extension to the user //assign the extension to the user
if (count($extension_users_result) == 0) { if ($num_rows == 0) {
$sql = "insert into v_extension_users "; //build insert array
$sql .= "("; $extension_user_uuid = uuid();
$sql .= "domain_uuid, "; $array['extension_users'][$x]['extension_user_uuid'] = $extension_user_uuid;
$sql .= "extension_uuid, "; $array['extension_users'][$x]['domain_uuid'] = $domain_uuid;
$sql .= "user_uuid "; $array['extension_users'][$x]['extension_uuid'] = $extension_uuid;
$sql .= ") "; $array['extension_users'][$x]['user_uuid'] = $row["user_uuid"];
$sql .= "values "; //grant temporary permissions
$sql .= "("; $p = new permissions;
$sql .= "'$domain_uuid', "; $p->add('extension_user_add', 'temp');
$sql .= "'$extension_uuid', "; //execute insert
$sql .= "'".$row["user_uuid"]."' "; $database = new database;
$sql .= ")"; $database->app_name = 'function-add_extension_user';
$db->exec(check_sql($sql)); $database->app_uuid = 'e68d9689-2769-e013-28fa-6214bf47fca3';
unset($sql); $database->save($array);
unset($array);
//revoke temporary permissions
$p->delete('extension_user_add', 'temp');
} }
} }
unset ($result);
} }
} }
if (!function_exists('user_add')) { if (!function_exists('user_add')) {
function user_add($username, $password, $user_email = '') { function user_add($username, $password, $user_email = '') {
global $db, $domain_uuid, $v_salt; global $domain_uuid;
$user_uuid = uuid();
if (strlen($username) == 0) { return false; } if (strlen($username) == 0) { return false; }
if (strlen($password) == 0) { return false; } if (strlen($password) == 0) { return false; }
if (!username_exists($username)) { if (!username_exists($username)) {
//salt used with the password to create a one way hash //build user insert array
$user_uuid = uuid();
$salt = generate_password('20', '4'); $salt = generate_password('20', '4');
//add the user account $array['users'][0]['user_uuid'] = $user_uuid;
$user_type = 'Individual'; $array['users'][0]['domain_uuid'] = $domain_uuid;
$user_category = 'user'; $array['users'][0]['username'] = $username;
$sql = "insert into v_users "; $array['users'][0]['password'] = md5($salt.$password);
$sql .= "("; $array['users'][0]['salt'] = $salt;
$sql .= "domain_uuid, "; if (valid_email($user_email)) {
$sql .= "user_uuid, "; $array['users'][0]['user_email'] = $user_email;
$sql .= "username, "; }
$sql .= "password, "; $array['users'][0]['add_date'] = now();
$sql .= "salt, "; $array['users'][0]['add_user'] = $_SESSION["username"];
if (strlen($user_email) > 0) { $sql .= "user_email, "; }
$sql .= "add_date, ";
$sql .= "add_user ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$domain_uuid', ";
$sql .= "'$user_uuid', ";
$sql .= "'$username', ";
$sql .= "'".md5($salt.$password)."', ";
$sql .= "'$salt', ";
if (strlen($user_email) > 0) { $sql .= "'$user_email', "; }
$sql .= "now(), ";
$sql .= "'".$_SESSION["username"]."' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
//add the user to the member group //build user group insert array
$group_name = 'user'; $user_group_uuid = uuid();
$sql = "insert into v_user_groups "; $array['user_groups'][0]['user_group_uuid'] = $user_group_uuid;
$sql .= "("; $array['user_groups'][0]['domain_uuid'] = $domain_uuid;
$sql .= "user_group_uuid, "; $array['user_groups'][0]['group_name'] = 'user';
$sql .= "domain_uuid, "; $array['user_groups'][0]['user_uuid'] = $user_uuid;
$sql .= "group_name, ";
$sql .= "user_uuid "; //grant temporary permissions
$sql .= ")"; $p = new permissions;
$sql .= "values "; $p->add('user_add', 'temp');
$sql .= "("; $p->add('user_group_add', 'temp');
$sql .= "'".uuid()."', "; //execute insert
$sql .= "'$domain_uuid', "; $database = new database;
$sql .= "'$group_name', "; $database->app_name = 'function-user_add';
$sql .= "'$user_uuid' "; $database->app_uuid = '15a8d74b-ac7e-4468-add4-3e6ebdcb8e22';
$sql .= ")"; $database->save($array);
$db->exec(check_sql($sql)); unset($array);
unset($sql); //revoke temporary permissions
} //end if !username_exists $p->delete('user_add', 'temp');
} //end function definition $p->delete('user_group_add', 'temp');
} //end function_exists }
}
}
function switch_module_is_running($fp, $mod) { function switch_module_is_running($fp, $mod) {
if (!$fp) { if (!$fp) {
@ -2002,14 +1845,13 @@ function number_pad($number,$n) {
//retrieve array of countries //retrieve array of countries
if (!function_exists('get_countries')) { if (!function_exists('get_countries')) {
function get_countries($db) { function get_countries() {
$sql = "select * from v_countries order by country asc"; $sql = "select * from v_countries order by country asc";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset($sql);
$result_count = count($result);
return ($result_count > 0) ? $result : false; return is_array($result) && @sizeof($result) != 0 ? $result : false;
unset ($prep_statement, $sql);
} }
} }

View File

@ -69,17 +69,15 @@ require_once "resources/require.php";
} }
//get the parent id //get the parent id
$sql = "select * from v_menu_items "; $sql = "select menu_item_parent_uuid from v_menu_items ";
$sql .= "where menu_uuid = '".$_SESSION['domain']['menu']['uuid']."' "; $sql .= "where menu_uuid = :menu_uuid ";
$sql .= "and menu_item_link = '".$_SERVER["SCRIPT_NAME"]."' "; $sql .= "and menu_item_link = :menu_item_link ";
$menu_prep_statement = $db->prepare(check_sql($sql)); $parameters['menu_uuid'] = $_SESSION['domain']['menu']['uuid'];
$menu_prep_statement->execute(); $parameters['menu_item_link'] = $_SERVER["SCRIPT_NAME"];
$menu_result = $menu_prep_statement->fetchAll(PDO::FETCH_NAMED); $database = new database;
foreach ($menu_result as &$menu_row) { $menu_item_parent_uuid = $database->select($sql, $parameters, 'column');
$_SESSION["menu_item_parent_uuid"] = $menu_row["menu_item_parent_uuid"]; $_SESSION["menu_item_parent_uuid"] = $menu_item_parent_uuid;
break; unset($sql, $parameters, $menu_item_parent_uuid);
}
unset($menu_prep_statement, $menu_result, $menu_row);
//get the content //get the content
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/content/app_config.php")) { if (file_exists($_SERVER["PROJECT_ROOT"]."/app/content/app_config.php")) {
@ -87,20 +85,17 @@ require_once "resources/require.php";
$sql .= "where domain_uuid = :domain_uuid "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and rss_category = 'content' "; $sql .= "and rss_category = 'content' ";
$sql .= "and rss_link = :content "; $sql .= "and rss_link = :content ";
$sql .= "and (length(rss_del_date) = 0 "; $sql .= "and ( ";
$sql .= "or rss_del_date is null) "; $sql .= "length(rss_del_date) = 0 ";
$sql .= "or rss_del_date is null ";
$sql .= ") ";
$sql .= "order by rss_order asc "; $sql .= "order by rss_order asc ";
$content_prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$content_prep_statement->bindParam(':domain_uuid', $_SESSION['domain_uuid']); $parameters['content'] = strlen($content) == 0 ? $_SERVER["PHP_SELF"] : $content;
if (strlen($content) == 0) { $database = new database;
$content_prep_statement->bindParam(':content', $_SERVER["PHP_SELF"]); $content_result = $database->select($sql, $parameters, 'all');
} $page['title'] = '';
else { if (is_array($content_result) && @sizeof($content_result) != 0) {
$content_prep_statement->bindParam(':content', $content);
}
$content_prep_statement->execute();
$content_result = $content_prep_statement->fetchAll(PDO::FETCH_NAMED);
$page["title"] = '';
foreach($content_result as $content_row) { foreach($content_result as $content_row) {
$template_rss_sub_category = $content_row['rss_sub_category']; $template_rss_sub_category = $content_row['rss_sub_category'];
if (strlen($content_row['rss_group']) == 0) { if (strlen($content_row['rss_group']) == 0) {
@ -118,8 +113,9 @@ require_once "resources/require.php";
} }
} }
} }
} //end foreach }
unset($sql, $content_result, $content_row); }
unset($sql, $parameters, $content_result, $content_row);
} }
//start the output buffer //start the output buffer

View File

@ -41,14 +41,14 @@
$domain_uuid = $key_part[1]; $domain_uuid = $key_part[1];
$password_submitted = $key_part[2]; $password_submitted = $key_part[2];
//get current salt, see if same as submitted salt //get current salt, see if same as submitted salt
$sql = "select password from v_users where domain_uuid = :domain_uuid and username = :username "; $sql = "select password from v_users ";
$prep_statement = $db->prepare($sql); $sql .= "where domain_uuid = :domain_uuid ";
$prep_statement->bindParam(':domain_uuid', $domain_uuid); $sql .= "and username = :username ";
$prep_statement->bindParam(':username', $username); $parameters['domain_uuid'] = $domain_uuid;
$prep_statement->execute(); $parameters['username'] = $username;
$result = $prep_statement->fetch(PDO::FETCH_NAMED); $database = new database;
$password_current = $result['password']; $password_current = $database->select($sql, $parameters, 'column');
unset($prep_statement, $result); unset($sql, $parameters);
//set flag //set flag
if ($username != '' && $domain_uuid == $_SESSION['domain_uuid'] && $password_submitted == $password_current) { if ($username != '' && $domain_uuid == $_SESSION['domain_uuid'] && $password_submitted == $password_current) {
@ -77,12 +77,11 @@
$sql .= "and e.contact_uuid = u.contact_uuid "; $sql .= "and e.contact_uuid = u.contact_uuid ";
$sql .= "and u.email_address = :email "; $sql .= "and u.email_address = :email ";
$sql .= "and e.domain_uuid = :domain_uuid "; $sql .= "and e.domain_uuid = :domain_uuid ";
$prep_statement = $db->prepare($sql); $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$prep_statement->bindParam(':domain_uuid', $_SESSION['domain_uuid']); $parameters['email'] = $email;
$prep_statement->bindParam(':email', $email); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, $parameters, 'row');
$result = $prep_statement->fetch(PDO::FETCH_NAMED); unset($sql, $parameters);
unset($prep_statement);
if ($result['username'] != '') { if ($result['username'] != '') {
@ -96,18 +95,19 @@
//get email template from db //get email template from db
$sql = "select template_subject, template_body from v_email_templates "; $sql = "select template_subject, template_body from v_email_templates ";
$sql .= "where template_language = '".$_SESSION['domain']['language']['code']."' "; $sql .= "where template_language = :template_language ";
$sql .= "and (domain_uuid = '".$_SESSION['domain_uuid']."' or domain_uuid is null) "; $sql .= "and (domain_uuid = :domain_uuid or domain_uuid is null) ";
$sql .= "and template_category = 'password_reset' "; $sql .= "and template_category = 'password_reset' ";
$sql .= "and template_subcategory = 'default' "; $sql .= "and template_subcategory = 'default' ";
$sql .= "and template_type = 'html' "; $sql .= "and template_type = 'html' ";
$sql .= "and template_enabled = 'true' "; $sql .= "and template_enabled = 'true' ";
$prep_statement = $db->prepare($sql); $parameters['template_language'] = $_SESSION['domain']['language']['code'];
$prep_statement->execute(); $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$row = $prep_statement->fetch(PDO::FETCH_NAMED); $database = new database;
$row = $database->select($sql, $parameters, 'row');
$email_subject = $row['template_subject']; $email_subject = $row['template_subject'];
$email_body = $row['template_body']; $email_body = $row['template_body'];
unset($prep_statement, $row); unset($sql, $parameters, $row);
//replace variables in email body //replace variables in email body
$email_body = str_replace('${reset_link}', $reset_link, $email_body); $email_body = str_replace('${reset_link}', $reset_link, $email_body);
@ -161,13 +161,13 @@
$sql .= "salt = :salt "; $sql .= "salt = :salt ";
$sql .= "where domain_uuid = :domain_uuid "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and username = :username "; $sql .= "and username = :username ";
$prep_statement = $db->prepare($sql); $parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$prep_statement->bindParam(':domain_uuid', $_SESSION['domain_uuid']); $parameters['password'] = md5($salt.$password_new);
$prep_statement->bindParam(':password', md5($salt.$password_new)); $parameters['salt'] = $salt;
$prep_statement->bindParam(':salt', $salt); $parameters['username'] = $username;
$prep_statement->bindParam(':username', $username); $database = new database;
$prep_statement->execute(); $database->execute($sql, $parameters);
unset($prep_statement); unset($sql, $parameters);
message::add($text['message-password_reset'], 'positive', 2500); message::add($text['message-password_reset'], 'positive', 2500);
unset($_SESSION['valid_username']); unset($_SESSION['valid_username']);

View File

@ -34,17 +34,14 @@
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/settings/app_config.php")) { if (file_exists($_SERVER["PROJECT_ROOT"]."/app/settings/app_config.php")) {
if ((! isset($_SESSION['event_socket_ip_address'])) or strlen($_SESSION['event_socket_ip_address']) == 0) { if ((! isset($_SESSION['event_socket_ip_address'])) or strlen($_SESSION['event_socket_ip_address']) == 0) {
$sql = "select * from v_settings "; $sql = "select * from v_settings ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
if ($prep_statement) { $row = $database->select($sql, null, 'row');
$prep_statement->execute(); if (is_array($row) && @sizeof($row) != 0) {
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as &$row) {
$_SESSION['event_socket_ip_address'] = $row["event_socket_ip_address"]; $_SESSION['event_socket_ip_address'] = $row["event_socket_ip_address"];
$_SESSION['event_socket_port'] = $row["event_socket_port"]; $_SESSION['event_socket_port'] = $row["event_socket_port"];
$_SESSION['event_socket_password'] = $row["event_socket_password"]; $_SESSION['event_socket_password'] = $row["event_socket_password"];
break; //limit to 1 row
}
} }
unset($sql, $row);
} }
} }
@ -72,16 +69,14 @@ function event_socket_request_cmd($cmd) {
if (file_exists($_SERVER["PROJECT_ROOT"]."/app/settings/app_config.php")) { if (file_exists($_SERVER["PROJECT_ROOT"]."/app/settings/app_config.php")) {
$sql = "select * from v_settings "; $sql = "select * from v_settings ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $row = $database->select($sql, null, 'row');
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); if (is_array($row) && @sizeof($row) != 0) {
foreach ($result as &$row) {
$event_socket_ip_address = $row["event_socket_ip_address"]; $event_socket_ip_address = $row["event_socket_ip_address"];
$event_socket_port = $row["event_socket_port"]; $event_socket_port = $row["event_socket_port"];
$event_socket_password = $row["event_socket_password"]; $event_socket_password = $row["event_socket_password"];
break; //limit to 1 row
} }
unset ($prep_statement); unset($sql, $row);
} }
$esl = new event_socket; $esl = new event_socket;
@ -137,18 +132,10 @@ function ListFiles($dir) {
function save_setting_xml() { function save_setting_xml() {
global $domain_uuid, $host, $config; global $domain_uuid, $host, $config;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
$sql = "select * from v_settings "; $sql = "select * from v_settings ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
if ($prep_statement) { $row = $database->select($sql, null, 'row');
$prep_statement->execute(); if (is_array($row) && @sizeof($row) != 0) {
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as &$row) {
$fout = fopen($_SESSION['switch']['conf']['dir']."/directory/default/default.xml","w"); $fout = fopen($_SESSION['switch']['conf']['dir']."/directory/default/default.xml","w");
$xml = "<include>\n"; $xml = "<include>\n";
$xml .= " <user id=\"default\"> <!--if id is numeric mailbox param is not necessary-->\n"; $xml .= " <user id=\"default\"> <!--if id is numeric mailbox param is not necessary-->\n";
@ -211,11 +198,8 @@ function save_setting_xml() {
fwrite($fout, $xml); fwrite($fout, $xml);
unset($xml); unset($xml);
fclose($fout); fclose($fout);
break; //limit to 1 row
}
unset ($prep_statement);
} }
unset($sql, $row);
//apply settings //apply settings
$_SESSION["reload_xml"] = true; $_SESSION["reload_xml"] = true;
@ -254,12 +238,6 @@ function save_gateway_xml() {
//declare the global variables //declare the global variables
global $domain_uuid, $config; global $domain_uuid, $config;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
//delete all old gateways to prepare for new ones //delete all old gateways to prepare for new ones
if (count($_SESSION["domains"]) > 1) { if (count($_SESSION["domains"]) > 1) {
$v_needle = 'v_'.$_SESSION['domain_name'].'-'; $v_needle = 'v_'.$_SESSION['domain_name'].'-';
@ -274,10 +252,11 @@ function save_gateway_xml() {
//get the list of gateways and write the xml //get the list of gateways and write the xml
$sql = "select * from v_gateways "; $sql = "select * from v_gateways ";
$sql .= "where (domain_uuid = '$domain_uuid' or domain_uuid is null) "; $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $domain_uuid;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $result = $database->select($sql, $parameters, 'all');
if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as &$row) { foreach ($result as &$row) {
if ($row['enabled'] != "false") { if ($row['enabled'] != "false") {
//set the default profile as external //set the default profile as external
@ -378,8 +357,9 @@ function save_gateway_xml() {
fclose($fout); fclose($fout);
} }
} //end foreach }
unset($prep_statement); }
unset($sql, $parameters, $result, $row);
//apply settings //apply settings
$_SESSION["reload_xml"] = true; $_SESSION["reload_xml"] = true;
@ -390,12 +370,6 @@ function save_var_xml() {
if (is_array($_SESSION['switch']['conf'])) { if (is_array($_SESSION['switch']['conf'])) {
global $config, $domain_uuid; global $config, $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
//open the vars.xml file //open the vars.xml file
$fout = fopen($_SESSION['switch']['conf']['dir']."/vars.xml","w"); $fout = fopen($_SESSION['switch']['conf']['dir']."/vars.xml","w");
@ -412,11 +386,11 @@ function save_var_xml() {
$sql = "select * from v_vars "; $sql = "select * from v_vars ";
$sql .= "where var_enabled = 'true' "; $sql .= "where var_enabled = 'true' ";
$sql .= "order by var_category, var_order asc "; $sql .= "order by var_category, var_order asc ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $variables = $database->select($sql, $parameters, 'all');
$variables = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
$prev_var_category = ''; $prev_var_category = '';
$xml = ''; $xml = '';
if (is_array($variables) && @sizeof($variables) != 0) {
foreach ($variables as &$row) { foreach ($variables as &$row) {
if ($row['var_category'] != 'Provision') { if ($row['var_category'] != 'Provision') {
if ($prev_var_category != $row['var_category']) { if ($prev_var_category != $row['var_category']) {
@ -435,9 +409,10 @@ function save_var_xml() {
} }
$prev_var_category = $row['var_category']; $prev_var_category = $row['var_category'];
} }
}
$xml .= "\n"; $xml .= "\n";
fwrite($fout, $xml); fwrite($fout, $xml);
unset($prep_statement, $variables, $xml); unset($sql, $variables, $xml);
fclose($fout); fclose($fout);
//apply settings //apply settings
@ -450,11 +425,6 @@ function save_var_xml() {
} }
function outbound_route_to_bridge($domain_uuid, $destination_number) { function outbound_route_to_bridge($domain_uuid, $destination_number) {
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
$destination_number = trim($destination_number); $destination_number = trim($destination_number);
preg_match('/^[\*\+0-9]*$/', $destination_number, $matches, PREG_OFFSET_CAPTURE); preg_match('/^[\*\+0-9]*$/', $destination_number, $matches, PREG_OFFSET_CAPTURE);
@ -471,14 +441,18 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
$hostname = trim(event_socket_request_cmd('api switchname')); $hostname = trim(event_socket_request_cmd('api switchname'));
$sql = "select * from v_dialplans "; $sql = "select * from v_dialplans ";
$sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) "; $sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
$sql .= "and (hostname = '".$hostname."' or hostname is null) "; $sql .= "and (hostname = :hostname or hostname is null) ";
$sql .= "and app_uuid = '8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3' "; $sql .= "and app_uuid = '8c914ec3-9fc0-8ab5-4cda-6c9288bdc9a3' ";
$sql .= "and dialplan_enabled = 'true' "; $sql .= "and dialplan_enabled = 'true' ";
$sql .= "order by dialplan_order asc "; $sql .= "order by dialplan_order asc ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['domain_uuid'] = $domain_uuid;
$prep_statement->execute(); $parameters['hostname'] = $hostname;
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $database = new database;
$result = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
if (is_array($result) && @sizeof($result) != 0) {
$x = 0; $x = 0;
foreach ($result as &$row) { foreach ($result as &$row) {
//set as variables //set as variables
@ -490,10 +464,15 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
//get the extension number using the dialplan_uuid //get the extension number using the dialplan_uuid
$sql = "select * "; $sql = "select * ";
$sql .= "from v_dialplan_details "; $sql .= "from v_dialplan_details ";
$sql .= "where dialplan_uuid = '$dialplan_uuid' "; $sql .= "where dialplan_uuid = :dialplan_uuid ";
$sql .= "order by dialplan_detail_order asc "; $sql .= "order by dialplan_detail_order asc ";
$sub_result = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC); $parameters['dialplan_uuid'] = $dialplan_uuid;
$database = new database;
$sub_result = $database->select($sql, $parameters, 'all');
unset($sql, $parameters);
$regex_match = false; $regex_match = false;
if (is_array($sub_result) && @sizeof($sub_result) != 0) {
foreach ($sub_result as &$sub_row) { foreach ($sub_result as &$sub_row) {
if ($sub_row['dialplan_detail_tag'] == "condition") { if ($sub_row['dialplan_detail_tag'] == "condition") {
if ($sub_row['dialplan_detail_type'] == "destination_number") { if ($sub_row['dialplan_detail_type'] == "destination_number") {
@ -514,6 +493,9 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
} }
} }
} }
}
unset($sub_result, $sub_result);
if ($regex_match) { if ($regex_match) {
foreach ($sub_result as &$sub_row) { foreach ($sub_result as &$sub_row) {
$dialplan_detail_data = $sub_row['dialplan_detail_data']; $dialplan_detail_data = $sub_row['dialplan_detail_data'];
@ -523,7 +505,6 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
$dialplan_detail_data = str_replace("\$3", $regex_match_3, $dialplan_detail_data); $dialplan_detail_data = str_replace("\$3", $regex_match_3, $dialplan_detail_data);
$dialplan_detail_data = str_replace("\$4", $regex_match_4, $dialplan_detail_data); $dialplan_detail_data = str_replace("\$4", $regex_match_4, $dialplan_detail_data);
$dialplan_detail_data = str_replace("\$5", $regex_match_5, $dialplan_detail_data); $dialplan_detail_data = str_replace("\$5", $regex_match_5, $dialplan_detail_data);
//echo "dialplan_detail_data: $dialplan_detail_data";
$bridge_array[$x] = $dialplan_detail_data; $bridge_array[$x] = $dialplan_detail_data;
$x++; $x++;
if ($dialplan_continue == "false") { if ($dialplan_continue == "false") {
@ -533,8 +514,10 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
} }
} }
} }
}
unset($result, $row);
return $bridge_array; return $bridge_array;
unset ($prep_statement);
} }
//$destination_number = '1231234'; //$destination_number = '1231234';
//$bridge_array = outbound_route_to_bridge ($domain_uuid, $destination_number); //$bridge_array = outbound_route_to_bridge ($domain_uuid, $destination_number);
@ -545,49 +528,43 @@ function outbound_route_to_bridge ($domain_uuid, $destination_number) {
function extension_exists($extension) { function extension_exists($extension) {
global $domain_uuid; global $domain_uuid;
//get the database connection $sql = "select count(*) from v_extensions ";
require_once "resources/classes/database.php"; $sql .= "where domain_uuid = :domain_uuid ";
$database = new database; $sql .= "and ( ";
$database->connect(); $sql .= "extension = :extension ";
$db = $database->db; $sql .= "or number_alias = :extension ";
$sql .= ") ";
$sql = "select 1 from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' ";
$sql .= "and (extension = '$extension' ";
$sql .= "or number_alias = '$extension') ";
$sql .= "and enabled = 'true' "; $sql .= "and enabled = 'true' ";
$result = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC); $parameters['domain_uuid'] = $domain_uuid;
if (count($result) > 0) { $parameters['extension'] = $extension;
return true; $database = new database;
} $num_rows = $database->select($sql, $parameters, 'column');
else { return $num_rows > 0 ? true : false;
return false; unset($sql, $parameters, $num_rows);
}
} }
function extension_presence_id($extension, $number_alias = false) { function extension_presence_id($extension, $number_alias = false) {
global $domain_uuid; global $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
if ($number_alias === false) { if ($number_alias === false) {
$sql = "select extension, number_alias from v_extensions "; $sql = "select extension, number_alias from v_extensions ";
$sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and (extension = '$extension' "; $sql .= "and ( ";
$sql .= "or number_alias = '$extension') "; $sql .= "extension = :extension ";
$result = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC); $sql .= "or number_alias = :extension ";
if (count($result) == 0) { $sql .= ") ";
return false; $parameters['domain_uuid'] = $domain_uuid;
} $parameters['extension'] = $extension;
foreach ($result as &$row) { $database = new database;
$row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
$extension = $row['extension']; $extension = $row['extension'];
$number_alias = $row['number_alias']; $number_alias = $row['number_alias'];
break;
} }
else {
return false;
}
unset($sql, $parameters, $row);
} }
if (strlen($number_alias) > 0) { if (strlen($number_alias) > 0) {
@ -599,114 +576,75 @@ function extension_presence_id($extension, $number_alias = false) {
} }
function get_recording_filename($id) { function get_recording_filename($id) {
global $domain_uuid, $db; global $domain_uuid;
$sql = "select * from v_recordings "; $sql = "select * from v_recordings ";
$sql .= "where recording_uuid = '$id' "; $sql .= "where recording_uuid = :recording_uuid ";
$sql .= "and domain_uuid = '$domain_uuid' "; $sql .= "and domain_uuid = :domain_uuid ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['recording_uuid'] = $id;
$prep_statement->execute(); $parameters['domain_uuid'] = $domain_uuid;
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $database = new database;
foreach ($result as &$row) { $row = $database->select($sql, $parameters, 'row');
if (is_array($row) && @sizeof($row) != 0) {
//$filename = $row["filename"]; //$filename = $row["filename"];
//$recording_name = $row["recording_name"]; //$recording_name = $row["recording_name"];
//$recording_uuid = $row["recording_uuid"]; //$recording_uuid = $row["recording_uuid"];
return $row["filename"]; return $row["filename"];
break; //limit to 1 row
} }
unset ($prep_statement); unset($sql, $parameters, $row);
} }
function dialplan_add($domain_uuid, $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid) { function dialplan_add($domain_uuid, $dialplan_uuid, $dialplan_name, $dialplan_order, $dialplan_context, $dialplan_enabled, $dialplan_description, $app_uuid) {
global $db_type; //build insert array
$array['dialplans'][0]['dialplan_uuid'] = $dialplan_uuid;
//get the database connection $array['dialplans'][0]['domain_uuid'] = $domain_uuid;
require_once "resources/classes/database.php"; if (is_uuid($app_uuid)) {
$array['dialplans'][0]['app_uuid'] = $app_uuid;
}
$array['dialplans'][0]['dialplan_name'] = $dialplan_name;
$array['dialplans'][0]['dialplan_order'] = $dialplan_order;
$array['dialplans'][0]['dialplan_context'] = $dialplan_context;
$array['dialplans'][0]['dialplan_enabled'] = $dialplan_enabled;
$array['dialplans'][0]['dialplan_description'] = $dialplan_description;
//grant temporary permissions
$p = new permissions;
$p->add('dialplan_add', 'temp');
//execute insert
$database = new database; $database = new database;
$database->connect(); $database->app_name = 'switch-function-dialplan_add';
$db = $database->db; $database->app_uuid = '2fa2243c-47a1-41a0-b144-eb2b609219e0';
$database->save($array);
$sql = "insert into v_dialplans "; unset($array);
$sql .= "("; //revoke temporary permissions
$sql .= "domain_uuid, "; $p = new permissions;
$sql .= "dialplan_uuid, "; $p->delete('dialplan_add', 'temp');
if (strlen($app_uuid) > 0) {
$sql .= "app_uuid, ";
}
$sql .= "dialplan_name, ";
$sql .= "dialplan_order, ";
$sql .= "dialplan_context, ";
$sql .= "dialplan_enabled, ";
$sql .= "dialplan_description ";
$sql .= ")";
$sql .= "values ";
$sql .= "(";
$sql .= "'$domain_uuid', ";
$sql .= "'$dialplan_uuid', ";
if (strlen($app_uuid) > 0) {
$sql .= "'$app_uuid', ";
}
$sql .= "'$dialplan_name', ";
$sql .= "'$dialplan_order', ";
$sql .= "'$dialplan_context', ";
$sql .= "'$dialplan_enabled', ";
$sql .= "'$dialplan_description' ";
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
} }
function dialplan_detail_add($domain_uuid, $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data, $dialplan_detail_break = null, $dialplan_detail_inline = null) { function dialplan_detail_add($domain_uuid, $dialplan_uuid, $dialplan_detail_tag, $dialplan_detail_order, $dialplan_detail_group, $dialplan_detail_type, $dialplan_detail_data, $dialplan_detail_break = null, $dialplan_detail_inline = null) {
//build insert array
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
$dialplan_detail_uuid = uuid(); $dialplan_detail_uuid = uuid();
$sql = "insert into v_dialplan_details "; $array['dialplan_details'][0]['dialplan_detail_uuid'] = $dialplan_detail_uuid;
$sql .= "("; $array['dialplan_details'][0]['domain_uuid'] = $domain_uuid;
$sql .= "domain_uuid, "; $array['dialplan_details'][0]['dialplan_uuid'] = $dialplan_uuid;
$sql .= "dialplan_uuid, "; $array['dialplan_details'][0]['dialplan_detail_tag'] = $dialplan_detail_tag;
$sql .= "dialplan_detail_uuid, "; $array['dialplan_details'][0]['dialplan_detail_group'] = strlen($dialplan_detail_group) != 0 ? $dialplan_detail_group : null;
$sql .= "dialplan_detail_tag, "; $array['dialplan_details'][0]['dialplan_detail_order'] = $dialplan_detail_order;
$sql .= "dialplan_detail_group, "; $array['dialplan_details'][0]['dialplan_detail_type'] = $dialplan_detail_type;
$sql .= "dialplan_detail_order, "; $array['dialplan_details'][0]['dialplan_detail_data'] = $dialplan_detail_data;
$sql .= "dialplan_detail_type, "; $array['dialplan_details'][0]['dialplan_detail_break'] = strlen($dialplan_detail_break) != 0 ? $dialplan_detail_break : null;
$sql .= "dialplan_detail_data, "; $array['dialplan_details'][0]['dialplan_detail_inline'] = strlen($dialplan_detail_inline) != 0 ? $dialplan_detail_inline : null;
$sql .= "dialplan_detail_break, "; //grant temporary permissions
$sql .= "dialplan_detail_inline "; $p = new permissions;
$sql .= ") "; $p->add('dialplan_detail_add', 'temp');
$sql .= "values "; //execute insert
$sql .= "("; $database = new database;
$sql .= "'$domain_uuid', "; $database->app_name = 'switch-function-dialplan_detail_add';
$sql .= "'".check_str($dialplan_uuid)."', "; $database->app_uuid = '53ea51fc-a7ef-4726-9482-383984dc7747';
$sql .= "'".check_str($dialplan_detail_uuid)."', "; $database->save($array);
$sql .= "'".check_str($dialplan_detail_tag)."', "; unset($array);
if (strlen($dialplan_detail_group) == 0) { //revoke temporary permissions
$sql .= "null, "; $p = new permissions;
} $p->delete('dialplan_detail_add', 'temp');
else {
$sql .= "'".check_str($dialplan_detail_group)."', ";
}
$sql .= "'".check_str($dialplan_detail_order)."', ";
$sql .= "'".check_str($dialplan_detail_type)."', ";
$sql .= "'".check_str($dialplan_detail_data)."', ";
if (strlen($dialplan_detail_break) == 0) {
$sql .= "null, ";
}
else {
$sql .= "'".check_str($dialplan_detail_break)."', ";
}
if (strlen($dialplan_detail_inline) == 0) {
$sql .= "null ";
}
else {
$sql .= "'".check_str($dialplan_detail_inline)."' ";
}
$sql .= ")";
$db->exec(check_sql($sql));
unset($sql);
} }
function save_dialplan_xml() { function save_dialplan_xml() {
@ -739,13 +677,11 @@ function save_dialplan_xml() {
if (is_dir($_SESSION['switch']['dialplan']['dir'])) { if (is_dir($_SESSION['switch']['dialplan']['dir'])) {
$sql = "select * from v_dialplans "; $sql = "select * from v_dialplans ";
$sql .= "where dialplan_enabled = 'true' "; $sql .= "where dialplan_enabled = 'true' ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
if ($prep_statement) { $result = $database->select($sql, null, 'all');
$prep_statement->execute(); if (is_array($result) && @sizeof($result) != 0) {
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as &$row) { foreach ($result as &$row) {
$tmp = ""; $tmp = "\n";
$tmp .= "\n";
$first_action = true; $first_action = true;
$dialplan_continue = ''; $dialplan_continue = '';
@ -756,15 +692,14 @@ function save_dialplan_xml() {
$tmp = "<extension name=\"".$row['dialplan_name']."\" $dialplan_continue>\n"; $tmp = "<extension name=\"".$row['dialplan_name']."\" $dialplan_continue>\n";
$sql = "select * from v_dialplan_details "; $sql = "select * from v_dialplan_details ";
$sql .= " where dialplan_uuid = '".$row['dialplan_uuid']."' "; $sql .= "where dialplan_uuid = :dialplan_uuid ";
$sql .= "order by dialplan_detail_group asc, dialplan_detail_order asc "; $sql .= "order by dialplan_detail_group asc, dialplan_detail_order asc ";
$prep_statement_2 = $db->prepare($sql); $parameters['dialplan_uuid'] = $row['dialplan_uuid'];
if ($prep_statement_2) { $database = new database;
$prep_statement_2->execute(); $result_2 = $database->select($sql, $parameters, 'all');
$result2 = $prep_statement_2->fetchAll(PDO::FETCH_NAMED); unset($sql, $parameters);
$result_count2 = count($result2);
unset ($prep_statement_2, $sql);
if (sizeof($result_2) && @sizeof($result_2) != 0) {
//create a new array that is sorted into groups and put the tags in order conditions, actions, anti-actions //create a new array that is sorted into groups and put the tags in order conditions, actions, anti-actions
$details = array(); $details = array();
$previous_tag = ''; $previous_tag = '';
@ -772,12 +707,12 @@ function save_dialplan_xml() {
//conditions //conditions
$x = 0; $x = 0;
$y = 0; $y = 0;
foreach($result2 as $row2) { foreach ($result_2 as $row_2) {
if ($row2['dialplan_detail_tag'] == "condition") { if ($row_2['dialplan_detail_tag'] == "condition") {
//get the group //get the group
$group = $row2['dialplan_detail_group']; $group = $row_2['dialplan_detail_group'];
//get the generic type //get the generic type
switch ($row2['dialplan_detail_type']) { switch ($row_2['dialplan_detail_type']) {
case "hour": case "hour":
case "minute": case "minute":
case "minute-of-day": case "minute-of-day":
@ -796,15 +731,15 @@ function save_dialplan_xml() {
} }
//add the conditions to the details array //add the conditions to the details array
$details[$group]['condition-'.$x]['dialplan_detail_tag'] = $row2['dialplan_detail_tag']; $details[$group]['condition-'.$x]['dialplan_detail_tag'] = $row_2['dialplan_detail_tag'];
$details[$group]['condition-'.$x]['dialplan_detail_type'] = $row2['dialplan_detail_type']; $details[$group]['condition-'.$x]['dialplan_detail_type'] = $row_2['dialplan_detail_type'];
$details[$group]['condition-'.$x]['dialplan_uuid'] = $row2['dialplan_uuid']; $details[$group]['condition-'.$x]['dialplan_uuid'] = $row_2['dialplan_uuid'];
$details[$group]['condition-'.$x]['dialplan_detail_order'] = $row2['dialplan_detail_order']; $details[$group]['condition-'.$x]['dialplan_detail_order'] = $row_2['dialplan_detail_order'];
$details[$group]['condition-'.$x]['field'][$y]['type'] = $row2['dialplan_detail_type']; $details[$group]['condition-'.$x]['field'][$y]['type'] = $row_2['dialplan_detail_type'];
$details[$group]['condition-'.$x]['field'][$y]['data'] = $row2['dialplan_detail_data']; $details[$group]['condition-'.$x]['field'][$y]['data'] = $row_2['dialplan_detail_data'];
$details[$group]['condition-'.$x]['dialplan_detail_break'] = $row2['dialplan_detail_break']; $details[$group]['condition-'.$x]['dialplan_detail_break'] = $row_2['dialplan_detail_break'];
$details[$group]['condition-'.$x]['dialplan_detail_group'] = $row2['dialplan_detail_group']; $details[$group]['condition-'.$x]['dialplan_detail_group'] = $row_2['dialplan_detail_group'];
$details[$group]['condition-'.$x]['dialplan_detail_inline'] = $row2['dialplan_detail_inline']; $details[$group]['condition-'.$x]['dialplan_detail_inline'] = $row_2['dialplan_detail_inline'];
if ($type == "time") { if ($type == "time") {
$y++; $y++;
} }
@ -817,31 +752,32 @@ function save_dialplan_xml() {
//actions //actions
$x = 0; $x = 0;
foreach($result2 as $row2) { foreach($result_2 as $row_2) {
if ($row2['dialplan_detail_tag'] == "action") { if ($row_2['dialplan_detail_tag'] == "action") {
$group = $row2['dialplan_detail_group']; $group = $row_2['dialplan_detail_group'];
foreach ($row2 as $key => $val) { foreach ($row_2 as $key => $val) {
$details[$group]['action-'.$x][$key] = $val; $details[$group]['action-'.$x][$key] = $val;
} }
} }
$x++; $x++;
} }
//anti-actions //anti-actions
$x = 0; $x = 0;
foreach($result2 as $row2) { foreach($result_2 as $row_2) {
if ($row2['dialplan_detail_tag'] == "anti-action") { if ($row_2['dialplan_detail_tag'] == "anti-action") {
$group = $row2['dialplan_detail_group']; $group = $row_2['dialplan_detail_group'];
foreach ($row2 as $key => $val) { foreach ($row_2 as $key => $val) {
$details[$group]['anti-action-'.$x][$key] = $val; $details[$group]['anti-action-'.$x][$key] = $val;
} }
} }
$x++; $x++;
} }
unset($result2);
unset($result_2, $row_2);
} }
$i=1; if (is_array($details) && @sizeof($details) != 0) {
if ($result_count2 > 0) {
foreach ($details as $group) { foreach ($details as $group) {
$current_count = 0; $current_count = 0;
$x = 0; $x = 0;
@ -901,13 +837,14 @@ function save_dialplan_xml() {
//get the count //get the count
$count = 0; $count = 0;
foreach($details as $group2) { foreach($details as $group_2) {
foreach($group2 as $ent2) { foreach($group_2 as $ent_2) {
if ($ent2['dialplan_detail_group'] == $ent['dialplan_detail_group'] && $ent2['dialplan_detail_tag'] == "condition") { if ($ent_2['dialplan_detail_group'] == $ent['dialplan_detail_group'] && $ent_2['dialplan_detail_tag'] == "condition") {
$count++; $count++;
} }
} }
} }
unset($group_2, $ent_2);
//use the correct type of dialplan_detail_tag open or self closed //use the correct type of dialplan_detail_tag open or self closed
if ($count == 1) { //single condition if ($count == 1) { //single condition
@ -966,18 +903,15 @@ function save_dialplan_xml() {
} }
//set the previous dialplan_detail_tag //set the previous dialplan_detail_tag
$previous_tag = $ent['dialplan_detail_tag']; $previous_tag = $ent['dialplan_detail_tag'];
$i++;
} //end foreach }
if ($close_condition_tag == true) { if ($close_condition_tag == true) {
$tmp .= " </condition>\n"; $tmp .= " </condition>\n";
} }
$x++; $x++;
} }
if ($condition_count > 0) { unset($sql, $result_2, $row_count2);
$condition_count = $result_count2;
} }
unset($sql, $result_count2, $result2, $row_count2);
} //end if results
$tmp .= "</extension>\n"; $tmp .= "</extension>\n";
$dialplan_order = $row['dialplan_order']; $dialplan_order = $row['dialplan_order'];
@ -1017,12 +951,12 @@ function save_dialplan_xml() {
} }
unset($dialplan_filename); unset($dialplan_filename);
unset($tmp); unset($tmp);
} //end while }
//apply settings //apply settings
$_SESSION["reload_xml"] = true; $_SESSION["reload_xml"] = true;
} }
} //end if (is_dir($_SESSION['switch']['dialplan']['dir'])) }
} }
if (!function_exists('phone_letter_to_number')) { if (!function_exists('phone_letter_to_number')) {
@ -1043,22 +977,15 @@ if (!function_exists('save_call_center_xml')) {
function save_call_center_xml() { function save_call_center_xml() {
global $domain_uuid; global $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
if (strlen($_SESSION['switch']['call_center']['dir']) > 0) { if (strlen($_SESSION['switch']['call_center']['dir']) > 0) {
//get the call center queue array //get the call center queue array
$sql = "select * from v_call_center_queues "; $sql = "select * from v_call_center_queues ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $call_center_queues = $database->select($sql, null, 'all');
$call_center_queues = $prep_statement->fetchAll(PDO::FETCH_ASSOC); unset($sql);
$result_count = count($call_center_queues);
unset ($prep_statement, $sql); if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
if ($result_count > 0) {
//prepare Queue XML string //prepare Queue XML string
$x=0; $x=0;
@ -1122,15 +1049,16 @@ if (!function_exists('save_call_center_xml')) {
$v_queues .= " </queue>"; $v_queues .= " </queue>";
$x++; $x++;
} }
unset ($prep_statement);
//prepare Agent XML string //prepare Agent XML string
$v_agents = ''; $v_agents = '';
$sql = "select * from v_call_center_agents "; $sql = "select * from v_call_center_agents ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); unset($sql);
$x=0; $x=0;
if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as &$row) { foreach ($result as &$row) {
//get the values from the db and set as php variables //get the values from the db and set as php variables
$agent_name = $row["agent_name"]; $agent_name = $row["agent_name"];
@ -1209,15 +1137,18 @@ if (!function_exists('save_call_center_xml')) {
$v_agents .= "/>"; $v_agents .= "/>";
$x++; $x++;
} }
unset ($prep_statement); }
unset($result, $row);
//prepare Tier XML string //prepare Tier XML string
$v_tiers = ''; $v_tiers = '';
$sql = "select * from v_call_center_tiers "; $sql = "select * from v_call_center_tiers ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); unset($sql);
$x=0; $x=0;
if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as &$row) { foreach ($result as &$row) {
$agent_name = $row["agent_name"]; $agent_name = $row["agent_name"];
$queue_name = $row["queue_name"]; $queue_name = $row["queue_name"];
@ -1230,6 +1161,8 @@ if (!function_exists('save_call_center_xml')) {
$v_tiers .= "<tier agent=\"$agent_name@".$_SESSION['domains'][$row["domain_uuid"]]['domain_name']."\" queue=\"$queue_name@".$_SESSION['domains'][$row["domain_uuid"]]['domain_name']."\" level=\"$tier_level\" position=\"$tier_position\"/>"; $v_tiers .= "<tier agent=\"$agent_name@".$_SESSION['domains'][$row["domain_uuid"]]['domain_name']."\" queue=\"$queue_name@".$_SESSION['domains'][$row["domain_uuid"]]['domain_name']."\" level=\"$tier_level\" position=\"$tier_position\"/>";
$x++; $x++;
} }
}
unset($result, $row);
//set the path //set the path
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) { if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) {
@ -1262,22 +1195,15 @@ if (!function_exists('save_call_center_xml')) {
//apply settings //apply settings
$_SESSION["reload_xml"] = true; $_SESSION["reload_xml"] = true;
} }
unset($call_center_queues);
} }
} }
} }
if (!function_exists('switch_conf_xml')) { if (!function_exists('switch_conf_xml')) {
function switch_conf_xml() { function switch_conf_xml() {
//get the global variables
global $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
//get the contents of the template //get the contents of the template
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) { if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) {
$path = "/usr/share/examples/fusionpbx/resources/templates/conf"; $path = "/usr/share/examples/fusionpbx/resources/templates/conf";
@ -1335,16 +1261,6 @@ if (!function_exists('switch_conf_xml')) {
if (!function_exists('xml_cdr_conf_xml')) { if (!function_exists('xml_cdr_conf_xml')) {
function xml_cdr_conf_xml() { function xml_cdr_conf_xml() {
//get the global variables
global $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
//get the contents of the template //get the contents of the template
if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) { if (file_exists('/usr/share/examples/fusionpbx/resources/templates/conf')) {
$path = "/usr/share/examples/fusionpbx/resources/templates/conf"; $path = "/usr/share/examples/fusionpbx/resources/templates/conf";
@ -1379,7 +1295,6 @@ if (!function_exists('xml_cdr_conf_xml')) {
if (!function_exists('save_sip_profile_xml')) { if (!function_exists('save_sip_profile_xml')) {
function save_sip_profile_xml() { function save_sip_profile_xml() {
//skip saving the sip profile xml if the directory is not set //skip saving the sip profile xml if the directory is not set
if (strlen($_SESSION['switch']['sip_profiles']['dir']) == 0) { if (strlen($_SESSION['switch']['sip_profiles']['dir']) == 0) {
return; return;
@ -1389,23 +1304,13 @@ if (!function_exists('save_sip_profile_xml')) {
$profile_dir = $_SESSION['switch']['conf']['dir']."/sip_profiles"; $profile_dir = $_SESSION['switch']['conf']['dir']."/sip_profiles";
if (!is_readable($profile_dir)) { event_socket_mkdir($profile_dir); } if (!is_readable($profile_dir)) { event_socket_mkdir($profile_dir); }
//get the global variables
global $domain_uuid;
//get the database connection
require_once "resources/classes/database.php";
$database = new database;
$database->connect();
$db = $database->db;
//get the sip profiles from the database //get the sip profiles from the database
$sql = "select * from v_sip_profiles"; $sql = "select * from v_sip_profiles";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $result = $database->select($sql, null, 'all');
$result = $prep_statement->fetchAll(); unset($sql);
$result_count = count($result);
unset ($prep_statement, $sql); if (is_array($result) && @sizeof($result) != 0) {
if ($result_count > 0) {
foreach($result as $row) { foreach($result as $row) {
$sip_profile_uuid = $row['sip_profile_uuid']; $sip_profile_uuid = $row['sip_profile_uuid'];
$sip_profile_name = $row['sip_profile_name']; $sip_profile_name = $row['sip_profile_name'];
@ -1429,16 +1334,18 @@ if (!function_exists('save_sip_profile_xml')) {
//get the sip profile settings //get the sip profile settings
$sql = "select * from v_sip_profile_settings "; $sql = "select * from v_sip_profile_settings ";
$sql .= "where sip_profile_uuid = '$sip_profile_uuid' "; $sql .= "where sip_profile_uuid = :sip_profile_uuid ";
$sql .= "and sip_profile_setting_enabled = 'true' "; $sql .= "and sip_profile_setting_enabled = 'true' ";
$prep_statement = $db->prepare(check_sql($sql)); $parameters['sip_profile_uuid'] = $sip_profile_uuid;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(); $result_2 = $database->select($sql, $parameters, 'all');
if (is_array($result_2) && @sizeof($result_2) != 0) {
$sip_profile_settings = ''; $sip_profile_settings = '';
foreach ($result as &$row) { foreach ($result_2 as &$row_2) {
$sip_profile_settings .= " <param name=\"".$row["sip_profile_setting_name"]."\" value=\"".$row["sip_profile_setting_value"]."\"/>\n"; $sip_profile_settings .= " <param name=\"".$row_2["sip_profile_setting_name"]."\" value=\"".$row_2["sip_profile_setting_value"]."\"/>\n";
} }
unset ($prep_statement); }
unset($sql, $parameters, $result_2, $row_2);
//replace the values in the template //replace the values in the template
$file_contents = str_replace("{v_sip_profile_name}", $sip_profile_name, $file_contents); $file_contents = str_replace("{v_sip_profile_name}", $sip_profile_name, $file_contents);
@ -1454,9 +1361,9 @@ if (!function_exists('save_sip_profile_xml')) {
//if the directory does not exist then create it //if the directory does not exist then create it
if (!is_readable($profile_dir.'/'.$sip_profile_name)) { event_socket_mkdir($profile_dir.'/'.$sip_profile_name); } if (!is_readable($profile_dir.'/'.$sip_profile_name)) { event_socket_mkdir($profile_dir.'/'.$sip_profile_name); }
} //end foreach }
unset($sql, $result, $row_count); unset($result, $row);
} //end if results }
//apply settings //apply settings
$_SESSION["reload_xml"] = true; $_SESSION["reload_xml"] = true;

View File

@ -39,7 +39,7 @@ if (defined('STDIN')) {
//echo "$document_root is document_root\n"; //echo "$document_root is document_root\n";
} }
if (stristr(PHP_OS, 'WIN')) { $IS_WINDOWS = true; } else { $IS_WINDOWS = false; } $IS_WINDOWS = stristr(PHP_OS, 'WIN') ? true : false;
if (!function_exists('exec_in_dir')) { if (!function_exists('exec_in_dir')) {
function exec_in_dir($dir, $cmd, &$ok){ function exec_in_dir($dir, $cmd, &$ok){
@ -194,7 +194,7 @@ if (!function_exists('tiff2pdf')) {
if (!function_exists('fax_enqueue')) { if (!function_exists('fax_enqueue')) {
function fax_enqueue($fax_uuid, $fax_file, $wav_file, $reply_address, $fax_uri, $fax_dtmf, $dial_string) { function fax_enqueue($fax_uuid, $fax_file, $wav_file, $reply_address, $fax_uri, $fax_dtmf, $dial_string) {
global $db, $db_type; global $db_type;
$fax_task_uuid = uuid(); $fax_task_uuid = uuid();
$dial_string .= "fax_task_uuid='".$fax_task_uuid."',"; $dial_string .= "fax_task_uuid='".$fax_task_uuid."',";
@ -209,38 +209,64 @@ if (!function_exists('fax_enqueue')) {
$date_utc_now_sql = "datetime('now')"; $date_utc_now_sql = "datetime('now')";
} }
$sql = "INSERT INTO v_fax_tasks (fax_task_uuid, fax_uuid, "; $sql = "insert into v_fax_tasks";
$sql .= " task_next_time, task_lock_time, "; $sql .= "( ";
$sql .= " task_fax_file, task_wav_file, task_uri, task_dial_string, task_dtmf, "; $sql .= "fax_task_uuid, ";
$sql .= " task_interrupted, task_status, task_no_answer_counter, task_no_answer_retry_counter, task_retry_counter, "; $sql .= "fax_uuid, ";
$sql .= " task_reply_address, task_description) "; $sql .= "task_next_time, ";
$sql .= "VALUES ( "; $sql .= "task_lock_time, ";
$sql .= " :fax_task_uuid, :fax_uuid, "; $sql .= "task_fax_file, ";
$sql .= " ".$date_utc_now_sql.", NULL, "; $sql .= "task_wav_file, ";
$sql .= " :fax_file, :wav_file, :fax_uri, :dial_string, :fax_dtmf, "; $sql .= "task_uri, ";
$sql .= " 'false', 0, 0, 0, 0, "; $sql .= "task_dial_string, ";
$sql .= " :reply_address, :description, "; $sql .= "task_dtmf, ";
$sql .= "); "; $sql .= "task_interrupted, ";
$statement = $db->prepare($sql); $sql .= "task_status, ";
$statement->bindParam(':fax_task_uuid', $fax_task_uuid); $sql .= "task_no_answer_counter, ";
$statement->bindParam(':fax_uuid', $fax_uuid); $sql .= "task_no_answer_retry_counter,";
$statement->bindParam(':fax_file', $fax_file); $sql .= "task_retry_counter, ";
$statement->bindParam(':wav_file', $wav_file); $sql .= "task_reply_address, ";
$statement->bindParam(':fax_uri', $fax_uri); $sql .= "task_description ";
$statement->bindParam(':dial_string', $dial_string); $sql .= ") ";
$statement->bindParam(':fax_dtmf', $fax_dtmf); $sql .= "values ( ";
$statement->bindParam(':reply_address', $reply_address); $sql .= ":fax_task_uuid, ";
$statement->bindParam(':description', $description); $sql .= ":fax_uuid, ";
if ($statement->execute()) { $sql .= $date_utc_now_sql.", ";
$response = 'Success'; $sql .= "null, ";
$sql .= ":fax_file, ";
$sql .= ":wav_file, ";
$sql .= ":fax_uri, ";
$sql .= ":dial_string, ";
$sql .= ":fax_dtmf, ";
$sql .= "'false', ";
$sql .= "0, ";
$sql .= "0, ";
$sql .= "0, ";
$sql .= "0, ";
$sql .= ":reply_address, ";
$sql .= ":description ";
$sql .= ") ";
$parameters['fax_task_uuid'] = $fax_task_uuid;
$parameters['fax_uuid'] = $fax_uuid;
$parameters['fax_file'] = $fax_file;
$parameters['wav_file'] = $wav_file;
$parameters['fax_uri'] = $fax_uri;
$parameters['dial_string'] = $dial_string;
$parameters['fax_dtmf'] = $fax_dtmf;
$parameters['reply_address'] = $reply_address;
$parameters['description'] = $description;
$database = new database;
$database->execute($sql, $parameters);
$response = $database->message();
if ($response['message'] == 'OK' && $response['code'] == '200') {
return 'Success';
} }
else{ else{
//! @todo log error //! @todo log error
$response = 'Failed'; view_array($response);
var_dump($db->errorInfo()); return 'Failed';
} }
unset($statement); unset($sql, $parameters, $response);
return $response;
} }
} }
@ -343,10 +369,11 @@ if (!function_exists('fax_split_dtmf')) {
//get the domain_uuid from the database //get the domain_uuid from the database
$sql = "select * from v_domains "; $sql = "select * from v_domains ";
$sql .= "where domain_name = '".$domain_name."' "; $sql .= "where domain_name = :domain_name ";
$prep_statement = $db->prepare($sql); $parameters['domain_name'] = $domain_name;
$prep_statement->execute(); $database = new database;
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $result = $database->select($sql, $parameters, 'all');
if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as &$row) { foreach ($result as &$row) {
//set the domain variables //set the domain variables
$domain_uuid = $row["domain_uuid"]; $domain_uuid = $row["domain_uuid"];
@ -357,7 +384,8 @@ if (!function_exists('fax_split_dtmf')) {
$domain->db = $db; $domain->db = $db;
$domain->set(); $domain->set();
} }
unset ($prep_statement); }
unset($sql, $parameters, $result);
//prepare smtp server settings //prepare smtp server settings
// load default smtp settings // load default smtp settings
@ -365,7 +393,8 @@ if (!function_exists('fax_split_dtmf')) {
$smtp['host'] = (strlen($_SESSION['email']['smtp_host']['text'])?$_SESSION['email']['smtp_host']['text']:'127.0.0.1'); $smtp['host'] = (strlen($_SESSION['email']['smtp_host']['text'])?$_SESSION['email']['smtp_host']['text']:'127.0.0.1');
if (isset($_SESSION['email']['smtp_port'])) { if (isset($_SESSION['email']['smtp_port'])) {
$smtp['port'] = (int)$_SESSION['email']['smtp_port']['numeric']; $smtp['port'] = (int)$_SESSION['email']['smtp_port']['numeric'];
} else { }
else {
$smtp['port'] = 0; $smtp['port'] = 0;
} }
@ -384,25 +413,29 @@ if (!function_exists('fax_split_dtmf')) {
} }
// overwrite with domain-specific smtp server settings, if any // overwrite with domain-specific smtp server settings, if any
if ($domain_uuid != '') { if (is_uuid($domain_uuid)) {
$sql = "select domain_setting_subcategory, domain_setting_value "; $sql = "select ";
$sql .= "domain_setting_subcategory, ";
$sql .= "domain_setting_value ";
$sql .= "from v_domain_settings "; $sql .= "from v_domain_settings ";
$sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and (domain_setting_category = 'email' "; $sql .= "and ( ";
$sql .= "or domain_setting_category = 'fax') "; $sql .= "domain_setting_category = 'email' ";
$sql .= "or domain_setting_category = 'fax' ";
$sql .= ") ";
$sql .= "and domain_setting_name = 'text' "; $sql .= "and domain_setting_name = 'text' ";
$sql .= "and domain_setting_enabled = 'true' "; $sql .= "and domain_setting_enabled = 'true' ";
$prep_statement = $db->prepare($sql); $parameters['domain_name'] = $domain_name;
if ($prep_statement) { $database = new database;
$prep_statement->execute(); $result = $database->select($sql, $parameters, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as $row) { foreach ($result as $row) {
if ($row['domain_setting_value'] != '') { if ($row['domain_setting_value'] != '') {
$smtp[str_replace('smtp_','',$row["domain_setting_subcategory"])] = $row['domain_setting_value']; $smtp[str_replace('smtp_','',$row["domain_setting_subcategory"])] = $row['domain_setting_value'];
} }
} }
} }
unset($sql, $prep_statement); unset($sql, $parameters, $result, $row);
} }
// value adjustments // value adjustments
@ -414,13 +447,13 @@ if (!function_exists('fax_split_dtmf')) {
//get the fax details from the database //get the fax details from the database
$sql = "select * from v_fax "; $sql = "select * from v_fax ";
$sql .= "where domain_uuid = '".$_SESSION["domain_uuid"]."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and fax_extension = '$fax_extension' "; $sql .= "and fax_extension = :fax_extension ";
$prep_statement = $db->prepare($sql); $parameters['domain_uuid'] = $_SESSION["domain_uuid"];
$prep_statement->execute(); $parameters['fax_extension'] = $fax_extension;
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $database = new database;
foreach ($result as &$row) { $row = $database->select($sql, $parameters, 'row');
//set database fields as variables if (is_array($row) && @sizeof($row) != 0) {
//$fax_email = $row["fax_email"]; //$fax_email = $row["fax_email"];
$fax_uuid = $row["fax_uuid"]; $fax_uuid = $row["fax_uuid"];
$fax_accountcode = $row["fax_accountcode"]; $fax_accountcode = $row["fax_accountcode"];
@ -432,7 +465,7 @@ if (!function_exists('fax_split_dtmf')) {
$fax_description = $row["fax_description"]; $fax_description = $row["fax_description"];
$fax_email_inbound_subject_tag = $row['fax_email_inbound_subject_tag']; $fax_email_inbound_subject_tag = $row['fax_email_inbound_subject_tag'];
} }
unset ($prep_statement); unset($sql, $parameters, $row);
//set the fax directory //set the fax directory
if (!file_exists($dir_fax) || !file_exists(path_join($dir_fax, $fax_file_only))) { if (!file_exists($dir_fax) || !file_exists(path_join($dir_fax, $fax_file_only))) {
@ -461,7 +494,6 @@ if (!function_exists('fax_split_dtmf')) {
$fax_file_warning = ''; $fax_file_warning = '';
} }
//used for debug
echo "pdf file: $pdf_file\n"; echo "pdf file: $pdf_file\n";
//forward the fax //forward the fax
@ -521,15 +553,14 @@ if (!function_exists('fax_split_dtmf')) {
//get the event socket information //get the event socket information
$sql = "select * from v_settings "; $sql = "select * from v_settings ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
$prep_statement->execute(); $row = $database->select($sql, $parameters, 'row');
$result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); if (is_array($row) && @sizeof($row) != 0) {
foreach ($result as &$row) {
$event_socket_ip_address = $row["event_socket_ip_address"]; $event_socket_ip_address = $row["event_socket_ip_address"];
$event_socket_port = $row["event_socket_port"]; $event_socket_port = $row["event_socket_port"];
$event_socket_password = $row["event_socket_password"]; $event_socket_password = $row["event_socket_password"];
break;
} }
unset($sql);
//create the event socket connection //create the event socket connection
$fp = event_socket_create($event_socket_ip_address, $event_socket_port, $event_socket_password); $fp = event_socket_create($event_socket_ip_address, $event_socket_port, $event_socket_password);
@ -687,7 +718,8 @@ if (!function_exists('fax_split_dtmf')) {
$fp = fopen($fax_to_email_queue_dir."/emailed_faxes.log", "a"); $fp = fopen($fax_to_email_queue_dir."/emailed_faxes.log", "a");
fwrite($fp, $fax_file_name." received on ".$fax_extension." emailed to ".$fax_email." ".$fax_messages."\n"); fwrite($fp, $fax_file_name." received on ".$fax_extension." emailed to ".$fax_email." ".$fax_messages."\n");
fclose($fp); fclose($fp);
} else { }
else {
//create an instruction log to email messages once the connection to the mail server has been restored //create an instruction log to email messages once the connection to the mail server has been restored
$fp = fopen($fax_to_email_queue_dir."/failed_fax_emails.log", "a"); $fp = fopen($fax_to_email_queue_dir."/failed_fax_emails.log", "a");
fwrite($fp, PHP_BINDIR."/php ".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/secure/fax_to_email.php email='".$fax_email."' extension=".$fax_extension." name='".$fax_file."' messages='".$fax_messages."' domain=".$domain_name." caller_id_name='".$caller_id_name."' caller_id_number=".$caller_id_number." retry=true\n"); fwrite($fp, PHP_BINDIR."/php ".$_SERVER["DOCUMENT_ROOT"].PROJECT_PATH."/secure/fax_to_email.php email='".$fax_email."' extension=".$fax_extension." name='".$fax_file."' messages='".$fax_messages."' domain=".$domain_name." caller_id_name='".$caller_id_name."' caller_id_number=".$caller_id_number." retry=true\n");

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2018 Portions created by the Initial Developer are Copyright (C) 2008-2019
the Initial Developer. All Rights Reserved. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -141,7 +141,8 @@
$smtp['host'] = (strlen($_SESSION['email']['smtp_host']['text'])?$_SESSION['email']['smtp_host']['text']:'127.0.0.1'); $smtp['host'] = (strlen($_SESSION['email']['smtp_host']['text'])?$_SESSION['email']['smtp_host']['text']:'127.0.0.1');
if (isset($_SESSION['email']['smtp_port'])) { if (isset($_SESSION['email']['smtp_port'])) {
$smtp['port'] = (int)$_SESSION['email']['smtp_port']['numeric']; $smtp['port'] = (int)$_SESSION['email']['smtp_port']['numeric'];
} else { }
else {
$smtp['port'] = 0; $smtp['port'] = 0;
} }
$smtp['secure'] = $_SESSION['email']['smtp_secure']['text']; $smtp['secure'] = $_SESSION['email']['smtp_secure']['text'];
@ -162,21 +163,21 @@
if ($headers["X-FusionPBX-Domain-UUID"] != '') { if ($headers["X-FusionPBX-Domain-UUID"] != '') {
$sql = "select domain_setting_subcategory, domain_setting_value "; $sql = "select domain_setting_subcategory, domain_setting_value ";
$sql .= "from v_domain_settings "; $sql .= "from v_domain_settings ";
$sql .= "where domain_uuid = '".$headers["X-FusionPBX-Domain-UUID"]."' "; $sql .= "where domain_uuid = :domain_uuid ";
$sql .= "and (domain_setting_category = 'email' or domain_setting_category = 'voicemail') "; $sql .= "and (domain_setting_category = 'email' or domain_setting_category = 'voicemail') ";
$sql .= "and domain_setting_name = 'text' "; $sql .= "and domain_setting_name = 'text' ";
$sql .= "and domain_setting_enabled = 'true' "; $sql .= "and domain_setting_enabled = 'true' ";
$prep_statement = $db->prepare($sql); $parameters['domain_uuid'] = $headers["X-FusionPBX-Domain-UUID"];
if ($prep_statement) { $database = new database;
$prep_statement->execute(); $result = $database->select($sql, $parameters, 'all');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); if (is_array($result) && @sizeof($result) != 0) {
foreach ($result as $row) { foreach ($result as $row) {
if ($row['domain_setting_value'] != '') { if ($row['domain_setting_value'] != '') {
$smtp[str_replace('smtp_','',$row["domain_setting_subcategory"])] = $row['domain_setting_value']; $smtp[str_replace('smtp_','',$row["domain_setting_subcategory"])] = $row['domain_setting_value'];
} }
} }
} }
unset($sql, $prep_statement); unset($sql, $parameters, $result, $row);
} }
// value adjustments // value adjustments
$smtp['auth'] = ($smtp['auth'] == "true") ? true : false; $smtp['auth'] = ($smtp['auth'] == "true") ? true : false;
@ -195,7 +196,10 @@
case 'mail': $mail->IsMail(); break; case 'mail': $mail->IsMail(); break;
default: $mail->IsSMTP(); break; default: $mail->IsSMTP(); break;
} }
} else $mail->IsSMTP(); }
else {
$mail->IsSMTP();
}
// optional bypass TLS certificate check e.g. for self-signed certificates // optional bypass TLS certificate check e.g. for self-signed certificates
if (isset($_SESSION['email']['smtp_validate_certificate'])) { if (isset($_SESSION['email']['smtp_validate_certificate'])) {
@ -347,33 +351,33 @@
$call_uuid = $headers["X-FusionPBX-Call-UUID"]; $call_uuid = $headers["X-FusionPBX-Call-UUID"];
if ($resend == true) { if ($resend == true) {
echo "Retained in v_email_logs \n"; echo "Retained in v_email_logs \n";
} else { }
else {
// log/store message in database for review // log/store message in database for review
if (!isset($email_log_uuid)) { if (!isset($email_log_uuid)) {
//build insert array
$email_log_uuid = uuid(); $email_log_uuid = uuid();
$sql = "insert into v_email_logs ( "; $array['email_logs'][0]['email_log_uuid'] = $email_log_uuid;
$sql .= "email_log_uuid, "; if (is_uuid($call_uuid)) {
if ($call_uuid) { $array['email_logs'][0]['call_uuid'] = $call_uuid;
$sql .= "call_uuid, ";
} }
$sql .= "domain_uuid, "; $array['email_logs'][0]['domain_uuid'] = $headers["X-FusionPBX-Domain-UUID"];
$sql .= "sent_date, "; $array['email_logs'][0]['sent_date'] = 'now()';
$sql .= "type, "; $array['email_logs'][0]['type'] = $headers["X-FusionPBX-Email-Type"];
$sql .= "status, "; $array['email_logs'][0]['status'] = 'failed';
$sql .= "email "; $array['email_logs'][0]['email'] = str_replace("'", "''", $msg);
$sql .= ") values ( "; //grant temporary permissions
$sql .= "'".$email_log_uuid."', "; $p = new permissions;
if ($call_uuid) { $p->add('email_log_add', 'temp');
$sql .= "'".$call_uuid."', "; //execute insert
} $database = new database;
$sql .= "'".$headers["X-FusionPBX-Domain-UUID"]."', "; $database->app_name = 'v_mailto';
$sql .= "now(),"; $database->app_uuid = 'ba41954e-9d21-4b10-bbc2-fa5ceabeb184';
$sql .= "'".$headers["X-FusionPBX-Email-Type"]."', "; $database->save($array);
$sql .= "'failed', "; unset($array);
$sql .= "'".str_replace("'", "''", $msg)."' "; //revoke temporary permissions
$sql .= ") "; $p = new permissions;
$db->exec(check_sql($sql)); $p->delete('email_log_add', 'temp');
unset($sql);
} }
echo "Retained in v_email_logs as email_log_uuid = ".$email_log_uuid."\n"; echo "Retained in v_email_logs as email_log_uuid = ".$email_log_uuid."\n";
@ -395,22 +399,16 @@
/* /*
//save in /tmp as eml file //save in /tmp as eml file
$fp = fopen(sys_get_temp_dir()."/email.eml", "w"); $fp = fopen(sys_get_temp_dir()."/email.eml", "w");
ob_end_clean(); ob_end_clean();
ob_start(); ob_start();
$sql = "select email from v_email_logs where email_log_uuid = '".$email_log_uuid."'"; $sql = "select email from v_email_logs where email_log_uuid = :email_log_uuid ";
$prep_statement = $db->prepare($sql); $parameters['email_log_uuid'] = $email_log_uuid;
if ($prep_statement) { $database = new database;
$prep_statement->execute(); $email = $database->select($sql, $parameters, 'column');
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED); echo $email;
foreach ($result as &$row) { unset($sql, $parameters, $email);
echo $row["email"];
break;
}
}
unset($sql, $prep_statement, $result);
$content = ob_get_contents(); //get the output from the buffer $content = ob_get_contents(); //get the output from the buffer
$content = str_replace("<br />", "", $content); $content = str_replace("<br />", "", $content);
@ -419,6 +417,6 @@ ob_end_clean(); //clean the buffer
fwrite($fp, $content); fwrite($fp, $content);
fclose($fp); fclose($fp);
*/ */
?> ?>

View File

@ -17,7 +17,7 @@
The Initial Developer of the Original Code is The Initial Developer of the Original Code is
Mark J Crane <markjcrane@fusionpbx.com> Mark J Crane <markjcrane@fusionpbx.com>
Portions created by the Initial Developer are Copyright (C) 2008-2016 Portions created by the Initial Developer are Copyright (C) 2008-2019
the Initial Developer. All Rights Reserved. the Initial Developer. All Rights Reserved.
Contributor(s): Contributor(s):
@ -59,19 +59,17 @@
$sql .= "set default_setting_value = '#fafafa' "; $sql .= "set default_setting_value = '#fafafa' ";
$sql .= "where default_setting_subcategory = 'message_default_color' "; $sql .= "where default_setting_subcategory = 'message_default_color' ";
$sql .= "and default_setting_value = '#ccffcc' "; $sql .= "and default_setting_value = '#ccffcc' ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
if ($prep_statement) { $database->execute($sql);
$prep_statement->execute(); unset($sql);
}
$sql = "update v_default_settings "; $sql = "update v_default_settings ";
$sql .= "set default_setting_value = '#666' "; $sql .= "set default_setting_value = '#666' ";
$sql .= "where default_setting_subcategory = 'message_default_background_color' "; $sql .= "where default_setting_subcategory = 'message_default_background_color' ";
$sql .= "and default_setting_value = '#004200' "; $sql .= "and default_setting_value = '#004200' ";
$prep_statement = $db->prepare(check_sql($sql)); $database = new database;
if ($prep_statement) { $database->execute($sql);
$prep_statement->execute(); unset($sql);
}
unset($prep_statement, $sql);
//replace glyphicon icon with fontawesome icon for default main menu items //replace glyphicon icon with fontawesome icon for default main menu items
$queries[] = "update v_menu_items set menu_item_icon = 'fa-home' where menu_item_icon = 'glyphicon-home' "; $queries[] = "update v_menu_items set menu_item_icon = 'fa-home' where menu_item_icon = 'glyphicon-home' ";