[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 /** 15 * @ignore 16 */ 17 if (!defined('IN_PHPBB')) 18 { 19 exit; 20 } 21 22 /** 23 * ucp_activate 24 * User activation 25 */ 26 class ucp_activate 27 { 28 var $u_action; 29 30 function main($id, $mode) 31 { 32 global $config, $phpbb_root_path, $phpEx, $request; 33 global $db, $user, $auth, $phpbb_container, $phpbb_log, $phpbb_dispatcher; 34 35 $user_id = $request->variable('u', 0); 36 $key = $request->variable('k', ''); 37 38 $sql = 'SELECT user_id, username, user_type, user_email, user_newpasswd, user_lang, user_notify_type, user_actkey, user_inactive_reason 39 FROM ' . USERS_TABLE . " 40 WHERE user_id = $user_id"; 41 $result = $db->sql_query($sql); 42 $user_row = $db->sql_fetchrow($result); 43 $db->sql_freeresult($result); 44 45 if (!$user_row) 46 { 47 trigger_error('NO_USER'); 48 } 49 50 if ($user_row['user_type'] <> USER_INACTIVE && !$user_row['user_newpasswd']) 51 { 52 meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx")); 53 trigger_error('ALREADY_ACTIVATED'); 54 } 55 56 if ($user_row['user_inactive_reason'] == INACTIVE_MANUAL || $user_row['user_actkey'] !== $key) 57 { 58 trigger_error('WRONG_ACTIVATION'); 59 } 60 61 // Do not allow activating by non administrators when admin activation is on 62 // Only activation type the user should be able to do is INACTIVE_REMIND 63 // or activate a new password which is not an activation state :@ 64 if (!$user_row['user_newpasswd'] && $user_row['user_inactive_reason'] != INACTIVE_REMIND && $config['require_activation'] == USER_ACTIVATION_ADMIN && !$auth->acl_get('a_user')) 65 { 66 if (!$user->data['is_registered']) 67 { 68 login_box('', $user->lang['NO_AUTH_OPERATION']); 69 } 70 send_status_line(403, 'Forbidden'); 71 trigger_error('NO_AUTH_OPERATION'); 72 } 73 74 $update_password = ($user_row['user_newpasswd']) ? true : false; 75 76 if ($update_password) 77 { 78 $sql_ary = array( 79 'user_actkey' => '', 80 'user_password' => $user_row['user_newpasswd'], 81 'user_newpasswd' => '', 82 'user_login_attempts' => 0, 83 ); 84 85 $sql = 'UPDATE ' . USERS_TABLE . ' 86 SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' 87 WHERE user_id = ' . $user_row['user_id']; 88 $db->sql_query($sql); 89 90 $user->reset_login_keys($user_row['user_id']); 91 92 $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array( 93 'reportee_id' => $user_row['user_id'], 94 $user_row['username'] 95 )); 96 } 97 98 if (!$update_password) 99 { 100 include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx); 101 102 user_active_flip('activate', $user_row['user_id']); 103 104 $sql = 'UPDATE ' . USERS_TABLE . " 105 SET user_actkey = '' 106 WHERE user_id = {$user_row['user_id']}"; 107 $db->sql_query($sql); 108 109 // Create the correct logs 110 $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE_USER', false, array( 111 'reportee_id' => $user_row['user_id'] 112 )); 113 114 if ($auth->acl_get('a_user')) 115 { 116 $phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_ACTIVE', false, array($user_row['username'])); 117 } 118 } 119 120 if ($config['require_activation'] == USER_ACTIVATION_ADMIN && !$update_password) 121 { 122 /* @var $phpbb_notifications \phpbb\notification\manager */ 123 $phpbb_notifications = $phpbb_container->get('notification_manager'); 124 $phpbb_notifications->delete_notifications('notification.type.admin_activate_user', $user_row['user_id']); 125 126 include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx); 127 128 $messenger = new messenger(false); 129 130 $messenger->template('admin_welcome_activated', $user_row['user_lang']); 131 132 $messenger->set_addresses($user_row); 133 134 $messenger->anti_abuse_headers($config, $user); 135 136 $messenger->assign_vars(array( 137 'USERNAME' => htmlspecialchars_decode($user_row['username'])) 138 ); 139 140 $messenger->send($user_row['user_notify_type']); 141 142 $message = 'ACCOUNT_ACTIVE_ADMIN'; 143 } 144 else 145 { 146 if (!$update_password) 147 { 148 $message = ($user_row['user_inactive_reason'] == INACTIVE_PROFILE) ? 'ACCOUNT_ACTIVE_PROFILE' : 'ACCOUNT_ACTIVE'; 149 } 150 else 151 { 152 $message = 'PASSWORD_ACTIVATED'; 153 } 154 } 155 156 /** 157 * This event can be used to modify data after user account's activation 158 * 159 * @event core.ucp_activate_after 160 * @var array user_row Array with some user data 161 * @var string message Language string of the message that will be displayed to the user 162 * @since 3.1.6-RC1 163 */ 164 $vars = array('user_row', 'message'); 165 extract($phpbb_dispatcher->trigger_event('core.ucp_activate_after', compact($vars))); 166 167 meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx")); 168 trigger_error($user->lang[$message]); 169 } 170 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |