diff --git a/phpBB/adm/admin_users.php b/phpBB/adm/admin_users.php index 4c260b018c..b0a8f89fdb 100644 --- a/phpBB/adm/admin_users.php +++ b/phpBB/adm/admin_users.php @@ -43,6 +43,7 @@ $start = request_var('start', 0); $delete = request_var('delete', ''); $deletetype = request_var('deletetype', ''); $quicktools = request_var('quicktools', ''); + $submit = (isset($_POST['update'])) ? true : false; $confirm = (isset($_POST['confirm'])) ? true : false; $cancel = (isset($_POST['cancel'])) ? true : false; @@ -472,6 +473,215 @@ if ($submit) break; + case 'profile': + + $var_ary = array( + 'icq' => (string) '', + 'aim' => (string) '', + 'msn' => (string) '', + 'yim' => (string) '', + 'jabber' => (string) '', + 'website' => (string) '', + 'location' => (string) '', + 'occupation' => (string) '', + 'interests' => (string) '', + 'bday_day' => 0, + 'bday_month' => 0, + 'bday_year' => 0, + ); + + foreach ($var_ary as $var => $default) + { + $data[$var] = request_var($var, $default); + } + + $var_ary = array( + 'icq' => array( + array('string', true, 3, 15), + array('match', true, '#^[0-9]+$#i')), + 'aim' => array('string', true, 5, 255), + 'msn' => array('string', true, 5, 255), + 'jabber' => array( + array('string', true, 5, 255), + array('match', true, '#^[a-z0-9\.\-_\+]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}(/.*)?$#i')), + 'yim' => array('string', true, 5, 255), + 'website' => array( + array('string', true, 12, 255), + array('match', true, '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i')), + 'location' => array('string', true, 2, 255), + 'occupation' => array('string', true, 2, 500), + 'interests' => array('string', true, 2, 500), + 'bday_day' => array('num', true, 1, 31), + 'bday_month' => array('num', true, 1, 12), + 'bday_year' => array('num', true, 1901, gmdate('Y', time())), + ); + + $error = validate_data($data, $var_ary); + extract($data); + unset($data); + + // validate custom profile fields +// $cp->submit_cp_field('profile', $cp_data, $cp_error); + + if (!sizeof($error) && !sizeof($cp_error)) + { + $sql_ary = array( + 'user_icq' => $icq, + 'user_aim' => $aim, + 'user_msnm' => $msn, + 'user_yim' => $yim, + 'user_jabber' => $jabber, + 'user_website' => $website, + 'user_from' => $location, + 'user_occ' => $occupation, + 'user_interests'=> $interests, + 'user_birthday' => sprintf('%2d-%2d-%4d', $bday_day, $bday_month, $bday_year), + ); + + $sql = 'UPDATE ' . USERS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE user_id = $user_id"; + $db->sql_query($sql); + +/* + // Update Custom Fields + if (sizeof($cp_data)) + { + $sql = 'UPDATE phpbb_profile_fields_data + SET ' . $db->sql_build_array('UPDATE', $cp_data) . " + WHERE user_id = $user_id"; + $db->sql_query($sql); + + if (!$db->sql_affectedrows()) + { + $cp_data['user_id'] = $user_id; + + $db->return_on_error = true; + + $sql = 'INSERT INTO ' . 'phpbb_profile_fields_data' . ' ' . $db->sql_build_array('INSERT', $cp_data); + $db->sql_query(); + + $db->return_on_error = false; + } + } +*/ + trigger_error($user->lang['USER_PROFILE_UPDATED']); + } + + break; + + case 'prefs': + + $var_ary = array( + 'user_dateformat' => (string) $config['default_dateformat'], + 'user_lang' => (string) $config['default_lang'], + 'user_tz' => (float) $config['board_timezone'], + 'user_style' => (int) $config['default_style'], + 'user_dst' => (bool) $config['board_dst'], + 'user_allow_viewemail' => false, + 'user_allow_massemail' => true, + 'user_allow_viewonline' => true, + 'user_notify_type' => 0, + 'user_notify_pm' => true, + 'user_allow_pm' => true, + 'user_notify' => false, + 'user_min_karma' => (int) -5, + + 'sk' => (string) 't', + 'sd' => (string) 'd', + 'st' => 0, + + 'popuppm' => false, + 'viewimg' => true, + 'viewflash' => false, + 'viewsmilies' => true, + 'viewsigs' => true, + 'viewavatars' => true, + 'viewcensors' => false, + 'bbcode' => true, + 'html' => false, + 'smile' => true, + 'attachsig' => true, + ); + + foreach ($var_ary as $var => $default) + { + $data[$var] = request_var($var, $default); + } + + $var_ary = array( + 'user_dateformat' => array('string', false, 3, 15), + 'user_lang' => array('match', false, '#^[a-z_]{2,}$#i'), + 'user_tz' => array('num', false, -13, 13), + 'user_min_karma' => array('num', false, -5, 5), + + 'sk' => array('string', false, 1, 1), + 'sd' => array('string', false, 1, 1), + ); + + $error = validate_data($data, $var_ary); + extract($data); + unset($data); + + // Set the popuppm option + $user_options = $user->optionset('popuppm', $popuppm, $user_options); + $user_options = $user->optionset('viewimg', $viewimg, $user_options); + $user_options = $user->optionset('viewflash', $viewflash, $user_options); + $user_options = $user->optionset('viewsmilies', $viewsmilies, $user_options); + $user_options = $user->optionset('viewsigs', $viewsigs, $user_options); + $user_options = $user->optionset('viewavatars', $viewavatars, $user_options); + $user_options = $user->optionset('viewcensors', $viewcensors, $user_options); + $user_options = $user->optionset('bbcode', $bbcode, $user_options); + $user_options = $user->optionset('html', $html, $user_options); + $user_options = $user->optionset('smile', $smile, $user_options); + $user_options = $user->optionset('attachsig', $attachsig, $user_options); + + if (!sizeof($error)) + { + $sql_ary = array( + 'user_allow_pm' => $user_allow_pm, + 'user_allow_viewemail' => $user_allow_viewemail, + 'user_allow_massemail' => $user_allow_massemail, + 'user_allow_viewonline' => $user_allow_viewonline, + 'user_notify_type' => $user_notify_type, + 'user_notify_pm' => $user_notify_pm, + 'user_options' => $user_options, + 'user_notify' => $user_notify, + 'user_min_karma' => $user_min_karma, + 'user_dst' => $user_dst, + 'user_dateformat' => $user_dateformat, + 'user_lang' => $user_lang, + 'user_timezone' => $user_tz, + 'user_style' => $user_style, + 'user_sortby_type' => $sk, + 'user_sortby_dir' => $sd, + 'user_show_days' => $st, + ); + + $sql = 'UPDATE ' . USERS_TABLE . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " + WHERE user_id = $user_id"; + $db->sql_query($sql); + + trigger_error($user->lang['USER_PREFS_UPDATED']); + } + + $user_sortby_type = $sk; + $user_sortby_dir = $sd; + $user_show_days = $st; + break; + + case 'avatar': + break; + + case 'signature': + break; + + case 'groups': + break; + + case 'permissions': + break; } } @@ -772,126 +982,156 @@ if ($username || $user_id) case 'prefs': + $option_ary = array('user_allow_viewemail', 'user_allow_massemail', 'user_allow_pm', 'user_allow_viewonline', 'user_notify_pm', 'user_dst', 'user_notify', 'user_min_karma'); + + foreach ($option_ary as $option) + { + ${$option . '_yes'} = ($$option) ? ' checked="checked"' : ''; + ${$option . '_no'} = (!$$option) ? ' checked="checked"' : ''; + } + unset($option_ary); + + $option_ary = array('popuppm', 'viewimg', 'viewflash', 'viewsmilies', 'viewsigs', 'viewavatars', 'viewcensors', 'bbcode', 'html', 'smile', 'attachsig'); + + foreach ($option_ary as $option) + { + ${$option . '_yes'} = ($user->optionget($option, $user_options)) ? ' checked="checked"' : ''; + ${$option . '_no'} = (!$user->optionget($option, $user_options)) ? ' checked="checked"' : ''; + } + + $notify_email = ($user_notify_type == NOTIFY_EMAIL) ? ' checked="checked"' : ''; + $notify_im = ($user_notify_type == NOTIFY_IM) ? ' checked="checked"' : ''; + $notify_both = ($user_notify_type == NOTIFY_BOTH) ? ' checked="checked"' : ''; + + // Topic ordering display + $limit_days = array(0 => $user->lang['ALL_TOPICS'], 0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 364 => $user->lang['1_YEAR']); + + $sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']); + $sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'r' => 't.topic_replies', 's' => 't.topic_title', 'v' => 't.topic_views'); + + $s_limit_days = $s_sort_key = $s_sort_dir = ''; + gen_sort_selects($limit_days, $sort_by_text, $user_show_days, $user_sortby_type, $user_sortby_dir, $s_limit_days, $s_sort_key, $s_sort_dir); + ?> - lang['VIEW_IMAGES']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['VIEW_IMAGES']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['VIEW_FLASH']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['VIEW_FLASH']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['VIEW_SMILIES']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['VIEW_SMILIES']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['VIEW_SIGS']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['VIEW_SIGS']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['VIEW_AVATARS']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['VIEW_AVATARS']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['DISABLE_CENSORS']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DISABLE_CENSORS']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - - lang['MINIMUM_KARMA']; ?>:
lang['MINIMUM_KARMA_EXPLAIN']; ?> - - + - lang['VIEW_TOPICS_DAYS']; ?>: - {S_SELECT_SORT_DAYS} + lang['VIEW_TOPICS_DAYS']; ?>: + - lang['VIEW_TOPICS_KEY']; ?>: - {S_SELECT_SORT_KEY} + lang['VIEW_TOPICS_KEY']; ?>: + - lang['VIEW_TOPICS_DIR']; ?>: - {S_SELECT_SORT_DIR} + lang['VIEW_TOPICS_DIR']; ?>: + - Posting preferences + lang['USER_POSTING_PREFS']; ?> - lang['DEFAULT_BBCODE']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DEFAULT_BBCODE']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['DEFAULT_HTML']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DEFAULT_HTML']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['DEFAULT_SMILE']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DEFAULT_SMILE']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['DEFAULT_ADD_SIG']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DEFAULT_ADD_SIG']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['DEFAULT_NOTIFY']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['DEFAULT_NOTIFY']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['SHOW_EMAIL']; ?>: - lang['YES']; ?>  lang['NO']; ?> + lang['SHOW_EMAIL']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['ADMIN_EMAIL']; ?>: - lang['YES']; ?>  lang['NO']; ?> + lang['ADMIN_EMAIL']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['ALLOW_PM']; ?>:
lang['ALLOW_PM_EXPLAIN']; ?> - lang['YES']; ?>  lang['NO']; ?> + lang['ALLOW_PM']; ?>:
lang['ALLOW_PM_EXPLAIN']; ?> + />lang['YES']; ?>   />lang['NO']; ?> - lang['HIDE_ONLINE']; ?>: - lang['YES']; ?>  lang['NO']; ?> + lang['HIDE_ONLINE']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['NOTIFY_METHOD']; ?>:
lang['NOTIFY_METHOD_EXPLAIN']; ?> - lang['NOTIFY_METHOD_EMAIL']; ?>  lang['NOTIFY_METHOD_IM']; ?>  lang['NOTIFY_METHOD_BOTH']; ?> + lang['NOTIFY_METHOD']; ?>:
lang['NOTIFY_METHOD_EXPLAIN']; ?> + />lang['NOTIFY_METHOD_EMAIL']; ?>   />lang['NOTIFY_METHOD_IM']; ?>   />lang['NOTIFY_METHOD_BOTH']; ?> - lang['NOTIFY_ON_PM']; ?>: - lang['YES']; ?>  lang['NO']; ?> + lang['NOTIFY_ON_PM']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['POPUP_ON_PM']; ?>: - lang['YES']; ?>  lang['NO']; ?> + lang['POPUP_ON_PM']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['BOARD_LANGUAGE']; ?>: - + lang['BOARD_LANGUAGE']; ?>: + - lang['BOARD_STYLE']; ?>: - + lang['BOARD_STYLE']; ?>: + - lang['BOARD_TIMEZONE']; ?>: - + lang['BOARD_TIMEZONE']; ?>: + - lang['BOARD_DST']; ?>: - lang['YES']; ?>   lang['NO']; ?> + lang['BOARD_DST']; ?>: + />lang['YES']; ?>   />lang['NO']; ?> - lang['BOARD_DATE_FORMAT']; ?>:
lang['BOARD_DATE_FORMAT_EXPLAIN']; ?> - + lang['BOARD_DATE_FORMAT']; ?>:
lang['BOARD_DATE_FORMAT_EXPLAIN']; ?> +