Example #1
0
                }
                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&amp;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&amp;i={$id}&amp;mode={$mode}"));
                        $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&amp;i={$id}&amp;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&amp;i={$id}&amp;mode={$mode}"));
                        $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&amp;i={$id}&amp;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&amp;i={$id}&amp;mode={$mode}"));
                        $message = $_CLASS['core_user']->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($_CLASS['core_user']->lang['RETURN_UCP'], '<a href="' . generate_link("Control_Panel&amp;i={$id}&amp;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&amp;i={$id}&amp;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&amp;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&amp;mode=register&amp;coppa=0'), 'U_COPPA_YES' => generate_link('Control_Panel&amp;mode=register&amp;coppa=1'), 'S_SHOW_COPPA' => true, 'S_HIDDEN_FIELDS' => $s_hidden_fields, 'S_REGISTER_ACTION' => generate_link('Control_Panel&amp;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&amp;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&amp;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&amp;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&amp;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');