1<?php
2/***************************************************************************
3* copyright            : (C) 2001-2003 Advanced Internet Designs Inc.
4* email                : forum@prohost.org
5* $Id: register.php.t 21069 2010-03-25 22:47:48Z Caeies $
6*
7* This program is free software; you can redistribute it and/or modify it
8* under the terms of the GNU General Public License as published by the
9* Free Software Foundation; either version 2 of the License, or
10* (at your option) any later version.
11***************************************************************************/
12
13/*{PRE_HTML_PHP}*/
14
15/* Create a list of avaliable themes */
16function create_theme_select($name, $def=null)
17{
18	$theme_select_values = '';
19	$r = uq("SELECT id, name FROM {SQL_TABLE_PREFIX}themes WHERE theme_opt>=1 AND (theme_opt & 1) > 0 ORDER BY id ASC");
20	while ($t = db_rowarr($r)) {
21		$selected = $t[0] == $def ? ' selected' : '';
22		$theme_select_values .= '{TEMPLATE: theme_select_value}';
23	}
24
25	return '{TEMPLATE: theme_select}';
26}
27
28function fetch_img($url, $user_id)
29{
30	$ext = array(1=>'gif', 2=>'jpg', 3=>'png', 4=>'swf');
31	list($max_w, $max_y) = explode('x', $GLOBALS['CUSTOM_AVATAR_MAX_DIM']);
32	if (!($img_info = @getimagesize($url)) || $img_info[0] > $max_w || $img_info[1] > $max_y || $img_info[2] > ($GLOBALS['FUD_OPT_1'] & 64 ? 4 : 3)) {
33		return;
34	}
35	if (!($img_data = file_get_contents($url))) {
36		return;
37	}
38	$name = $user_id . '.' . $ext[$img_info[2]]. '_';
39
40	while (($fp = fopen(($path = tempnam($GLOBALS['TMP'], $name)), 'ab'))) {
41		if (!ftell($fp)) { /* make sure that the temporary file picked, did not exist before, yes, this is paranoid. */
42			break;
43		}
44	}
45	fwrite($fp, $img_data);
46	fclose($fp);
47
48	return $path;
49}
50	/* intialize error status */
51	$GLOBALS['error'] = 0;
52
53function check_passwd($id, $passwd)
54{
55	return q_singleval("SELECT login FROM {SQL_TABLE_PREFIX}users WHERE id=".$id." AND passwd='".md5($passwd)."'");
56}
57
58function sanitize_url($url)
59{
60	if (!$url) {
61		return;
62	}
63
64	if (strncasecmp($url, 'http://', strlen('http://')) && strncasecmp($url, 'https://', strlen('https://')) && strncasecmp($url, 'ftp://', strlen('ftp://'))) {
65		if (stristr($url, 'javascript:')) {
66			return '';
67		} else {
68			return 'http://' . $url;
69		}
70	}
71	return $url;
72}
73
74function register_form_check($user_id)
75{
76	$_POST['reg_home_page'] = sanitize_url(trim($_POST['reg_home_page']));
77	$_POST['reg_user_image'] = isset($_POST['reg_user_image']) ? sanitize_url(trim($_POST['reg_user_image'])) : '';
78
79	if (!empty($_POST['reg_icq']) && !(int)$_POST['reg_icq']) { /* ICQ # can only be an integer */
80		$_POST['reg_icq'] = '';
81	}
82
83	/* Image count check */
84	if ($GLOBALS['FORUM_IMG_CNT_SIG'] && $GLOBALS['FORUM_IMG_CNT_SIG'] < substr_count(strtolower($_POST['reg_sig']), '[img]') ) {
85		set_err('reg_sig', '{TEMPLATE: register_err_toomanyimages}');
86	}
87
88	/* Url Avatar check */
89	if (!empty($_POST['reg_avatar_loc']) && !($GLOBALS['reg_avatar_loc_file'] = fetch_img($_POST['reg_avatar_loc'], $user_id))) {
90		set_err('avatar', '{TEMPLATE: register_err_not_valid_img}');
91	}
92
93	if ($GLOBALS['FORUM_SIG_ML'] && strlen($_POST['reg_sig']) > $GLOBALS['FORUM_SIG_ML']) {
94		set_err('reg_sig', '{TEMPLATE: register_err_sig_too_long}');
95	}
96
97	return $GLOBALS['error'];
98}
99
100function fmt_year($val)
101{
102	if (!($val = (int)$val)) {
103		return;
104	}
105	if ($val > 1000) {
106		return $val;
107	} else if ($val < 100 && $val > 10) {
108		return (1900 + $val);
109	} else if ($val < 10) {
110		return (2000 + $val);
111	}
112}
113
114function set_err($err_name, $err_msg)
115{
116	$GLOBALS['error'] = 1;
117	if (isset($GLOBALS['err_msg'])) {
118		array_push($GLOBALS['err_msg'], array($err_name => $err_msg));
119	} else {
120		$GLOBALS['err_msg'] = array($err_name => $err_msg);
121	}
122}
123
124function draw_err($err_name)
125{
126	if (!isset($GLOBALS['err_msg'][$err_name])) {
127		return;
128	}
129	return '{TEMPLATE: register_error}';
130}
131
132function make_avatar_loc($path, $disk, $web)
133{
134	$img_info = @getimagesize($disk . $path);
135
136	if ($img_info[2] < 4 && $img_info[2] > 0) {
137		return '<img src="'.$web . $path.'" '.$img_info[3].' />';
138	} else if ($img_info[2] == 4) {
139		return '<embed src="'.$web . $path.'" '.$img_info[3].' />';
140	} else {
141		return '';
142	}
143}
144
145function remove_old_avatar($avatar_str)
146{
147	if (preg_match('!images/custom_avatars/(([0-9]+)\.([A-Za-z]+))" width=!', $avatar_str, $tmp)) {
148		@unlink($GLOBALS['WWW_ROOT_DISK'] . 'images/custom_avatars/' . basename($tmp[1]));
149	}
150}
151
152function decode_uent(&$uent)
153{
154	reverse_fmt($uent->home_page);
155	reverse_fmt($uent->bio);
156	reverse_fmt($uent->interests);
157	reverse_fmt($uent->occupation);
158	reverse_fmt($uent->location);
159	reverse_fmt($uent->user_image);
160	$uent->aim = urldecode($uent->aim);
161	$uent->yahoo = urldecode($uent->yahoo);
162	$uent->msnm = urldecode($uent->msnm);
163	$uent->jabber = urldecode($uent->jabber);
164	$uent->affero = urldecode($uent->affero);
165}
166
167	if (isset($_GET['mod_id'])) {
168		$mod_id = (int)$_GET['mod_id'];
169	} else if (isset($_POST['mod_id'])) {
170		$mod_id = (int)$_POST['mod_id'];
171	} else {
172		$mod_id = '';
173	}
174
175	/* allow the root to modify settings other lusers */
176	if (_uid && $usr->users_opt & 1048576 && $mod_id) {
177		if (!($uent =& usr_reg_get_full($mod_id))) {
178			exit('Invalid User Id');
179		}
180		decode_uent($uent);
181	} else {
182		$uent =& usr_reg_get_full($usr->id);
183		decode_uent($uent);
184	}
185
186	/* this is a hack, it essentially disables uploading of avatars when file_uploads are off */
187	if (ini_get("file_uploads") != 1 || !($FUD_OPT_1 & 8)) {
188		$register_enctype = '';
189		$FUD_OPT_1 = $FUD_OPT_1 &~ 8;
190	} else {
191		$register_enctype = '{TEMPLATE: register_enctype}';
192	}
193
194	$avatar_tmp = $avatar_arr = null;
195	/* deal with avatars, only done for regged users */
196	if (!empty($_POST['avatar_tmp'])) {
197		list($avatar_arr['file'], $avatar_arr['del'], $avatar_arr['leave']) = explode("\n", base64_decode($_POST['avatar_tmp']));
198	}
199	if (isset($_POST['btn_detach']) && isset($avatar_arr)) {
200		$avatar_arr['del'] = 1;
201	}
202	if (!($FUD_OPT_1 & 8) && (!@file_exists($avatar_arr['file']) || empty($avatar_arr['leave']))) {
203		/* hack attempt for URL avatar */
204		$avatar_arr = null;
205		} else if (($FUD_OPT_1 & 8) && isset($_FILES['avatar_upload']) && $_FILES['avatar_upload']['size'] > 0) { /* new upload */
206			if ($_FILES['avatar_upload']['size'] >= $CUSTOM_AVATAR_MAX_SIZE) {
207				set_err('avatar', '{TEMPLATE: register_err_avatartobig}');
208			} else {
209				$ext = array(1=>'gif', 2=>'jpg', 3=>'png', 4=>'swf');
210				if (!($img_info = @getimagesize($_FILES['avatar_upload']['tmp_name']))) {
211					set_err('avatar', '{TEMPLATE: register_err_not_valid_img}');
212				}
213				/* [user_id].[file_extension]_'random data' */
214				$file_name = $uent->id . '.' . $ext[$img_info[2]] . '_';
215				$tmp_name = safe_tmp_copy($_FILES['avatar_upload']['tmp_name'], 0, $file_name);
216
217				list($max_w, $max_y) = explode('x', $CUSTOM_AVATAR_MAX_DIM);
218				if ($img_info[2] > ($FUD_OPT_1 & 64 ? 4 : 3)) {
219					set_err('avatar', '{TEMPLATE: register_err_avatarnotallowed}');
220					unlink($TMP . $tmp_name);
221				} else if ($img_info[0] >$max_w || $img_info[1] >$max_y) {
222					set_err('avatar', '{TEMPLATE: register_err_avatardimtobig}');
223					unlink($TMP . $tmp_name);
224				} else {
225					/* remove old uploaded file, if one exists & is not in DB */
226					if (empty($avatar_arr['leave']) && @file_exists($avatar_arr['file'])) {
227						@unlink($TMP . $avatar_arr['file']);
228					}
229
230					$avatar_arr['file'] = $tmp_name;
231					$avatar_arr['del'] = 0;
232					$avatar_arr['leave'] = 0;
233			}
234		}
235	}
236
237	if (count($_POST)) {
238		$new_users_opt = 0;
239		foreach (array('display_email', 'notify', 'notify_method', 'ignore_admin', 'email_messages', 'pm_messages', 'pm_notify', 'default_view', 'gender', 'append_sig', 'show_sigs', 'show_avatars', 'show_im', 'invisible_mode') as $v) {
240			if (!empty($_POST['reg_'.$v])) {
241				$new_users_opt |= (int) $_POST['reg_'.$v];
242			}
243		}
244		/* security check, prevent haxors from passing values that shouldn't */
245		if (!($new_users_opt & (131072|65536|262144|524288|1048576|2097152|4194304|8388608|16777216))) {
246			$uent->users_opt = ($uent->users_opt & (131072|65536|262144|524288|1048576|2097152|4194304|8388608|16777216)) | $new_users_opt;
247		}
248	}
249
250	/* SUBMITTION CODE */
251	if (isset($_POST['fud_submit']) && !isset($_POST['btn_detach']) && !isset($_POST['btn_upload']) && !register_form_check($uent->id)) {
252		$old_email = $uent->email;
253		$old_avatar_loc = $uent->avatar_loc;
254		$old_avatar = $uent->avatar;
255
256		/* import data from _POST into $uent object */
257		$vars = array_keys(get_object_vars($uent));
258		foreach ($vars as $v) {
259			if (isset($_POST['reg_'.$v])) {
260				$uent->{$v} = $_POST['reg_'.$v];
261			}
262		}
263
264		$uent->bday = fmt_year($_POST['b_year']) . str_pad((int)$_POST['b_month'], 2, '0', STR_PAD_LEFT) . str_pad((int)$_POST['b_day'], 2, '0', STR_PAD_LEFT);
265		$uent->sig = apply_custom_replace($uent->sig);
266		if ($FUD_OPT_1 & 131072) {
267			$uent->sig = tags_to_html($uent->sig, $FUD_OPT_1 & 524288);
268		} else if ($FUD_OPT_1 & 65536) {
269			$uent->sig = nl2br(htmlspecialchars($uent->sig));
270		}
271
272		if ($FUD_OPT_1 & 196608) {
273			char_fix($uent->sig);
274		}
275
276		if ($FUD_OPT_1 & 262144) {
277			$uent->sig = smiley_to_post($uent->sig);
278		}
279		fud_wordwrap($uent->sig);
280
281		if ($uent->bio) {
282			$uent->bio = htmlspecialchars($uent->bio);
283			char_fix($uent->bio);
284		}
285
286		if (!$uent->icq && !($uent->users_opt & 4)) {
287			$uent->users_opt |= 4;
288		}
289
290		/* Restore avatar values to their previous values */
291		$uent->avatar = $old_avatar;
292		$uent->avatar_loc = $old_avatar_loc;
293		$old_opt = $uent->users_opt & (4194304|16777216|8388608);
294		$uent->users_opt |= 4194304|16777216|8388608;
295
296		/* prevent non-confirmed users from playing with avatars, yes we are that cruel */
297		if ($FUD_OPT_1 & 28 && _uid) {
298			if ($_POST['avatar_type'] == 'b') { /* built-in avatar */
299				if (!$old_avatar && $old_avatar_loc) {
300					remove_old_avatar($old_avatar_loc);
301					$uent->avatar_loc = '';
302				} else if (isset($avatar_arr['file'])) {
303					@unlink($TMP . basename($avatar_arr['file']));
304				}
305				if ($_POST['reg_avatar'] == '0') {
306					$uent->avatar_loc = '';
307					$uent->avatar = 0;
308				} else if ($uent->avatar != $_POST['reg_avatar'] && ($img = q_singleval('SELECT img FROM {SQL_TABLE_PREFIX}avatar WHERE id='.(int)$_POST['reg_avatar']))) {
309					/* verify that the avatar exists and it is different from the one in DB */
310					$uent->avatar_loc = make_avatar_loc('images/avatars/' . $img, $WWW_ROOT_DISK, $WWW_ROOT);
311					$uent->avatar = $_POST['reg_avatar'];
312				}
313				if ($uent->avatar && $uent->avatar_loc) {
314					$uent->users_opt ^= 4194304|16777216;
315				}
316			} else {
317				if ($_POST['avatar_type'] == 'c' && isset($reg_avatar_loc_file)) { /* New URL avatar */
318					$common_av_name = $reg_avatar_loc_file;
319
320					if (!empty($avatar_arr['file'])) {
321						$avatar_arr['del'] = 1;
322					}
323				} else if ($_POST['avatar_type'] == 'u' && empty($avatar_arr['del']) && empty($avatar_arr['leave'])) { /* uploaded file */
324					$common_av_name = $avatar_arr['file'];
325				}
326
327				/* remove old avatar if need be */
328				if (!empty($avatar_arr['del'])) {
329					if (empty($avatar_arr['leave'])) {
330						@unlink($TMP . basename($avatar_arr['file']));
331					} else {
332						remove_old_avatar($old_avatar_loc);
333					}
334				}
335
336				/* add new avatar if needed */
337				if (isset($common_av_name)) {
338					$common_av_name = basename($common_av_name);
339					$av_path = 'images/custom_avatars/' . substr($common_av_name, 0, strpos($common_av_name, '_'));
340					copy($TMP . basename($common_av_name), $WWW_ROOT_DISK . $av_path);
341					@unlink($TMP . basename($common_av_name));
342					if (($uent->avatar_loc = make_avatar_loc($av_path, $WWW_ROOT_DISK, $WWW_ROOT))) {
343						if (!($FUD_OPT_1 & 32) || $uent->users_opt & 1048576) {
344							$uent->users_opt ^= 16777216|4194304;
345						} else {
346							$uent->users_opt ^= 8388608|4194304;
347						}
348					}
349				} else if (empty($avatar_arr['leave']) || !empty($avatar_arr['del'])) {
350					$uent->avatar_loc = '';
351				} else if (!empty($avatar_arr['leave'])) {
352					$uent->users_opt ^= (8388608|16777216|4194304) ^ $old_opt;
353				}
354				$uent->avatar = 0;
355			}
356			if (empty($uent->avatar_loc)) {
357				$uent->users_opt ^= 8388608|16777216;
358			}
359		} else {
360			$uent->users_opt ^= (8388608|16777216|4194304) ^ $old_opt;
361		}
362
363		$uent->sync_user();
364
365		if (!$mod_id) {
366			check_return($usr->returnto);
367		} else {
368			header('Location: adm/admuser.php?usr_id='.$uent->id.'&'._rsidl.'&act=nada');
369			exit;
370		}
371	}
372
373	/* populate form variables based on user's profile */
374	if (!isset($_POST['prev_loaded'])) {
375		foreach ($uent as $k => $v) {
376			${'reg_'.$k} = htmlspecialchars($v);
377		}
378		reverse_fmt($reg_sig);
379		$reg_sig = apply_reverse_replace($reg_sig);
380
381		if ($FUD_OPT_1 & 262144) {
382			$reg_sig = post_to_smiley($reg_sig);
383		}
384
385		if ($FUD_OPT_1 & 131072) {
386			$reg_sig = html_to_tags($reg_sig);
387		} else if ($FUD_OPT_1 & 65536) {
388			reverse_nl2br($reg_sig);
389		}
390
391		if ($FUD_OPT_1 & 196608) {
392			char_fix($reg_sig);
393		}
394		char_fix($reg_bio);
395
396		if ($uent->bday) {
397			$b_year = substr($uent->bday, 0, 4);
398			$b_month = substr($uent->bday, 4, 2);
399			$b_day = substr($uent->bday, 6, 8);
400		} else {
401			$b_year = $b_month = $b_day = '';
402		}
403		if (!$reg_avatar && $reg_avatar_loc) { /* custom avatar */
404			reverse_fmt($reg_avatar_loc);
405			if (preg_match('!src="([^"]+)" width="!', $reg_avatar_loc, $tmp)) {
406				$avatar_arr['file'] = $tmp[1];
407				$avatar_arr['del'] = 0;
408				$avatar_arr['leave'] = 1;
409				$avatar_type = 'u';
410			}
411		}
412		reverse_fmt($reg_alias);
413	} else if (isset($_POST['prev_loaded'])) { /* import data from POST data */
414		foreach ($_POST as $k => $v) {
415			if (!strncmp($k, 'reg_', 4)) {
416				${$k} = htmlspecialchars($v);
417			}
418		}
419		char_fix($reg_bio);
420		char_fix($reg_sig);
421
422		$b_year = $_POST['b_year'];
423		$b_month = $_POST['b_month'];
424		$b_day = $_POST['b_day'];
425		if (isset($_POST['avatar_type'])) {
426			$avatar_type = $_POST['avatar_type'];
427		}
428	}
429
430	if (empty($reg_time_zone)) {
431		$reg_time_zone = $SERVER_TZ;
432	}
433
434	if (!$mod_id) {
435		ses_update_status($usr->sid, '{TEMPLATE: register_profile_update}', 0, 0);
436	}
437
438	$TITLE_EXTRA = ': {TEMPLATE: register_title}';
439
440/*{POST_HTML_PHP}*/
441
442	$reg_sig_err	= draw_err('reg_sig');
443
444	if ($FUD_OPT_2 & 2048) {
445		$affero_domain = parse_url($WWW_ROOT);
446		$register_affero = '{TEMPLATE: register_affero}';
447	} else {
448		$register_affero = '';
449	}
450
451	/* Initialize avatar options */
452	$avatar = $avatar_type_sel = '';
453
454	$reg_time_limit_err = '';
455
456	$avatar_err = draw_err('avatar');
457
458	$submit_button = '{TEMPLATE: update_button}';
459
460	if ($FUD_OPT_1 & 28 && _uid) {
461		if ($FUD_OPT_1 == 28) {
462			/* if there are no built-in avatars, don't show them */
463			if (q_singleval('SELECT count(*) FROM {SQL_TABLE_PREFIX}avatar')) {
464				$sel_opt = "{TEMPLATE: register_builtin}\n{TEMPLATE: register_specify_url}\n{TEMPLATE: register_uploaded}";
465				$a_type='b';
466				$sel_val = "b\nc\nu";
467			} else {
468				$sel_opt = "{TEMPLATE: register_specify_url}\n{TEMPLATE: register_uploaded}";
469				$a_type='u';
470				$sel_val = "c\nu";
471			}
472		} else {
473			$sel_opt = $sel_val = '';
474
475			if (q_singleval('SELECT count(*) FROM {SQL_TABLE_PREFIX}avatar') && $FUD_OPT_1 & 16) {
476				$sel_opt .= "{TEMPLATE: register_builtin}\n";
477				$a_type = 'b';
478				$sel_val .= "b\n";
479			}
480			if ($FUD_OPT_1 & 8) {
481				$sel_opt .= "{TEMPLATE: register_uploaded}\n";
482				if (!isset($a_type)) {
483					$a_type = 'u';
484				}
485				$sel_val .= "u\n";
486			}
487			if ($FUD_OPT_1 & 4) {
488				$sel_opt .= "{TEMPLATE: register_specify_url}\n";
489				if (!isset($a_type)) {
490					$a_type = 'c';
491				}
492				$sel_val .= "c\n";
493			}
494			$sel_opt = trim($sel_opt);
495			$sel_val = trim($sel_val);
496		}
497		if (isset($a_type)) { /* rare condition, no built-in avatars & no other avatars are allowed */
498			if (!isset($avatar_type)) {
499				$avatar_type = $a_type;
500			}
501			$avatar_type_sel_options = tmpl_draw_select_opt($sel_val, $sel_opt, $avatar_type, '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
502			$avatar_type_sel = '{TEMPLATE: avatar_type_sel}';
503
504			/* preview image */
505			if (isset($_POST['prev_loaded'])) {
506				if ((!empty($_POST['reg_avatar']) && $_POST['reg_avatar'] == $uent->avatar) || (!empty($avatar_arr['file']) && empty($avatar_arr['del']) && $avatar_arr['leave'])) {
507					$custom_avatar_preview = $uent->avatar_loc;
508				} else if (!empty($_POST['reg_avatar']) && ($im = q_singleval('SELECT img FROM {SQL_TABLE_PREFIX}avatar WHERE id='.(int)$_POST['reg_avatar']))) {
509					$custom_avatar_preview = make_avatar_loc('images/avatars/' . $im, $WWW_ROOT_DISK, $WWW_ROOT);
510				} else {
511					if (isset($reg_avatar_loc_file)) {
512						$common_name = $reg_avatar_loc_file;
513					} else if (!empty($avatar_arr['file']) && empty($avatar_arr['del'])) {
514						$common_name = $avatar_arr['file'];
515					}
516					if (isset($common_name)) {
517						$custom_avatar_preview = make_avatar_loc(basename($common_name), $TMP, '{ROOT}?t=tmp_view&img=');
518					}
519				}
520			} else if ($uent->avatar_loc) {
521				$custom_avatar_preview = $uent->avatar_loc;
522			}
523
524			if (!isset($custom_avatar_preview)) {
525				$custom_avatar_preview = '<img src="blank.gif" />';
526			}
527
528			/* determine the avatar specification field to show */
529			if ($avatar_type == 'b') {
530				if (empty($reg_avatar)) {
531					$reg_avatar = '0';
532					$reg_avatar_img = 'blank.gif';
533				} else if (!empty($reg_avatar_loc)) {
534					reverse_fmt($reg_avatar_loc);
535					preg_match('!images/avatars/([^"]+)"!', $reg_avatar_loc, $tmp);
536					$reg_avatar_img = 'images/avatars/' . $tmp[1];
537				} else {
538					$reg_avatar_img = 'images/avatars/' . q_singleval('SELECT img FROM {SQL_TABLE_PREFIX}avatar WHERE id='.(int)$reg_avatar);
539				}
540				$del_built_in_avatar = $reg_avatar ? '{TEMPLATE: del_built_in_avatar}' : '';
541				$avatar = '{TEMPLATE: built_in_avatar}';
542			} else if ($avatar_type == 'c') {
543				if (!isset($reg_avatar_loc)) {
544					$reg_avatar_loc = '';
545				}
546				$avatar = '{TEMPLATE: custom_url_avatar}';
547			} else if ($avatar_type == 'u') {
548				$avatar_tmp = $avatar_arr ? base64_encode($avatar_arr['file'] . "\n" . $avatar_arr['del'] . "\n" . $avatar_arr['leave']) : '';
549				$buttons = (!empty($avatar_arr['file']) && empty($avatar_arr['del'])) ? '{TEMPLATE: delete_uploaded_avatar}' : '{TEMPLATE: upload_avatar}';
550				$avatar = '{TEMPLATE: custom_upload_avatar}';
551			}
552		}
553	}
554
555	$post_options = tmpl_post_options('sig');
556
557	$theme_select = create_theme_select('reg_theme', $reg_theme);
558
559	$day_select		= tmpl_draw_select_opt("\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31", "\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31", $b_day, '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
560	$month_select		= tmpl_draw_select_opt("\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12", "\n{TEMPLATE: month_1}\n{TEMPLATE: month_2}\n{TEMPLATE: month_3}\n{TEMPLATE: month_4}\n{TEMPLATE: month_5}\n{TEMPLATE: month_6}\n{TEMPLATE: month_7}\n{TEMPLATE: month_8}\n{TEMPLATE: month_9}\n{TEMPLATE: month_10}\n{TEMPLATE: month_11}\n{TEMPLATE: month_12}", $b_month, '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
561	$gender_select		= tmpl_draw_select_opt("512\n1024\n0","{TEMPLATE: unspecified}\n{TEMPLATE: male}\n{TEMPLATE: female}", ($uent->users_opt & 512 ? 512 : ($uent->users_opt & 1024)), '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
562	$mppg_select		= tmpl_draw_select_opt("0\n5\n10\n20\n30\n40", "{TEMPLATE: use_forum_default}\n5\n10\n20\n30\n40", $reg_posts_ppg, '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
563	$view_select		= tmpl_draw_select_opt("384\n128".($FUD_OPT_2 & 512 ?"\n256\n0":''), "{TEMPLATE: register_flat_view}\n{TEMPLATE: register_msg_tree_view}".($FUD_OPT_2 & 512 ? "\n{TEMPLATE: register_tree_msg_view}\n{TEMPLATE: register_tree_view}":''), ($uent->users_opt & (128|256)), '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
564	$timezone_select	= tmpl_draw_select_opt($tz_values, $tz_names, $reg_time_zone, '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
565	$notification_select	= tmpl_draw_select_opt("4\n0", "{TEMPLATE: register_email}\n{TEMPLATE: register_icq}", ($uent->users_opt & 4), '{TEMPLATE: sel_opt}', '{TEMPLATE: sel_opt_selected}');
566
567	$ignore_admin_radio	= tmpl_draw_radio_opt('reg_ignore_admin', "8\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 8), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
568	$invisible_mode_radio	= tmpl_draw_radio_opt('reg_invisible_mode', "32768\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 32768), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
569	$show_email_radio	= tmpl_draw_radio_opt('reg_display_email', "1\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 1), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
570	$notify_default_radio	= tmpl_draw_radio_opt('reg_notify', "2\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 2), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
571	$pm_notify_default_radio= tmpl_draw_radio_opt('reg_pm_notify', "64\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 64), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
572	$accept_user_email	= tmpl_draw_radio_opt('reg_email_messages', "16\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 16), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
573	$accept_pm		= tmpl_draw_radio_opt('reg_pm_messages', "32\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 32), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
574	$show_sig_radio		= tmpl_draw_radio_opt('reg_show_sigs', "4096\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 4096), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
575	$show_avatar_radio	= tmpl_draw_radio_opt('reg_show_avatars', "8192\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 8192), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
576	$show_im_radio		= tmpl_draw_radio_opt('reg_show_im', "16384\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 16384), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
577	$append_sig_radio	= tmpl_draw_radio_opt('reg_append_sig', "2048\n0", "{TEMPLATE: yes}\n{TEMPLATE: no}", ($uent->users_opt & 2048), '{TEMPLATE: radio_button}', '{TEMPLATE: radio_button_selected}', '{TEMPLATE: radio_button_separator}');
578
579	$reg_user_image_field = $FUD_OPT_2 & 65536 ? '{TEMPLATE: reg_user_image}' : '';
580	$sig_len_limit = $FORUM_SIG_ML ? '{TEMPLATE: register_sig_limit}' : '';
581
582/*{POST_PAGE_PHP_CODE}*/
583?>
584{TEMPLATE: REGISTER_PAGE}
585