Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane Luis Daniel Lucio Quiroz */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //add multi-lingual support $language = new text; $text = $language->get(); //get user uuid if ( (is_uuid($_REQUEST["id"]) && permission_exists('user_edit')) || (is_uuid($_REQUEST["id"]) && $_REQUEST["id"] == $_SESSION['user_uuid']) ) { $user_uuid = check_str($_REQUEST["id"]); $action = 'edit'; } else if (permission_exists('user_add') && $_REQUEST["id"] == '') { $user_uuid = uuid(); $action = 'add'; } else { // load users own account header("Location: user_edit.php?id=".$_SESSION['user_uuid']); exit; } //get total user count from the database, check limit, if defined if (permission_exists('user_add') && $action == 'add' && $_SESSION['limit']['users']['numeric'] != '') { $sql = "select count(user_uuid) as num_rows from v_users where domain_uuid = '".$_SESSION['domain_uuid']."' "; $prep_statement = $db->prepare($sql); if ($prep_statement) { $prep_statement->execute(); $row = $prep_statement->fetch(PDO::FETCH_ASSOC); $total_users = $row['num_rows']; } unset($prep_statement, $row); if ($total_users >= $_SESSION['limit']['users']['numeric']) { messages::add($text['message-maximum_users'].' '.$_SESSION['limit']['users']['numeric'], 'negative'); header('Location: users.php'); exit; } } //required to be a superadmin to update an account that is a member of the superadmin group if (permission_exists('user_edit') && $action == 'edit') { $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_uuid = check_str($_GET["group_uuid"]); //delete the group from the users $sql = "delete from v_group_users "; $sql .= "where group_uuid = '".$group_uuid."' "; $sql .= "and user_uuid = '".$user_uuid."' "; $db->exec(check_sql($sql)); //redirect the user messages::add($text['message-update']); header("Location: user_edit.php?id=".$user_uuid); return; } if (count($_POST) > 0 && $_POST["persistform"] != "1") { //get the HTTP values and set as variables if (permission_exists('user_edit') && $action == 'edit') { $user_uuid = $_REQUEST["id"]; $username_old = check_str($_POST["username_old"]); } $domain_uuid = check_str($_POST["domain_uuid"]); $username = check_str($_POST["username"]); $password = check_str($_POST["password"]); $password_confirm = check_str($_POST["password_confirm"]); $user_status = check_str($_POST["user_status"]); $user_language = check_str($_POST["user_language"]); $user_time_zone = check_str($_POST["user_time_zone"]); if (permission_exists('user_edit') && $action == 'edit') { $contact_uuid = check_str($_POST["contact_uuid"]); } else if (permission_exists('user_add') && $action == 'add') { $user_email = check_str($_POST["user_email"]); $contact_organization = check_str($_POST["contact_organization"]); $contact_name_given = check_str($_POST["contact_name_given"]); $contact_name_family = check_str($_POST["contact_name_family"]); } $group_uuid_name = check_str($_POST["group_uuid_name"]); $user_enabled = check_str($_POST["user_enabled"]); $api_key = check_str($_POST["api_key"]); //check required values if ($username == '') { $msg_error = $text['message-required'].$text['label-username']; } if (permission_exists('user_edit') && $action == 'edit') { if ($username != $username_old && $username != '') { $sql = "select count(*) as num_rows from v_users where username = '".$username."'"; if ($_SESSION["user"]["unique"]["text"] != "global"){ $sql .= " and domain_uuid = '".$domain_uuid."'"; } $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 != '' && $password != $password_confirm) { $msg_error = $text['message-password_mismatch']; } if (permission_exists('user_add') && $action == 'add') { if ($password == '') { $msg_error = $text['message-password_blank']; } if ($user_email == '') { $msg_error = $text['message-required'].$text['label-email']; } if ($group_uuid_name == '') { $msg_error = $text['message-required'].$text['label-group']; } } if ($msg_error != '') { messages::add($msg_error, 'negative'); if ($action == 'edit') { header("Location: user_edit.php?id=".$user_uuid); } else { header("Location: user_edit.php"); } exit; } if (!check_password_strength($password, $text)) { if ($action == 'edit') { header("Location: user_edit.php?id=".$user_uuid); } else { header("Location: user_edit.php"); } exit; } //set initial array indexes $i = $n = $x = $c = 0; //check to see if user language is set $sql = "select user_setting_uuid, user_setting_value from v_user_settings "; $sql .= "where user_setting_category = 'domain' "; $sql .= "and user_setting_subcategory = 'language' "; $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['user_setting_uuid'] == '' && $user_language != '') { //add user setting to array for insert $array['user_settings'][$i]['user_setting_uuid'] = uuid(); $array['user_settings'][$i]['user_uuid'] = $user_uuid; $array['user_settings'][$i]['domain_uuid'] = $domain_uuid; $array['user_settings'][$i]['user_setting_category'] = 'domain'; $array['user_settings'][$i]['user_setting_subcategory'] = 'language'; $array['user_settings'][$i]['user_setting_name'] = 'code'; $array['user_settings'][$i]['user_setting_value'] = $user_language; $array['user_settings'][$i]['user_setting_enabled'] = 'true'; $i++; } else { if ($row['user_setting_value'] == '' || $user_language == '') { $sql = "delete from v_user_settings "; $sql .= "where user_setting_category = 'domain' "; $sql .= "and user_setting_subcategory = 'language' "; $sql .= "and user_uuid = '".$user_uuid."' "; $db->exec(check_sql($sql)); unset($sql); } else { //add user setting to array for update $array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid']; $array['user_settings'][$i]['user_uuid'] = $user_uuid; $array['user_settings'][$i]['domain_uuid'] = $domain_uuid; $array['user_settings'][$i]['user_setting_category'] = 'domain'; $array['user_settings'][$i]['user_setting_subcategory'] = 'language'; $array['user_settings'][$i]['user_setting_name'] = 'code'; $array['user_settings'][$i]['user_setting_value'] = $user_language; $array['user_settings'][$i]['user_setting_enabled'] = 'true'; $i++; } } } unset($sql, $prep_statement, $row); //check to see if user time zone is set $sql = "select user_setting_uuid, user_setting_value 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['user_setting_uuid'] == '' && $user_time_zone != '') { //add user setting to array for insert $array['user_settings'][$i]['user_setting_uuid'] = uuid(); $array['user_settings'][$i]['user_uuid'] = $user_uuid; $array['user_settings'][$i]['domain_uuid'] = $domain_uuid; $array['user_settings'][$i]['user_setting_category'] = 'domain'; $array['user_settings'][$i]['user_setting_subcategory'] = 'time_zone'; $array['user_settings'][$i]['user_setting_name'] = 'name'; $array['user_settings'][$i]['user_setting_value'] = $user_time_zone; $array['user_settings'][$i]['user_setting_enabled'] = 'true'; $i++; } else { if ($row['user_setting_value'] == '' || $user_time_zone == '') { $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 { //add user setting to array for update $array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid']; $array['user_settings'][$i]['user_uuid'] = $user_uuid; $array['user_settings'][$i]['domain_uuid'] = $domain_uuid; $array['user_settings'][$i]['user_setting_category'] = 'domain'; $array['user_settings'][$i]['user_setting_subcategory'] = 'time_zone'; $array['user_settings'][$i]['user_setting_name'] = 'name'; $array['user_settings'][$i]['user_setting_value'] = $user_time_zone; $array['user_settings'][$i]['user_setting_enabled'] = 'true'; $i++; } } } //assign the user to the group if ((permission_exists('user_add') || permission_exists('user_edit')) && $_REQUEST["group_uuid_name"] != '') { $group_data = explode('|', $group_uuid_name); $group_uuid = $group_data[0]; $group_name = $group_data[1]; //only a superadmin can add other superadmins or admins, admins can only add other admins switch ($group_name) { case "superadmin": if (!if_group("superadmin")) { break; } case "admin": if (!if_group("superadmin") && !if_group("admin")) { break; } default: //add group user to array for insert $array['group_users'][$n]['group_user_uuid'] = uuid(); $array['group_users'][$n]['domain_uuid'] = $domain_uuid; $array['group_users'][$n]['group_name'] = $group_name; $array['group_users'][$n]['group_uuid'] = $group_uuid; $array['group_users'][$n]['user_uuid'] = $user_uuid; $n++; } } //update domain, if changed if ((permission_exists('user_add') || permission_exists('user_edit')) && permission_exists('user_domain')) { //adjust group user records $sql = "select group_user_uuid from v_group_users "; $sql .= "where user_uuid = '".$user_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as $row) { //add group user to array for update $array['group_users'][$n]['group_user_uuid'] = $row['group_user_uuid']; $array['group_users'][$n]['domain_uuid'] = $domain_uuid; $n++; } } unset($sql, $prep_statement, $result, $row); //adjust user setting records $sql = "select user_setting_uuid from v_user_settings "; $sql .= "where user_uuid = '".$user_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); foreach ($result as $row) { //add user setting to array for update $array['user_settings'][$i]['user_setting_uuid'] = $row['user_setting_uuid']; $array['user_settings'][$i]['domain_uuid'] = $domain_uuid; $i++; } } unset($sql, $prep_statement, $result, $row); //unassign any foreign domain groups $sql = "delete from v_group_users where "; $sql .= "domain_uuid = '".$domain_uuid."' "; $sql .= "and user_uuid = '".$user_uuid."' "; $sql .= "and group_uuid not in ("; $sql .= " select group_uuid from v_groups where domain_uuid = '".$domain_uuid."' or domain_uuid is null "; $sql .= ") "; $db->exec(check_sql($sql)); unset($sql); } //add contact to array for insert if ($action == 'add' && permission_exists('user_add') && permission_exists('contact_add')) { $contact_uuid = uuid(); $array['contacts'][$c]['domain_uuid'] = $domain_uuid; $array['contacts'][$c]['contact_uuid'] = $contact_uuid; $array['contacts'][$c]['contact_type'] = 'user'; $array['contacts'][$c]['contact_organization'] = $contact_organization; $array['contacts'][$c]['contact_name_given'] = $contact_name_given; $array['contacts'][$c]['contact_name_family'] = $contact_name_family; $array['contacts'][$c]['contact_nickname'] = $username; $c++; if (permission_exists('contact_email_add')) { $contact_email_uuid = uuid(); $array['contact_emails'][$c]['contact_email_uuid'] = $contact_email_uuid; $array['contact_emails'][$c]['domain_uuid'] = $domain_uuid; $array['contact_emails'][$c]['contact_uuid'] = $contact_uuid; $array['contact_emails'][$c]['email_address'] = $user_email; $array['contact_emails'][$c]['email_primary'] = '1'; $c++; } } //add user setting to array for update $array['users'][$x]['user_uuid'] = $user_uuid; $array['users'][$x]['domain_uuid'] = $domain_uuid; if ($username != '' && $username != $username_old) { $array['users'][$x]['username'] = $username; } if ($password != '' && $password == $password_confirm) { $salt = uuid(); $array['users'][$x]['password'] = md5($salt.$password); $array['users'][$x]['salt'] = $salt; } $array['users'][$x]['user_status'] = $user_status; if (permission_exists('user_add') || permission_exists('user_edit')) { $array['users'][$x]['api_key'] = ($api_key != '') ? $api_key : null; $array['users'][$x]['user_enabled'] = $user_enabled; $array['users'][$x]['contact_uuid'] = ($contact_uuid != '') ? $contact_uuid : null; if ($action == 'add') { $array['users'][$x]['add_user'] = $_SESSION["user"]["username"]; $array['users'][$x]['add_date'] = date("Y-m-d H:i:s.uO"); } } $x++; //if call center installed if ( $action == 'edit' && permission_exists('user_edit') && $username != $username_old && file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php") ) { //update call center agent table $sql = "select call_center_agent_uuid from v_call_center_agents "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and agent_name = '".$username_old."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $a = 0; foreach ($result as $row) { $array['call_center_agents'][$a]['call_center_agent_uuid'] = $row['call_center_agent_uuid']; $array['call_center_agents'][$a]['agent_name'] = $username; $a++; } } unset($sql, $prep_statement, $result); //update call center tiers table $sql = "select call_center_tier_uuid from v_call_center_tiers "; $sql .= "where domain_uuid = '".$domain_uuid."' "; $sql .= "and agent_name = '".$username_old."' "; $prep_statement = $db->prepare(check_sql($sql)); if ($prep_statement) { $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_ASSOC); $t = 0; foreach ($result as $row) { $array['call_center_tiers'][$t]['call_center_tier_uuid'] = $row['call_center_tier_uuid']; $array['call_center_tiers'][$t]['agent_name'] = $username; $t++; } } unset($sql, $prep_statement, $result); } //add the user_edit permission $p = new permissions; $p->add("user_setting_add", "temp"); $p->add("user_setting_edit", "temp"); $p->add("user_edit", "temp"); //save the data $database = new database; $database->app_name = 'users'; $database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207'; $database->save($array); //$message = $database->message; //remove the temporary permission $p->delete("user_setting_add", "temp"); $p->delete("user_setting_edit", "temp"); $p->delete("user_edit", "temp"); //if call center installed if ( $action == 'edit' && permission_exists('user_edit') && $username != $username_old && file_exists($_SERVER["PROJECT_ROOT"]."/app/call_center/app_config.php") ) { //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['domains'][$domain_uuid]['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['domains'][$domain_uuid]['domain_name']." Waiting"; $response = event_socket_request($fp, $cmd); } //redirect the browser messages::add($text['message-update']); if ($_REQUEST['action'] == $text['button-add'] || !permission_exists('user_edit')) { header("Location: user_edit.php?id=".$user_uuid); } else { header("Location: users.php"); } return; } //pre-populate the form if ($action == 'edit') { //get user data $sql = "select * from v_users where user_uuid = '".$user_uuid."' "; if (!permission_exists('user_all')) { $sql .= "and domain_uuid = '".$domain_uuid."' "; } $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $row = $prep_statement->fetch(PDO::FETCH_NAMED); if (is_array($row) && sizeof($row) > 0) { $domain_uuid = $row["domain_uuid"]; $user_uuid = $row["user_uuid"]; $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"]; } else { header("Location: user_edit.php?id=".$_SESSION['user_uuid']); exit; } unset($sql, $prep_statement, $row); //get 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']; } } } } //include the header require_once "resources/header.php"; $document['title'] = $text['title-user_edit']; //show the content echo "\n"; echo "
\n"; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
".$text['header-user_edit']."\n"; if (permission_exists('user_add') || permission_exists('user_edit')) { echo " "; } echo " "; echo "
\n"; echo " ".$text['description-user_edit']."\n"; echo "
\n"; echo "
\n"; echo ""; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; if ($_SESSION['user_status_display'] != "false") { echo " \n"; echo " \n"; echo " \n"; echo " \n"; } if ($action == 'edit' && permission_exists("user_edit")) { echo " "; echo " "; echo " "; echo " "; } else if ($action == 'add' && permission_exists("user_add")) { echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; echo " "; } if ((permission_exists("user_add") && $action == 'add') || (permission_exists("user_edit") && $action == 'edit')) { echo " "; echo " "; echo " "; echo " "; if (permission_exists('user_domain')) { echo "\n"; echo "\n"; echo "\n"; echo "\n"; } else { echo ""; } 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"; } else { echo ""; } echo " "; echo " "; echo " "; echo "
".$text['label-username'].""; if (permission_exists("user_edit")) { echo " \n"; } else { echo " ".$username."\n"; echo " \n"; } echo "
".$text['label-password'].""; echo " "; echo " "; echo "
"; echo "
".$text['label-confirm_password'].""; echo " "; echo "
\n"; echo " ".$text['label-user_language']."\n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['description-user_language']."
\n"; echo "
\n"; echo " ".$text['label-time_zone']."\n"; echo " \n"; echo " \n"; echo "
\n"; echo " ".$text['description-time_zone']."
\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+".$username."@".$_SESSION['domains'][$domain_uuid]['domain_name']."+'+this.value"; echo " \n"; echo "
\n"; echo " ".$text['description-status']."
\n"; echo "
".$text['label-contact']."\n"; $sql = " select contact_uuid, contact_organization, contact_name_given, contact_name_family, contact_nickname from v_contacts "; $sql .= " where domain_uuid = '".$domain_uuid."' "; $sql .= " order by contact_organization desc, contact_name_family asc, contact_name_given asc, contact_nickname 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 "
".$text['label-email']."
".$text['label-first_name']."
".$text['label-last_name']."
".$text['label-company_name']."
".$text['label-group'.(($action == 'edit') ? 's' : null)].""; $sql = "select "; $sql .= " gu.*, g.domain_uuid as group_domain_uuid "; $sql .= "from "; $sql .= " v_group_users as gu, "; $sql .= " v_groups as g "; $sql .= "where "; $sql .= " gu.group_uuid = g.group_uuid "; $sql .= " and ("; $sql .= " g.domain_uuid = :domain_uuid "; $sql .= " or g.domain_uuid is null "; $sql .= " ) "; $sql .= " and gu.domain_uuid = :domain_uuid "; $sql .= " and gu.user_uuid = :user_uuid "; $sql .= "order by "; $sql .= " g.domain_uuid desc, "; $sql .= " g.group_name asc "; $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); if ($result_count > 0) { echo "\n"; foreach($result as $field) { if (strlen($field['group_name']) > 0) { echo "\n"; echo " \n"; if ($result_count > 1) { if (permission_exists('group_member_delete') || if_group("superadmin")) { echo " \n"; } } echo "\n"; $assigned_groups[] = $field['group_uuid']; } } echo "
"; echo $field['group_name'].(($field['group_domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['group_domain_uuid']]['domain_name'] : null); echo " \n"; echo " $v_link_label_delete\n"; echo "
\n"; } unset($sql, $prep_statement, $result, $result_count); $sql = "select * from v_groups "; $sql .= "where (domain_uuid = '".$domain_uuid."' or domain_uuid is null) "; if (sizeof($assigned_groups) > 0) { $sql .= "and group_uuid not in ('".implode("','",$assigned_groups)."') "; } $sql .= "order by domain_uuid desc, group_name asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $result = $prep_statement->fetchAll(PDO::FETCH_NAMED); $result_count = count($result); if ($result_count > 0) { if (isset($assigned_groups)) { echo "
\n"; } echo ""; if ($action == 'edit') { echo "\n"; } } unset($sql, $prep_statement, $result); echo "
\n"; echo " ".$text['label-domain']."\n"; echo "\n"; echo " \n"; echo "
\n"; echo $text['description-domain_name']."\n"; echo "
".$text['label-api_key']."\n"; echo " "; echo " "; 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 "
"; if ($action == 'edit') { echo " "; if (permission_exists("user_edit")) { echo " "; } } echo "
"; echo " "; echo "
"; echo "

"; echo "
"; echo "\n"; if (permission_exists("user_edit") && permission_exists('user_setting_view') && $action == 'edit') { require "user_settings.php"; } //include the footer require_once "resources/footer.php"; ?>