public function main()
    {
        global $config, $phpbb_root_path, $phpEx;
        global $db, $user, $auth, $template;
        $username = request_var('username', '', true);
        $sql = 'SELECT user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason
			FROM ' . USERS_TABLE . "\r\r\n\t\t\tWHERE  username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
        $result = $db->sql_query($sql);
        $user_row = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);
        if (!$user_row) {
            trigger_error('NO_EMAIL_USER');
        }
        if ($user_row['user_type'] == USER_IGNORE) {
            trigger_error('NO_USER');
        }
        if ($user_row['user_type'] == USER_INACTIVE) {
            if ($user_row['user_inactive_reason'] == INACTIVE_MANUAL) {
                trigger_error('ACCOUNT_DEACTIVATED');
            } else {
                trigger_error('ACCOUNT_NOT_ACTIVATED');
            }
        }
        // Check users permissions
        $auth2 = new auth();
        $auth2->acl($user_row);
        if (!$auth2->acl_get('u_chgpasswd')) {
            trigger_error('NO_AUTH_PASSWORD_REMINDER');
        }
        $result = tt_register_verify($_POST['tt_token'], $_POST['tt_code']);
        if ($result->result && $user_row['user_email'] == $result->email) {
            $this->result = true;
            $this->verify = true;
            return;
        }
        $this->result = false;
        $this->result_text = 'Sorry, you can only retrieve your password from browser.';
        return;
    }
Пример #2
0
<?php

