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

« back to all changes in this revision

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

  • Committer: William Grant
  • Date: 2009-02-23 23:47:02 UTC
  • mfrom: (1099.1.211 new-dispatch)
  • Revision ID: grantw@unimelb.edu.au-20090223234702-db4b1llly46ignwo
Merge from lp:~ivle-dev/ivle/new-dispatch.

Pretty much everything changes. Reread the setup docs. Backup your databases.
Every file is now in a different installed location, the configuration system
is rewritten, the dispatch system is rewritten, URLs are different, the
database is different, worksheets and exercises are no longer on the
filesystem, we use a templating engine, jail service protocols are rewritten,
we don't repeat ourselves, we have authorization rewritten, phpBB is gone,
and probably lots of other things that I cannot remember.

This is certainly the biggest commit I have ever made, and hopefully
the largest I ever will.

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'