6 * @copyright (c) 2005 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
14 if (!defined('IN_PHPBB'))
21 * Sending password reminders
28 function main($id, $mode)
30 global $db, $user, $auth, $template, $config;
32 $username = request_var('username', '', true);
33 $email = strtolower(request_var('email', ''));
34 $submit = phpbb_request
::is_set_post('submit');
38 $sql = 'SELECT user_id, username, user_permissions, user_email, user_jabber, user_notify_type, user_type, user_lang, user_inactive_reason
39 FROM ' . USERS_TABLE
. "
40 WHERE user_email = '" . $db->sql_escape($email) . "'
41 AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
42 $result = $db->sql_query($sql);
43 $user_row = $db->sql_fetchrow($result);
44 $db->sql_freeresult($result);
48 trigger_error('NO_EMAIL_USER');
51 if ($user_row['user_type'] == phpbb
::USER_IGNORE
)
53 trigger_error('NO_USER');
56 if ($user_row['user_type'] == phpbb
::USER_INACTIVE
)
58 if ($user_row['user_inactive_reason'] == INACTIVE_MANUAL
)
60 trigger_error('ACCOUNT_DEACTIVATED');
64 trigger_error('ACCOUNT_NOT_ACTIVATED');
68 // Check users permissions
70 $auth2->acl($user_row);
72 if (!$auth2->acl_get('u_chgpasswd'))
74 trigger_error('NO_AUTH_PASSWORD_REMINDER');
77 $server_url = generate_board_url();
79 $key_len = 54 - strlen($server_url);
80 $key_len = max(6, $key_len); // we want at least 6
81 $key_len = ($config['max_pass_chars']) ?
min($key_len, $config['max_pass_chars']) : $key_len; // we want at most $config['max_pass_chars']
82 $user_actkey = substr(gen_rand_string(10), 0, $key_len);
83 $user_password = gen_rand_string(8);
85 $sql = 'UPDATE ' . USERS_TABLE
. "
86 SET user_newpasswd = '" . $db->sql_escape(phpbb_hash($user_password)) . "', user_actkey = '" . $db->sql_escape($user_actkey) . "'
87 WHERE user_id = " . $user_row['user_id'];
90 include_once(PHPBB_ROOT_PATH
. 'includes/functions_messenger.' . PHP_EXT
);
92 $messenger = new messenger(false);
94 $messenger->template('user_activate_passwd', $user_row['user_lang']);
96 $messenger->to($user_row['user_email'], $user_row['username']);
97 $messenger->im($user_row['user_jabber'], $user_row['username']);
99 $messenger->assign_vars(array(
100 'USERNAME' => htmlspecialchars_decode($user_row['username']),
101 'PASSWORD' => htmlspecialchars_decode($user_password),
102 'U_ACTIVATE' => "$server_url/ucp." . PHP_EXT
. "?mode=activate&u={$user_row['user_id']}&k=$user_actkey")
105 $messenger->send($user_row['user_notify_type']);
107 meta_refresh(3, append_sid('index'));
109 $message = $user->lang
['PASSWORD_UPDATED'] . '<br /><br />' . sprintf($user->lang
['RETURN_INDEX'], '<a href="' . append_sid('index') . '">', '</a>');
110 trigger_error($message);
113 $template->assign_vars(array(
114 'USERNAME' => $username,
116 'S_PROFILE_ACTION' => append_sid('ucp', 'mode=sendpassword'),
119 $this->tpl_name
= 'ucp_remind';
120 $this->page_title
= 'UCP_REMIND';