diff --git a/core/users/app_languages.php b/core/users/app_languages.php
index 16333db91b..616ab44b17 100644
--- a/core/users/app_languages.php
+++ b/core/users/app_languages.php
@@ -242,7 +242,7 @@
$text['description-contact_view']['pt-pt'] = "Ver";
$text['description-contact_view']['fr-fr'] = "Voir";
- $text['description-status']['en-us'] = "Set the user\'s presence.";
+ $text['description-status']['en-us'] = "Set the user's presence.";
$text['description-status']['es-cl'] = "Configure la presencia del usuario.";
$text['description-status']['pt-pt'] = "Escolher o estado de presença do utilizador.";
$text['description-status']['fr-fr'] = "Choisir l'état de présence de l'utilisateur.";
@@ -382,12 +382,17 @@
$text['message-required']['pt-pt'] = "Por favor indique: ";
$text['message-required']['fr-fr'] = "Merci d'indiquer: ";
- $text['message-password_blank']['en-us'] = "Password cannot be blank.";
- $text['message-password_blank']['es-cl'] = "La contraseña no puede estar en blanco";
- $text['message-password_blank']['pt-pt'] = "O campo password não pode ser vazio.";
- $text['message-password_blank']['fr-fr'] = "Le mot de passe ne peut pas être vide.";
+ $text['message-username_exists']['en-us'] = "Username Already Exists";
+ $text['message-username_exists']['es-cl'] = "Ya existe Nombre de usuario";
+ $text['message-username_exists']['pt-pt'] = "Nome de usuário já existe";
+ $text['message-username_exists']['fr-fr'] = "Nom d'utilisateur existe déjà";
- $text['message-password_mismatch']['en-us'] = "Passwords did not match.";
+ $text['message-password_blank']['en-us'] = "Invalid Password";
+ $text['message-password_blank']['es-cl'] = "Contraseña No Válida";
+ $text['message-password_blank']['pt-pt'] = "Senha Inválida";
+ $text['message-password_blank']['fr-fr'] = "Mot de Passe Incorrect";
+
+ $text['message-password_mismatch']['en-us'] = "Password Mismatch";
$text['message-password_mismatch']['es-cl'] = "Contraseñas no coinciden";
$text['message-password_mismatch']['pt-pt'] = "As passwords não correspondem.";
$text['message-password_mismatch']['fr-fr'] = "les mots de passe ne correspondent pas";
diff --git a/core/users/usersupdate.php b/core/users/usersupdate.php
index b3fee44ad2..c6e3207e8c 100644
--- a/core/users/usersupdate.php
+++ b/core/users/usersupdate.php
@@ -47,26 +47,9 @@ else {
}
//get data from the db
- if (strlen($_REQUEST["id"])> 0) {
+ if (strlen($_REQUEST["id"]) > 0) {
$user_uuid = $_REQUEST["id"];
}
- else {
- if (strlen($_SESSION["username"]) > 0) {
- $username = $_SESSION["username"];
- }
- }
-
-//get the username from v_users
- $sql = "select * from v_users ";
- $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);
- foreach ($result as &$row) {
- $username = $row["username"];
- }
- unset ($prep_statement);
//required to be a superadmin to update an account that is a member of the superadmin group
$superadmins = superadmin_list($db);
@@ -119,10 +102,11 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
//get the HTTP values and set as variables
$user_uuid = $_REQUEST["id"];
+ $username_old = check_str($_POST["username_old"]);
+ $username = check_str($_POST["username"]);
$password = check_str($_POST["password"]);
$confirm_password = check_str($_POST["confirm_password"]);
$user_status = check_str($_POST["user_status"]);
- //$user_template_name = check_str($_POST["user_template_name"]);
$user_language = check_str($_POST["user_language"]);
$user_time_zone = check_str($_POST["user_time_zone"]);
$contact_uuid = check_str($_POST["contact_uuid"]);
@@ -130,23 +114,26 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
$user_enabled = check_str($_POST["user_enabled"]);
$api_key = check_str($_POST["api_key"]);
- //set the required values
- if ($password != $confirm_password) { $msg_error .= $text['message-password_mismatch']." \n"; }
- //if (strlen($contact_uuid) == 0) { $msg_error .= $text['message-required'].$text['label-email']." \n"; }
- //if (strlen($user_time_zone) == 0) { $msg_error .= $text['message-required'].$text['label-time_zone']." \n"; }
- if (strlen($user_enabled) == 0) { $msg_error .= $text['message-required'].$text['label-enabled']." \n"; }
+ //check required values
+ if ($username != $username_old) {
+ $sql = "select count(*) as num_rows from v_users where domain_uuid = '".$domain_uuid."' and username = '".$username."'";
+ $prep_statement = $db->prepare(check_sql($sql));
+ if ($prep_statement) {
+ $prep_statement->execute();
+ $row = $prep_statement->fetch(PDO::FETCH_ASSOC);
+ if (0 < $row['num_rows']) {
+ $msg_error = $text['message-username_exists'];
+ }
+ }
+ unset($sql);
+ }
+
+ if ($password != $confirm_password) { $msg_error = $text['message-password_mismatch']; }
+
if ($msg_error) {
- require_once "resources/header.php";
- echo "
";
- echo "
";
- echo $msg_error;
- echo "
";
- echo "
\n";
- require_once "resources/persist_form.php";
- echo persistform($_POST);
- echo "
";
- require_once "resources/footer.php";
- return;
+ $_SESSION["message"] = $msg_error;
+ header("Location: usersupdate.php?id=".$user_uuid);
+ exit;
}
//check to see if user language is set
@@ -239,6 +226,7 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
$sql .= "'".$user_uuid."' ";
$sql .= ")";
$db->exec(check_sql($sql));
+ unset($sql);
}
else {
if (strlen($user_time_zone) == 0) {
@@ -257,6 +245,7 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
$sql .= "and user_setting_subcategory = 'time_zone' ";
$sql .= "and user_uuid = '".$user_uuid."' ";
$db->exec(check_sql($sql));
+ unset($sql);
}
}
}
@@ -288,17 +277,9 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
}
}
- //if the template has not been assigned by the superadmin
- //if (strlen($_SESSION['domain']['template']['name']) == 0) {
- //set the session theme for the active user
- // if ($_SESSION["username"] == $username) {
- // $_SESSION['domain']['template']['name'] = $user_template_name;
- // }
- //}
-
//sql update
$sql = "update v_users set ";
- if (if_group("admin") && strlen($_POST["username"])> 0) {
+ if (strlen($username) > 0 && $username != $username_old) {
$sql .= "username = '$username', ";
}
if (strlen($password) > 0 && $confirm_password == $password) {
@@ -322,63 +303,57 @@ if (count($_POST) > 0 && $_POST["persistform"] != "1") {
else {
$sql .= "contact_uuid = '$contact_uuid' ";
}
- if (strlen($user_uuid)> 0) {
- $sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "and user_uuid = '$user_uuid' ";
- }
- else {
- $sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "and username = '$username' ";
- }
+ $sql .= "where domain_uuid = '$domain_uuid' ";
+ $sql .= "and user_uuid = '$user_uuid' ";
$db->exec(check_sql($sql));
- //update the user_status
- $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
- $switch_cmd .= "callcenter_config agent set status ".$username."@".$_SESSION['domain_name']." '".$user_status."'";
- $switch_result = event_socket_request($fp, 'api '.$switch_cmd);
- //update the user state
- $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
- $response = event_socket_request($fp, $cmd);
+ // if call center installed
+ if (file_exists($_SERVER['DOCUMENT_ROOT'].PROJECT_PATH."/app/call_center/app_config.php")) {
- //clear the template so it will rebuild in case the template was changed
- //$_SESSION["template_content"] = '';
+ // update agent and tiers tables
+ $sql = "update v_call_center_agents set agent_name = '".$username."' where domain_uuid = '".$domain_uuid."' and agent_name = '".$username_old."' ";
+ $db->exec(check_sql($sql));
+ unset($sql);
+
+ $sql = "update v_call_center_tiers set agent_name = '".$username."' where domain_uuid = '".$domain_uuid."' and agent_name = '".$username_old."' ";
+ $db->exec(check_sql($sql));
+ unset($sql);
+
+ //syncrhonize the configuration
+ save_call_center_xml();
+
+ //update the user_status
+ $fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
+ $switch_cmd .= "callcenter_config agent set status ".$username."@".$_SESSION['domain_name']." '".$user_status."'";
+ $switch_result = event_socket_request($fp, 'api '.$switch_cmd);
+
+ //update the user state
+ $cmd = "api callcenter_config agent set state ".$username."@".$_SESSION['domain_name']." Waiting";
+ $response = event_socket_request($fp, $cmd);
+
+ }
//redirect the browser
$_SESSION["message"] = $text['message-update'];
- if (if_group("admin") || if_group("superadmin")) {
- header("Location: usersupdate.php?id=".$user_uuid);
- }
- else {
- header("Location: usersupdate.php");
- }
+ header("Location: index.php");
return;
+
}
else {
+
$sql = "select * from v_users ";
//allow admin access
if (if_group("admin") || if_group("superadmin")) {
- if (strlen($user_uuid)> 0) {
- $sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "and user_uuid = '$user_uuid' ";
- }
- else {
- $sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "and username = '$username' ";
- }
- }
- else {
$sql .= "where domain_uuid = '$domain_uuid' ";
- $sql .= "and username = '$username' ";
+ $sql .= "and user_uuid = '$user_uuid' ";
}
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$user_uuid = $row["user_uuid"];
- if (if_group("admin")) {
- $username = $row["username"];
- }
+ $username = $row["username"];
$password = $row["password"];
$api_key = $row["api_key"];
$user_enabled = $row["user_enabled"];
@@ -389,6 +364,7 @@ else {
//get the groups the user is a member of
//group_members function defined in config.php
$group_members = group_members($db, $user_uuid);
+
}
//include the header
@@ -427,7 +403,14 @@ else {
echo " ";
echo " ".$text['label-username'].": ";
- echo " $username ";
+ echo " ";
+ if (if_group("admin") || if_group("superadmin")) {
+ echo " ";
+ }
+ else {
+ echo " ".$username;
+ }
+ echo " ";
echo " ";
echo " ";
@@ -463,6 +446,7 @@ else {
}
echo " \n";
echo " \n";
+ $assigned_groups[] = $field['group_name'];
}
}
echo "\n";
@@ -476,13 +460,8 @@ else {
echo " \n";
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach($result as $field) {
- if ($field['group_name'] == "superadmin") {
- //only show the superadmin group to other users in the superadmin group
- if (if_group("superadmin")) {
- echo "".$field['group_name']." \n";
- }
- }
- else {
+ if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; } //only show the superadmin group to other users in the superadmin group
+ if (!in_array($field["group_name"], $assigned_groups)) {
echo "".$field['group_name']." \n";
}
}
@@ -592,40 +571,6 @@ else {
echo " \n";
}
- //if the template has not been assigned by the superadmin
- /*
- if (strlen($_SESSION['domain']['template']['name']) == 0) {
- echo " \n";
- echo " \n";
- echo " Template: \n";
- echo " \n";
- echo " \n";
- echo " \n";
- echo " \n";
- $theme_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes';
- if ($handle = opendir($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/themes')) {
- while (false !== ($dir_name = readdir($handle))) {
- if ($dir_name != "." && $dir_name != ".." && $dir_name != ".svn" && is_dir($theme_dir.'/'.$dir_name)) {
- $dir_label = str_replace('_', ' ', $dir_name);
- $dir_label = str_replace('-', ' ', $dir_label);
- if ($dir_name == $user_settings['domain']['template']['name']) {
- echo " $dir_label \n";
- }
- else {
- echo " $dir_label \n";
- }
- }
- }
- closedir($handle);
- }
- echo " \n";
- echo " \n";
- echo " Select a template to set as the default and then press save. \n";
- echo " \n";
- echo " \n";
- }
- */
-
echo " \n";
echo " \n";
echo " ".$text['label-user_language'].": \n";
@@ -726,7 +671,7 @@ else {
echo " ";
echo " ";
echo " ";
- echo " ";
+ echo " ";
echo " ";
echo " ";
echo " ";