replace constants with class constants.
[phpbb.git] / phpBB / modules / ucp / ucp_remind.php
blob550051ae181fc01b4dc118653a7876f73703853f
1 <?php
2 /**
4 * @package ucp
5 * @version $Id$
6 * @copyright (c) 2005 phpBB Group
7 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
9 */
11 /**
12 * @ignore
14 if (!defined('IN_PHPBB'))
16 exit;
19 /**
20 * ucp_remind
21 * Sending password reminders
22 * @package ucp
24 class ucp_remind
26 var $u_action;
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');
36 if ($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);
46 if (!$user_row)
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');
62 else
64 trigger_error('ACCOUNT_NOT_ACTIVATED');
68 // Check users permissions
69 $auth2 = new auth();
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'];
88 $db->sql_query($sql);
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,
115 'EMAIL' => $email,
116 'S_PROFILE_ACTION' => append_sid('ucp', 'mode=sendpassword'),
119 $this->tpl_name = 'ucp_remind';
120 $this->page_title = 'UCP_REMIND';