} if (empty($error)) { $password = encode_password($password, $_CORE_CONFIG['user']['password_encoding']); if (!$password) { //do some admin contact thing here die('Try again later'); } $data = array('username' => (string) $username, 'user_email' => (string) $email, 'user_group' => (int) $coppa ? 3 : 2, 'user_reg_date' => (int) $_CLASS['core_user']->time, 'user_timezone' => $tz, 'user_password' => (string) $password, 'user_password_encoding' => (string) $_CORE_CONFIG['user']['password_encoding'], 'user_lang' => $lang == $_CORE_CONFIG['global']['default_lang'] ? null : $lang, 'user_type' => USER_NORMAL, 'user_status' => STATUS_ACTIVE, 'user_act_key' => null, 'user_ip' => ''); user_add($data); set_core_config('user', 'newest_user_id', $data['user_id'], false); set_core_config('user', 'newest_username', $data['username'], false); set_core_config('user', 'total_users', $_CORE_CONFIG['user']['total_users'] + 1); trigger_error('USER_ADDED'); } } $_CLASS['core_template']->assign_array(array('COPPA' => isset($coppa) ? $coppa : false, 'EMAIL' => isset($email) ? $email : '', 'ERROR' => empty($error) ? false : implode('<br />', $error), 'PASSWORD' => isset($password) ? $password : '', 'USERNAME' => isset($username) ? $username : '', 'SELECT_TZ' => select_tz(isset($tz) ? $tz : $_CORE_CONFIG['global']['default_timezone']), 'S_ACTION' => generate_link('users&mode=add_user', array('admin' => true)))); $_CLASS['core_display']->display(false, 'admin/users/add.html'); break; case 'bots': if ($id && isset($_REQUEST['option'])) { require_once $site_file_root . 'includes/functions_user.php'; $sql = 'SELECT user_id, user_type, user_status FROM ' . USERS_TABLE . ' WHERE user_id = ' . $id; $result = $_CLASS['core_db']->query($sql); $row = $_CLASS['core_db']->fetch_row_assoc($result); $_CLASS['core_db']->free_result($result); if ($row['user_type'] != USER_BOT) { break; } switch ($_REQUEST['option']) {
function ucp_prefs($id, $mode) { global $config, $_CLASS, $site_file_root, $_CORE_CONFIG; $submit = isset($_POST['submit']) ? true : false; $error = $data = array(); $s_hidden_fields = ''; require_once $site_file_root . 'includes/forums/functions_user.php'; switch ($mode) { case 'personal': if ($submit) { $var_ary = array('dateformat' => (string) $_CORE_CONFIG['global']['default_dateformat'], 'lang' => (string) $_CORE_CONFIG['global']['default_lang'], 'tz' => (double) $_CORE_CONFIG['global']['default_timezone'] / 3600, 'theme' => (string) $_CORE_CONFIG['global']['default_theme'], 'dst' => (bool) $_CORE_CONFIG['global']['default_dst'], 'viewemail' => false, 'massemail' => true, 'hideonline' => false, 'notifymethod' => 0, 'notifypm' => true, 'popuppm' => false, 'allowpm' => true, 'report_pm_notify' => false); foreach ($var_ary as $var => $default) { $data[$var] = request_var($var, $default); } $var_ary = array('lang' => array('match', false, '#^[a-z_]{2,}$#i'), 'tz' => array('num', false, -13, 13)); $error = validate_data($data, $var_ary); extract($data); unset($data); if (!sizeof($error)) { $_CLASS['core_user']->optionset('popuppm', $popuppm); $_CLASS['core_user']->optionset('report_pm_notify', $report_pm_notify); $sql_ary = array('user_allow_pm' => $allowpm, 'user_allow_viewemail' => $viewemail, 'user_allow_massemail' => $massemail, 'user_allow_viewonline' => $_CLASS['auth']->acl_get('u_hideonline') ? !$hideonline : $_CLASS['core_user']->data['user_allow_viewonline'], 'user_notify_type' => $notifymethod, 'user_data' => serialize($_CLASS['core_user']->data['user_data']), 'user_dst' => $dst, 'user_time_format' => $dateformat, 'user_lang' => $lang, 'user_timezone' => $tz * 3600, 'user_theme' => $theme); $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $_CLASS['core_db']->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $_CLASS['core_user']->data['user_id']; $_CLASS['core_db']->sql_query($sql); if ($theme != $_CLASS['core_display']->theme) { $_CLASS['core_user']->session_data_remove('user_theme'); } $_CLASS['core_display']->meta_refresh(3, generate_link("Control_Panel&i={$id}&mode={$mode}")); $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&i={$id}&mode={$mode}") . '">', '</a>'); trigger_error($message); } // Replace "error" strings with their real, localised form $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$_CLASS['core_user']->lang['\\1'])) ? \$_CLASS['core_user']->lang['\\1'] : '\\1'", $error); } $viewemail = isset($viewemail) ? $viewemail : $_CLASS['core_user']->data['user_allow_viewemail']; $view_email_yes = $viewemail ? ' checked="checked"' : ''; $view_email_no = !$viewemail ? ' checked="checked"' : ''; $massemail = isset($massemail) ? $massemail : $_CLASS['core_user']->data['user_allow_massemail']; $mass_email_yes = $massemail ? ' checked="checked"' : ''; $mass_email_no = !$massemail ? ' checked="checked"' : ''; $allowpm = isset($allowpm) ? $allowpm : $_CLASS['core_user']->data['user_allow_pm']; $allow_pm_yes = $allowpm ? ' checked="checked"' : ''; $allow_pm_no = !$allowpm ? ' checked="checked"' : ''; $hideonline = isset($hideonline) ? $hideonline : !$_CLASS['core_user']->data['user_allow_viewonline']; $hide_online_yes = $hideonline ? ' checked="checked"' : ''; $hide_online_no = !$hideonline ? ' checked="checked"' : ''; $notifypm = isset($notifypm) ? $notifypm : ''; $notify_pm_yes = $notifypm ? ' checked="checked"' : ''; $notify_pm_no = !$notifypm ? ' checked="checked"' : ''; $popuppm = isset($popuppm) ? $popuppm : $_CLASS['core_user']->optionget('popuppm'); $popup_pm_yes = $popuppm ? ' checked="checked"' : ''; $popup_pm_no = !$popuppm ? ' checked="checked"' : ''; $report_pm_notify = isset($report_pm_notify) ? $report_pm_notify : $_CLASS['core_user']->optionget('report_pm_notify'); $report_pm_notify_yes = $report_pm_notify ? ' checked="checked"' : ''; $report_pm_notify_no = !$report_pm_notify ? ' checked="checked"' : ''; $dst = isset($dst) ? $dst : $_CLASS['core_user']->data['user_dst']; $dst_yes = $dst ? ' checked="checked"' : ''; $dst_no = !$dst ? ' checked="checked"' : ''; $notifymethod = isset($notifymethod) ? $notifymethod : $_CLASS['core_user']->data['user_notify_type']; $dateformat = isset($dateformat) ? $dateformat : $_CLASS['core_user']->data['user_time_format']; $lang = isset($lang) ? $lang : $_CLASS['core_user']->data['user_lang']; $theme = isset($theme) ? $theme : $_CLASS['core_user']->data['user_theme']; $tz = isset($tz) ? $tz * 3600 : $_CLASS['core_user']->data['user_timezone'] / 3600; $_CLASS['core_template']->assign(array('ERROR' => sizeof($error) ? implode('<br />', $error) : '', 'VIEW_EMAIL_YES' => $view_email_yes, 'VIEW_EMAIL_NO' => $view_email_no, 'ADMIN_EMAIL_YES' => $mass_email_yes, 'ADMIN_EMAIL_NO' => $mass_email_no, 'HIDE_ONLINE_YES' => $hide_online_yes, 'HIDE_ONLINE_NO' => $hide_online_no, 'ALLOW_PM_YES' => $allow_pm_yes, 'ALLOW_PM_NO' => $allow_pm_no, 'NOTIFY_PM_YES' => $notify_pm_yes, 'NOTIFY_PM_NO' => $notify_pm_no, 'POPUP_PM_YES' => $popup_pm_yes, 'POPUP_PM_NO' => $popup_pm_no, 'REPORT_PM_NO' => $report_pm_notify_no, 'REPORT_PM_YES' => $report_pm_notify_yes, 'DST_YES' => $dst_yes, 'DST_NO' => $dst_no, 'NOTIFY_EMAIL' => $notifymethod == NOTIFY_EMAIL ? 'checked="checked"' : '', 'NOTIFY_IM' => $notifymethod == NOTIFY_IM ? 'checked="checked"' : '', 'NOTIFY_BOTH' => $notifymethod == NOTIFY_BOTH ? 'checked="checked"' : '', 'DATE_FORMAT' => $dateformat, 'S_LANG_OPTIONS' => select_language($lang), 'S_THEME_OPTIONS' => select_theme($theme), 'S_TZ_OPTIONS' => select_tz($tz), 'S_CAN_HIDE_ONLINE' => true, 'S_SELECT_NOTIFY' => $config['jab_enable'] && $_CLASS['core_user']->data['user_jabber'] && @extension_loaded('xml') ? true : false)); break; case 'view': if ($submit) { $var_ary = array('topic_sk' => (string) 't', 'topic_sd' => (string) 'd', 'topic_st' => 0, 'post_sk' => (string) 't', 'post_sd' => (string) 'a', 'post_st' => 0, 'images' => true, 'flash' => false, 'smilies' => true, 'sigs' => true, 'avatars' => true, 'wordcensor' => false); foreach ($var_ary as $var => $default) { $data[$var] = request_var($var, $default); } $var_ary = array('topic_sk' => array('string', false, 1, 1), 'topic_sd' => array('string', false, 1, 1), 'post_sk' => array('string', false, 1, 1), 'post_sd' => array('string', false, 1, 1)); $error = validate_data($data, $var_ary); extract($data); unset($data); if (!sizeof($error)) { $_CLASS['core_user']->optionset('viewimg', $images); $_CLASS['core_user']->optionset('viewflash', $flash); $_CLASS['core_user']->optionset('viewsmilies', $smilies); $_CLASS['core_user']->optionset('viewsigs', $sigs); $_CLASS['core_user']->optionset('viewavatars', $avatars); if ($_CLASS['auth']->acl_get('u_chgcensors')) { $_CLASS['core_user']->optionset('viewcensors', $wordcensor); } $sql_ary = array('user_data' => serialize($_CLASS['core_user']->data['user_data']), 'user_topic_sortby_type' => $topic_sk, 'user_post_sortby_type' => $post_sk, 'user_topic_sortby_dir' => $topic_sd, 'user_post_sortby_dir' => $post_sd, 'user_topic_show_days' => $topic_st, 'user_post_show_days' => $post_st); $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $_CLASS['core_db']->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $_CLASS['core_user']->data['user_id']; $_CLASS['core_db']->sql_query($sql); $_CLASS['core_display']->meta_refresh(3, generate_link("Control_Panel&i={$id}&mode={$mode}")); $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&i={$id}&mode={$mode}") . '">', '</a>'); trigger_error($message); } // Replace "error" strings with their real, localised form $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$_CLASS['core_user']->lang['\\1'])) ? \$_CLASS['core_user']->lang['\\1'] : '\\1'", $error); } $topic_sk = isset($topic_sk) ? $topic_sk : (!empty($_CLASS['core_user']->data['user_tpic_sortby_type']) ? $_CLASS['core_user']->data['user_topic_sortby_type'] : 't'); $post_sk = isset($post_sk) ? $post_sk : (!empty($_CLASS['core_user']->data['user_post_sortby_type']) ? $_CLASS['core_user']->data['user_post_sortby_type'] : 't'); $topic_sd = isset($topic_sd) ? $topic_sd : (!empty($_CLASS['core_user']->data['user_topic_sortby_dir']) ? $_CLASS['core_user']->data['user_topic_sortby_dir'] : 'd'); $post_sd = isset($post_sd) ? $post_sd : (!empty($_CLASS['core_user']->data['user_post_sortby_dir']) ? $_CLASS['core_user']->data['user_post_sortby_dir'] : 'd'); $topic_st = isset($topic_st) ? $topic_st : (!empty($_CLASS['core_user']->data['user_topic_show_days']) ? $_CLASS['core_user']->data['user_topic_show_days'] : 0); $post_st = isset($post_st) ? $post_st : (!empty($_CLASS['core_user']->data['user_post_show_days']) ? $_CLASS['core_user']->data['user_post_show_days'] : 0); $sort_dir_text = array('a' => $_CLASS['core_user']->lang['ASCENDING'], 'd' => $_CLASS['core_user']->lang['DESCENDING']); // Topic ordering options $limit_topic_days = array(0 => $_CLASS['core_user']->lang['ALL_TOPICS'], 1 => $_CLASS['core_user']->lang['1_DAY'], 7 => $_CLASS['core_user']->lang['7_DAYS'], 14 => $_CLASS['core_user']->lang['2_WEEKS'], 30 => $_CLASS['core_user']->lang['1_MONTH'], 90 => $_CLASS['core_user']->lang['3_MONTHS'], 180 => $_CLASS['core_user']->lang['6_MONTHS'], 364 => $_CLASS['core_user']->lang['1_YEAR']); $sort_by_topic_text = array('a' => $_CLASS['core_user']->lang['AUTHOR'], 't' => $_CLASS['core_user']->lang['POST_TIME'], 'r' => $_CLASS['core_user']->lang['REPLIES'], 's' => $_CLASS['core_user']->lang['SUBJECT'], 'v' => $_CLASS['core_user']->lang['VIEWS']); $sort_by_topic_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'); // Post ordering options $limit_post_days = array(0 => $_CLASS['core_user']->lang['ALL_POSTS'], 1 => $_CLASS['core_user']->lang['1_DAY'], 7 => $_CLASS['core_user']->lang['7_DAYS'], 14 => $_CLASS['core_user']->lang['2_WEEKS'], 30 => $_CLASS['core_user']->lang['1_MONTH'], 90 => $_CLASS['core_user']->lang['3_MONTHS'], 180 => $_CLASS['core_user']->lang['6_MONTHS'], 364 => $_CLASS['core_user']->lang['1_YEAR']); $sort_by_post_text = array('a' => $_CLASS['core_user']->lang['AUTHOR'], 't' => $_CLASS['core_user']->lang['POST_TIME'], 's' => $_CLASS['core_user']->lang['SUBJECT']); $sort_by_post_sql = array('a' => 'u.username', 't' => 'p.post_id', 's' => 'p.post_subject'); foreach (array('topic', 'post') as $sort_option) { ${'s_limit_' . $sort_option . '_days'} = '<select name="' . $sort_option . '_st">'; foreach (${'limit_' . $sort_option . '_days'} as $day => $text) { $selected = ${$sort_option . '_st'} == $day ? ' selected="selected"' : ''; ${'s_limit_' . $sort_option . '_days'} .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>'; } ${'s_limit_' . $sort_option . '_days'} .= '</select>'; ${'s_sort_' . $sort_option . '_key'} = '<select name="' . $sort_option . '_sk">'; foreach (${'sort_by_' . $sort_option . '_text'} as $key => $text) { $selected = ${$sort_option . '_sk'} == $key ? ' selected="selected"' : ''; ${'s_sort_' . $sort_option . '_key'} .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>'; } ${'s_sort_' . $sort_option . '_key'} .= '</select>'; ${'s_sort_' . $sort_option . '_dir'} = '<select name="' . $sort_option . '_sd">'; foreach ($sort_dir_text as $key => $value) { $selected = ${$sort_option . '_sd'} == $key ? ' selected="selected"' : ''; ${'s_sort_' . $sort_option . '_dir'} .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; } ${'s_sort_' . $sort_option . '_dir'} .= '</select>'; } $images = isset($images) ? $images : $_CLASS['core_user']->optionget('viewimg'); $images_yes = $images ? ' checked="checked"' : ''; $images_no = !$images ? ' checked="checked"' : ''; $flash = isset($flash) ? $flash : $_CLASS['core_user']->optionget('viewflash'); $flash_yes = $flash ? ' checked="checked"' : ''; $flash_no = !$flash ? ' checked="checked"' : ''; $smilies = isset($smilies) ? $smilies : $_CLASS['core_user']->optionget('viewsmilies'); $smilies_yes = $smilies ? ' checked="checked"' : ''; $smilies_no = !$smilies ? ' checked="checked"' : ''; $sigs = isset($sigs) ? $sigs : $_CLASS['core_user']->optionget('viewsigs'); $sigs_yes = $sigs ? ' checked="checked"' : ''; $sigs_no = !$sigs ? ' checked="checked"' : ''; $avatars = isset($avatars) ? $avatars : $_CLASS['core_user']->optionget('viewavatars'); $avatars_yes = $avatars ? ' checked="checked"' : ''; $avatars_no = !$avatars ? ' checked="checked"' : ''; $wordcensor = isset($wordcensor) ? $wordcensor : $_CLASS['core_user']->optionget('viewcensors'); $wordcensor_yes = $wordcensor ? ' checked="checked"' : ''; $wordcensor_no = !$wordcensor ? ' checked="checked"' : ''; $_CLASS['core_template']->assign(array('ERROR' => sizeof($error) ? implode('<br />', $error) : '', 'VIEW_IMAGES_YES' => $images_yes, 'VIEW_IMAGES_NO' => $images_no, 'VIEW_FLASH_YES' => $flash_yes, 'VIEW_FLASH_NO' => $flash_no, 'VIEW_SMILIES_YES' => $smilies_yes, 'VIEW_SMILIES_NO' => $smilies_no, 'VIEW_SIGS_YES' => $sigs_yes, 'VIEW_SIGS_NO' => $sigs_no, 'VIEW_AVATARS_YES' => $avatars_yes, 'VIEW_AVATARS_NO' => $avatars_no, 'DISABLE_CENSORS_YES' => $wordcensor_yes, 'DISABLE_CENSORS_NO' => $wordcensor_no, 'S_CHANGE_CENSORS' => $_CLASS['auth']->acl_get('u_chgcensors') ? true : false, 'S_TOPIC_SORT_DAYS' => $s_limit_topic_days, 'S_TOPIC_SORT_KEY' => $s_sort_topic_key, 'S_TOPIC_SORT_DIR' => $s_sort_topic_dir, 'S_POST_SORT_DAYS' => $s_limit_post_days, 'S_POST_SORT_KEY' => $s_sort_post_key, 'S_POST_SORT_DIR' => $s_sort_post_dir)); break; case 'post': if ($submit) { $var_ary = array('bbcode' => true, 'html' => false, 'smilies' => true, 'sig' => true, 'notify' => false); foreach ($var_ary as $var => $default) { ${$var} = request_var($var, $default); } $_CLASS['core_user']->optionset('bbcode', $bbcode); $_CLASS['core_user']->optionset('html', $html); $_CLASS['core_user']->optionset('smilies', $smilies); $_CLASS['core_user']->optionset('attachsig', $sig); if (!sizeof($error)) { $sql_ary = array('user_data' => serialize($_CLASS['core_user']->data['user_data']), 'user_notify' => $notify); $sql = 'UPDATE ' . USERS_TABLE . ' SET ' . $_CLASS['core_db']->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $_CLASS['core_user']->data['user_id']; $_CLASS['core_db']->sql_query($sql); $_CLASS['core_display']->meta_refresh(3, generate_link("Control_Panel&i={$id}&mode={$mode}")); $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&i={$id}&mode={$mode}") . '">', '</a>'); trigger_error($message); } // Replace "error" strings with their real, localised form $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$_CLASS['core_user']->lang['\\1'])) ? \$_CLASS['core_user']->lang['\\1'] : '\\1'", $error); } $bbcode = isset($bbcode) ? $bbcode : $_CLASS['core_user']->optionget('bbcode'); $bbcode_yes = $bbcode ? ' checked="checked"' : ''; $bbcode_no = !$bbcode ? ' checked="checked"' : ''; $html = isset($html) ? $html : $_CLASS['core_user']->optionget('html'); $html_yes = $html ? ' checked="checked"' : ''; $html_no = !$html ? ' checked="checked"' : ''; $smilies = isset($smilies) ? $smilies : $_CLASS['core_user']->optionget('smilies'); $smilies_yes = $smilies ? ' checked="checked"' : ''; $smilies_no = !$smilies ? ' checked="checked"' : ''; $sig = isset($sig) ? $sig : $_CLASS['core_user']->optionget('attachsig'); $sig_yes = $sig ? ' checked="checked"' : ''; $sig_no = !$sig ? ' checked="checked"' : ''; $notify = isset($notify) ? $notify : $_CLASS['core_user']->data['user_notify']; $notify_yes = $notify ? ' checked="checked"' : ''; $notify_no = !$notify ? ' checked="checked"' : ''; $_CLASS['core_template']->assign(array('ERROR' => sizeof($error) ? implode('<br />', $error) : '', 'DEFAULT_BBCODE_YES' => $bbcode_yes, 'DEFAULT_BBCODE_NO' => $bbcode_no, 'DEFAULT_HTML_YES' => $html_yes, 'DEFAULT_HTML_NO' => $html_no, 'DEFAULT_SMILIES_YES' => $smilies_yes, 'DEFAULT_SMILIES_NO' => $smilies_no, 'DEFAULT_SIG_YES' => $sig_yes, 'DEFAULT_SIG_NO' => $sig_no, 'DEFAULT_NOTIFY_YES' => $notify_yes, 'DEFAULT_NOTIFY_NO' => $notify_no)); break; } $_CLASS['core_template']->assign(array('L_TITLE' => $_CLASS['core_user']->lang['UCP_PREFS_' . strtoupper($mode)], 'S_PRIVMSGS' => false, 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_UCP_ACTION' => generate_link("Control_Panel&i={$id}&mode={$mode}"))); $this->display($_CLASS['core_user']->lang['UCP_PROFILE'], 'ucp_prefs_' . $mode . '.html'); }
function ucp_register($id, $mode) { global $site_file_root, $config, $_CLASS, $_CORE_CONFIG; $coppa = isset($_REQUEST['coppa']) ? (int) $_REQUEST['coppa'] : null; $submit = isset($_POST['submit']); if ($_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_DISABLE || ($coppa || $_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_SELF || $_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_ADMIN) && !$_CORE_CONFIG['email']['email_enable']) { trigger_error('UCP_REGISTER_DISABLE'); } $_CLASS['core_template']->assign('S_UCP_ACTION', generate_link('Control_Panel&mode=register')); $error = $data = array(); $s_hidden_fields = ''; if (!isset($_POST['agreed'])) { if ($_CORE_CONFIG['user']['coppa_enable'] && is_null($coppa)) { $now = explode(':', gmdate('m:j:Y')); $coppa_birthday = $_CLASS['core_user']->format_date(mktime(12, 0, 0, $now[0], $now[1], $now[2] - 13), 'D M d, Y'); $_CLASS['core_template']->assign_array(array('L_COPPA_NO' => sprintf($_CLASS['core_user']->lang['UCP_COPPA_BEFORE'], $coppa_birthday), 'L_COPPA_YES' => sprintf($_CLASS['core_user']->lang['UCP_COPPA_ON_AFTER'], $coppa_birthday), 'U_COPPA_NO' => generate_link('Control_Panel&mode=register&coppa=0'), 'U_COPPA_YES' => generate_link('Control_Panel&mode=register&coppa=1'), 'S_SHOW_COPPA' => true, 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_REGISTER_ACTION' => generate_link('Control_Panel&mode=register'))); } else { $s_hidden_fields .= '<input type="hidden" name="coppa" value="' . $coppa . '" />'; $_CLASS['core_template']->assign_array(array('S_SHOW_COPPA' => false, 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_REGISTER_ACTION' => generate_link('Control_Panel&mode=register'))); } $this->display($_CLASS['core_user']->lang['REGISTER'], 'ucp_agreement.html'); script_close(); } if ($submit) { require_once $site_file_root . 'includes/functions_user.php'; $error = array(); $username = get_variable('username', 'POST', false); $password = get_variable('password', 'POST', false); $email = get_variable('email', 'POST', false); $email_confirm = get_variable('email_confirm', 'POST', ''); //when we add this make sure to confirm that it's one of the installed langs $lang = $_CORE_CONFIG['global']['default_lang']; $tz = get_variable('tz', 'POST', false); if (strpos($username, "\n")) { die; } $username_validate = validate_username($username); if ($username_validate !== true) { $error[] = $_CLASS['core_user']->get_lang($username_validate); } if (!$password || $password !== get_variable('password_confirm', 'POST', '')) { $error[] = $_CLASS['core_user']->get_lang('PASSWORD_ERROR'); } if (!$email || $email !== $email_confirm) { $error[] = $_CLASS['core_user']->get_lang('EMAIL_ERROR'); } elseif (!check_email($email)) { $error[] = $_CLASS['core_user']->get_lang('EMAIL_INVALID'); } if (!$tz || !in_array($tz, tz_array())) { $tz = null; } if ($_CORE_CONFIG['user']['enable_confirm']) { $confirmation_code = $_CLASS['core_user']->session_data_get('confirmation_code'); $confirm_code = trim(get_variable('confirm_code', 'POST', false)); if (!$confirm_code || !$confirmation_code || $confirm_code != $confirmation_code) { $error[] = $_CLASS['core_user']->get_lang('CONFIRM_CODE_WRONG'); } // we don't need this any more $_CLASS['core_user']->user_data_kill('confirmation_code'); } if (empty($error)) { $password = encode_password($password, $_CORE_CONFIG['user']['password_encoding']); if (!$password) { //do some admin contact thing here die('Activation disabled: Passwaord encoding problem'); } if ($coppa || $_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_SELF || $_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_ADMIN) { if (!$_CORE_CONFIG['email']['email_enable']) { //do some admin contact thing here die('Activation disabled: Email Disabled'); } $user_status = STATUS_PENDING; $user_act_key = generate_string(10); if ($coppa) { $message = $_CLASS['core_user']->lang['ACCOUNT_COPPA']; $email_template = 'coppa_welcome_inactive'; } elseif ($_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_SELF) { $message = $_CLASS['core_user']->lang['ACCOUNT_INACTIVE']; $email_template = 'user_welcome_inactive'; } elseif ($_CORE_CONFIG['user']['activation'] == USER_ACTIVATION_ADMIN) { $message = $_CLASS['core_user']->lang['ACCOUNT_INACTIVE_ADMIN']; $email_template = 'admin_welcome_inactive'; } } else { $user_status = STATUS_ACTIVE; $user_act_key = null; $email_template = 'user_welcome'; $message = $_CLASS['core_user']->lang['ACCOUNT_ADDED']; } $data = array('username' => (string) $username, 'user_email' => (string) $email, 'user_group' => $coppa ? 3 : 2, 'user_reg_date' => (int) $_CLASS['core_user']->time, 'user_timezone' => (string) $tz, 'user_password' => (string) $password, 'user_password_encoding' => (string) $_CORE_CONFIG['user']['password_encoding'], 'user_lang' => $lang ? (string) $lang : null, 'user_type' => USER_NORMAL, 'user_status' => (int) $user_status, 'user_act_key' => (string) $user_act_key, 'user_ip' => (string) $_CLASS['core_user']->ip); user_add($data); if ($data['user_status'] === STATUS_ACTIVE) { set_core_config('user', 'newest_user_id', $data['user_id'], false); set_core_config('user', 'newest_username', $data['username'], false); set_core_config('user', 'total_users', $_CORE_CONFIG['user']['total_users'] + 1, false); } require_once $site_file_root . 'includes/mailer.php'; $mailer = new core_mailer(); $mailer->to($email, $username); $mailer->subject($subject); $_CLASS['core_template']->assign_array(array('SITENAME' => $_CORE_CONFIG['global']['site_name'], 'WELCOME_MSG' => sprintf($_CLASS['core_user']->lang['WELCOME_SUBJECT'], $_CORE_CONFIG['global']['site_name']), 'USERNAME' => $username, 'PASSWORD' => $password, 'EMAIL_SIG' => '', 'U_ACTIVATE' => generate_link('system&mode=activate&user_id=' . $data['user_id'] . '&key=' . $user_act_key, array('sid' => false, 'full' => true)))); if ($coppa) { $_CLASS['core_template']->assign_array(array('FAX_INFO' => $_CORE_CONFIG['user']['coppa_fax'], 'MAIL_INFO' => $_CORE_CONFIG['user']['coppa_mail'], 'EMAIL_ADDRESS' => $email, 'SITENAME' => $_CORE_CONFIG['global']['site_name'])); } $mailer->message = trim($_CLASS['core_template']->display('modules/Control_Panel/email/' . $email_template, true)); $mailer->send(); $message = $message . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_INDEX'], '<a href="' . generate_link() . '">', '</a>'); trigger_error($message); } } $s_hidden_fields .= '<input type="hidden" name="coppa" value="' . $coppa . '" />'; $s_hidden_fields .= '<input type="hidden" name="agreed" value="true" />'; if ($_CORE_CONFIG['user']['enable_confirm']) { $_CLASS['core_user']->session_data_set('confirmation_code', generate_string(6)); $confirm_image = '<img src="' . generate_link('system&mode=confirmation_image') . '" alt="" title="" />'; } else { $confirm_image = false; } if ($submit) { if ($_CORE_CONFIG['user']['max_reg_attempts']) { $attempts = (int) $_CLASS['core_user']->session_data_get('reg_attempts', 0); if ($attempts > $_CORE_CONFIG['user']['max_reg_attempts']) { trigger_error($_CLASS['core_user']->lang['TOO_MANY_REGISTERS']); } $_CLASS['core_user']->session_data_get('reg_attempts', $attempts + 1); } } switch ($_CORE_CONFIG['user']['activation']) { case USER_ACTIVATION_SELF: $l_reg_cond = $_CLASS['core_user']->lang['UCP_EMAIL_ACTIVATE']; break; case USER_ACTIVATION_ADMIN: $l_reg_cond = $_CLASS['core_user']->lang['UCP_ADMIN_ACTIVATE']; break; default: $l_reg_cond = ''; break; } $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\\w]+' => 'USERNAME_ALPHA_ONLY', '[\\w_\\+\\. \\-\\[\\]]+' => 'USERNAME_ALPHA_SPACERS'); $_CLASS['core_template']->assign_array(array('ERROR' => empty($error) ? false : implode('<br />', $error), 'USERNAME' => isset($username) ? $username : '', 'PASSWORD' => isset($password) ? $password : '', 'EMAIL' => isset($email) ? $email : '', 'EMAIL_CONFIRM' => isset($email_confirm) ? $email_confirm : '', 'CONFIRM_IMG' => $confirm_image, 'SELECT_TZ' => select_tz(isset($tz) ? $tz : $_CORE_CONFIG['global']['default_timezone']), 'L_CONFIRM_EXPLAIN' => sprintf($_CLASS['core_user']->lang['CONFIRM_EXPLAIN'], '<a href="mailto:' . htmlentities($config['board_contact']) . '">', '</a>'), 'L_ITEMS_REQUIRED' => $l_reg_cond, 'L_USERNAME_EXPLAIN' => sprintf($_CLASS['core_user']->lang[$user_char_ary[$_CORE_CONFIG['user']['allow_name_chars']] . '_EXPLAIN'], $_CORE_CONFIG['user']['min_name_chars'], $_CORE_CONFIG['user']['max_name_chars']), 'L_NEW_PASSWORD_EXPLAIN' => sprintf($_CLASS['core_user']->lang['NEW_PASSWORD_EXPLAIN'], $_CORE_CONFIG['user']['min_pass_chars'], $_CORE_CONFIG['user']['max_pass_chars']), 'S_COPPA' => $coppa, 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_UCP_ACTION' => generate_link("Control_Panel&mode=register"))); $this->display($_CLASS['core_user']->lang['REGISTER'], 'ucp_register.html'); }
$view_email_no = !$viewemail ? ' checked="checked"' : ''; $mass_email_yes = $massemail ? ' checked="checked"' : ''; $mass_email_no = !$massemail ? ' checked="checked"' : ''; $allow_pm_yes = $allowpm ? ' checked="checked"' : ''; $allow_pm_no = !$allowpm ? ' checked="checked"' : ''; $hide_online_yes = $hideonline ? ' checked="checked"' : ''; $hide_online_no = !$hideonline ? ' checked="checked"' : ''; $notify_pm_yes = $notifypm ? ' checked="checked"' : ''; $notify_pm_no = !$notifypm ? ' checked="checked"' : ''; $popup_pm_yes = $popuppm ? ' checked="checked"' : ''; $popup_pm_no = !$popuppm ? ' checked="checked"' : ''; $report_pm_notify_yes = $report_pm_notify ? ' checked="checked"' : ''; $report_pm_notify_no = !$report_pm_notify ? ' checked="checked"' : ''; $dst_yes = $dst ? ' checked="checked"' : ''; $dst_no = !$dst ? ' checked="checked"' : ''; $_CLASS['core_template']->assign_array(array('ERROR' => sizeof($error) ? implode('<br />', $error) : '', 'VIEW_EMAIL_YES' => $view_email_yes, 'VIEW_EMAIL_NO' => $view_email_no, 'ADMIN_EMAIL_YES' => $mass_email_yes, 'ADMIN_EMAIL_NO' => $mass_email_no, 'HIDE_ONLINE_YES' => $hide_online_yes, 'HIDE_ONLINE_NO' => $hide_online_no, 'ALLOW_PM_YES' => $allow_pm_yes, 'ALLOW_PM_NO' => $allow_pm_no, 'NOTIFY_PM_YES' => $notify_pm_yes, 'NOTIFY_PM_NO' => $notify_pm_no, 'POPUP_PM_YES' => $popup_pm_yes, 'POPUP_PM_NO' => $popup_pm_no, 'REPORT_PM_NO' => $report_pm_notify_no, 'REPORT_PM_YES' => $report_pm_notify_yes, 'DST_YES' => $dst_yes, 'DST_NO' => $dst_no, 'NOTIFY_EMAIL' => $notifymethod == NOTIFY_EMAIL ? 'checked="checked"' : '', 'NOTIFY_IM' => $notifymethod == NOTIFY_IM ? 'checked="checked"' : '', 'NOTIFY_BOTH' => $notifymethod == NOTIFY_BOTH ? 'checked="checked"' : '', 'DATE_FORMAT' => $dateformat, 'S_LANG_OPTIONS' => select_language($lang), 'S_THEME_OPTIONS' => select_theme($theme, true), 'S_TZ_OPTIONS' => select_tz($tz, true), 'S_CAN_HIDE_ONLINE' => true, 'S_SELECT_NOTIFY' => $config['jab_enable'] && $_CLASS['core_user']->data['user_jabber'] && @extension_loaded('xml') ? true : false)); break; case 'view': if ($submit) { $topic_sk = get_variable('topic_sk', 'REQUEST', 't'); $topic_sd = get_variable('topic_sd', 'REQUEST', 'd'); $topic_st = get_variable('topic_st', 'REQUEST', 0, 'interger'); $post_sk = get_variable('post_sk', 'REQUEST', 't'); $post_sd = get_variable('post_sd', 'REQUEST', 'd'); $post_st = get_variable('post_st', 'REQUEST', 0, 'interger'); $images = (bool) get_variable('images', 'REQUEST', true, 'interger'); $flash = (bool) get_variable('flash', 'REQUEST', false, 'interger'); $smilies = (bool) get_variable('smilies', 'REQUEST', true, 'interger'); $sigs = (bool) get_variable('sigs', 'REQUEST', true, 'interger'); $avatars = (bool) get_variable('avatars', 'REQUEST', true, 'interger'); $wordcensor = (bool) get_variable('wordcensor', 'REQUEST', true, 'interger');