Portions created by the Initial Developer are Copyright (C) 2008-2013 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; if (permission_exists("user_add") || permission_exists("user_edit") || permission_exists("user_delete") || if_group("superadmin")) { //access allowed } else { echo "access denied"; return; } //add multi-lingual support require_once "app_languages.php"; foreach($text as $key => $value) { $text[$key] = $value[$_SESSION['domain']['language']['code']]; } //get data from the db 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); if (if_superadmin($superadmins, $user_uuid)) { if (!if_group("superadmin")) { echo "access denied"; exit; } } //delete the group from the user if ($_GET["a"] == "delete" && permission_exists("user_delete")) { //set the variables $group_name = check_str($_GET["group_name"]); //delete the group from the users $sql = "delete from v_group_users "; $sql .= "where domain_uuid = '$domain_uuid' "; $sql .= "and group_name = '$group_name' "; $sql .= "and user_uuid = '$user_uuid' "; $db->exec(check_sql($sql)); //redirect the user require_once "resources/header.php"; echo "\n"; echo "
".$text['message-update']."
"; require_once "resources/footer.php"; return; } //get the user settings $sql = "select * from v_user_settings "; $sql .= "where user_uuid = '".$user_uuid."' "; $sql .= "and user_setting_enabled = 'true' "; $prep_statement = $db->prepare($sql); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); foreach($result as $row) { $name = $row['user_setting_name']; $category = $row['user_setting_category']; $subcategory = $row['user_setting_subcategory']; if (strlen($subcategory) == 0) { //$$category[$name] = $row['domain_setting_value']; $user_settings[$category][$name] = $row['user_setting_value']; } else { $user_settings[$category][$subcategory][$name] = $row['user_setting_value']; } } } if (count($_POST) > 0 && $_POST["persistform"] != "1") { $user_uuid = $_REQUEST["id"]; $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_time_zone = check_str($_POST["user_time_zone"]); $contact_uuid = check_str($_POST["contact_uuid"]); $group_member = check_str($_POST["group_member"]); $user_enabled = check_str($_POST["user_enabled"]); $api_key = check_str($_POST["api_key"]); 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"; } 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; } //get the number of rows in v_user_settings $sql = "select count(*) as num_rows from v_user_settings "; $sql .= "where user_setting_category = 'domain' "; $sql .= "and user_setting_subcategory = 'time_zone' "; $sql .= "and user_uuid = '".$user_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $row = $prep_statement->fetch(PDO::FETCH_ASSOC); if ($row['num_rows'] == 0) { $user_setting_uuid = uuid(); $sql = "insert into v_user_settings "; $sql .= "("; $sql .= "domain_uuid, "; $sql .= "user_setting_uuid, "; $sql .= "user_setting_category, "; $sql .= "user_setting_subcategory, "; $sql .= "user_setting_name, "; $sql .= "user_setting_value, "; $sql .= "user_setting_enabled, "; $sql .= "user_uuid "; $sql .= ") "; $sql .= "values "; $sql .= "("; $sql .= "'".$_SESSION["domain_uuid"]."', "; $sql .= "'".$user_setting_uuid."', "; $sql .= "'domain', "; $sql .= "'time_zone', "; $sql .= "'name', "; $sql .= "'".$user_time_zone."', "; $sql .= "'true', "; $sql .= "'".$user_uuid."' "; $sql .= ")"; $db->exec(check_sql($sql)); } else { if (strlen($user_time_zone) == 0) { $sql = "delete from v_user_settings "; $sql .= "where user_setting_category = 'domain' "; $sql .= "and user_setting_subcategory = 'time_zone' "; $sql .= "and user_uuid = '".$user_uuid."' "; $db->exec(check_sql($sql)); unset($sql); } else { $sql = "update v_user_settings set "; $sql .= "user_setting_value = '".$user_time_zone."', "; $sql .= "user_setting_enabled = 'true' "; $sql .= "where user_setting_category = 'domain' "; $sql .= "and user_setting_subcategory = 'time_zone' "; $sql .= "and user_uuid = '".$user_uuid."' "; $db->exec(check_sql($sql)); } } } //assign the user to the group if (strlen($_REQUEST["group_name"]) > 0) { $sql_insert = "insert into v_group_users "; $sql_insert .= "("; $sql_insert .= "group_user_uuid, "; $sql_insert .= "domain_uuid, "; $sql_insert .= "group_name, "; $sql_insert .= "user_uuid "; $sql_insert .= ")"; $sql_insert .= "values "; $sql_insert .= "("; $sql_insert .= "'".uuid()."', "; $sql_insert .= "'$domain_uuid', "; $sql_insert .= "'".$_REQUEST["group_name"]."', "; $sql_insert .= "'$user_uuid' "; $sql_insert .= ")"; if ($_REQUEST["group_name"] == "superadmin") { //only a user in the superadmin group can add other users to that group if (if_group("superadmin")) { $db->exec($sql_insert); } } else { $db->exec($sql_insert); } } //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) { $sql .= "username = '$username', "; } if (strlen($password) > 0 && $confirm_password == $password) { //salt used with the password to create a one way hash $salt = generate_password('20', '4'); //set the password $sql .= "password = '".md5($salt.$password)."', "; $sql .= "salt = '".$salt."', "; } if (strlen($api_key) > 0) { $sql .= "api_key = '$api_key', "; } else { $sql .= "api_key = null, "; } $sql .= "user_status = '$user_status', "; $sql .= "user_enabled = '$user_enabled', "; if (strlen($contact_uuid) == 0) { $sql .= "contact_uuid = null "; } 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' "; } $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); //clear the template so it will rebuild in case the template was changed //$_SESSION["template_content"] = ''; //redirect the browser require_once "resources/header.php"; if (if_group("admin")) { echo "\n"; } else { echo "\n"; } echo "
".$text['message-update']."
"; require_once "resources/footer.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' "; } $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"]; } $password = $row["password"]; $api_key = $row["api_key"]; $user_enabled = $row["user_enabled"]; $contact_uuid = $row["contact_uuid"]; $user_status = $row["user_status"]; } //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 require_once "resources/header.php"; $page["title"] = $text['title-user_edit']; //show the content $table_width ='width="100%"'; echo "
"; echo "
"; echo "\n"; echo "\n"; echo ""; echo " "; echo "
\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['header-user_edit']."\n"; echo " "; echo " "; echo "
\n"; echo " ".$text['description-user_edit']."\n"; echo "
\n"; echo "
\n"; echo ""; echo "\n"; echo " \n"; echo "\n"; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo "
".$text['label-user_info']."
".$text['label-username'].":$username
".$text['label-password'].":
".$text['label-confirm_password'].":
".$text['label-groups'].":"; echo "\n"; $sql = "SELECT * FROM v_group_users "; $sql .= "where domain_uuid=:domain_uuid "; $sql .= "and user_uuid=:user_uuid "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->bindParam(':domain_uuid', $domain_uuid); $prep_statement->bindParam(':user_uuid', $user_uuid); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); foreach($result as $field) { if (strlen($field['group_name']) > 0) { echo "\n"; echo " \n"; echo " \n"; echo "\n"; } } echo "
".$field['group_name']."\n"; if (permission_exists('group_member_delete') || if_group("superadmin")) { echo " $v_link_label_delete\n"; } echo "
\n"; echo "
\n"; $sql = "SELECT * FROM v_groups "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); echo ""; echo "\n"; unset($sql, $result); echo "
"; echo "
"; echo "
"; echo ""; echo " \n"; echo " \n"; echo " \n"; echo " "; echo " "; echo " "; echo " "; if ($_SESSION['user_status_display'] == "false") { //hide the user_status when it is set to false } else { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } //if the template has not been assigned by the superadmin /* if (strlen($_SESSION['domain']['template']['name']) == 0) { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } */ echo " \n"; echo " \n"; echo " \n"; echo " \n"; if (file_exists($_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/app/api/app_config.php')) { echo " "; echo " "; echo " "; echo " "; } echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['label-additional_info']."
".$text['label-contact'].":\n"; $sql = " select contact_uuid, contact_organization, contact_name_given, contact_name_family from v_contacts "; $sql .= " where domain_uuid = '".$_SESSION['domain_uuid']."' "; $sql .= " order by contact_organization asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); unset ($prep_statement, $sql); echo "\n"; echo "
\n"; echo $text['description-contact']."\n"; if (strlen($contact_uuid) > 0) { echo " ".$text['description-contact_view']."\n"; } echo "
\n"; echo " ".$text['label-status'].":\n"; echo " \n"; $cmd = "'".PROJECT_PATH."/app/calls_active/v_calls_exec.php?cmd=callcenter_config+agent+set+status+".$_SESSION['username']."@".$_SESSION['domain_name']."+'+this.value"; echo " \n"; echo "
\n"; echo " ".$text['description-status']."
\n"; echo "
\n"; echo " Template: \n"; echo " \n"; echo " \n"; echo "
\n"; echo " Select a template to set as the default and then press save.
\n"; echo "
\n"; echo " ".$text['label-time_zone'].": \n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['description-time_zone']."
\n"; echo "
".$text['label-api_key'].":\n"; echo " \n"; if (strlen($text['description-api_key']) > 0) { echo "
".$text['description-api_key']."
\n"; } echo "
\n"; echo " ".$text['label-enabled'].":\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-enabled']."\n"; echo "
"; echo "
"; echo "
\n"; echo ""; echo " "; echo " "; echo " "; echo "
"; echo " "; echo " "; echo " "; echo "
"; echo "
"; echo "
"; echo "
"; //include the footer require_once "resources/footer.php"; ?>