defined('IN_MOBIQUO') or exit;
require_once MYBB_ROOT . "inc/functions_post.php";
require_once MYBB_ROOT . "inc/functions_user.php";
require_once MYBB_ROOT . "inc/class_parser.php";
$parser = new postParser();
$verify_result = false;
$result_text = '';
// Load global language phrases
$lang->load("usercp");
if (!empty($_POST['tt_token']) && !empty($_POST['tt_code'])) {
    $result = tt_register_verify($_POST['tt_token'], $_POST['tt_code']);
    if ($result->result && $result->email) {
        $query = $db->simple_select("users", "*", "email='" . $result->email . "'");
        $user = $db->fetch_array($query);
        $groupscache = $cache->read("usergroups");
        $mybb->usergroup = $groupscache[$user['usergroup']];
        $mybb->user = $user;
        $verify_result = true;
    } else {
        error($result->result_text);
    }
}
if (!$mybb->user['pmfolders']) {
    $mybb->user['pmfolders'] = "1**" . $lang->folder_inbox . "\$%%\$2**" . $lang->folder_sent_items . "\$%%\$3**" . $lang->folder_drafts . "\$%%\$4**" . $lang->folder_trash;
    $db->update_query("users", array('pmfolders' => $mybb->user['pmfolders']), "uid='" . $mybb->user['uid'] . "'");
}
if ($mybb->user['uid'] == 0 || $mybb->usergroup['canusercp'] == 0) {
    error("No permission to change password(2) !");
}
    public function main()
    {
        global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
        $verify_result = false;
        $user->add_lang('posting');
        $error = $data = array();
        $s_hidden_fields = '';
        if (!empty($_POST['tt_token']) && !empty($_POST['tt_code'])) {
            $result = tt_register_verify($_POST['tt_token'], $_POST['tt_code']);
            if ($result->result && $result->email) {
                $verify_result = true;
                $email = $result->email;
            } else {
                $this->result = false;
                $this->result_text = "No permission to update your profie info";
            }
        }
        if (!empty($email)) {
            $sql = 'SELECT user_id, username,username_clean, user_password, user_email_hash,user_passchg, user_pass_convert, user_email, user_type, user_login_attempts
				FROM ' . USERS_TABLE . "\r\r\n\t\t\t\tWHERE user_email = '" . $db->sql_escape($email) . "'";
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
            $db->sql_freeresult($result);
            if (!empty($row)) {
                $user->data = $row;
                $auth->acl($user->data);
            } else {
                $this->result = false;
                $this->result_text = 'username not exist!';
                return;
            }
        }
        $data = array('username' => utf8_normalize_nfc(request_var('username', $user->data['username'], true)), 'email' => strtolower(request_var('email', $user->data['user_email'])), 'email_confirm' => strtolower(request_var('email_confirm', $user->data['user_email'])), 'new_password' => request_var('new_password', '', true), 'cur_password' => request_var('cur_password', '', true), 'password_confirm' => request_var('password_confirm', '', true));
        // Do not check cur_password, it is the old one.
        $check_ary = array('new_password' => array(array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), array('password')), 'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']), 'email' => array(array('string', false, 6, 60), array('email')), 'email_confirm' => array('string', true, 6, 60));
        if ($auth->acl_get('u_chgname') && $config['allow_namechange']) {
            $check_ary['username'] = array(array('string', false, $config['min_name_chars'], $config['max_name_chars']), array('username'));
        }
        $error = validate_data($data, $check_ary);
        if ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email'] && $data['email_confirm'] != $data['email']) {
            $error[] = $data['email_confirm'] ? 'NEW_EMAIL_ERROR' : 'NEW_EMAIL_CONFIRM_EMPTY';
        }
        if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && $data['password_confirm'] != $data['new_password']) {
            $error[] = $data['password_confirm'] ? 'NEW_PASSWORD_ERROR' : 'NEW_PASSWORD_CONFIRM_EMPTY';
        }
        // Only check the new password against the previous password if there have been no errors
        if (!sizeof($error) && $auth->acl_get('u_chgpasswd') && $data['new_password'] && phpbb_check_hash($data['new_password'], $user->data['user_password'])) {
            $error[] = 'SAME_PASSWORD_ERROR';
        }
        if (!$verify_result && !phpbb_check_hash($data['cur_password'], $user->data['user_password'])) {
            $error[] = $data['cur_password'] ? 'CUR_PASSWORD_ERROR' : 'CUR_PASSWORD_EMPTY';
        }
        if (!sizeof($error)) {
            $sql_ary = array('username' => $auth->acl_get('u_chgname') && $config['allow_namechange'] ? $data['username'] : $user->data['username'], 'username_clean' => $auth->acl_get('u_chgname') && $config['allow_namechange'] ? utf8_clean_string($data['username']) : $user->data['username_clean'], 'user_email' => $auth->acl_get('u_chgemail') ? $data['email'] : $user->data['user_email'], 'user_email_hash' => $auth->acl_get('u_chgemail') ? phpbb_email_hash($data['email']) : $user->data['user_email_hash'], 'user_password' => $auth->acl_get('u_chgpasswd') && $data['new_password'] ? phpbb_hash($data['new_password']) : $user->data['user_password'], 'user_passchg' => $auth->acl_get('u_chgpasswd') && $data['new_password'] ? time() : 0);
            if ($auth->acl_get('u_chgname') && $config['allow_namechange'] && $data['username'] != $user->data['username']) {
                add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_NAME', $user->data['username'], $data['username']);
            }
            if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && !phpbb_check_hash($data['new_password'], $user->data['user_password'])) {
                $user->reset_login_keys();
                add_log('user', $user->data['user_id'], 'LOG_USER_NEW_PASSWORD', $data['username']);
            }
            if ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email']) {
                add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_EMAIL', $data['username'], $user->data['user_email'], $data['email']);
            }
            $message = 'PROFILE_UPDATED';
            if ($auth->acl_get('u_chgemail') && $config['email_enable'] && $data['email'] != $user->data['user_email'] && $user->data['user_type'] != USER_FOUNDER && ($config['require_activation'] == USER_ACTIVATION_SELF || $config['require_activation'] == USER_ACTIVATION_ADMIN)) {
                $message = $config['require_activation'] == USER_ACTIVATION_SELF ? 'ACCOUNT_EMAIL_CHANGED' : 'ACCOUNT_EMAIL_CHANGED_ADMIN';
                include_once $phpbb_root_path . 'includes/functions_messenger.' . $phpEx;
                $server_url = generate_board_url();
                $user_actkey = gen_rand_string(mt_rand(6, 10));
                $messenger = new messenger(false);
                $template_file = $config['require_activation'] == USER_ACTIVATION_ADMIN ? 'user_activate_inactive' : 'user_activate';
                $messenger->template($template_file, $user->data['user_lang']);
                $messenger->to($data['email'], $data['username']);
                if (!method_exists($messenger, 'anti_abuse_headers')) {
                    $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']);
                    $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']);
                    $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']);
                    $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip);
                } else {
                    $messenger->anti_abuse_headers($config, $user);
                }
                $messenger->assign_vars(array('USERNAME' => htmlspecialchars_decode($data['username']), 'U_ACTIVATE' => "{$server_url}/ucp.{$phpEx}?mode=activate&u={$user->data['user_id']}&k={$user_actkey}"));
                $messenger->send(NOTIFY_EMAIL);
                if ($config['require_activation'] == USER_ACTIVATION_ADMIN) {
                    // Grab an array of user_id's with a_user permissions ... these users can activate a user
                    $admin_ary = $auth->acl_get_list(false, 'a_user', false);
                    $admin_ary = !empty($admin_ary[0]['a_user']) ? $admin_ary[0]['a_user'] : array();
                    // Also include founders
                    $where_sql = ' WHERE user_type = ' . USER_FOUNDER;
                    if (sizeof($admin_ary)) {
                        $where_sql .= ' OR ' . $db->sql_in_set('user_id', $admin_ary);
                    }
                    $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type
						FROM ' . USERS_TABLE . ' ' . $where_sql;
                    $result = $db->sql_query($sql);
                    while ($row = $db->sql_fetchrow($result)) {
                        $messenger->template('admin_activate', $row['user_lang']);
                        $messenger->to($row['user_email'], $row['username']);
                        $messenger->im($row['user_jabber'], $row['username']);
                        $messenger->assign_vars(array('USERNAME' => htmlspecialchars_decode($data['username']), 'U_USER_DETAILS' => "{$server_url}/memberlist.{$phpEx}?mode=viewprofile&u={$user->data['user_id']}", 'U_ACTIVATE' => "{$server_url}/ucp.{$phpEx}?mode=activate&u={$user->data['user_id']}&k={$user_actkey}"));
                        $messenger->send($row['user_notify_type']);
                    }
                    $db->sql_freeresult($result);
                }
                user_active_flip('deactivate', $user->data['user_id'], INACTIVE_PROFILE);
                // Because we want the profile to be reactivated we set user_newpasswd to empty (else the reactivation will fail)
                $sql_ary['user_actkey'] = $user_actkey;
                $sql_ary['user_newpasswd'] = '';
            }
            if (sizeof($sql_ary)) {
                $sql = 'UPDATE ' . USERS_TABLE . '
					SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
					WHERE user_id = ' . $user->data['user_id'];
                $db->sql_query($sql);
            }
            // Need to update config, forum, topic, posting, messages, etc.
            if ($data['username'] != $user->data['username'] && $auth->acl_get('u_chgname') && $config['allow_namechange']) {
                user_update_name($user->data['username'], $data['username']);
            }
            // Now, we can remove the user completely (kill the session) - NOT BEFORE!!!
            if (!empty($sql_ary['user_actkey'])) {
                // Because the user gets deactivated we log him out too, killing his session
                $user->session_kill();
            }
        }
        // Replace "error" strings with their real, localised form
        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
        if (!empty($error)) {
            $this->result_text = $error[0];
            $this->result = false;
            return;
        }
        $this->result = true;
    }
