lang['confirm_delete_users']; $usernames = array(); if ( isset($_POST['delete']) ) { if ( isset($_POST['user_id']) ) { foreach ( $_POST['user_id'] as $user_id ) { $username = $db->query_first('SELECT username FROM ' . USERS_TABLE . " WHERE user_id='" . $user_id . "'"); $usernames[] = $username; } $names = implode(', ', $usernames); $confirm_text .= '

' . $names; } else { message_die('No users were selected for deletion.'); } } $this->set_vars(array( 'confirm_text' => $confirm_text, 'uri_parameter' => 'username', 'url_id' => ( sizeof($usernames) > 0 ) ? $names : (( isset($_GET['username']) ) ? $_GET['username'] : ''), 'script_name' => 'manage_users.php' . $SID) ); $this->assoc_buttons(array( 'submit' => array( 'name' => 'submit', 'process' => 'process_submit', 'check' => 'a_users_man'), 'update' => array( 'name' => 'update', 'process' => 'process_update', 'check' => 'a_users_man'), 'delete' => array( 'name' => 'delete', 'process' => 'process_delete', 'check' => 'a_users_man'), 'form' => array( 'name' => '', 'process' => 'display_list', 'check' => 'a_users_man')) ); $this->assoc_params(array( 'name' => array( 'name' => URI_NAME, 'process' => 'display_form', 'check' => 'a_users_man')) ); } function error_check() { global $db, $user; // Singular Update if ( isset($_POST['submit']) ) { // See if the user exists $sql = 'SELECT au.*, u.* FROM ' . USERS_TABLE . ' u LEFT JOIN ' . AUTH_USERS_TABLE . " au ON (u.user_id = au.user_id) WHERE u.username='" . $_POST[URI_NAME] . "'"; $result = $db->query($sql); if ( !$this->user_data = $db->fetch_record($result) ) { message_die($user->lang['error_user_not_found']); } $db->free_result($result); // Error-check the form $this->change_username = false; if ( $_POST['username'] != $_POST[URI_NAME] ) { // They changed the username, see if it's already registered $sql = 'SELECT user_id FROM ' . USERS_TABLE . " WHERE username='".$_POST['username']."'"; if ( $db->num_rows($db->query($sql)) > 0 ) { $this->fv->errors['username'] = $user->lang['fv_already_registered_username']; } $this->change_username = true; } $this->change_password = false; if ( (!empty($_POST['new_user_password1'])) || (!empty($_POST['new_user_password2'])) ) { $this->fv->matching_passwords('new_user_password1', 'new_user_password2', $user->lang['fv_match_password']); $this->change_password = true; } $this->fv->is_number(array( 'user_alimit' => $user->lang['fv_number'], 'user_elimit' => $user->lang['fv_number'], 'user_ilimit' => $user->lang['fv_number'], 'user_nlimit' => $user->lang['fv_number'], 'user_rlimit' => $user->lang['fv_number']) ); // Make sure any members associated with this account aren't associated with another account if ( (isset($_POST['member_id'])) && (is_array($_POST['member_id'])) ) { // Build array of member_id => member_name $member_names = array(); $sql = 'SELECT member_id, member_name FROM ' . MEMBERS_TABLE . ' ORDER BY member_name'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $member_names[ $row['member_id'] ] = $row['member_name']; } $db->free_result($result); $sql = 'SELECT member_id FROM ' . MEMBER_USER_TABLE . ' WHERE member_id IN (' . implode(', ', $_POST['member_id']) . ') AND user_id != ' . $this->user_data['user_id']; $result = $db->query($sql); $fv_member_id = ''; while ( $row = $db->fetch_record($result) ) { // This member's associated with another account $fv_member_id .= sprintf($user->lang['fv_member_associated'], $member_names[ $row['member_id'] ]) . '
'; } $db->free_result($result); if ( $fv_member_id != '' ) { $this->fv->errors['member_id'] = $fv_member_id; } } } // Mass Update elseif ( isset($_POST['update']) ) { } // Mass Delete elseif ( isset($_POST['delete']) ) { } elseif ( isset($_GET[URI_NAME]) ) { // See if the user exists $sql = 'SELECT au.*, u.* FROM ' . USERS_TABLE . ' u LEFT JOIN ' . AUTH_USERS_TABLE . " au ON (u.user_id = au.user_id) WHERE u.username='" . $_GET[URI_NAME] . "'"; $result = $db->query($sql); if ( !$this->user_data = $db->fetch_record($result) ) { message_die($user->lang['error_user_not_found']); } $db->free_result($result); } return $this->fv->is_error(); } // --------------------------------------------------------- // Process Submit // --------------------------------------------------------- function process_submit() { global $db, $eqdkp, $user, $tpl, $pm; global $SID, $user_id; $user_id = $this->user_data['user_id']; // // Build the query // // User settings $sql = 'UPDATE ' . USERS_TABLE . " SET"; if ( $this->change_username ) { $sql .= " username='".$_POST['username']."', "; } if ( $this->change_password ) { $sql .= " user_password='".md5($_POST['new_user_password1'])."', "; } $sql .= " user_email='".$_POST['user_email']."', "; $sql .= " user_alimit='".$_POST['user_alimit']."', user_elimit='".$_POST['user_elimit']."', user_ilimit='".$_POST['user_ilimit']."', user_nlimit='".$_POST['user_nlimit']."', user_rlimit='".$_POST['user_rlimit']."', "; $sql .= " user_lang='".$_POST['user_lang']."', user_style='".$_POST['user_style']."', user_active='".$_POST['user_active']."'"; $sql .= " WHERE user_id='".$this->user_data['user_id']."'"; if ( !($result = $db->query($sql)) ) { message_die('Could not update user information', '', __FILE__, __LINE__, $sql); } // Permissions $sql = 'SELECT auth_id, auth_value FROM ' . AUTH_OPTIONS_TABLE . ' ORDER BY auth_id'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $r_auth_id = $row['auth_id']; $r_auth_value = $row['auth_value']; $chk_auth_value = ( $user->check_auth($r_auth_value, false, $user_id) ) ? 'Y' : 'N'; $db_auth_value = ( isset($_POST[$r_auth_value]) ) ? 'Y' : 'N'; if ( $chk_auth_value != $db_auth_value ) { $this->update_auth_users($r_auth_id, $db_auth_value); } } $db->free_result($result); // Users -> Members associations $sql = 'DELETE FROM ' . MEMBER_USER_TABLE . ' WHERE user_id = ' . $this->user_data['user_id']; $db->query($sql); if ( (isset($_POST['member_id'])) && (is_array($_POST['member_id'])) ) { $sql = 'INSERT INTO ' . MEMBER_USER_TABLE . ' (member_id, user_id) VALUES '; $query = array(); foreach ( $_POST['member_id'] as $member_id ) { $query[] = '(' . $member_id . ', ' . $this->user_data['user_id'] . ')'; } $sql .= implode(', ', $query); $db->query($sql); } // See if any plugins need to update the DB $pm->do_hooks('/admin/manage_users.php?action=update'); $this->admin_die($user->lang['update_settings_success']); } // --------------------------------------------------------- // Process Mass Update // --------------------------------------------------------- function process_update() { global $db, $eqdkp, $user, $tpl, $pm; global $SID; if ( isset($_POST['user_id']) ) { $user_ids = $_POST['user_id']; // Delete existing permissions for these users $sql = 'DELETE FROM ' . AUTH_USERS_TABLE . ' WHERE user_id IN (' . implode(', ', $user_ids) . ')'; $db->query($sql); // Permissions $sql = 'SELECT auth_id, auth_value FROM ' . AUTH_OPTIONS_TABLE . ' ORDER BY auth_id'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $permissions[ $row['auth_id'] ] = $row['auth_value']; } $db->free_result($result); foreach ( $user_ids as $user_id ) { $query = array(); $sql = 'INSERT INTO ' . AUTH_USERS_TABLE . ' (user_id, auth_id, auth_setting) VALUES '; foreach ( $permissions as $auth_id => $auth_value ) { $query[] = "('" . $user_id . "', '" . $auth_id . "', " . (( isset($_POST[$auth_value]) ) ? "'Y'" : "'N'") . ')'; } $db->query($sql . implode(', ', $query)); } $this->admin_die($user->lang['admin_set_perms_success']); } else { message_die('No users were selected for updating.'); } } // --------------------------------------------------------- // Process (Mass) Delete // --------------------------------------------------------- function process_confirm() { global $db, $eqdkp, $user, $tpl, $pm; global $SID; if ( isset($_POST['username']) ) { $usernames = explode(', ', $_POST['username']); // Find user IDs $user_ids = array(); $sql = 'SELECT user_id, username FROM ' . USERS_TABLE . " WHERE username IN ('" . implode("', '", $usernames) . "')"; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $user_ids[ $row['username'] ] = $row['user_id']; } $db->free_result($result); // Delete from auth_user $sql = 'DELETE FROM ' . AUTH_USERS_TABLE . ' WHERE user_id IN (' . implode(', ', $user_ids) . ')'; $db->query($sql); // Delete from users $sql = 'DELETE FROM ' . USERS_TABLE . ' WHERE user_id IN (' . implode(', ', $user_ids) . ')'; $db->query($sql); // Delete from member users $sql = 'DELETE FROM ' . MEMBER_USER_TABLE . ' WHERE user_id IN (' . implode(', ', $user_ids) . ')'; $db->query($sql); // Success message $success_message = ''; foreach ( $usernames as $username ) { $success_message .= sprintf($user->lang['admin_delete_user_success'], $username) . '
'; } $link_list = array( $user->lang['manage_users'] => 'manage_users.php' . $SID); $this->admin_die($success_message, $link_list); } else { message_die('No users were selected for deleting.'); } } // --------------------------------------------------------- // Process helper methods // --------------------------------------------------------- function update_auth_users($auth_id, $auth_setting = 'N', $check_query_type = true) { global $db, $user_id; $upd_ins = ( $check_query_type ) ? $this->switch_upd_ins($auth_id, $user_id) : 'upd'; if ( (empty($auth_id)) || (empty($user_id)) ) { return false; } if ( $upd_ins == 'upd' ) { $sql = 'UPDATE ' . AUTH_USERS_TABLE . " SET auth_setting='".$auth_setting."' WHERE auth_id='".$auth_id."' AND user_id='".$user_id."'"; } else { $sql = 'INSERT INTO ' . AUTH_USERS_TABLE . " (user_id, auth_id, auth_setting) VALUES ('".$user_id."','".$auth_id."','".$auth_setting."')"; } if ( !($result = $db->query($sql)) ) { return false; } return true; } function switch_upd_ins($auth_id, $user_id) { global $db; $sql = 'SELECT o.auth_value FROM ' . AUTH_OPTIONS_TABLE . ' o, ' . AUTH_USERS_TABLE . " u WHERE (u.auth_id = o.auth_id) AND (u.user_id='".$user_id."') AND u.auth_id='".$auth_id."'"; if ( $db->num_rows($db->query($sql)) > 0 ) { return 'upd'; } return 'ins'; } // --------------------------------------------------------- // Display // --------------------------------------------------------- function display_list() { global $db, $eqdkp, $user, $tpl, $pm; global $SID; $sort_order = array( 0 => array('u.username', 'u.username desc'), 1 => array('u.user_email', 'u.user_email desc'), 2 => array('u.user_lastvisit desc', 'u.user_lastvisit'), 3 => array('u.user_active desc', 'u.user_active'), 4 => array('s.session_id desc', 's.session_id') ); $current_order = switch_order($sort_order); $total_users = $db->query_first('SELECT count(*) FROM ' . USERS_TABLE); $start = ( isset($_GET['start']) ) ? $_GET['start'] : 0; $sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lastvisit, u.user_active, s.session_id FROM (' . USERS_TABLE . ' u LEFT JOIN ' . SESSIONS_TABLE . ' s ON u.user_id = s.session_user_id) GROUP BY u.username ORDER BY ' . $current_order['sql'] . ' LIMIT ' . $start . ',100'; if ( !($result = $db->query($sql)) ) { message_die('Could not obtain user information', '', __FILE__, __LINE__, $sql); } while ( $row = $db->fetch_record($result) ) { $user_online = ( !empty($row['session_id']) ) ? $user->lang['yes'] : $user->lang['no']; $user_active = ( $row['user_active'] == '1' ) ? $user->lang['yes'] : $user->lang['no']; $tpl->assign_block_vars('users_row', array( 'ROW_CLASS' => $eqdkp->switch_row_class(), 'U_MANAGE_USER' => 'manage_users.php'.$SID.'&' . URI_NAME . '='.$row['username'], 'USER_ID' => $row['user_id'], 'NAME_STYLE' => ( $user->check_auth('a_', false, $row['user_id']) ) ? 'font-weight: bold' : 'font-weight: none', 'USERNAME' => $row['username'], 'U_MAIL_USER' => ( !empty($row['user_email']) ) ? 'mailto:'.$row['user_email'] : '', 'EMAIL' => ( !empty($row['user_email']) ) ? $row['user_email'] : ' ', 'LAST_VISIT' => date($user->style['date_time'], $row['user_lastvisit']), 'ACTIVE' => $user_active, 'ONLINE' => $user_online) ); } $db->free_result($result); // // Build the user permissions // $user_permissions = array( // Events $user->lang['events'] => array( array('CBNAME' => 'a_event_add', 'CBCHECKED' => A_EVENT_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_event_upd', 'CBCHECKED' => A_EVENT_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_event_del', 'CBCHECKED' => A_EVENT_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_event_list', 'CBCHECKED' => U_EVENT_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_event_view', 'CBCHECKED' => U_EVENT_VIEW, 'TEXT' => $user->lang['view']) ), // Group adjustments $user->lang['group_adjustments'] => array( array('CBNAME' => 'a_groupadj_add', 'CBCHECKED' => A_GROUPADJ_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_groupadj_upd', 'CBCHECKED' => A_GROUPADJ_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_groupadj_del', 'CBCHECKED' => A_GROUPADJ_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Individual adjustments $user->lang['individual_adjustments'] => array( array('CBNAME' => 'a_indivadj_add', 'CBCHECKED' => A_INDIVADJ_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_indivadj_upd', 'CBCHECKED' => A_INDIVADJ_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_indivadj_del', 'CBCHECKED' => A_INDIVADJ_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Items $user->lang['items'] => array( array('CBNAME' => 'a_item_add', 'CBCHECKED' => A_ITEM_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_item_upd', 'CBCHECKED' => A_ITEM_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_item_del', 'CBCHECKED' => A_ITEM_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_item_list', 'CBCHECKED' => U_ITEM_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_item_view', 'CBCHECKED' => U_ITEM_VIEW, 'TEXT' => $user->lang['view']) ), // News $user->lang['news'] => array( array('CBNAME' => 'a_news_add', 'CBCHECKED' => A_NEWS_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_news_upd', 'CBCHECKED' => A_NEWS_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_news_del', 'CBCHECKED' => A_NEWS_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Raids $user->lang['raids'] => array( array('CBNAME' => 'a_raid_add', 'CBCHECKED' => A_RAID_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_raid_upd', 'CBCHECKED' => A_RAID_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_raid_del', 'CBCHECKED' => A_RAID_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_raid_list', 'CBCHECKED' => U_RAID_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_raid_view', 'CBCHECKED' => U_RAID_VIEW, 'TEXT' => $user->lang['view']) ), // Turn-ins $user->lang['turn_ins'] => array( array('CBNAME' => 'a_turnin_add', 'CBCHECKED' => A_TURNIN_ADD, 'TEXT' => '' . $user->lang['add'] . '') ), // Members $user->lang['members'] => array( array('CBNAME' => 'a_members_man', 'CBCHECKED' => A_MEMBERS_MAN, 'TEXT' => '' . $user->lang['manage'] . ''), array('CBNAME' => 'u_member_list', 'CBCHECKED' => U_MEMBER_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_member_view', 'CBCHECKED' => U_MEMBER_VIEW, 'TEXT' => $user->lang['view']) ), // Manage $user->lang['manage'] => array( array('CBNAME' => 'a_config_man', 'CBCHECKED' => A_CONFIG_MAN, 'TEXT' => '' . $user->lang['configuration'] . ''), array('CBNAME' => 'a_plugins_man', 'CBCHECKED' => A_PLUGINS_MAN, 'TEXT' => '' . $user->lang['plugins'] . ''), array('CBNAME' => 'a_styles_man', 'CBCHECKED' => A_STYLES_MAN, 'TEXT' => '' . $user->lang['styles'] . ''), array('CBNAME' => 'a_users_man', 'CBCHECKED' => A_USERS_MAN, 'TEXT' => '' . $user->lang['users'] . '') ), // Logs $user->lang['logs'] => array( array('CBNAME' => 'a_logs_view', 'CBCHECKED' => A_LOGS_VIEW, 'TEXT' => '' . $user->lang['view'] . '') ), // Backup Database $user->lang['backup'] => array( array('CBNAME' => 'a_backup', 'CBCHECKED' => A_BACKUP, 'TEXT' => '' . $user->lang['backup_database'] . '') ) ); // Add plugin checkboxes to our array $pm->generate_permission_boxes($user_permissions); // Find out our auth defaults $auth_defaults = array(); $sql = 'SELECT auth_id, auth_value, auth_default FROM ' . AUTH_OPTIONS_TABLE . ' ORDER BY auth_id'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $auth_defaults[ $row['auth_id'] ] = array( 'auth_id' => $row['auth_id'], 'auth_value' => $row['auth_value'], 'auth_default' => $row['auth_default']); } $db->free_result($result); foreach ( $user_permissions as $group => $checks ) { $tpl->assign_block_vars('permissions_row', array( 'GROUP' => $group) ); foreach ( $checks as $data ) { $auth_setting = ( isset($auth_defaults[ $data['CBCHECKED'] ]) ) ? $auth_defaults[ $data['CBCHECKED'] ] : null; $tpl->assign_block_vars('permissions_row.check_group', array( 'CBNAME' => $data['CBNAME'], 'CBCHECKED' => ( (!is_null($auth_setting)) && ($auth_setting['auth_default'] == 'Y') ) ? ' checked="checked"' : '', 'TEXT' => $data['TEXT']) ); } } unset($user_permissions); $tpl->assign_vars(array( // Language 'L_MANAGE_USERS' => $user->lang['manage_users'], 'L_USERNAME' => $user->lang['username'], 'L_EMAIL' => $user->lang['email_address'], 'L_LAST_VISIT' => $user->lang['last_visit'], 'L_ACTIVE' => $user->lang['active'], 'L_ONLINE' => $user->lang['online'], 'L_MASS_UPDATE' => $user->lang['mass_update'], 'L_MASS_UPDATE_NOTE' => $user->lang['mass_update_note'], 'L_ACCOUNT_ENABLED' => $user->lang['account_enabled'], 'L_YES' => $user->lang['yes'], 'L_NO' => $user->lang['no'], 'L_MASS_DELETE' => $user->lang['mass_delete'], // Sorting 'O_USERNAME' => $current_order['uri'][0], 'O_EMAIL' => $current_order['uri'][1], 'O_LAST_VISIT' => $current_order['uri'][2], 'O_ACTIVE' => $current_order['uri'][3], 'O_ONLINE' => $current_order['uri'][4], // Page vars 'U_MANAGE_USERS' => 'manage_users.php' . $SID . '&', 'F_MASS_UPDATE' => 'manage_users.php' . $SID, 'START' => $start, 'LISTUSERS_FOOTCOUNT' => sprintf($user->lang['listusers_footcount'], $total_users, 100), 'USER_PAGINATION' => generate_pagination('manage_users.php'.$SID.'&o='.$current_order['uri']['current'], $total_users, 100, $start)) ); $eqdkp->set_vars(array( 'page_title' => sprintf($user->lang['title_prefix'], $eqdkp->config['guildtag'], $eqdkp->config['dkp_name']).': '.$user->lang['manage_users_title'], 'template_file' => 'admin/listusers.html', 'display' => true) ); } function display_form() { global $db, $eqdkp, $user, $tpl, $pm; global $SID; $user_id = $this->user_data['user_id']; // // Build the user permissions // $user_permissions = array( // Events $user->lang['events'] => array( array('CBNAME' => 'a_event_add', 'CBCHECKED' => A_EVENT_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_event_upd', 'CBCHECKED' => A_EVENT_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_event_del', 'CBCHECKED' => A_EVENT_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_event_list', 'CBCHECKED' => U_EVENT_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_event_view', 'CBCHECKED' => U_EVENT_VIEW, 'TEXT' => $user->lang['view']) ), // Group adjustments $user->lang['group_adjustments'] => array( array('CBNAME' => 'a_groupadj_add', 'CBCHECKED' => A_GROUPADJ_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_groupadj_upd', 'CBCHECKED' => A_GROUPADJ_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_groupadj_del', 'CBCHECKED' => A_GROUPADJ_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Individual adjustments $user->lang['individual_adjustments'] => array( array('CBNAME' => 'a_indivadj_add', 'CBCHECKED' => A_INDIVADJ_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_indivadj_upd', 'CBCHECKED' => A_INDIVADJ_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_indivadj_del', 'CBCHECKED' => A_INDIVADJ_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Items $user->lang['items'] => array( array('CBNAME' => 'a_item_add', 'CBCHECKED' => A_ITEM_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_item_upd', 'CBCHECKED' => A_ITEM_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_item_del', 'CBCHECKED' => A_ITEM_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_item_list', 'CBCHECKED' => U_ITEM_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_item_view', 'CBCHECKED' => U_ITEM_VIEW, 'TEXT' => $user->lang['view']) ), // News $user->lang['news'] => array( array('CBNAME' => 'a_news_add', 'CBCHECKED' => A_NEWS_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_news_upd', 'CBCHECKED' => A_NEWS_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_news_del', 'CBCHECKED' => A_NEWS_DEL, 'TEXT' => '' . $user->lang['delete'] . '') ), // Raids $user->lang['raids'] => array( array('CBNAME' => 'a_raid_add', 'CBCHECKED' => A_RAID_ADD, 'TEXT' => '' . $user->lang['add'] . ''), array('CBNAME' => 'a_raid_upd', 'CBCHECKED' => A_RAID_UPD, 'TEXT' => '' . $user->lang['update'] . ''), array('CBNAME' => 'a_raid_del', 'CBCHECKED' => A_RAID_DEL, 'TEXT' => '' . $user->lang['delete'] . ''), array('CBNAME' => 'u_raid_list', 'CBCHECKED' => U_RAID_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_raid_view', 'CBCHECKED' => U_RAID_VIEW, 'TEXT' => $user->lang['view']) ), // Turn-ins $user->lang['turn_ins'] => array( array('CBNAME' => 'a_turnin_add', 'CBCHECKED' => A_TURNIN_ADD, 'TEXT' => '' . $user->lang['add'] . '') ), // Members $user->lang['members'] => array( array('CBNAME' => 'a_members_man', 'CBCHECKED' => A_MEMBERS_MAN, 'TEXT' => '' . $user->lang['manage'] . ''), array('CBNAME' => 'u_member_list', 'CBCHECKED' => U_MEMBER_LIST, 'TEXT' => $user->lang['list']), array('CBNAME' => 'u_member_view', 'CBCHECKED' => U_MEMBER_VIEW, 'TEXT' => $user->lang['view']) ), // Manage $user->lang['manage'] => array( array('CBNAME' => 'a_config_man', 'CBCHECKED' => A_CONFIG_MAN, 'TEXT' => '' . $user->lang['configuration'] . ''), array('CBNAME' => 'a_plugins_man', 'CBCHECKED' => A_PLUGINS_MAN, 'TEXT' => '' . $user->lang['plugins'] . ''), array('CBNAME' => 'a_styles_man', 'CBCHECKED' => A_STYLES_MAN, 'TEXT' => '' . $user->lang['styles'] . ''), array('CBNAME' => 'a_users_man', 'CBCHECKED' => A_USERS_MAN, 'TEXT' => '' . $user->lang['users'] . '') ), // Logs $user->lang['logs'] => array( array('CBNAME' => 'a_logs_view', 'CBCHECKED' => A_LOGS_VIEW, 'TEXT' => '' . $user->lang['view'] . '') ), // Backup Database $user->lang['backup'] => array( array('CBNAME' => 'a_backup', 'CBCHECKED' => A_BACKUP, 'TEXT' => '' . $user->lang['backup_database'] . '') ) ); // Add plugin checkboxes to our array $pm->generate_permission_boxes($user_permissions); foreach ( $user_permissions as $group => $checks ) { $tpl->assign_block_vars('permissions_row', array( 'GROUP' => $group) ); foreach ( $checks as $data ) { $tpl->assign_block_vars('permissions_row.check_group', array( 'CBNAME' => $data['CBNAME'], 'CBCHECKED' => ( $user->check_auth($data['CBNAME'], false, $user_id) ) ? ' checked="checked"' : '', 'TEXT' => $data['TEXT']) ); } } unset($user_permissions); // Build member drop-down $sql = 'SELECT m.member_id, m.member_name, mu.user_id FROM ' . MEMBERS_TABLE . ' m LEFT JOIN ' . MEMBER_USER_TABLE . ' mu ON m.member_id = mu.member_id GROUP BY m.member_name ORDER BY m.member_name'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $tpl->assign_block_vars('member_row', array( 'VALUE' => $row['member_id'], 'SELECTED' => ( (isset($row['user_id'])) && ($row['user_id'] == $this->user_data['user_id']) ) ? ' selected="selected"' : '', 'OPTION' => $row['member_name']) ); } $db->free_result($result); $tpl->assign_vars(array( // Form vars 'F_SETTINGS' => 'manage_users.php' . $SID, 'S_CURRENT_PASSWORD' => false, 'S_NEW_PASSWORD' => true, 'S_SETTING_ADMIN' => true, 'S_MU_TABLE' => true, // Form values 'NAME' => stripslashes($_REQUEST[URI_NAME]), 'USER_ID' => $this->user_data['user_id'], 'USERNAME' => $this->user_data['username'], 'USER_EMAIL' => $this->user_data['user_email'], 'USER_ALIMIT' => $this->user_data['user_alimit'], 'USER_ELIMIT' => $this->user_data['user_elimit'], 'USER_ILIMIT' => $this->user_data['user_ilimit'], 'USER_NLIMIT' => $this->user_data['user_nlimit'], 'USER_RLIMIT' => $this->user_data['user_rlimit'], 'USER_ACTIVE_YES_CHECKED' => ( $this->user_data['user_active'] == '1' ) ? ' checked="checked"' : '', 'USER_ACTIVE_NO_CHECKED' => ( $this->user_data['user_active'] == '0' ) ? ' checked="checked"' : '', // Language 'L_REGISTRATION_INFORMATION' => $user->lang['registration_information'], 'L_REQUIRED_FIELD_NOTE' => $user->lang['required_field_note'], 'L_USERNAME' => $user->lang['username'], 'L_EMAIL_ADDRESS' => $user->lang['email_address'], 'L_NEW_PASSWORD' => $user->lang['new_password'], 'L_NEW_PASSWORD_NOTE' => $user->lang['new_password_note'], 'L_CONFIRM_PASSWORD' => $user->lang['confirm_password'], 'L_CONFIRM_PASSWORD_NOTE' => $user->lang['confirm_password_note'], 'L_PREFERENCES' => $user->lang['preferences'], 'L_ADJUSTMENTS_PER_PAGE' => $user->lang['adjustments_per_page'], 'L_EVENTS_PER_PAGE' => $user->lang['events_per_page'], 'L_ITEMS_PER_PAGE' => $user->lang['items_per_page'], 'L_NEWS_PER_PAGE' => $user->lang['news_per_page'], 'L_RAIDS_PER_PAGE' => $user->lang['raids_per_page'], 'L_LANGUAGE' => $user->lang['language'], 'L_STYLE' => $user->lang['style'], 'L_PREVIEW' => $user->lang['preview'], 'L_PERMISSIONS' => $user->lang['permissions'], 'L_S_ADMIN_NOTE' => $user->lang['s_admin_note'], 'L_ACCOUNT_ENABLED' => $user->lang['account_enabled'], 'L_YES' => $user->lang['yes'], 'L_NO' => $user->lang['no'], 'L_ASSOCIATED_MEMBERS' => $user->lang['associated_members'], 'L_MEMBERS' => $user->lang['members'], 'L_SUBMIT' => $user->lang['submit'], 'L_RESET' => $user->lang['reset'], // Form validation 'FV_USERNAME' => $this->fv->generate_error('username'), 'FV_NEW_PASSWORD' => $this->fv->generate_error('new_user_password1'), 'FV_USER_ALIMIT' => $this->fv->generate_error('user_alimit'), 'FV_USER_ELIMIT' => $this->fv->generate_error('user_elimit'), 'FV_USER_ILIMIT' => $this->fv->generate_error('user_ilimit'), 'FV_USER_NLIMIT' => $this->fv->generate_error('user_nlimit'), 'FV_USER_RLIMIT' => $this->fv->generate_error('user_rlimit'), 'FV_MEMBER_ID' => $this->fv->generate_error('member_id')) ); $pm->do_hooks('/admin/manage_users.php?action=settings'); // // Build the language drop-down // if ( $dir = @opendir($eqdkp->root_path . 'language/') ) { while ( $file = @readdir($dir) ) { if ( (!is_file($eqdkp->root_path . 'language/' . $file)) && (!is_link($eqdkp->root_path . 'language/' . $file)) && ($file != '.') && ($file != '..') && ($file != 'CVS') ) { $tpl->assign_block_vars('lang_row', array( 'VALUE' => $file, 'SELECTED' => ( $this->user_data['user_lang'] == $file ) ? ' selected="selected"' : '', 'OPTION' => ucfirst($file)) ); } } } // // Build the style drop-down // $sql = 'SELECT style_id, style_name FROM ' . STYLES_TABLE . ' ORDER BY style_name'; $result = $db->query($sql); while ( $row = $db->fetch_record($result) ) { $tpl->assign_block_vars('style_row', array( 'VALUE' => $row['style_id'], 'SELECTED' => ( $this->user_data['user_style'] == $row['style_id'] ) ? ' selected="selected"' : '', 'OPTION' => $row['style_name']) ); } $db->free_result($result); $eqdkp->set_vars(array( 'page_title' => sprintf($user->lang['title_prefix'], $eqdkp->config['guildtag'], $eqdkp->config['dkp_name']).': Manage Users', 'template_file' => 'settings.html', 'display' => true) ); } } $manage_users = new Manage_users; $manage_users->process(); ?>