Просмотр файла admin/admin_users.php

Размер файла: 51.71Kb
  1. <?php
  2. /***************************************************************************
  3. * mides.ru
  4. * -------------------
  5. ***************************************************************************/
  6. define('IN_PHPBB', 1);
  7.  
  8. if( !empty($setmodules) )
  9. {
  10. $filename = basename(__FILE__);
  11. $module['Users']['Manage'] = $filename;
  12.  
  13. return;
  14. }
  15.  
  16. $phpbb_root_path = './../';
  17. require($phpbb_root_path . 'extension.inc');
  18. require('./pagestart.' . $phpEx);
  19. require($phpbb_root_path . 'includes/bbcode.'.$phpEx);
  20. require($phpbb_root_path . 'includes/functions_post.'.$phpEx);
  21. require($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
  22. require($phpbb_root_path . 'includes/functions_validate.'.$phpEx);
  23.  
  24. $html_entities_match = array('#<#', '#>#');
  25. $html_entities_replace = array('&lt;', '&gt;');
  26.  
  27. if( isset( $HTTP_POST_VARS['mode'] ) || isset( $HTTP_GET_VARS['mode'] ) )
  28. {
  29. $mode = ( isset( $HTTP_POST_VARS['mode']) ) ? $HTTP_POST_VARS['mode'] : $HTTP_GET_VARS['mode'];
  30. $mode = htmlspecialchars($mode);
  31. }
  32. else
  33. {
  34. $mode = '';
  35. }
  36.  
  37. if ( $mode == 'edit' || $mode == 'save' && ( isset($HTTP_POST_VARS['username']) || isset($HTTP_GET_VARS[POST_USERS_URL]) || isset( $HTTP_POST_VARS[POST_USERS_URL]) ) )
  38. {
  39. attachment_quota_settings('user', $HTTP_POST_VARS['submit'], $mode);
  40.  
  41. if ( ( $mode == 'save' && isset( $HTTP_POST_VARS['submit'] ) ) || isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) )
  42. {
  43. $user_id = intval($HTTP_POST_VARS['id']);
  44.  
  45. if (!($this_userdata = get_userdata($user_id)))
  46. {
  47. message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] );
  48. }
  49.  
  50. if( $HTTP_POST_VARS['deleteuser'] && ( $userdata['user_id'] != $user_id ) )
  51. {
  52. $sql = "SELECT g.group_id
  53. FROM " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g
  54. WHERE ug.user_id = $user_id
  55. AND g.group_id = ug.group_id
  56. AND g.group_single_user = 1";
  57. if( !($result = $db->sql_query($sql)) )
  58. {
  59. message_die(GENERAL_ERROR, 'Could not obtain group information for this user', '', __LINE__, __FILE__, $sql);
  60. }
  61. // Πᬮ ͨ᳠
  62. $sql = "UPDATE " . SHOUTBOX_TABLE . "
  63. SET shout_user_id = " . DELETED . ", shout_username = '$username'
  64. WHERE shout_user_id = $user_id";
  65. if( !$db->sql_query($sql) )
  66. {
  67. message_die(GENERAL_ERROR, 'Could not update shouts for this user', '', __LINE__, __FILE__, $sql);
  68. }
  69. // ˮ ͨ᳠
  70. $row = $db->sql_fetchrow($result);
  71. $sql = "UPDATE " . POSTS_TABLE . "
  72. SET poster_id = " . DELETED . ", post_username = '" . str_replace("\\'", "''", addslashes($this_userdata['username'])) . "'
  73. WHERE poster_id = $user_id";
  74. if( !$db->sql_query($sql) )
  75. {
  76. message_die(GENERAL_ERROR, 'Could not update posts for this user', '', __LINE__, __FILE__, $sql);
  77. }
  78.  
  79. $sql = "UPDATE " . TOPICS_TABLE . "
  80. SET topic_poster = " . DELETED . "
  81. WHERE topic_poster = $user_id";
  82. if( !$db->sql_query($sql) )
  83. {
  84. message_die(GENERAL_ERROR, 'Could not update topics for this user', '', __LINE__, __FILE__, $sql);
  85. }
  86. $sql = "UPDATE " . VOTE_USERS_TABLE . "
  87. SET vote_user_id = " . DELETED . "
  88. WHERE vote_user_id = $user_id";
  89. if( !$db->sql_query($sql) )
  90. {
  91. message_die(GENERAL_ERROR, 'Could not update votes for this user', '', __LINE__, __FILE__, $sql);
  92. }
  93. $sql = "UPDATE " . GROUPS_TABLE . "
  94. SET group_moderator = " . $userdata['user_id'] . "
  95. WHERE group_moderator = $user_id";
  96. if( !$db->sql_query($sql) )
  97. {
  98. message_die(GENERAL_ERROR, 'Could not update group moderators', '', __LINE__, __FILE__, $sql);
  99. }
  100.  
  101. $sql = "DELETE FROM " . USERS_TABLE . "
  102. WHERE user_id = $user_id";
  103. if( !$db->sql_query($sql) )
  104. {
  105. message_die(GENERAL_ERROR, 'Could not delete user', '', __LINE__, __FILE__, $sql);
  106. }
  107.  
  108. $sql = "DELETE FROM " . USER_GROUP_TABLE . "
  109. WHERE user_id = $user_id";
  110. if( !$db->sql_query($sql) )
  111. {
  112. message_die(GENERAL_ERROR, 'Could not delete user from user_group table', '', __LINE__, __FILE__, $sql);
  113. }
  114.  
  115. $sql = "DELETE FROM " . GROUPS_TABLE . "
  116. WHERE group_id = " . $row['group_id'];
  117. if( !$db->sql_query($sql) )
  118. {
  119. message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
  120. }
  121.  
  122. $sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
  123. WHERE group_id = " . $row['group_id'];
  124. if( !$db->sql_query($sql) )
  125. {
  126. message_die(GENERAL_ERROR, 'Could not delete group for this user', '', __LINE__, __FILE__, $sql);
  127. }
  128.  
  129. $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "
  130. WHERE user_id = $user_id";
  131. if ( !$db->sql_query($sql) )
  132. {
  133. message_die(GENERAL_ERROR, 'Could not delete user from topic watch table', '', __LINE__, __FILE__, $sql);
  134. }
  135. $sql = "DELETE FROM " . BANLIST_TABLE . "
  136. WHERE ban_userid = $user_id";
  137. if ( !$db->sql_query($sql) )
  138. {
  139. message_die(GENERAL_ERROR, 'Could not delete user from banlist table', '', __LINE__, __FILE__, $sql);
  140. }
  141.  
  142. $sql = "DELETE FROM " . SESSIONS_TABLE . "
  143. WHERE session_user_id = $user_id";
  144. if ( !$db->sql_query($sql) )
  145. {
  146. message_die(GENERAL_ERROR, 'Could not delete sessions for this user', '', __LINE__, __FILE__, $sql);
  147. }
  148. $sql = "DELETE FROM " . SESSIONS_KEYS_TABLE . "
  149. WHERE user_id = $user_id";
  150. if ( !$db->sql_query($sql) )
  151. {
  152. message_die(GENERAL_ERROR, 'Could not delete auto-login keys for this user', '', __LINE__, __FILE__, $sql);
  153. }
  154.  
  155. $sql = "SELECT privmsgs_id
  156. FROM " . PRIVMSGS_TABLE . "
  157. WHERE privmsgs_from_userid = $user_id
  158. OR privmsgs_to_userid = $user_id";
  159. if ( !($result = $db->sql_query($sql)) )
  160. {
  161. message_die(GENERAL_ERROR, 'Could not select all users private messages', '', __LINE__, __FILE__, $sql);
  162. }
  163.  
  164. while ( $row_privmsgs = $db->sql_fetchrow($result) )
  165. {
  166. $mark_list[] = $row_privmsgs['privmsgs_id'];
  167. }
  168. if ( count($mark_list) )
  169. {
  170. $delete_sql_id = implode(', ', $mark_list);
  171. $delete_text_sql = "DELETE FROM " . PRIVMSGS_TEXT_TABLE . "
  172. WHERE privmsgs_text_id IN ($delete_sql_id)";
  173. $delete_sql = "DELETE FROM " . PRIVMSGS_TABLE . "
  174. WHERE privmsgs_id IN ($delete_sql_id)";
  175. if ( !$db->sql_query($delete_sql) )
  176. {
  177. message_die(GENERAL_ERROR, 'Could not delete private message info', '', __LINE__, __FILE__, $delete_sql);
  178. }
  179. if ( !$db->sql_query($delete_text_sql) )
  180. {
  181. message_die(GENERAL_ERROR, 'Could not delete private message text', '', __LINE__, __FILE__, $delete_text_sql);
  182. }
  183. }
  184.  
  185. $message = $lang['User_deleted'] . '<br /><br />' . sprintf($lang['Click_return_useradmin'], '<a href="' . append_sid("admin_users.$phpEx") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
  186.  
  187. message_die(GENERAL_MESSAGE, $message);
  188. }
  189.  
  190. $username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
  191. $email = ( !empty($HTTP_POST_VARS['email']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['email'] ) )) : '';
  192. $nic_color = ( !empty($HTTP_POST_VARS['nic_color']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['nic_color'] ) )) : '';
  193.  
  194. $password = ( !empty($HTTP_POST_VARS['password']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['password'] ) )) : '';
  195. $password_confirm = ( !empty($HTTP_POST_VARS['password_confirm']) ) ? trim(strip_tags(htmlspecialchars( $HTTP_POST_VARS['password_confirm'] ) )) : '';
  196.  
  197. $icq = ( !empty($HTTP_POST_VARS['icq']) ) ? trim(strip_tags( $HTTP_POST_VARS['icq'] ) ) : '';
  198. $aim = ( !empty($HTTP_POST_VARS['aim']) ) ? trim(strip_tags( $HTTP_POST_VARS['aim'] ) ) : '';
  199. $msn = ( !empty($HTTP_POST_VARS['msn']) ) ? trim(strip_tags( $HTTP_POST_VARS['msn'] ) ) : '';
  200. $yim = ( !empty($HTTP_POST_VARS['yim']) ) ? trim(strip_tags( $HTTP_POST_VARS['yim'] ) ) : '';
  201.  
  202. $website = ( !empty($HTTP_POST_VARS['website']) ) ? trim(strip_tags( $HTTP_POST_VARS['website'] ) ) : '';
  203. $location = ( !empty($HTTP_POST_VARS['location']) ) ? trim(strip_tags( $HTTP_POST_VARS['location'] ) ) : '';
  204. $occupation = ( !empty($HTTP_POST_VARS['occupation']) ) ? trim(strip_tags( $HTTP_POST_VARS['occupation'] ) ) : '';
  205. $interests = ( !empty($HTTP_POST_VARS['interests']) ) ? trim(strip_tags( $HTTP_POST_VARS['interests'] ) ) : '';
  206. $number = ( !empty($HTTP_POST_VARS['number']) ) ? trim(strip_tags( $HTTP_POST_VARS['number'] ) ) : '';
  207. $gender = ( isset($HTTP_POST_VARS['gender']) ) ? intval ($HTTP_POST_VARS['gender']) : 0;
  208.  
  209. if (isset($HTTP_POST_VARS['birthday']) )
  210. {
  211. $birthday = intval ($HTTP_POST_VARS['birthday']);
  212. $b_day = realdate('j',$birthday);
  213. $b_md = realdate('n',$birthday);
  214. $b_year = realdate('Y',$birthday);
  215. } else
  216. {
  217. $b_day = ( isset($HTTP_POST_VARS['b_day']) ) ? intval ($HTTP_POST_VARS['b_day']) : 0;
  218. $b_md = ( isset($HTTP_POST_VARS['b_md']) ) ? intval ($HTTP_POST_VARS['b_md']) : 0;
  219. $b_year = ( isset($HTTP_POST_VARS['b_year']) ) ? intval ($HTTP_POST_VARS['b_year']) : 0;
  220. $birthday = mkrealdate($b_day,$b_md,$b_year);
  221. }
  222. $next_birthday_greeting = ( !empty($HTTP_POST_VARS['next_birthday_greeting']) ) ? intval( $HTTP_POST_VARS['next_birthday_greeting'] ) : 0;
  223.  
  224. $signature = ( !empty($HTTP_POST_VARS['signature']) ) ? trim(str_replace('<br />', "\n", $HTTP_POST_VARS['signature'] ) ) : '';
  225.  
  226. validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature);
  227.  
  228. $viewemail = ( isset( $HTTP_POST_VARS['viewemail']) ) ? ( ( $HTTP_POST_VARS['viewemail'] ) ? TRUE : 0 ) : 0;
  229. $allowviewonline = ( isset( $HTTP_POST_VARS['hideonline']) ) ? ( ( $HTTP_POST_VARS['hideonline'] ) ? 0 : TRUE ) : TRUE;
  230. $notifyreply = ( isset( $HTTP_POST_VARS['notifyreply']) ) ? ( ( $HTTP_POST_VARS['notifyreply'] ) ? TRUE : 0 ) : 0;
  231. $notifypm = ( isset( $HTTP_POST_VARS['notifypm']) ) ? ( ( $HTTP_POST_VARS['notifypm'] ) ? TRUE : 0 ) : TRUE;
  232. $games_block_pm = ( isset($HTTP_POST_VARS['games_block_pm']) ) ? ( ($HTTP_POST_VARS['games_block_pm']) ? TRUE : 0 ) : TRUE;
  233. $popuppm = ( isset( $HTTP_POST_VARS['popup_pm']) ) ? ( ( $HTTP_POST_VARS['popup_pm'] ) ? TRUE : 0 ) : TRUE;
  234. $gb_email = ( isset($HTTP_POST_VARS['gb_email']) ) ? ( ($HTTP_POST_VARS['gb_email']) ? TRUE : 0 ) : TRUE;
  235. $gb_can = ( isset($HTTP_POST_VARS['gb_can']) ) ? ( ($HTTP_POST_VARS['gb_can']) ? TRUE : 0 ) : TRUE;
  236. $attachsig = ( isset( $HTTP_POST_VARS['attachsig']) ) ? ( ( $HTTP_POST_VARS['attachsig'] ) ? TRUE : 0 ) : 0;
  237.  
  238. $allowhtml = ( isset( $HTTP_POST_VARS['allowhtml']) ) ? intval( $HTTP_POST_VARS['allowhtml'] ) : $board_config['allow_html'];
  239. $allowbbcode = ( isset( $HTTP_POST_VARS['allowbbcode']) ) ? intval( $HTTP_POST_VARS['allowbbcode'] ) : $board_config['allow_bbcode'];
  240. $allowsmilies = ( isset( $HTTP_POST_VARS['allowsmilies']) ) ? intval( $HTTP_POST_VARS['allowsmilies'] ) : $board_config['allow_smilies'];
  241. $user_timezone = ( isset( $HTTP_POST_VARS['timezone']) ) ? doubleval( $HTTP_POST_VARS['timezone'] ) : $board_config['board_timezone'];
  242. $user_dateformat = ( $HTTP_POST_VARS['dateformat'] ) ? trim( $HTTP_POST_VARS['dateformat'] ) : $board_config['default_dateformat'];
  243.  
  244. $user_avatar_local = ( isset( $HTTP_POST_VARS['avatarselect'] ) && !empty($HTTP_POST_VARS['submitavatar'] ) && $board_config['allow_avatar_local'] ) ? $HTTP_POST_VARS['avatarselect'] : ( ( isset( $HTTP_POST_VARS['avatarlocal'] ) ) ? $HTTP_POST_VARS['avatarlocal'] : '' );
  245. $user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' ;
  246.  
  247. $user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim( $HTTP_POST_VARS['avatarremoteurl'] ) : '';
  248. $user_avatar_url = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim( $HTTP_POST_VARS['avatarurl'] ) : '';
  249. $user_avatar_loc = ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : '';
  250. $user_avatar_name = ( !empty($HTTP_POST_FILES['avatar']['name']) ) ? $HTTP_POST_FILES['avatar']['name'] : '';
  251. $user_avatar_size = ( !empty($HTTP_POST_FILES['avatar']['size']) ) ? $HTTP_POST_FILES['avatar']['size'] : 0;
  252. $user_avatar_filetype = ( !empty($HTTP_POST_FILES['avatar']['type']) ) ? $HTTP_POST_FILES['avatar']['type'] : '';
  253.  
  254. $user_avatar = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar'] : '';
  255. $user_avatar_type = ( empty($user_avatar_loc) ) ? $this_userdata['user_avatar_type'] : '';
  256.  
  257. $user_status = ( !empty($HTTP_POST_VARS['user_status']) ) ? intval( $HTTP_POST_VARS['user_status'] ) : 0;
  258. $user_allowpm = ( !empty($HTTP_POST_VARS['user_allowpm']) ) ? intval( $HTTP_POST_VARS['user_allowpm'] ) : 0;
  259. $user_rank = ( !empty($HTTP_POST_VARS['user_rank']) ) ? intval( $HTTP_POST_VARS['user_rank'] ) : 0;
  260. $user_allowavatar = ( !empty($HTTP_POST_VARS['user_allowavatar']) ) ? intval( $HTTP_POST_VARS['user_allowavatar'] ) : 0;
  261.  
  262. if (isset($HTTP_POST_VARS['topics_per_page']) )
  263. {
  264. $user_topics_per_page = ( intval($HTTP_POST_VARS['topics_per_page']) == 0 ) ? $board_config['topics_per_page'] : intval($HTTP_POST_VARS['topics_per_page']);
  265. $user_topics_per_page = ( $user_topics_per_page > $board_config['max_user_topics_per_page'] ) ? $board_config['topics_per_page'] : $user_topics_per_page;
  266. }
  267. if (isset($HTTP_POST_VARS['posts_per_page']) )
  268. {
  269. $user_posts_per_page = ( intval($HTTP_POST_VARS['topics_per_page']) == 0 ) ? $board_config['posts_per_page'] : intval($HTTP_POST_VARS['posts_per_page']);
  270. $user_posts_per_page = ( $user_topics_per_page > $board_config['max_user_posts_per_page'] ) ? $board_config['posts_per_page'] : $user_posts_per_page;
  271. }
  272.  
  273.  
  274. if( isset( $HTTP_POST_VARS['avatargallery'] ) || isset( $HTTP_POST_VARS['submitavatar'] ) || isset( $HTTP_POST_VARS['cancelavatar'] ) )
  275. {
  276. $username = stripslashes($username);
  277. $email = stripslashes($email);
  278. $nic_color = stripslashes($nic_color);
  279. $password = '';
  280. $password_confirm = '';
  281.  
  282. $icq = stripslashes($icq);
  283. $aim = htmlspecialchars(stripslashes($aim));
  284. $msn = htmlspecialchars(stripslashes($msn));
  285. $yim = htmlspecialchars(stripslashes($yim));
  286. $number = stripslashes($number);
  287.  
  288. $website = htmlspecialchars(stripslashes($website));
  289. $location = htmlspecialchars(stripslashes($location));
  290. $occupation = htmlspecialchars(stripslashes($occupation));
  291. $interests = htmlspecialchars(stripslashes($interests));
  292. $user_dateformat = htmlspecialchars(stripslashes($user_dateformat));
  293.  
  294. if ( !isset($HTTP_POST_VARS['cancelavatar']))
  295. {
  296. $user_avatar = $user_avatar_category . '/' . $user_avatar_local;
  297. $user_avatar_type = USER_AVATAR_GALLERY;
  298. }
  299. }
  300. }
  301.  
  302. if( isset( $HTTP_POST_VARS['submit'] ) )
  303. {
  304. include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
  305.  
  306. $error = FALSE;
  307.  
  308. if (stripslashes($username) != $this_userdata['username'])
  309. {
  310. unset($rename_user);
  311.  
  312. if ( stripslashes(strtolower($username)) != strtolower($this_userdata['username']) )
  313. {
  314. $result = validate_username($username);
  315. if ( $result['error'] )
  316. {
  317. $error = TRUE;
  318. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
  319. }
  320. else if ( strtolower(str_replace("\\'", "''", $username)) == strtolower($userdata['username']) )
  321. {
  322. $error = TRUE;
  323. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Username_taken'];
  324. }
  325. }
  326.  
  327. if (!$error)
  328. {
  329. $username_sql = "username = '" . str_replace("\\'", "''", $username) . "', ";
  330. $rename_user = $username;
  331. }
  332. }
  333.  
  334. $passwd_sql = '';
  335. if( !empty($password) && !empty($password_confirm) )
  336. {
  337.  
  338. if($password != $password_confirm)
  339. {
  340. $error = TRUE;
  341. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
  342. }
  343. else
  344. {
  345. $password = md5($password);
  346. $passwd_sql = "user_password = '$password', ";
  347. }
  348. }
  349. else if( $password && !$password_confirm )
  350. {
  351. $error = TRUE;
  352. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
  353. }
  354. else if( !$password && $password_confirm )
  355. {
  356. $error = TRUE;
  357. $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
  358. }
  359.  
  360. $avatar_sql = "";
  361. if( isset($HTTP_POST_VARS['avatardel']) )
  362. {
  363. if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "" )
  364. {
  365. if( @file_exists(@phpbb_realpath('./../' . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) )
  366. {
  367. @unlink('./../' . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']);
  368. }
  369. }
  370. $avatar_sql = ", user_avatar = '', user_avatar_type = " . USER_AVATAR_NONE;
  371. }
  372. else if( ( $user_avatar_loc != "" || !empty($user_avatar_url) ) && !$error )
  373. {
  374.  
  375. if( !empty($user_avatar_loc) && !empty($user_avatar_url) )
  376. {
  377. $error = TRUE;
  378. if( isset($error_msg) )
  379. {
  380. $error_msg .= "<br />";
  381. }
  382. $error_msg .= $lang['Only_one_avatar'];
  383. }
  384.  
  385. if( $user_avatar_loc != "" )
  386. {
  387. if( file_exists(@phpbb_realpath($user_avatar_loc)) && ereg(".jpg$|.gif$|.png$", $user_avatar_name) )
  388. {
  389. if( $user_avatar_size <= $board_config['avatar_filesize'] && $user_avatar_size > 0)
  390. {
  391. $error_type = false;
  392.  
  393. preg_match("'image\/[x\-]*([a-z]+)'", $user_avatar_filetype, $user_avatar_filetype);
  394. $user_avatar_filetype = $user_avatar_filetype[1];
  395.  
  396. switch( $user_avatar_filetype )
  397. {
  398. case "jpeg":
  399. case "pjpeg":
  400. case "jpg":
  401. $imgtype = '.jpg';
  402. break;
  403. case "gif":
  404. $imgtype = '.gif';
  405. break;
  406. case "png":
  407. $imgtype = '.png';
  408. break;
  409. default:
  410. $error = true;
  411. $error_msg = (!empty($error_msg)) ? $error_msg . "<br />" . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
  412. break;
  413. }
  414.  
  415. if( !$error )
  416. {
  417. list($width, $height) = @getimagesize($user_avatar_loc);
  418.  
  419. if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
  420. {
  421. $user_id = $this_userdata['user_id'];
  422.  
  423. $avatar_filename = $user_id . $imgtype;
  424.  
  425. if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "" )
  426. {
  427. if( @file_exists(@phpbb_realpath("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) )
  428. {
  429. @unlink("./../" . $board_config['avatar_path'] . "/". $this_userdata['user_avatar']);
  430. }
  431. }
  432. @copy($user_avatar_loc, "./../" . $board_config['avatar_path'] . "/$avatar_filename");
  433.  
  434. $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD;
  435. }
  436. else
  437. {
  438. $l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']);
  439.  
  440. $error = true;
  441. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_avatar_size : $l_avatar_size;
  442. }
  443. }
  444. }
  445. else
  446. {
  447. $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));
  448.  
  449. $error = true;
  450. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_avatar_size : $l_avatar_size;
  451. }
  452. }
  453. else
  454. {
  455. $error = true;
  456. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
  457. }
  458. }
  459. else if( !empty($user_avatar_url) )
  460. {
  461.  
  462. preg_match("/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/", $user_avatar_url, $url_ary);
  463.  
  464. if( !empty($url_ary[4]) )
  465. {
  466. $port = (!empty($url_ary[3])) ? $url_ary[3] : 80;
  467.  
  468. $fsock = @fsockopen($url_ary[2], $port, $errno, $errstr);
  469. if( $fsock )
  470. {
  471. $base_get = "/" . $url_ary[4];
  472.  
  473. @fputs($fsock, "GET $base_get HTTP/1.1\r\n");
  474. @fputs($fsock, "HOST: " . $url_ary[2] . "\r\n");
  475. @fputs($fsock, "Connection: close\r\n\r\n");
  476.  
  477. unset($avatar_data);
  478. while( !@feof($fsock) )
  479. {
  480. $avatar_data .= @fread($fsock, $board_config['avatar_filesize']);
  481. }
  482. @fclose($fsock);
  483.  
  484. if( preg_match("/Content-Length\: ([0-9]+)[^\/ ][\s]+/i", $avatar_data, $file_data1) && preg_match("/Content-Type\: image\/[x\-]*([a-z]+)[\s]+/i", $avatar_data, $file_data2) )
  485. {
  486. $file_size = $file_data1[1];
  487. $file_type = $file_data2[1];
  488.  
  489. switch( $file_type )
  490. {
  491. case "jpeg":
  492. case "pjpeg":
  493. case "jpg":
  494. $imgtype = '.jpg';
  495. break;
  496. case "gif":
  497. $imgtype = '.gif';
  498. break;
  499. case "png":
  500. $imgtype = '.png';
  501. break;
  502. default:
  503. $error = true;
  504. $error_msg = (!empty($error_msg)) ? $error_msg . "<br />" . $lang['Avatar_filetype'] : $lang['Avatar_filetype'];
  505. break;
  506. }
  507.  
  508. if( !$error && $file_size > 0 && $file_size < $board_config['avatar_filesize'] )
  509. {
  510. $avatar_data = substr($avatar_data, strlen($avatar_data) - $file_size, $file_size);
  511.  
  512. $tmp_filename = tempnam ("/tmp", $this_userdata['user_id'] . "-");
  513. $fptr = @fopen($tmp_filename, "wb");
  514. $bytes_written = @fwrite($fptr, $avatar_data, $file_size);
  515. @fclose($fptr);
  516.  
  517. if( $bytes_written == $file_size )
  518. {
  519. list($width, $height) = @getimagesize($tmp_filename);
  520.  
  521. if( $width <= $board_config['avatar_max_width'] && $height <= $board_config['avatar_max_height'] )
  522. {
  523. $user_id = $this_userdata['user_id'];
  524.  
  525. $avatar_filename = $user_id . $imgtype;
  526.  
  527. if( $this_userdata['user_avatar_type'] == USER_AVATAR_UPLOAD && $this_userdata['user_avatar'] != "")
  528. {
  529. if( file_exists(@phpbb_realpath("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar'])) )
  530. {
  531. @unlink("./../" . $board_config['avatar_path'] . "/" . $this_userdata['user_avatar']);
  532. }
  533. }
  534. @copy($tmp_filename, "./../" . $board_config['avatar_path'] . "/$avatar_filename");
  535. @unlink($tmp_filename);
  536.  
  537. $avatar_sql = ", user_avatar = '$avatar_filename', user_avatar_type = " . USER_AVATAR_UPLOAD;
  538. }
  539. else
  540. {
  541. $l_avatar_size = sprintf($lang['Avatar_imagesize'], $board_config['avatar_max_width'], $board_config['avatar_max_height']);
  542.  
  543. $error = true;
  544. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_avatar_size : $l_avatar_size;
  545. }
  546. }
  547. else
  548. {
  549.  
  550. @unlink($tmp_filename);
  551. message_die(GENERAL_ERROR, "Could not write avatar file to local storage. Please contact the board administrator with this message", "", __LINE__, __FILE__);
  552. }
  553. }
  554. }
  555. else
  556. {
  557.  
  558. $error = true;
  559. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['File_no_data'] : $lang['File_no_data'];
  560. }
  561. }
  562. else
  563. {
  564.  
  565. $error = true;
  566. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['No_connection_URL'] : $lang['No_connection_URL'];
  567. }
  568. }
  569. else
  570. {
  571. $error = true;
  572. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Incomplete_URL'] : $lang['Incomplete_URL'];
  573. }
  574. }
  575. else if( !empty($user_avatar_name) )
  576. {
  577. $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));
  578.  
  579. $error = true;
  580. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $l_avatar_size : $l_avatar_size;
  581. }
  582. }
  583. else if( $user_avatar_remoteurl != "" && $avatar_sql == "" && !$error )
  584. {
  585. if( !preg_match("#^http:\/\/#i", $user_avatar_remoteurl) )
  586. {
  587. $user_avatar_remoteurl = "http://" . $user_avatar_remoteurl;
  588. }
  589.  
  590. if( preg_match("#^(http:\/\/[a-z0-9\-]+?\.([a-z0-9\-]+\.)*[a-z]+\/.*?\.(gif|jpg|png)$)#is", $user_avatar_remoteurl) )
  591. {
  592. $avatar_sql = ", user_avatar = '" . str_replace("\'", "''", $user_avatar_remoteurl) . "', user_avatar_type = " . USER_AVATAR_REMOTE;
  593. }
  594. else
  595. {
  596. $error = true;
  597. $error_msg = ( !empty($error_msg) ) ? $error_msg . "<br />" . $lang['Wrong_remote_avatar_format'] : $lang['Wrong_remote_avatar_format'];
  598. }
  599. }
  600. else if( $user_avatar_local != "" && $avatar_sql == "" && !$error )
  601. {
  602. $avatar_sql = ", user_avatar = '" . str_replace("\'", "''", phpbb_ltrim(basename($user_avatar_category), "'") . '/' . phpbb_ltrim(basename($user_avatar_local), "'")) . "', user_avatar_type = " . USER_AVATAR_GALLERY;
  603. }
  604.  
  605. if ($b_day || $b_md || $b_year)
  606. {
  607. $user_age=(date('md')>=$b_md.(($b_day <= 9) ? '0':'').$b_day) ? date('Y') - $b_year : date('Y') - $b_year - 1 ;
  608. if (!checkdate($b_md,$b_day,$b_year))
  609. {
  610. $error = TRUE;
  611. if( isset($error_msg) )$error_msg .= "<br />";
  612. $error_msg .= $lang['Wrong_birthday_format'];
  613. } else
  614. if ($user_age>$board_config['max_user_age'])
  615. {
  616. $error = TRUE;
  617. if( isset($error_msg) )$error_msg .= "<br />";
  618. $error_msg .= sprintf($lang['Birthday_to_high'],$board_config['max_user_age']);
  619. } else
  620. if ($user_age<$board_config['min_user_age'])
  621. {
  622. $error = TRUE;
  623. if( isset($error_msg) )$error_msg .= "<br />";
  624. $error_msg .= sprintf($lang['Birthday_to_low'],$board_config['min_user_age']);
  625. } else
  626. {
  627. $birthday = ($error) ? $birthday : mkrealdate($b_day,$b_md,$b_year);
  628. }
  629. } else $birthday = ($error) ? '' : 999999;
  630.  
  631. if( !$error )
  632. {
  633. $sql = "UPDATE " . USERS_TABLE . "
  634. SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_number = '" . str_replace("\'", "''", $number) . "', user_nic_color = '" . str_replace("\'", "''", $nic_color) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_topics_per_page = '$user_topics_per_page', user_posts_per_page = '$user_posts_per_page', user_birthday='$birthday', user_next_birthday_greeting=$next_birthday_greeting, user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", $aim) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_sig_bbcode_uid = '$signature_bbcode_uid', user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_email_new_gb = $gb_email, user_can_gb = $gb_can, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_active = $user_status, user_rank = $user_rank, user_gender = '$gender'" . $avatar_sql . "
  635. WHERE user_id = $user_id";
  636.  
  637. if( $result = $db->sql_query($sql) )
  638. {
  639. if( isset($rename_user) )
  640. {
  641. $sql = "UPDATE " . GROUPS_TABLE . "
  642. SET group_name = '".str_replace("\'", "''", $rename_user)."'
  643. WHERE group_name = '".str_replace("'", "''", $this_userdata['username'] )."'";
  644. if( !$result = $db->sql_query($sql) )
  645. {
  646. message_die(GENERAL_ERROR, 'Could not rename users group', '', __LINE__, __FILE__, $sql);
  647. }
  648. }
  649.  
  650. if (!$user_status)
  651. {
  652. $sql = "DELETE FROM " . SESSIONS_TABLE . "
  653. WHERE session_user_id = " . $user_id;
  654.  
  655. if ( !$db->sql_query($sql) )
  656. {
  657. message_die(GENERAL_ERROR, 'Error removing user session', '', __LINE__, __FILE__, $sql);
  658. }
  659. }
  660.  
  661. if ( !empty($passwd_sql) )
  662. {
  663. session_reset_keys($user_id, $user_ip);
  664. }
  665. $message .= $lang['Admin_user_updated'];
  666. }
  667. else
  668. {
  669. message_die(GENERAL_ERROR, 'Admin_user_fail', '', __LINE__, __FILE__, $sql);
  670. }
  671.  
  672. $message .= '<br /><br />' . sprintf($lang['Click_return_useradmin'], '<a href="' . append_sid("admin_users.$phpEx") . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
  673.  
  674. message_die(GENERAL_MESSAGE, $message);
  675. }
  676. else
  677. {
  678. $template->set_filenames(array(
  679. 'reg_header' => 'error_body.tpl')
  680. );
  681.  
  682. $template->assign_vars(array(
  683. 'ERROR_MESSAGE' => $error_msg)
  684. );
  685.  
  686. $template->assign_var_from_handle('ERROR_BOX', 'reg_header');
  687.  
  688. $username = htmlspecialchars(stripslashes($username));
  689. $email = stripslashes($email);
  690. $nic_color = stripslashes($nic_color);
  691. $password = '';
  692. $password_confirm = '';
  693.  
  694. $icq = stripslashes($icq);
  695. $number = stripslashes($number);
  696. $aim = htmlspecialchars(str_replace('+', ' ', stripslashes($aim)));
  697. $msn = htmlspecialchars(stripslashes($msn));
  698. $yim = htmlspecialchars(stripslashes($yim));
  699.  
  700. $website = htmlspecialchars(stripslashes($website));
  701. $location = htmlspecialchars(stripslashes($location));
  702. $occupation = htmlspecialchars(stripslashes($occupation));
  703. $interests = htmlspecialchars(stripslashes($interests));
  704. $user_dateformat = htmlspecialchars(stripslashes($user_dateformat));
  705. }
  706. }
  707. else if( !isset( $HTTP_POST_VARS['submit'] ) && $mode != 'save' && !isset( $HTTP_POST_VARS['avatargallery'] ) && !isset( $HTTP_POST_VARS['submitavatar'] ) && !isset( $HTTP_POST_VARS['cancelavatar'] ) )
  708. {
  709. if( isset( $HTTP_GET_VARS[POST_USERS_URL]) || isset( $HTTP_POST_VARS[POST_USERS_URL]) )
  710. {
  711. $user_id = ( isset( $HTTP_POST_VARS[POST_USERS_URL]) ) ? intval( $HTTP_POST_VARS[POST_USERS_URL]) : intval( $HTTP_GET_VARS[POST_USERS_URL]);
  712. $this_userdata = get_userdata($user_id);
  713. if( !$this_userdata )
  714. {
  715. message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] );
  716. }
  717. }
  718. else
  719. {
  720. $this_userdata = get_userdata($HTTP_POST_VARS['username'], true);
  721. if( !$this_userdata )
  722. {
  723. message_die(GENERAL_MESSAGE, $lang['No_user_id_specified'] );
  724. }
  725. }
  726.  
  727. $user_id = $this_userdata['user_id'];
  728. $username = $this_userdata['username'];
  729. $email = $this_userdata['user_email'];
  730. $password = '';
  731. $password_confirm = '';
  732.  
  733. $icq = $this_userdata['user_icq'];
  734. $aim = htmlspecialchars(str_replace('+', ' ', $this_userdata['user_aim'] ));
  735. $msn = htmlspecialchars($this_userdata['user_msnm']);
  736. $yim = htmlspecialchars($this_userdata['user_yim']);
  737. $nic_color = htmlspecialchars($this_userdata['user_nic_color']);
  738.  
  739. $website = htmlspecialchars($this_userdata['user_website']);
  740. $location = htmlspecialchars($this_userdata['user_from']);
  741. $occupation = htmlspecialchars($this_userdata['user_occ']);
  742. $interests = htmlspecialchars($this_userdata['user_interests']);
  743. $number = $this_userdata['user_number'];
  744. $gender = $this_userdata['user_gender'];
  745.  
  746. $next_birthday_greeting = $this_userdata['user_next_birthday_greeting'];
  747. if ($this_userdata['user_birthday']!=999999)
  748. {
  749. $birthday = realdate($lang['Submit_date_format'],$this_userdata['user_birthday']);
  750. $b_day = realdate('j',$this_userdata['user_birthday']);
  751. $b_md = realdate('n',$this_userdata['user_birthday']);
  752. $b_year = realdate('Y',$this_userdata['user_birthday']);
  753. } else
  754. {
  755. $b_day = '';
  756. $b_md = '';
  757. $b_year = '';
  758. $birthday = '';
  759. }
  760.  
  761. $viewemail = $this_userdata['user_viewemail'];
  762. $notifypm = $this_userdata['user_notify_pm'];
  763. $games_block_pm = $this_userdata['games_block_pm'];
  764. $popuppm = $this_userdata['user_popup_pm'];
  765. $gb_email = $this_userdata['user_email_new_gb'];
  766. $gb_can = $this_userdata['user_can_gb'];
  767. $notifyreply = $this_userdata['user_notify'];
  768. $attachsig = $this_userdata['user_attachsig'];
  769. $allowhtml = $this_userdata['user_allowhtml'];
  770. $allowbbcode = $this_userdata['user_allowbbcode'];
  771. $allowsmilies = $this_userdata['user_allowsmile'];
  772. $allowviewonline = $this_userdata['user_allow_viewonline'];
  773.  
  774. $user_avatar = $this_userdata['user_avatar'];
  775. $user_avatar_type = $this_userdata['user_avatar_type'];
  776. $user_timezone = $this_userdata['user_timezone'];
  777. $user_dateformat = htmlspecialchars($this_userdata['user_dateformat']);
  778. $user_status = $this_userdata['user_active'];
  779. $user_allowavatar = $this_userdata['user_allowavatar'];
  780. $user_allowpm = $this_userdata['user_allow_pm'];
  781. $user_topics_per_page = $this_userdata['user_topics_per_page'];
  782. $user_posts_per_page = $this_userdata['user_posts_per_page'];
  783. $COPPA = false;
  784.  
  785. $html_status = ($this_userdata['user_allowhtml'] ) ? $lang['HTML_is_ON'] : $lang['HTML_is_OFF'];
  786. $bbcode_status = ($this_userdata['user_allowbbcode'] ) ? $lang['BBCode_is_ON'] : $lang['BBCode_is_OFF'];
  787. $smilies_status = ($this_userdata['user_allowsmile'] ) ? $lang['Smilies_are_ON'] : $lang['Smilies_are_OFF'];
  788. }
  789.  
  790. if( isset($HTTP_POST_VARS['avatargallery']) && !$error )
  791. {
  792. if( !$error )
  793. {
  794. $user_id = intval($HTTP_POST_VARS['id']);
  795.  
  796. $template->set_filenames(array(
  797. "body" => "admin/user_avatar_gallery.tpl")
  798. );
  799.  
  800. $dir = @opendir("../" . $board_config['avatar_gallery_path']);
  801.  
  802. $avatar_images = array();
  803. while( $file = @readdir($dir) )
  804. {
  805. if( $file != "." && $file != ".." && !is_file(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) && !is_link(phpbb_realpath("./../" . $board_config['avatar_gallery_path'] . "/" . $file)) )
  806. {
  807. $sub_dir = @opendir("../" . $board_config['avatar_gallery_path'] . "/" . $file);
  808.  
  809. $avatar_row_count = 0;
  810. $avatar_col_count = 0;
  811.  
  812. while( $sub_file = @readdir($sub_dir) )
  813. {
  814. if( preg_match("/(\.gif$|\.png$|\.jpg)$/is", $sub_file) )
  815. {
  816. $avatar_images[$file][$avatar_row_count][$avatar_col_count] = $sub_file;
  817.  
  818. $avatar_col_count++;
  819. if( $avatar_col_count == 5 )
  820. {
  821. $avatar_row_count++;
  822. $avatar_col_count = 0;
  823. }
  824. }
  825. }
  826. }
  827. }
  828. @closedir($dir);
  829.  
  830. if( isset($HTTP_POST_VARS['avatarcategory']) )
  831. {
  832. $category = htmlspecialchars($HTTP_POST_VARS['avatarcategory']);
  833. }
  834. else
  835. {
  836. list($category, ) = each($avatar_images);
  837. }
  838. @reset($avatar_images);
  839.  
  840. $s_categories = "";
  841. while( list($key) = each($avatar_images) )
  842. {
  843. $selected = ( $key == $category ) ? "selected=\"selected\"" : "";
  844. if( count($avatar_images[$key]) )
  845. {
  846. $s_categories .= '<option value="' . $key . '"' . $selected . '>' . ucfirst($key) . '</option>';
  847. }
  848. }
  849.  
  850. $s_colspan = 0;
  851. for($i = 0; $i < count($avatar_images[$category]); $i++)
  852. {
  853. $template->assign_block_vars("avatar_row", array());
  854.  
  855. $s_colspan = max($s_colspan, count($avatar_images[$category][$i]));
  856.  
  857. for($j = 0; $j < count($avatar_images[$category][$i]); $j++)
  858. {
  859. $template->assign_block_vars("avatar_row.avatar_column", array(
  860. "AVATAR_IMAGE" => "../" . $board_config['avatar_gallery_path'] . '/' . $category . '/' . $avatar_images[$category][$i][$j])
  861. );
  862.  
  863. $template->assign_block_vars("avatar_row.avatar_option_column", array(
  864. "S_OPTIONS_AVATAR" => $avatar_images[$category][$i][$j])
  865. );
  866. }
  867. }
  868.  
  869. $coppa = ( ( !$HTTP_POST_VARS['coppa'] && !$HTTP_GET_VARS['coppa'] ) || $mode == "register") ? 0 : TRUE;
  870.  
  871. $s_hidden_fields = '<input type="hidden" name="mode" value="edit" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" /><input type="hidden" name="avatarcatname" value="' . $category . '" />';
  872. $s_hidden_fields .= '<input type="hidden" name="id" value="' . $user_id . '" />';
  873.  
  874. $s_hidden_fields .= '<input type="hidden" name="username" value="' . str_replace("\"", "&quot;", $username) . '" />';
  875. $s_hidden_fields .= '<input type="hidden" name="email" value="' . str_replace("\"", "&quot;", $email) . '" />';
  876. $s_hidden_fields .= '<input type="hidden" name="icq" value="' . str_replace("\"", "&quot;", $icq) . '" />';
  877. $s_hidden_fields .= '<input type="hidden" name="aim" value="' . str_replace("\"", "&quot;", $aim) . '" />';
  878. $s_hidden_fields .= '<input type="hidden" name="msn" value="' . str_replace("\"", "&quot;", $msn) . '" />';
  879. $s_hidden_fields .= '<input type="hidden" name="yim" value="' . str_replace("\"", "&quot;", $yim) . '" />';
  880. $s_hidden_fields .= '<input type="hidden" name="website" value="' . str_replace("\"", "&quot;", $website) . '" />';
  881. $s_hidden_fields .= '<input type="hidden" name="location" value="' . str_replace("\"", "&quot;", $location) . '" />';
  882. $s_hidden_fields .= '<input type="hidden" name="occupation" value="' . str_replace("\"", "&quot;", $occupation) . '" />';
  883. $s_hidden_fields .= '<input type="hidden" name="interests" value="' . str_replace("\"", "&quot;", $interests) . '" />';
  884. $s_hidden_fields .= '<input type="hidden" name="number" value="' . str_replace("\"", "&quot;", $number) . '" />';
  885. $s_hidden_fields .= '<input type="hidden" name="birthday" value="'.$birthday.'" />';
  886. $s_hidden_fields .= '<input type="hidden" name="next_birthday_greeting" value="'.$next_birthday_greeting.'" />';
  887. $s_hidden_fields .= '<input type="hidden" name="viewemail" value="' . $viewemail . '" />';
  888. $s_hidden_fields .= '<input type="hidden" name="gender" value="' . $gender . '" />';
  889. $s_hidden_fields .= '<input type="hidden" name="notifypm" value="' . $notifypm . '" />';
  890. $s_hidden_fields .= '<input type="hidden" name="popup_pm" value="' . $popuppm . '" />';
  891. $s_hidden_fields .= '<input type="hidden" name="notifyreply" value="' . $notifyreply . '" />';
  892. $s_hidden_fields .= '<input type="hidden" name="attachsig" value="' . $attachsig . '" />';
  893. $s_hidden_fields .= '<input type="hidden" name="allowhtml" value="' . $allowhtml . '" />';
  894. $s_hidden_fields .= '<input type="hidden" name="allowbbcode" value="' . $allowbbcode . '" />';
  895. $s_hidden_fields .= '<input type="hidden" name="allowsmilies" value="' . $allowsmilies . '" />';
  896. $s_hidden_fields .= '<input type="hidden" name="hideonline" value="' . !$allowviewonline . '" />';
  897. $s_hidden_fields .= '<input type="hidden" name="timezone" value="' . $user_timezone . '" />';
  898. $s_hidden_fields .= '<input type="hidden" name="dateformat" value="' . str_replace("\"", "&quot;", $user_dateformat) . '" />';
  899. $s_hidden_fields .= '<input type="hidden" name="user_status" value="' . $user_status . '" />';
  900. $s_hidden_fields .= '<input type="hidden" name="user_allowpm" value="' . $user_allowpm . '" />';
  901. $s_hidden_fields .= '<input type="hidden" name="user_allowavatar" value="' . $user_allowavatar . '" />';
  902. $s_hidden_fields .= '<input type="hidden" name="user_rank" value="' . $user_rank . '" />';
  903. $s_hidden_fields .= '<input type="hidden" name="topics_per_page" value="' . $user_topics_per_page . '" />';
  904. $s_hidden_fields .= '<input type="hidden" name="posts_per_page" value="' . $user_posts_per_page . '" />';
  905.  
  906. $template->assign_vars(array(
  907. "L_USER_TITLE" => $lang['User_admin'],
  908. "L_USER_EXPLAIN" => $lang['User_admin_explain'],
  909. "L_AVATAR_GALLERY" => $lang['Avatar_gallery'],
  910. "L_SELECT_AVATAR" => $lang['Select_avatar'],
  911. "L_RETURN_PROFILE" => $lang['Return_profile'],
  912. "L_CATEGORY" => $lang['Select_category'],
  913. "L_GO" => $lang['Go'],
  914.  
  915. "S_OPTIONS_CATEGORIES" => $s_categories,
  916. "S_COLSPAN" => $s_colspan,
  917. "S_PROFILE_ACTION" => append_sid("admin_users.$phpEx?mode=$mode"),
  918. "S_HIDDEN_FIELDS" => $s_hidden_fields)
  919. );
  920. }
  921. }
  922. else
  923. {
  924. $s_hidden_fields = '<input type="hidden" name="mode" value="save" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
  925. $s_hidden_fields .= '<input type="hidden" name="id" value="' . $this_userdata['user_id'] . '" />';
  926.  
  927. if( !empty($user_avatar_local) )
  928. {
  929. $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" /><input type="hidden" name="avatarcatname" value="' . $user_avatar_category . '" />';
  930. }
  931.  
  932. if( $user_avatar_type )
  933. {
  934. switch( $user_avatar_type )
  935. {
  936. case USER_AVATAR_UPLOAD:
  937. $avatar = '<img src="../' . $board_config['avatar_path'] . '/' . $user_avatar . '" alt="" />';
  938. break;
  939. case USER_AVATAR_REMOTE:
  940. $avatar = '<img src="' . $user_avatar . '" alt="" />';
  941. break;
  942. case USER_AVATAR_GALLERY:
  943. $avatar = '<img src="../' . $board_config['avatar_gallery_path'] . '/' . $user_avatar . '" alt="" />';
  944. break;
  945. }
  946. }
  947. else
  948. {
  949. $avatar = "";
  950. }
  951.  
  952. $sql = "SELECT * FROM " . RANKS_TABLE . "
  953. WHERE rank_special = 1
  954. ORDER BY rank_title";
  955. if ( !($result = $db->sql_query($sql)) )
  956. {
  957. message_die(GENERAL_ERROR, 'Could not obtain ranks data', '', __LINE__, __FILE__, $sql);
  958. }
  959.  
  960. $rank_select_box = '<option value="0">' . $lang['No_assigned_rank'] . '</option>';
  961. while( $row = $db->sql_fetchrow($result) )
  962. {
  963. $rank = $row['rank_title'];
  964. $rank_id = $row['rank_id'];
  965. $selected = ( $this_userdata['user_rank'] == $rank_id ) ? ' selected="selected"' : '';
  966. $rank_select_box .= '<option value="' . $rank_id . '"' . $selected . '>' . $rank . '</option>';
  967. }
  968.  
  969. $template->set_filenames(array(
  970. "body" => "admin/user_edit_body.tpl")
  971. );
  972.  
  973. $s_b_day = '<span class="genmed">' . $lang['Day'] . '&nbsp;</span><select name="b_day" size="1" class="gensmall">
  974. <option value="0">&nbsp;-&nbsp;</option>
  975. <option value="1">&nbsp;1&nbsp;</option>
  976. <option value="2">&nbsp;2&nbsp;</option>
  977. <option value="3">&nbsp;3&nbsp;</option>
  978. <option value="4">&nbsp;4&nbsp;</option>
  979. <option value="5">&nbsp;5&nbsp;</option>
  980. <option value="6">&nbsp;6&nbsp;</option>
  981. <option value="7">&nbsp;7&nbsp;</option>
  982. <option value="8">&nbsp;8&nbsp;</option>
  983. <option value="9">&nbsp;9&nbsp;</option>
  984. <option value="10">&nbsp;10&nbsp;</option>
  985. <option value="11">&nbsp;11&nbsp;</option>
  986. <option value="12">&nbsp;12&nbsp;</option>
  987. <option value="13">&nbsp;13&nbsp;</option>
  988. <option value="14">&nbsp;14&nbsp;</option>
  989. <option value="15">&nbsp;15&nbsp;</option>
  990. <option value="16">&nbsp;16&nbsp;</option>
  991. <option value="17">&nbsp;17&nbsp;</option>
  992. <option value="18">&nbsp;18&nbsp;</option>
  993. <option value="19">&nbsp;19&nbsp;</option>
  994. <option value="20">&nbsp;20&nbsp;</option>
  995. <option value="21">&nbsp;21&nbsp;</option>
  996. <option value="22">&nbsp;22&nbsp;</option>
  997. <option value="23">&nbsp;23&nbsp;</option>
  998. <option value="24">&nbsp;24&nbsp;</option>
  999. <option value="25">&nbsp;25&nbsp;</option>
  1000. <option value="26">&nbsp;26&nbsp;</option>
  1001. <option value="27">&nbsp;27&nbsp;</option>
  1002. <option value="28">&nbsp;28&nbsp;</option>
  1003. <option value="29">&nbsp;29&nbsp;</option>
  1004. <option value="30">&nbsp;30&nbsp;</option>
  1005. <option value="31">&nbsp;31&nbsp;</option>
  1006. </select>&nbsp;&nbsp;';
  1007. $s_b_md = '<span class="genmed">' . $lang['Month'] . '&nbsp;</span><select name="b_md" size="1" class="gensmall">
  1008. <option value="0">&nbsp;-&nbsp;</option>
  1009. <option value="1">&nbsp;'.$lang['datetime']['January'].'&nbsp;</option>
  1010. <option value="2">&nbsp;'.$lang['datetime']['February'].'&nbsp;</option>
  1011. <option value="3">&nbsp;'.$lang['datetime']['March'].'&nbsp;</option>
  1012. <option value="4">&nbsp;'.$lang['datetime']['April'].'&nbsp;</option>
  1013. <option value="5">&nbsp;'.$lang['datetime']['May'].'&nbsp;</option>
  1014. <option value="6">&nbsp;'.$lang['datetime']['June'].'&nbsp;</option>
  1015. <option value="7">&nbsp;'.$lang['datetime']['July'].'&nbsp;</option>
  1016. <option value="8">&nbsp;'.$lang['datetime']['August'].'&nbsp;</option>
  1017. <option value="9">&nbsp;'.$lang['datetime']['September'].'&nbsp;</option>
  1018. <option value="10">&nbsp;'.$lang['datetime']['October'].'&nbsp;</option>
  1019. <option value="11">&nbsp;'.$lang['datetime']['November'].'&nbsp;</option>
  1020. <option value="12">&nbsp;'.$lang['datetime']['December'].'&nbsp;</option>
  1021. </select>&nbsp;&nbsp;';
  1022. $s_b_day= str_replace("value=\"".$b_day."\">", "value=\"".$b_day."\" SELECTED>" ,$s_b_day);
  1023. $s_b_md = str_replace("value=\"".$b_md."\">", "value=\"".$b_md."\" SELECTED>" ,$s_b_md);
  1024. $s_b_year = '<span class="genmed">' . $lang['Year'] . '&nbsp;</span><input type="text" class="post" style="width: 50px" name="b_year" size="4" maxlength="4" value="' . $b_year . '" />&nbsp;&nbsp;';
  1025. $i = 0;
  1026. $s_birthday = '';
  1027. for ($i=0;$i<=strlen($lang['Submit_date_format']);$i++)
  1028. {
  1029. switch ($lang['Submit_date_format'][$i])
  1030. {
  1031. case d: $s_birthday .=$s_b_day;break;
  1032. case m: $s_birthday .=$s_b_md;break;
  1033. case Y: $s_birthday .=$s_b_year;break;
  1034. }
  1035. }
  1036.  
  1037. switch ($gender)
  1038. {
  1039. case 1: $gender_male_checked="checked=\"checked\"";break;
  1040. case 2: $gender_female_checked="checked=\"checked\"";break;
  1041. default:$gender_no_specify_checked="checked=\"checked\"";
  1042. }
  1043.  
  1044. $ini_val = ( phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';
  1045. $form_enctype = ( !@$ini_val('file_uploads') || phpversion() == '4.0.4pl1' || !$board_config['allow_avatar_upload'] || ( phpversion() < '4.0.3' && @$ini_val('open_basedir') != '' ) ) ? '' : 'enctype="multipart/form-data"';
  1046.  
  1047. $template->assign_vars(array(
  1048. 'USERNAME' => $username,
  1049. 'EMAIL' => $email,
  1050. 'YIM' => $yim,
  1051. 'ICQ' => $icq,
  1052. 'NUMBER' => $number,
  1053. 'MSN' => $msn,
  1054. 'AIM' => $aim,
  1055. 'OCCUPATION' => $occupation,
  1056. 'INTERESTS' => $interests,
  1057. 'NEXT_BIRTHDAY_GREETING' => $next_birthday_greeting,
  1058. 'S_BIRTHDAY' => $s_birthday,
  1059. 'GENDER' => $gender,
  1060. 'GENDER_NO_SPECIFY_CHECKED' => $gender_no_specify_checked,
  1061. 'GENDER_MALE_CHECKED' => $gender_male_checked,
  1062. 'GENDER_FEMALE_CHECKED' => $gender_female_checked,
  1063.  
  1064. 'LOCATION' => $location,
  1065. 'WEBSITE' => $website,
  1066. 'VIEW_EMAIL_YES' => ($viewemail) ? 'checked="checked"' : '',
  1067. 'VIEW_EMAIL_NO' => (!$viewemail) ? 'checked="checked"' : '',
  1068. 'HIDE_USER_YES' => (!$allowviewonline) ? 'checked="checked"' : '',
  1069. 'HIDE_USER_NO' => ($allowviewonline) ? 'checked="checked"' : '',
  1070. 'NOTIFY_PM_YES' => ($notifypm) ? 'checked="checked"' : '',
  1071. 'NOTIFY_PM_NO' => (!$notifypm) ? 'checked="checked"' : '',
  1072. 'BLOCK_PM_YES' => ( $games_block_pm ) ? 'checked="checked"' : '',
  1073. 'BLOCK_PM_NO' => ( !$games_block_pm ) ? 'checked="checked"' : '',
  1074. 'POPUP_PM_YES' => ($popuppm) ? 'checked="checked"' : '',
  1075. 'POPUP_PM_NO' => (!$popuppm) ? 'checked="checked"' : '',
  1076. 'GB_EMAIL_YES' => ($gb_email) ? 'checked="checked"' : '',
  1077. 'GB_EMAIL_NO' => (!$gb_email) ? 'checked="checked"' : '',
  1078. 'GB_CAN_YES' => ($gb_can) ? 'checked="checked"' : '',
  1079. 'GB_CAN_NO' => (!$gb_can) ? 'checked="checked"' : '',
  1080. 'ALWAYS_ADD_SIGNATURE_YES' => ($attachsig) ? 'checked="checked"' : '',
  1081. 'ALWAYS_ADD_SIGNATURE_NO' => (!$attachsig) ? 'checked="checked"' : '',
  1082. 'NOTIFY_REPLY_YES' => ( $notifyreply ) ? 'checked="checked"' : '',
  1083. 'NOTIFY_REPLY_NO' => ( !$notifyreply ) ? 'checked="checked"' : '',
  1084. 'ALWAYS_ALLOW_BBCODE_YES' => ($allowbbcode) ? 'checked="checked"' : '',
  1085. 'ALWAYS_ALLOW_BBCODE_NO' => (!$allowbbcode) ? 'checked="checked"' : '',
  1086. 'ALWAYS_ALLOW_HTML_YES' => ($allowhtml) ? 'checked="checked"' : '',
  1087. 'ALWAYS_ALLOW_HTML_NO' => (!$allowhtml) ? 'checked="checked"' : '',
  1088. 'ALWAYS_ALLOW_SMILIES_YES' => ($allowsmilies) ? 'checked="checked"' : '',
  1089. 'ALWAYS_ALLOW_SMILIES_NO' => (!$allowsmilies) ? 'checked="checked"' : '',
  1090. 'AVATAR' => $avatar,
  1091. 'TIMEZONE_SELECT' => tz_select($user_timezone),
  1092. 'DATE_FORMAT' => $user_dateformat,
  1093. 'ALLOW_PM_YES' => ($user_allowpm) ? 'checked="checked"' : '',
  1094. 'ALLOW_PM_NO' => (!$user_allowpm) ? 'checked="checked"' : '',
  1095. 'ALLOW_AVATAR_YES' => ($user_allowavatar) ? 'checked="checked"' : '',
  1096. 'ALLOW_AVATAR_NO' => (!$user_allowavatar) ? 'checked="checked"' : '',
  1097. 'USER_ACTIVE_YES' => ($user_status) ? 'checked="checked"' : '',
  1098. 'USER_ACTIVE_NO' => (!$user_status) ? 'checked="checked"' : '',
  1099. 'RANK_SELECT_BOX' => $rank_select_box,
  1100. 'TOPICS_PER_PAGE' => $user_topics_per_page,
  1101. 'POSTS_PER_PAGE' => $user_posts_per_page,
  1102.  
  1103. 'L_USERNAME' => $lang['Username'],
  1104. 'L_USER_TITLE' => $lang['User_admin'],
  1105. 'L_USER_EXPLAIN' => $lang['User_admin_explain'],
  1106. 'L_NEW_PASSWORD' => $lang['New_password'],
  1107. 'L_PASSWORD_IF_CHANGED' => $lang['password_if_changed'],
  1108. 'L_CONFIRM_PASSWORD' => $lang['Confirm_password'],
  1109. 'L_PASSWORD_CONFIRM_IF_CHANGED' => $lang['password_confirm_if_changed'],
  1110. 'L_SUBMIT' => $lang['Submit'],
  1111. 'L_RESET' => $lang['Reset'],
  1112. 'L_ICQ_NUMBER' => $lang['ICQ'],
  1113. 'L_MESSENGER' => $lang['MSNM'],
  1114. 'L_YAHOO' => $lang['YIM'],
  1115. 'L_WEBSITE' => $lang['Website'],
  1116. 'L_AIM' => $lang['AIM'],
  1117. 'L_LOCATION' => $lang['Location'],
  1118. 'L_OCCUPATION' => $lang['Occupation'],
  1119. 'L_BOARD_LANGUAGE' => $lang['Board_lang'],
  1120. 'L_BOARD_STYLE' => $lang['Board_style'],
  1121. 'L_TIMEZONE' => $lang['Timezone'],
  1122. 'L_DATE_FORMAT' => $lang['Date_format'],
  1123. 'L_DATE_FORMAT_EXPLAIN' => $lang['Date_format_explain'],
  1124. 'L_YES' => $lang['Yes'],
  1125. 'L_NO' => $lang['No'],
  1126. 'L_INTERESTS' => $lang['Interests'],
  1127. 'L_NUMBER' => $lang['Number'],
  1128.  
  1129. 'L_BIRTHDAY' => $lang['Birthday'],
  1130. 'L_NEXT_BIRTHDAY_GREETING' => $lang['Next_birthday_greeting'],
  1131. 'L_NEXT_BIRTHDAY_GREETING_EXPLAIN' => $lang['Next_birthday_greeting_expain'],
  1132.  
  1133. 'L_GENDER' => $lang['Gender'],
  1134. 'L_NIC_COLOR' => $lang['Nic_color'],
  1135. 'NIC_COLOR' => $nic_color,
  1136. 'L_GENDER_MALE' =>$lang['Male'],
  1137. 'L_GENDER_FEMALE' =>$lang['Female'],
  1138. 'L_GENDER_NOT_SPECIFY' =>$lang['No_gender_specify'],
  1139.  
  1140. 'L_ALWAYS_ALLOW_SMILIES' => $lang['Always_smile'],
  1141. 'L_ALWAYS_ALLOW_BBCODE' => $lang['Always_bbcode'],
  1142. 'L_ALWAYS_ALLOW_HTML' => $lang['Always_html'],
  1143. 'L_HIDE_USER' => $lang['Hide_user'],
  1144. 'L_ALWAYS_ADD_SIGNATURE' => $lang['Always_add_sig'],
  1145. 'L_SPECIAL' => $lang['User_special'],
  1146. 'L_SPECIAL_EXPLAIN' => $lang['User_special_explain'],
  1147. 'L_USER_ACTIVE' => $lang['User_status'],
  1148. 'L_ALLOW_PM' => $lang['User_allowpm'],
  1149. 'L_ALLOW_AVATAR' => $lang['User_allowavatar'],
  1150. 'L_AVATAR_PANEL' => $lang['Avatar_panel'],
  1151. 'L_AVATAR_EXPLAIN' => $lang['Admin_avatar_explain'],
  1152. 'L_DELETE_AVATAR' => $lang['Delete_Image'],
  1153. 'L_CURRENT_IMAGE' => $lang['Current_Image'],
  1154. 'L_UPLOAD_AVATAR_FILE' => $lang['Upload_Avatar_file'],
  1155. 'L_UPLOAD_AVATAR_URL' => $lang['Upload_Avatar_URL'],
  1156. 'L_AVATAR_GALLERY' => $lang['Select_from_gallery'],
  1157. 'L_SHOW_GALLERY' => $lang['View_avatar_gallery'],
  1158. 'L_LINK_REMOTE_AVATAR' => $lang['Link_remote_Avatar'],
  1159.  
  1160. 'L_SIGNATURE' => $lang['Signature'],
  1161. 'L_SIGNATURE_EXPLAIN' => sprintf($lang['Signature_explain'], $board_config['max_sig_chars'] ),
  1162. 'L_NOTIFY_ON_PRIVMSG' => $lang['Notify_on_privmsg'],
  1163. 'L_BLOCK_ARCADE_PM' => $lang['Block_Arcade_pm'],
  1164. 'L_NOTIFY_ON_REPLY' => $lang['Always_notify'],
  1165. 'L_POPUP_ON_PRIVMSG' => $lang['Popup_on_privmsg'],
  1166. 'L_GB_EMAIL' => $lang['gb_email'],
  1167. 'L_GB_CAN' => $lang['gb_can'],
  1168. 'L_PREFERENCES' => $lang['Preferences'],
  1169. 'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'],
  1170. 'L_ITEMS_REQUIRED' => $lang['Items_required'],
  1171. 'L_REGISTRATION_INFO' => $lang['Registration_info'],
  1172. 'L_PROFILE_INFO' => $lang['Profile_info'],
  1173. 'L_PROFILE_INFO_NOTICE' => $lang['Profile_info_warn'],
  1174. 'L_EMAIL_ADDRESS' => $lang['Email_address'],
  1175. 'S_FORM_ENCTYPE' => $form_enctype,
  1176.  
  1177. 'HTML_STATUS' => $html_status,
  1178. 'BBCODE_STATUS' => sprintf($bbcode_status, '<a href="../' . append_sid("faq.$phpEx?mode=bbcode") . '" target="_phpbbcode">', '</a>'),
  1179. 'SMILIES_STATUS' => $smilies_status,
  1180.  
  1181. 'L_DELETE_USER' => $lang['User_delete'],
  1182. 'L_DELETE_USER_EXPLAIN' => $lang['User_delete_explain'],
  1183. 'L_SELECT_RANK' => $lang['Rank_title'],
  1184. 'L_TOPICS_PER_PAGE' => $lang['Topics_per_page'],
  1185. 'L_POSTS_PER_PAGE' => $lang['Posts_per_page'],
  1186.  
  1187. 'S_HIDDEN_FIELDS' => $s_hidden_fields,
  1188. 'S_PROFILE_ACTION' => append_sid("admin_users.$phpEx"))
  1189. );
  1190.  
  1191. if( file_exists(@phpbb_realpath('./../' . $board_config['avatar_path'])) && ($board_config['allow_avatar_upload'] == TRUE) )
  1192. {
  1193. if ( $form_enctype != '' )
  1194. {
  1195. $template->assign_block_vars('avatar_local_upload', array() );
  1196. }
  1197. $template->assign_block_vars('avatar_remote_upload', array() );
  1198. }
  1199.  
  1200. if( file_exists(@phpbb_realpath('./../' . $board_config['avatar_gallery_path'])) && ($board_config['allow_avatar_local'] == TRUE) )
  1201. {
  1202. $template->assign_block_vars('avatar_local_gallery', array() );
  1203. }
  1204. if( $board_config['allow_avatar_remote'] == TRUE )
  1205. {
  1206. $template->assign_block_vars('avatar_remote_link', array() );
  1207. }
  1208. }
  1209.  
  1210. $template->pparse('body');
  1211. }
  1212. else
  1213. {
  1214.  
  1215. $template->set_filenames(array(
  1216. 'body' => 'admin/user_select_body.tpl')
  1217. );
  1218.  
  1219. $template->assign_vars(array(
  1220. 'L_USER_TITLE' => $lang['User_admin'],
  1221. 'L_USER_EXPLAIN' => $lang['User_admin_explain'],
  1222. 'L_USER_SELECT' => $lang['Select_a_User'],
  1223. 'L_LOOK_UP' => $lang['Look_up_user'],
  1224. 'L_FIND_USERNAME' => $lang['Find_username'],
  1225.  
  1226. 'U_SEARCH_USER' => append_sid("./../search.$phpEx?mode=searchuser"),
  1227.  
  1228. 'S_USER_ACTION' => append_sid("admin_users.$phpEx"),
  1229. 'S_USER_SELECT' => $select_list)
  1230. );
  1231. $template->pparse('body');
  1232.  
  1233. }
  1234.  
  1235. include('./page_footer_admin.'.$phpEx);
  1236.  
  1237. ?>