~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/ucp/ucp_profile.php

Merge setup-stuff.

phpBB is gone, configuration, setup and jail building are completely redone.

Please read doc/setup/install_proc.txt, or you'll not get far.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
*
4
 
* @package ucp
5
 
* @version $Id: ucp_profile.php,v 1.127 2007/10/05 14:36:34 acydburn Exp $
6
 
* @copyright (c) 2005 phpBB Group
7
 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8
 
*
9
 
*/
10
 
 
11
 
/**
12
 
* @ignore
13
 
*/
14
 
if (!defined('IN_PHPBB'))
15
 
{
16
 
        exit;
17
 
}
18
 
 
19
 
/**
20
 
* ucp_profile
21
 
* Changing profile settings
22
 
*
23
 
* @todo what about pertaining user_sig_options?
24
 
* @package ucp
25
 
*/
26
 
class ucp_profile
27
 
{
28
 
        var $u_action;
29
 
 
30
 
        function main($id, $mode)
31
 
        {
32
 
                global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
33
 
 
34
 
                $user->add_lang('posting');
35
 
 
36
 
                $preview        = (!empty($_POST['preview'])) ? true : false;
37
 
                $submit         = (!empty($_POST['submit'])) ? true : false;
38
 
                $delete         = (!empty($_POST['delete'])) ? true : false;
39
 
                $error = $data = array();
40
 
                $s_hidden_fields = '';
41
 
 
42
 
                switch ($mode)
43
 
                {
44
 
                        case 'reg_details':
45
 
 
46
 
                                $data = array(
47
 
                                        'username'                      => utf8_normalize_nfc(request_var('username', $user->data['username'], true)),
48
 
                                        'email'                         => strtolower(request_var('email', $user->data['user_email'])),
49
 
                                        'email_confirm'         => strtolower(request_var('email_confirm', '')),
50
 
                                        'new_password'          => request_var('new_password', '', true),
51
 
                                        'cur_password'          => request_var('cur_password', '', true),
52
 
                                        'password_confirm'      => request_var('password_confirm', '', true),
53
 
                                );
54
 
 
55
 
                                add_form_key('ucp_reg_details');
56
 
 
57
 
                                if ($submit)
58
 
                                {
59
 
                                        // Do not check cur_password, it is the old one.
60
 
                                        $check_ary = array(
61
 
                                                'new_password'          => array(
62
 
                                                        array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
63
 
                                                        array('password')),
64
 
                                                'password_confirm'      => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
65
 
                                                'email'                         => array(
66
 
                                                        array('string', false, 6, 60),
67
 
                                                        array('email')),
68
 
                                                'email_confirm'         => array('string', true, 6, 60),
69
 
                                        );
70
 
 
71
 
                                        if ($auth->acl_get('u_chgname') && $config['allow_namechange'])
72
 
                                        {
73
 
                                                $check_ary['username'] = array(
74
 
                                                        array('string', false, $config['min_name_chars'], $config['max_name_chars']),
75
 
                                                        array('username'),
76
 
                                                );
77
 
                                        }
78
 
 
79
 
                                        $error = validate_data($data, $check_ary);
80
 
 
81
 
                                        if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && $data['password_confirm'] != $data['new_password'])
82
 
                                        {
83
 
                                                $error[] = 'NEW_PASSWORD_ERROR';
84
 
                                        }
85
 
 
86
 
                                        if (($data['new_password'] || ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email']) || ($data['username'] != $user->data['username'] && $auth->acl_get('u_chgname') && $config['allow_namechange'])) && !phpbb_check_hash($data['cur_password'], $user->data['user_password']))
87
 
                                        {
88
 
                                                $error[] = 'CUR_PASSWORD_ERROR';
89
 
                                        }
90
 
 
91
 
                                        // Only check the new password against the previous password if there have been no errors
92
 
                                        if (!sizeof($error) && $auth->acl_get('u_chgpasswd') && $data['new_password'] && phpbb_check_hash($data['new_password'], $user->data['user_password']))
93
 
                                        {
94
 
                                                $error[] = 'SAME_PASSWORD_ERROR';
95
 
                                        }
96
 
 
97
 
                                        if ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email'] && $data['email_confirm'] != $data['email'])
98
 
                                        {
99
 
                                                $error[] = 'NEW_EMAIL_ERROR';
100
 
                                        }
101
 
 
102
 
                                        if (!check_form_key('ucp_reg_details'))
103
 
                                        {
104
 
                                                $error[] = 'FORM_INVALID';
105
 
                                        }
106
 
 
107
 
                                        if (!sizeof($error))
108
 
                                        {
109
 
                                                $sql_ary = array(
110
 
                                                        'username'                      => ($auth->acl_get('u_chgname') && $config['allow_namechange']) ? $data['username'] : $user->data['username'],
111
 
                                                        'username_clean'        => ($auth->acl_get('u_chgname') && $config['allow_namechange']) ? utf8_clean_string($data['username']) : $user->data['username_clean'],
112
 
                                                        'user_email'            => ($auth->acl_get('u_chgemail')) ? $data['email'] : $user->data['user_email'],
113
 
                                                        'user_email_hash'       => ($auth->acl_get('u_chgemail')) ? crc32($data['email']) . strlen($data['email']) : $user->data['user_email_hash'],
114
 
                                                        'user_password'         => ($auth->acl_get('u_chgpasswd') && $data['new_password']) ? phpbb_hash($data['new_password']) : $user->data['user_password'],
115
 
                                                        'user_passchg'          => ($auth->acl_get('u_chgpasswd') && $data['new_password']) ? time() : 0,
116
 
                                                );
117
 
 
118
 
                                                if ($auth->acl_get('u_chgname') && $config['allow_namechange'] && $data['username'] != $user->data['username'])
119
 
                                                {
120
 
                                                        add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_NAME', $user->data['username'], $data['username']);
121
 
                                                }
122
 
 
123
 
                                                if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && !phpbb_check_hash($data['new_password'], $user->data['user_password']))
124
 
                                                {
125
 
                                                        $user->reset_login_keys();
126
 
                                                        add_log('user', $user->data['user_id'], 'LOG_USER_NEW_PASSWORD', $data['username']);
127
 
                                                }
128
 
 
129
 
                                                if ($auth->acl_get('u_chgemail') && $data['email'] != $user->data['user_email'])
130
 
                                                {
131
 
                                                        add_log('user', $user->data['user_id'], 'LOG_USER_UPDATE_EMAIL', $data['username'], $user->data['user_email'], $data['email']);
132
 
                                                }
133
 
 
134
 
                                                $message = 'PROFILE_UPDATED';
135
 
 
136
 
                                                if ($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))
137
 
                                                {
138
 
                                                        $message = ($config['require_activation'] == USER_ACTIVATION_SELF) ? 'ACCOUNT_EMAIL_CHANGED' : 'ACCOUNT_EMAIL_CHANGED_ADMIN';
139
 
 
140
 
                                                        include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
141
 
 
142
 
                                                        $server_url = generate_board_url();
143
 
 
144
 
                                                        $user_actkey = gen_rand_string(10);
145
 
                                                        $key_len = 54 - (strlen($server_url));
146
 
                                                        $key_len = ($key_len > 6) ? $key_len : 6;
147
 
                                                        $user_actkey = substr($user_actkey, 0, $key_len);
148
 
 
149
 
                                                        $messenger = new messenger(false);
150
 
 
151
 
                                                        $template_file = ($config['require_activation'] == USER_ACTIVATION_ADMIN) ? 'user_activate_inactive' : 'user_activate';
152
 
                                                        $messenger->template($template_file, $user->data['user_lang']);
153
 
 
154
 
                                                        $messenger->to($data['email'], $data['username']);
155
 
 
156
 
                                                        $messenger->headers('X-AntiAbuse: Board servername - ' . $config['server_name']);
157
 
                                                        $messenger->headers('X-AntiAbuse: User_id - ' . $user->data['user_id']);
158
 
                                                        $messenger->headers('X-AntiAbuse: Username - ' . $user->data['username']);
159
 
                                                        $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip);
160
 
 
161
 
                                                        $messenger->assign_vars(array(
162
 
                                                                'USERNAME'              => htmlspecialchars_decode($data['username']),
163
 
                                                                'U_ACTIVATE'    => "$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey")
164
 
                                                        );
165
 
 
166
 
                                                        $messenger->send(NOTIFY_EMAIL);
167
 
 
168
 
                                                        if ($config['require_activation'] == USER_ACTIVATION_ADMIN)
169
 
                                                        {
170
 
                                                                // Grab an array of user_id's with a_user permissions ... these users can activate a user
171
 
                                                                $admin_ary = $auth->acl_get_list(false, 'a_user', false);
172
 
                                                                $admin_ary = (!empty($admin_ary[0]['a_user'])) ? $admin_ary[0]['a_user'] : array();
173
 
 
174
 
                                                                // Also include founders
175
 
                                                                $where_sql = ' WHERE user_type = ' . USER_FOUNDER;
176
 
 
177
 
                                                                if (sizeof($admin_ary))
178
 
                                                                {
179
 
                                                                        $where_sql .= ' OR ' . $db->sql_in_set('user_id', $admin_ary);
180
 
                                                                }
181
 
 
182
 
                                                                $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber, user_notify_type
183
 
                                                                        FROM ' . USERS_TABLE . ' ' .
184
 
                                                                        $where_sql;
185
 
                                                                $result = $db->sql_query($sql);
186
 
 
187
 
                                                                while ($row = $db->sql_fetchrow($result))
188
 
                                                                {
189
 
                                                                        $messenger->template('admin_activate', $row['user_lang']);
190
 
                                                                        $messenger->to($row['user_email'], $row['username']);
191
 
                                                                        $messenger->im($row['user_jabber'], $row['username']);
192
 
 
193
 
                                                                        $messenger->assign_vars(array(
194
 
                                                                                'USERNAME'                      => htmlspecialchars_decode($data['username']),
195
 
                                                                                'U_USER_DETAILS'        => "$server_url/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}",
196
 
                                                                                'U_ACTIVATE'            => "$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey")
197
 
                                                                        );
198
 
 
199
 
                                                                        $messenger->send($row['user_notify_type']);
200
 
                                                                }
201
 
                                                                $db->sql_freeresult($result);
202
 
                                                        }
203
 
 
204
 
                                                        user_active_flip('deactivate', $user->data['user_id'], INACTIVE_PROFILE);
205
 
 
206
 
                                                        // Because we want the profile to be reactivated we set user_newpasswd to empty (else the reactivation will fail)
207
 
                                                        $sql_ary['user_actkey'] = $user_actkey;
208
 
                                                        $sql_ary['user_newpasswd'] = '';
209
 
                                                }
210
 
 
211
 
                                                if (sizeof($sql_ary))
212
 
                                                {
213
 
                                                        $sql = 'UPDATE ' . USERS_TABLE . '
214
 
                                                                SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
215
 
                                                                WHERE user_id = ' . $user->data['user_id'];
216
 
                                                        $db->sql_query($sql);
217
 
                                                }
218
 
 
219
 
                                                // Need to update config, forum, topic, posting, messages, etc.
220
 
                                                if ($data['username'] != $user->data['username'] && $auth->acl_get('u_chgname') && $config['allow_namechange'])
221
 
                                                {
222
 
                                                        user_update_name($user->data['username'], $data['username']);
223
 
                                                }
224
 
 
225
 
                                                // Now, we can remove the user completely (kill the session) - NOT BEFORE!!!
226
 
                                                if (!empty($sql_ary['user_actkey']))
227
 
                                                {
228
 
                                                        meta_refresh(5, append_sid($phpbb_root_path . 'index.' . $phpEx));
229
 
                                                        $message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_INDEX'], '<a href="' . append_sid($phpbb_root_path . 'index.' . $phpEx) . '">', '</a>');
230
 
 
231
 
                                                        // Because the user gets deactivated we log him out too, killing his session
232
 
                                                        $user->session_kill();
233
 
                                                }
234
 
                                                else
235
 
                                                {
236
 
                                                        meta_refresh(3, $this->u_action);
237
 
                                                        $message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
238
 
                                                }
239
 
 
240
 
                                                trigger_error($message);
241
 
                                        }
242
 
 
243
 
                                        // Replace "error" strings with their real, localised form
244
 
                                        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
245
 
                                }
246
 
 
247
 
                                $template->assign_vars(array(
248
 
                                        'ERROR'                         => (sizeof($error)) ? implode('<br />', $error) : '',
249
 
 
250
 
                                        'USERNAME'                      => $data['username'],
251
 
                                        'EMAIL'                         => $data['email'],
252
 
                                        'PASSWORD_CONFIRM'      => $data['password_confirm'],
253
 
                                        'NEW_PASSWORD'          => $data['new_password'],
254
 
                                        'CUR_PASSWORD'          => '',
255
 
 
256
 
                                        'L_USERNAME_EXPLAIN'            => sprintf($user->lang[$config['allow_name_chars'] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']),
257
 
                                        'L_CHANGE_PASSWORD_EXPLAIN'     => sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']),
258
 
 
259
 
                                        'S_FORCE_PASSWORD'      => ($auth->acl_get('u_chgpasswd') && $config['chg_passforce'] && $user->data['user_passchg'] < time() - ($config['chg_passforce'] * 86400)) ? true : false,
260
 
                                        'S_CHANGE_USERNAME' => ($config['allow_namechange'] && $auth->acl_get('u_chgname')) ? true : false,
261
 
                                        'S_CHANGE_EMAIL'        => ($auth->acl_get('u_chgemail')) ? true : false,
262
 
                                        'S_CHANGE_PASSWORD'     => ($auth->acl_get('u_chgpasswd')) ? true : false)
263
 
                                );
264
 
                        break;
265
 
 
266
 
                        case 'profile_info':
267
 
 
268
 
                                include($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
269
 
 
270
 
                                $cp = new custom_profile();
271
 
 
272
 
                                $cp_data = $cp_error = array();
273
 
 
274
 
                                $data = array(
275
 
                                        'icq'                   => request_var('icq', $user->data['user_icq']),
276
 
                                        'aim'                   => request_var('aim', $user->data['user_aim']),
277
 
                                        'msn'                   => request_var('msn', $user->data['user_msnm']),
278
 
                                        'yim'                   => request_var('yim', $user->data['user_yim']),
279
 
                                        'jabber'                => utf8_normalize_nfc(request_var('jabber', $user->data['user_jabber'], true)),
280
 
                                        'website'               => request_var('website', $user->data['user_website']),
281
 
                                        'location'              => utf8_normalize_nfc(request_var('location', $user->data['user_from'], true)),
282
 
                                        'occupation'    => utf8_normalize_nfc(request_var('occupation', $user->data['user_occ'], true)),
283
 
                                        'interests'             => utf8_normalize_nfc(request_var('interests', $user->data['user_interests'], true)),
284
 
                                );
285
 
 
286
 
                                if ($config['allow_birthdays'])
287
 
                                {
288
 
                                        $data['bday_day'] = $data['bday_month'] = $data['bday_year'] = 0;
289
 
 
290
 
                                        if ($user->data['user_birthday'])
291
 
                                        {
292
 
                                                list($data['bday_day'], $data['bday_month'], $data['bday_year']) = explode('-', $user->data['user_birthday']);
293
 
                                        }
294
 
 
295
 
                                        $data['bday_day'] = request_var('bday_day', $data['bday_day']);
296
 
                                        $data['bday_month'] = request_var('bday_month', $data['bday_month']);
297
 
                                        $data['bday_year'] = request_var('bday_year', $data['bday_year']);
298
 
                                }
299
 
 
300
 
                                add_form_key('ucp_profile_info');
301
 
 
302
 
                                if ($submit)
303
 
                                {
304
 
                                        $validate_array = array(
305
 
                                                'icq'                   => array(
306
 
                                                        array('string', true, 3, 15),
307
 
                                                        array('match', true, '#^[0-9]+$#i')),
308
 
                                                'aim'                   => array('string', true, 3, 255),
309
 
                                                'msn'                   => array('string', true, 5, 255),
310
 
                                                'jabber'                => array(
311
 
                                                        array('string', true, 5, 255),
312
 
                                                        array('jabber')),
313
 
                                                'yim'                   => array('string', true, 5, 255),
314
 
                                                'website'               => array(
315
 
                                                        array('string', true, 12, 255),
316
 
                                                        array('match', true, '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i')),
317
 
                                                'location'              => array('string', true, 2, 255),
318
 
                                                'occupation'    => array('string', true, 2, 500),
319
 
                                                'interests'             => array('string', true, 2, 500),
320
 
                                        );
321
 
 
322
 
                                        if ($config['allow_birthdays'])
323
 
                                        {
324
 
                                                $validate_array = array_merge($validate_array, array(
325
 
                                                        'bday_day'              => array('num', true, 1, 31),
326
 
                                                        'bday_month'    => array('num', true, 1, 12),
327
 
                                                        'bday_year'             => array('num', true, 1901, gmdate('Y', time()) + 50),
328
 
                                                ));
329
 
                                        }
330
 
 
331
 
                                        $error = validate_data($data, $validate_array);
332
 
 
333
 
                                        // validate custom profile fields
334
 
                                        $cp->submit_cp_field('profile', $user->get_iso_lang_id(), $cp_data, $cp_error);
335
 
 
336
 
                                        if (sizeof($cp_error))
337
 
                                        {
338
 
                                                $error = array_merge($error, $cp_error);
339
 
                                        }
340
 
 
341
 
                                        if (!check_form_key('ucp_profile_info'))
342
 
                                        {
343
 
                                                $error[] = 'FORM_INVALID';
344
 
                                        }
345
 
 
346
 
                                        if (!sizeof($error))
347
 
                                        {
348
 
                                                $sql_ary = array(
349
 
                                                        'user_icq'              => $data['icq'],
350
 
                                                        'user_aim'              => $data['aim'],
351
 
                                                        'user_msnm'             => $data['msn'],
352
 
                                                        'user_yim'              => $data['yim'],
353
 
                                                        'user_jabber'   => $data['jabber'],
354
 
                                                        'user_website'  => $data['website'],
355
 
                                                        'user_from'             => $data['location'],
356
 
                                                        'user_occ'              => $data['occupation'],
357
 
                                                        'user_interests'=> $data['interests'],
358
 
                                                );
359
 
 
360
 
                                                if ($config['allow_birthdays'])
361
 
                                                {
362
 
                                                        $sql_ary['user_birthday'] = sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);
363
 
                                                }
364
 
 
365
 
                                                $sql = 'UPDATE ' . USERS_TABLE . '
366
 
                                                        SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
367
 
                                                        WHERE user_id = ' . $user->data['user_id'];
368
 
                                                $db->sql_query($sql);
369
 
 
370
 
                                                // Update Custom Fields
371
 
                                                if (sizeof($cp_data))
372
 
                                                {
373
 
                                                        $sql = 'UPDATE ' . PROFILE_FIELDS_DATA_TABLE . '
374
 
                                                                SET ' . $db->sql_build_array('UPDATE', $cp_data) . '
375
 
                                                                WHERE user_id = ' . $user->data['user_id'];
376
 
                                                        $db->sql_query($sql);
377
 
 
378
 
                                                        if (!$db->sql_affectedrows())
379
 
                                                        {
380
 
                                                                $cp_data['user_id'] = (int) $user->data['user_id'];
381
 
 
382
 
                                                                $db->sql_return_on_error(true);
383
 
 
384
 
                                                                $sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $cp_data);
385
 
                                                                $db->sql_query($sql);
386
 
 
387
 
                                                                $db->sql_return_on_error(false);
388
 
                                                        }
389
 
                                                }
390
 
 
391
 
                                                meta_refresh(3, $this->u_action);
392
 
                                                $message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
393
 
                                                trigger_error($message);
394
 
                                        }
395
 
 
396
 
                                        // Replace "error" strings with their real, localised form
397
 
                                        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
398
 
                                }
399
 
 
400
 
                                if ($config['allow_birthdays'])
401
 
                                {
402
 
                                        $s_birthday_day_options = '<option value="0"' . ((!$data['bday_day']) ? ' selected="selected"' : '') . '>--</option>';
403
 
                                        for ($i = 1; $i < 32; $i++)
404
 
                                        {
405
 
                                                $selected = ($i == $data['bday_day']) ? ' selected="selected"' : '';
406
 
                                                $s_birthday_day_options .= "<option value=\"$i\"$selected>$i</option>";
407
 
                                        }
408
 
 
409
 
                                        $s_birthday_month_options = '<option value="0"' . ((!$data['bday_month']) ? ' selected="selected"' : '') . '>--</option>';
410
 
                                        for ($i = 1; $i < 13; $i++)
411
 
                                        {
412
 
                                                $selected = ($i == $data['bday_month']) ? ' selected="selected"' : '';
413
 
                                                $s_birthday_month_options .= "<option value=\"$i\"$selected>$i</option>";
414
 
                                        }
415
 
                                        $s_birthday_year_options = '';
416
 
 
417
 
                                        $now = getdate();
418
 
                                        $s_birthday_year_options = '<option value="0"' . ((!$data['bday_year']) ? ' selected="selected"' : '') . '>--</option>';
419
 
                                        for ($i = $now['year'] - 100; $i < $now['year']; $i++)
420
 
                                        {
421
 
                                                $selected = ($i == $data['bday_year']) ? ' selected="selected"' : '';
422
 
                                                $s_birthday_year_options .= "<option value=\"$i\"$selected>$i</option>";
423
 
                                        }
424
 
                                        unset($now);
425
 
 
426
 
                                        $template->assign_vars(array(
427
 
                                                'S_BIRTHDAY_DAY_OPTIONS'        => $s_birthday_day_options,
428
 
                                                'S_BIRTHDAY_MONTH_OPTIONS'      => $s_birthday_month_options,
429
 
                                                'S_BIRTHDAY_YEAR_OPTIONS'       => $s_birthday_year_options,
430
 
                                                'S_BIRTHDAYS_ENABLED'           => true,
431
 
                                        ));
432
 
                                }
433
 
 
434
 
                                $template->assign_vars(array(
435
 
                                        'ERROR'         => (sizeof($error)) ? implode('<br />', $error) : '',
436
 
 
437
 
                                        'ICQ'           => $data['icq'],
438
 
                                        'YIM'           => $data['yim'],
439
 
                                        'AIM'           => $data['aim'],
440
 
                                        'MSN'           => $data['msn'],
441
 
                                        'JABBER'        => $data['jabber'],
442
 
                                        'WEBSITE'       => $data['website'],
443
 
                                        'LOCATION'      => $data['location'],
444
 
                                        'OCCUPATION'=> $data['occupation'],
445
 
                                        'INTERESTS'     => $data['interests'],
446
 
                                ));
447
 
 
448
 
                                // Get additional profile fields and assign them to the template block var 'profile_fields'
449
 
                                $user->get_profile_fields($user->data['user_id']);
450
 
 
451
 
                                $cp->generate_profile_fields('profile', $user->get_iso_lang_id());
452
 
 
453
 
                        break;
454
 
 
455
 
                        case 'signature':
456
 
 
457
 
                                if (!$auth->acl_get('u_sig'))
458
 
                                {
459
 
                                        trigger_error('NO_AUTH_SIGNATURE');
460
 
                                }
461
 
                                
462
 
                                include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
463
 
                                include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
464
 
 
465
 
                                $enable_bbcode  = ($config['allow_sig_bbcode']) ? ((request_var('disable_bbcode', !$user->optionget('bbcode'))) ? false : true) : false;
466
 
                                $enable_smilies = ($config['allow_sig_smilies']) ? ((request_var('disable_smilies', !$user->optionget('smilies'))) ? false : true) : false;
467
 
                                $enable_urls    = ($config['allow_sig_links']) ? ((request_var('disable_magic_url', false)) ? false : true) : false;
468
 
 
469
 
                                $signature              = utf8_normalize_nfc(request_var('signature', (string) $user->data['user_sig'], true));
470
 
 
471
 
                                add_form_key('ucp_sig');
472
 
 
473
 
                                if ($submit || $preview)
474
 
                                {
475
 
                                        include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
476
 
 
477
 
                                        if (!sizeof($error))
478
 
                                        {
479
 
                                                $message_parser = new parse_message($signature);
480
 
 
481
 
                                                // Allowing Quote BBCode
482
 
                                                $message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig');
483
 
 
484
 
                                                if (sizeof($message_parser->warn_msg))
485
 
                                                {
486
 
                                                        $error[] = implode('<br />', $message_parser->warn_msg);
487
 
                                                }
488
 
 
489
 
                                                if (!check_form_key('ucp_sig'))
490
 
                                                {
491
 
                                                        $error[] = 'FORM_INVALID';
492
 
                                                }
493
 
 
494
 
                                                if (!sizeof($error) && $submit)
495
 
                                                {
496
 
                                                        $sql_ary = array(
497
 
                                                                'user_sig'                                      => (string) $message_parser->message,
498
 
                                                                'user_sig_bbcode_uid'           => (string) $message_parser->bbcode_uid,
499
 
                                                                'user_sig_bbcode_bitfield'      => $message_parser->bbcode_bitfield
500
 
                                                        );
501
 
 
502
 
                                                        $sql = 'UPDATE ' . USERS_TABLE . '
503
 
                                                                SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
504
 
                                                                WHERE user_id = ' . $user->data['user_id'];
505
 
                                                        $db->sql_query($sql);
506
 
 
507
 
                                                        $message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
508
 
                                                        trigger_error($message);
509
 
                                                }
510
 
                                        }
511
 
 
512
 
                                        // Replace "error" strings with their real, localised form
513
 
                                        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
514
 
                                }
515
 
 
516
 
                                $signature_preview = '';
517
 
                                if ($preview)
518
 
                                {
519
 
                                        // Now parse it for displaying
520
 
                                        $signature_preview = $message_parser->format_display($enable_bbcode, $enable_urls, $enable_smilies, false);
521
 
                                        unset($message_parser);
522
 
                                }
523
 
 
524
 
                                decode_message($signature, $user->data['user_sig_bbcode_uid']);
525
 
 
526
 
                                $template->assign_vars(array(
527
 
                                        'ERROR'                         => (sizeof($error)) ? implode('<br />', $error) : '',
528
 
                                        'SIGNATURE'                     => $signature,
529
 
                                        'SIGNATURE_PREVIEW'     => $signature_preview,
530
 
 
531
 
                                        'S_BBCODE_CHECKED'              => (!$enable_bbcode) ? ' checked="checked"' : '',
532
 
                                        'S_SMILIES_CHECKED'     => (!$enable_smilies) ? ' checked="checked"' : '',
533
 
                                        'S_MAGIC_URL_CHECKED'   => (!$enable_urls) ? ' checked="checked"' : '',
534
 
 
535
 
                                        'BBCODE_STATUS'                 => ($config['allow_sig_bbcode']) ? sprintf($user->lang['BBCODE_IS_ON'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>') : sprintf($user->lang['BBCODE_IS_OFF'], '<a href="' . append_sid("{$phpbb_root_path}faq.$phpEx", 'mode=bbcode') . '">', '</a>'),
536
 
                                        'SMILIES_STATUS'                => ($config['allow_sig_smilies']) ? $user->lang['SMILIES_ARE_ON'] : $user->lang['SMILIES_ARE_OFF'],
537
 
                                        'IMG_STATUS'                    => ($config['allow_sig_img']) ? $user->lang['IMAGES_ARE_ON'] : $user->lang['IMAGES_ARE_OFF'],
538
 
                                        'FLASH_STATUS'                  => ($config['allow_sig_flash']) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'],
539
 
                                        'URL_STATUS'                    => ($config['allow_sig_links']) ? $user->lang['URL_IS_ON'] : $user->lang['URL_IS_OFF'],
540
 
 
541
 
                                        'L_SIGNATURE_EXPLAIN'   => sprintf($user->lang['SIGNATURE_EXPLAIN'], $config['max_sig_chars']),
542
 
 
543
 
                                        'S_BBCODE_ALLOWED'              => $config['allow_sig_bbcode'],
544
 
                                        'S_SMILIES_ALLOWED'             => $config['allow_sig_smilies'],
545
 
                                        'S_BBCODE_IMG'                  => ($config['allow_sig_img']) ? true : false,
546
 
                                        'S_BBCODE_FLASH'                => ($config['allow_sig_flash']) ? true : false,
547
 
                                        'S_LINKS_ALLOWED'               => ($config['allow_sig_links']) ? true : false)
548
 
                                );
549
 
 
550
 
                                // Build custom bbcodes array
551
 
                                display_custom_bbcodes();
552
 
 
553
 
                        break;
554
 
 
555
 
                        case 'avatar':
556
 
 
557
 
                                include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
558
 
 
559
 
                                $display_gallery = request_var('display_gallery', '0');
560
 
                                $avatar_select = basename(request_var('avatar_select', ''));
561
 
                                $category = basename(request_var('category', ''));
562
 
 
563
 
                                $can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $auth->acl_get('u_chgavatar') && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')) ? true : false;
564
 
 
565
 
                                add_form_key('ucp_avatar');
566
 
 
567
 
                                if ($submit)
568
 
                                {
569
 
                                        if (check_form_key('ucp_avatar'))
570
 
                                        {
571
 
                                                if (avatar_process_user($error))
572
 
                                                {
573
 
                                                        meta_refresh(3, $this->u_action);
574
 
                                                        $message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
575
 
                                                        trigger_error($message);
576
 
                                                }
577
 
                                        }
578
 
                                        else
579
 
                                        {
580
 
                                                $error[] = 'FORM_INVALID';
581
 
                                        }
582
 
                                        // Replace "error" strings with their real, localised form
583
 
                                        $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
584
 
                                }
585
 
 
586
 
                                $template->assign_vars(array(
587
 
                                        'ERROR'                 => (sizeof($error)) ? implode('<br />', $error) : '',
588
 
                                        'AVATAR'                => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
589
 
                                        'AVATAR_SIZE'   => $config['avatar_filesize'],
590
 
                                        
591
 
                                        'U_GALLERY'             => append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=profile&amp;mode=avatar&amp;display_gallery=1'),
592
 
                                        
593
 
                                        'S_FORM_ENCTYPE'        => ($can_upload) ? ' enctype="multipart/form-data"' : '',
594
 
 
595
 
                                        'L_AVATAR_EXPLAIN'      => sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024)),)
596
 
                                );
597
 
 
598
 
                                if ($display_gallery && $auth->acl_get('u_chgavatar') && $config['allow_avatar_local'])
599
 
                                {
600
 
                                        avatar_gallery($category, $avatar_select, 4);
601
 
                                }
602
 
                                else
603
 
                                {
604
 
                                        $avatars_enabled = ($can_upload || ($auth->acl_get('u_chgavatar') && ($config['allow_avatar_local'] || $config['allow_avatar_remote']))) ? true : false;
605
 
                                        
606
 
                                        $template->assign_vars(array(
607
 
                                                'AVATAR_WIDTH'  => request_var('width', $user->data['user_avatar_width']),
608
 
                                                'AVATAR_HEIGHT' => request_var('height', $user->data['user_avatar_height']),
609
 
 
610
 
                                                'S_AVATARS_ENABLED'             => $avatars_enabled,
611
 
                                                'S_UPLOAD_AVATAR_FILE'  => $can_upload,
612
 
                                                'S_UPLOAD_AVATAR_URL'   => $can_upload,
613
 
                                                'S_LINK_AVATAR'                 => ($auth->acl_get('u_chgavatar') && $config['allow_avatar_remote']) ? true : false,
614
 
                                                'S_DISPLAY_GALLERY'             => ($auth->acl_get('u_chgavatar') && $config['allow_avatar_local']) ? true : false)
615
 
                                        );
616
 
                                }
617
 
 
618
 
                        break;
619
 
                }
620
 
 
621
 
                $template->assign_vars(array(
622
 
                        'L_TITLE'       => $user->lang['UCP_PROFILE_' . strtoupper($mode)],
623
 
 
624
 
                        'S_HIDDEN_FIELDS'       => $s_hidden_fields,
625
 
                        'S_UCP_ACTION'          => $this->u_action)
626
 
                );
627
 
 
628
 
                // Set desired template
629
 
                $this->tpl_name = 'ucp_profile_' . $mode;
630
 
                $this->page_title = 'UCP_PROFILE_' . strtoupper($mode);
631
 
        }
632
 
}
633
 
 
634
 
?>
 
 
b'\\ No newline at end of file'