Пример #4
0
    public function main()
    {
        global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $mobiquo_config;
        //
        if ($config['require_activation'] == USER_ACTIVATION_DISABLE) {
            trigger_error('UCP_REGISTER_DISABLE');
        }
        include $phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx;
        $user_lang = request_var('lang', $user->lang_name);
        $cp = new custom_profile();
        $verify_result = false;
        $error = $cp_data = $cp_error = array();
        $is_dst = $config['board_dst'];
        $timezone = $config['board_timezone'];
        $email = request_var('email', '');
        if (isset($_POST['tt_token']) && isset($_POST['tt_code'])) {
            if ($mobiquo_config['sso_register'] == 0) {
                trigger_error('UCP_REGISTER_DISABLE');
            }
            $result = tt_register_verify($_POST['tt_token'], $_POST['tt_code']);
            if ($result->result && !empty($result->email) && (empty($email) || strtolower($email == strtolower($result->email)))) {
                $verify_result = $result->result;
                $email = $result->email;
            } else {
                if (!$result->result && empty($email) && !empty($result->email)) {
                    $email = $result->email;
                }
            }
        }
        $data = array('username' => utf8_normalize_nfc(request_var('username', '', true)), 'new_password' => request_var('new_password', '', true), 'password_confirm' => request_var('password_confirm', '', true), 'email' => strtolower($email), 'email_confirm' => strtolower($email), 'lang' => basename(request_var('lang', $user->lang_name)), 'tz' => request_var('tz', (double) $timezone));
        $error = validate_data($data, array('username' => array(array('string', false, $config['min_name_chars'], $config['max_name_chars']), array('username', '')), 'new_password' => array(array('string', false, $config['min_pass_chars'], $config['max_pass_chars']), array('password')), 'password_confirm' => array('string', false, $config['min_pass_chars'], $config['max_pass_chars']), 'email' => array(array('string', false, 6, 60), array('email')), 'email_confirm' => array('string', false, 6, 60), 'tz' => array('num', false, -14, 14), 'lang' => array('language_iso_name')));
        // Replace "error" strings with their real, localised form
        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
        // DNSBL check
        if ($config['check_dnsbl']) {
            if (($dnsbl = $user->check_dnsbl('register')) !== false) {
                $error[] = sprintf($user->lang['IP_BLACKLISTED'], $user->ip, $dnsbl[1]);
            }
        }
        // validate custom profile fields
        $cp->submit_cp_field('register', $user->get_iso_lang_id(), $cp_data, $error);
        if (!sizeof($error)) {
            if ($data['new_password'] != $data['password_confirm']) {
                $error[] = $user->lang['NEW_PASSWORD_ERROR'];
            }
            if ($data['email'] != $data['email_confirm']) {
                $error[] = $user->lang['NEW_EMAIL_ERROR'];
            }
        }
        if (!sizeof($error)) {
            // Which group by default?
            $group_name = 'REGISTERED';
            $sql = 'SELECT group_id
				FROM ' . GROUPS_TABLE . "\r\r\n\t\t\t\tWHERE group_name = '" . $db->sql_escape($group_name) . "'\r\r\n\t\t\t\t\tAND group_type = " . GROUP_SPECIAL;
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
            $db->sql_freeresult($result);
            if (!$row) {
                trigger_error('NO_GROUP');
            }
            $group_id = $row['group_id'];
            if ($config['require_activation'] == USER_ACTIVATION_NONE) {
                $group_id = isset($config['tapatalk_register_group']) ? $config['tapatalk_register_group'] : $row['group_id'];
                $user_type = USER_NORMAL;
                $user_actkey = '';
                $user_inactive_reason = 0;
                $user_inactive_time = 0;
            }
            if ($config['require_activation'] != USER_ACTIVATION_NONE && !$verify_result) {
                $user_actkey = gen_rand_string(mt_rand(6, 10));
                $user_type = USER_INACTIVE;
                $user_inactive_reason = INACTIVE_REGISTER;
                $user_inactive_time = time();
            }
            if ($verify_result && $config['require_activation'] != USER_ACTIVATION_ADMIN) {
                $group_id = isset($config['tapatalk_register_group']) ? $config['tapatalk_register_group'] : $row['group_id'];
                $user_type = USER_NORMAL;
                $user_actkey = '';
                $user_inactive_reason = 0;
                $user_inactive_time = 0;
            }
            $user_row = array('username' => $data['username'], 'user_password' => phpbb_hash($data['new_password']), 'user_email' => $data['email'], 'group_id' => (int) $group_id, 'user_timezone' => (double) $data['tz'], 'user_dst' => $is_dst, 'user_lang' => $data['lang'], 'user_type' => $user_type, 'user_actkey' => $user_actkey, 'user_ip' => $user->ip, 'user_regdate' => time(), 'user_inactive_reason' => $user_inactive_reason, 'user_inactive_time' => $user_inactive_time);
            if ($config['new_member_post_limit']) {
                $user_row['user_new'] = 1;
            }
            // Register user...
            $user_id = user_add($user_row, $cp_data);
            // This should not happen, because the required variables are listed above...
            if ($user_id === false) {
                trigger_error('NO_USER', E_USER_ERROR);
            }
            if (!$verify_result) {
                $this->sendEmail($data, $user_id, $user_actkey);
                switch ($config['require_activation']) {
                    case USER_ACTIVATION_SELF:
                        $this->result_text = $user->lang['UCP_EMAIL_ACTIVATE'];
                        break;
                    case USER_ACTIVATION_ADMIN:
                        $this->result_text = $user->lang['UCP_ADMIN_ACTIVATE'];
                        break;
                }
            }
            $this->result = true;
        } else {
            foreach ($error as $msg) {
                trigger_error($msg);
            }
        }
    }
Пример #5
0
function sign_in_func()
{
    global $config, $mobiquo_config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $user_info, $register;
    if ($mobiquo_config['native_register'] == 0) {
        trigger_error('UCP_REGISTER_DISABLE');
    }
    if ($config['require_activation'] == USER_ACTIVATION_DISABLE) {
        trigger_error('UCP_REGISTER_DISABLE');
    }
    include $phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx;
    $user_lang = request_var('lang', $user->lang_name);
    //$cp = new custom_profile();
    $verify_result = false;
    $error = array();
    $is_dst = $config['board_dst'];
    $timezone = $config['board_timezone'];
    $token = trim($_POST['token']);
    $code = trim($_POST['code']);
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    $post_email = trim($_POST['email']);
    $status = '';
    if (isset($token) && isset($code)) {
        $return = tt_register_verify($token, $code);
        if ($return->result && !empty($return->email)) {
            $email = $return->email;
            if (!empty($post_email) && $post_email != $email) {
                $status = 3;
            } else {
                if ($user_info = tt_get_user_by_email($email)) {
                    if (!empty($username) && strtolower($username) != strtolower($user_info['username'])) {
                        $status = 3;
                    } else {
                        $register = 0;
                        return tt_login_success();
                    }
                } else {
                    if (!empty($username) && !empty($email)) {
                        $data = array('username' => utf8_normalize_nfc(request_var('username', '', true)), 'new_password' => request_var('password', '', true), 'password_confirm' => request_var('password', '', true), 'email' => strtolower($email), 'email_confirm' => strtolower($email), 'lang' => basename(request_var('lang', $user->lang_name)), 'tz' => request_var('tz', (double) $timezone));
                        //check username
                        if ($result_username = validate_username($username)) {
                            if ($result_username == 'USERNAME_TAKEN') {
                                $status = 1;
                            } else {
                                $error[] = empty($user->lang[$result_username . '_' . strtoupper('username')]) ? $result_username : $result_username . '_' . strtoupper('username');
                            }
                        } else {
                            if ($mobiquo_config['sso_signin'] == 0) {
                                trigger_error('UCP_REGISTER_DISABLE');
                            }
                            $error = validate_data($data, array('new_password' => array(array('string', false, $config['min_pass_chars'], $config['max_pass_chars']), array('password')), 'password_confirm' => array('string', false, $config['min_pass_chars'], $config['max_pass_chars']), 'email' => array(array('string', false, 6, 60), array('email')), 'email_confirm' => array('string', false, 6, 60), 'tz' => array('num', false, -14, 14), 'lang' => array('language_iso_name')));
                            // Replace "error" strings with their real, localised form
                            $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
                            // DNSBL check
                            if ($config['check_dnsbl']) {
                                if (($dnsbl = $user->check_dnsbl('register')) !== false) {
                                    $error[] = sprintf($user->lang['IP_BLACKLISTED'], $user->ip, $dnsbl[1]);
                                }
                            }
                            if (!sizeof($error)) {
                                // Which group by default?
                                $group_name = 'REGISTERED';
                                $sql = 'SELECT group_id
							FROM ' . GROUPS_TABLE . "\r\r\n\t\t\t\t\t\t\tWHERE group_name = '" . $db->sql_escape($group_name) . "'\r\r\n\t\t\t\t\t\t\t\tAND group_type = " . GROUP_SPECIAL;
                                $result = $db->sql_query($sql);
                                $row = $db->sql_fetchrow($result);
                                $db->sql_freeresult($result);
                                if (!$row) {
                                    trigger_error('NO_GROUP');
                                }
                                $group_id = isset($config['tapatalk_register_group']) ? $config['tapatalk_register_group'] : $row['group_id'];
                                $user_type = USER_NORMAL;
                                $user_actkey = '';
                                $user_inactive_reason = 0;
                                $user_inactive_time = 0;
                                if ($config['require_activation'] == USER_ACTIVATION_ADMIN && $config['email_enable']) {
                                    $user_type = USER_INACTIVE;
                                    $user_inactive_reason = INACTIVE_REGISTER;
                                    $user_inactive_time = time();
                                }
                                $user_row = array('username' => $data['username'], 'user_password' => phpbb_hash($data['new_password']), 'user_email' => $data['email'], 'group_id' => (int) $group_id, 'user_timezone' => (double) $data['tz'], 'user_dst' => $is_dst, 'user_lang' => $data['lang'], 'user_type' => $user_type, 'user_actkey' => $user_actkey, 'user_ip' => $user->ip, 'user_regdate' => time(), 'user_inactive_reason' => $user_inactive_reason, 'user_inactive_time' => $user_inactive_time);
                                if ($config['new_member_post_limit']) {
                                    $user_row['user_new'] = 1;
                                }
                                if (!empty($return->profile)) {
                                    $profile = $return->profile;
                                    if (!empty($profile->birthday) && $config['allow_birthdays']) {
                                        $birth_arr = explode('-', $profile->birthday);
                                        $user_row['user_birthday'] = sprintf('%2d-%2d-%4d', $birth_arr[2], $birth_arr[1], $birth_arr[0]);
                                    }
                                    $user_row['user_from'] = $profile->location;
                                    $user_row['user_website'] = $profile->link;
                                    $user_row['user_sig'] = $profile->signature;
                                }
                                // Register user...
                                $user_id = user_add($user_row);
                                //copy avatar
                                tt_copy_avatar($user_id, $profile->avatar_url);
                                // This should not happen, because the required variables are listed above...
                                if ($user_id === false) {
                                    trigger_error('NO_USER', E_USER_ERROR);
                                } else {
                                    if ($config['require_activation'] == USER_ACTIVATION_ADMIN && $config['email_enable']) {
                                        $message = $user->lang['ACCOUNT_INACTIVE_ADMIN'];
                                        $email_template = 'admin_welcome_inactive';
                                        $server_url = generate_board_url();
                                        include_once $phpbb_root_path . 'includes/functions_messenger.' . $phpEx;
                                        $messenger = new messenger(false);
                                        $messenger->template($email_template, $data['lang']);
                                        $messenger->to($data['email'], $data['username']);
                                        if (!method_exists($messenger, 'anti_abuse_headers')) {
                                            $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']);
                                            $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']);
                                            $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']);
                                            $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip);
                                        } else {
                                            $messenger->anti_abuse_headers($config, $user);
                                        }
                                        $messenger->assign_vars(array('WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename'])), 'USERNAME' => htmlspecialchars_decode($data['username']), 'PASSWORD' => htmlspecialchars_decode($data['new_password']), 'U_ACTIVATE' => "{$server_url}/ucp.{$phpEx}?mode=activate&u={$user_id}&k={$user_actkey}"));
                                        $messenger->send(NOTIFY_EMAIL);
                                        if ($config['require_activation'] == USER_ACTIVATION_ADMIN) {
                                            // Grab an array of user_id's with a_user permissions ... these users can activate a user
                                            $admin_ary = $auth->acl_get_list(false, 'a_user', false);
                                            $admin_ary = !empty($admin_ary[0]['a_user']) ? $admin_ary[0]['a_user'] : array();
                                            // Also include founders
                                            $where_sql = ' WHERE user_type = ' . USER_FOUNDER;
                                            if (sizeof($admin_ary)) {
                                                $where_sql .= ' OR ' . $db->sql_in_set('user_id', $admin_ary);
                                            }
                                            $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type
										FROM ' . USERS_TABLE . ' ' . $where_sql;
                                            $result = $db->sql_query($sql);
                                            while ($row = $db->sql_fetchrow($result)) {
                                                $messenger->template('admin_activate', $row['user_lang']);
                                                $messenger->to($row['user_email'], $row['username']);
                                                $messenger->im($row['user_jabber'], $row['username']);
                                                $messenger->assign_vars(array('USERNAME' => htmlspecialchars_decode($data['username']), 'U_USER_DETAILS' => "{$server_url}/memberlist.{$phpEx}?mode=viewprofile&u={$user_id}", 'U_ACTIVATE' => "{$server_url}/ucp.{$phpEx}?mode=activate&u={$user_id}&k={$user_actkey}"));
                                                $messenger->send($row['user_notify_type']);
                                            }
                                            $db->sql_freeresult($result);
                                        }
                                        trigger_error('UCP_ADMIN_ACTIVATE');
                                    }
                                    $user_info['user_id'] = $user_id;
                                    $register = 1;
                                    return tt_login_success();
                                }
                            } else {
                                foreach ($error as $msg) {
                                    trigger_error($msg);
                                }
                            }
                        }
                    } else {
                        $status = 2;
                    }
                }
            }
        } else {
            if (!$return->result) {
                if (!empty($return->result_text)) {
                    trigger_error($return->result_text);
                } else {
                    trigger_error("Tapatalk ID verify faile!");
                }
            }
        }
        if (!empty($status)) {
            $response = new xmlrpcval(array('result' => new xmlrpcval(0, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'status' => new xmlrpcval($status, 'string')), 'struct');
            return new xmlrpcresp($response);
        }
    } else {
        trigger_error("Invlaid params!");
    }
}
Пример #6
0
function sign_in_func()
{
    global $db, $lang, $theme, $plugins, $mybb, $session, $settings, $cache, $time, $mybbgroups, $mobiquo_config, $user, $register;
    // Load global language phrases
    $lang->load("member");
    $parser = new postParser();
    $token = trim($_POST['token']);
    $code = trim($_POST['code']);
    $username = $mybb->input['username'];
    $password = $mybb->input['password'];
    $post_email = $mybb->input['email'];
    $status = '';
    if (!empty($token) && !empty($code)) {
        $result = tt_register_verify($token, $code);
        if ($result->result && !empty($result->email)) {
            $email = $result->email;
            if (!empty($post_email) && $post_email != $email) {
                $status = 3;
            } else {
                if ($user = tt_get_user_by_email($email)) {
                    if (!empty($username) && strtolower($username) != strtolower($user['username'])) {
                        $status = 3;
                    } else {
                        $register = 0;
                        return tt_login_success();
                    }
                } else {
                    if (!empty($username) && !empty($email)) {
                        $profile = $result->profile;
                        if ($mybb->settings['disableregs'] == 1) {
                            error($lang->registrations_disabled);
                        }
                        // Set up user handler.
                        require_once MYBB_ROOT . "inc/datahandlers/user.php";
                        $userhandler = new UserDataHandler("insert");
                        $birthday_arr = explode('-', $profile->birthday);
                        $bday = array("day" => $birthday_arr[2], "month" => $birthday_arr[1], "year" => $birthday_arr[0]);
                        $user_field = array('fid3' => ucfirst($profile->gender), 'fid1' => $profile->location, 'fid2' => $profile->description);
                        if ($mybb->settings['regtype'] == "admin") {
                            $usergroup = 5;
                        } else {
                            $usergroup = isset($mybb->settings['tapatalk_register_group']) ? $mybb->settings['tapatalk_register_group'] : 2;
                        }
                        // Set the data for the new user.
                        $user = array("username" => $mybb->input['username'], "password" => $mybb->input['password'], "password2" => $mybb->input['password'], "email" => $email, "email2" => $email, "usergroup" => $usergroup, "referrer" => '', "timezone" => $mybb->settings['timezoneoffset'], "language" => '', "regip" => $session->ipaddress, "longregip" => my_ip2long($session->ipaddress), "coppa_user" => 0, "birthday" => $bday, "website" => $profile->link, "user_fields" => $user_field, "signature" => $profile->signature, "option" => array(), "regdate" => TIME_NOW, "lastvisit" => TIME_NOW);
                        if (!empty($profile->avatar_url)) {
                            $updated_avatar = tt_update_avatar_url($profile->avatar_url);
                        }
                        $userhandler->set_data($user);
                        $userhandler->verify_birthday();
                        $userhandler->verify_options();
                        if ($userhandler->verify_username_exists()) {
                            $status = 1;
                        } else {
                            if (!$userhandler->verify_password() || !$userhandler->verify_username()) {
                                $errors = $userhandler->get_friendly_errors();
                                error($errors[0]);
                            } else {
                                $userhandler->set_validated(true);
                                $user = $userhandler->insert_user();
                                if (!empty($updated_avatar)) {
                                    $db->update_query("users", $updated_avatar, "uid='" . $user['uid'] . "'");
                                }
                                $register = 1;
                                return tt_login_success();
                            }
                        }
                    } else {
                        $status = 2;
                    }
                }
            }
        } else {
            if (!$result->result) {
                if (!empty($result->result_text)) {
                    error($result->result_text);
                } else {
                    error("Tapatalk ID verify faile!");
                }
            }
        }
        if (!empty($status)) {
            $response = new xmlrpcval(array('result' => new xmlrpcval(0, 'boolean'), 'result_text' => new xmlrpcval('', 'base64'), 'status' => new xmlrpcval($status, 'string')), 'struct');
            return new xmlrpcresp($response);
        }
    } else {
        error("Invlaid params!");
    }
}