Verzeichnisstruktur phpBB-2.0.0


Veröffentlicht
03.04.2002

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

usercp_register.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 44.86 KiB


 0001  <?php
 0002  /***************************************************************************
 0003   *                            usercp_register.php
 0004   *                            -------------------
 0005   *   begin                : Saturday, Feb 13, 2001
 0006   *   copyright            : (C) 2001 The phpBB Group
 0007   *   email                : support@phpbb.com
 0008   *
 0009   *   $Id$
 0010   *
 0011   *
 0012   ***************************************************************************/
 0013   
 0014  /***************************************************************************
 0015   *
 0016   *   This program is free software; you can redistribute it and/or modify
 0017   *   it under the terms of the GNU General Public License as published by
 0018   *   the Free Software Foundation; either version 2 of the License, or
 0019   *   (at your option) any later version.
 0020   *
 0021   *
 0022   ***************************************************************************/
 0023   
 0024  /*
 0025   
 0026      This code has been modified from its original form by psoTFX @ phpbb.com
 0027      Changes introduce the back-ported phpBB 2.2 visual confirmation code. 
 0028   
 0029      NOTE: Anyone using the modified code contained within this script MUST include
 0030      a relevant message such as this in usercp_register.php ... failure to do so 
 0031      will affect a breach of Section 2a of the GPL and our copyright
 0032   
 0033      png visual confirmation system : (c) phpBB Group, 2003 : All Rights Reserved
 0034   
 0035  */
 0036   
 0037  if ( !defined('IN_PHPBB') )
 0038  {
 0039      die("Hacking attempt");
 0040      exit;
 0041  }
 0042   
 0043  $unhtml_specialchars_match = array('#&gt;#', '#&lt;#', '#&quot;#', '#&amp;#');
 0044  $unhtml_specialchars_replace = array('>', '<', '"', '&');
 0045   
 0046  // ---------------------------------------
 0047  // Load agreement template since user has not yet
 0048  // agreed to registration conditions/coppa
 0049  //
 0050  function show_coppa()
 0051  {
 0052      global $userdata, $template, $lang, $phpbb_root_path, $phpEx;
 0053   
 0054      $template->set_filenames(array(
 0055          'body' => 'agreement.tpl')
 0056      );
 0057   
 0058      $template->assign_vars(array(
 0059          'REGISTRATION' => $lang['Registration'],
 0060          'AGREEMENT' => $lang['Reg_agreement'],
 0061          "AGREE_OVER_13" => $lang['Agree_over_13'],
 0062          "AGREE_UNDER_13" => $lang['Agree_under_13'],
 0063          'DO_NOT_AGREE' => $lang['Agree_not'],
 0064   
 0065          "U_AGREE_OVER13" => append_sid("profile.$phpEx?mode=register&amp;agreed=true"),
 0066          "U_AGREE_UNDER13" => append_sid("profile.$phpEx?mode=register&amp;agreed=true&amp;coppa=true"))
 0067      );
 0068   
 0069      $template->pparse('body');
 0070   
 0071  }
 0072  //
 0073  // ---------------------------------------
 0074   
 0075  $error = FALSE;
 0076  $error_msg = '';
 0077  $page_title = ( $mode == 'editprofile' ) ? $lang['Edit_profile'] : $lang['Register'];
 0078   
 0079  if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed']) )
 0080  {
 0081      include($phpbb_root_path . 'includes/page_header.'.$phpEx);
 0082   
 0083      show_coppa();
 0084   
 0085      include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
 0086  }
 0087   
 0088  $coppa = ( empty($HTTP_POST_VARS['coppa']) && empty($HTTP_GET_VARS['coppa']) ) ? 0 : TRUE;
 0089   
 0090  //
 0091  // Check and initialize some variables if needed
 0092  //
 0093  if (
 0094      isset($HTTP_POST_VARS['submit']) ||
 0095      isset($HTTP_POST_VARS['avatargallery']) ||
 0096      isset($HTTP_POST_VARS['submitavatar']) ||
 0097      isset($HTTP_POST_VARS['cancelavatar']) ||
 0098      $mode == 'register' )
 0099  {
 0100      include($phpbb_root_path . 'includes/functions_validate.'.$phpEx);
 0101      include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
 0102      include($phpbb_root_path . 'includes/functions_post.'.$phpEx);
 0103   
 0104      if ( $mode == 'editprofile' )
 0105      {
 0106          $user_id = intval($HTTP_POST_VARS['user_id']);
 0107          $current_email = trim(htmlspecialchars($HTTP_POST_VARS['current_email']));
 0108      }
 0109   
 0110      $strip_var_list = array('email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests', 'confirm_code' => 'confirm_code');
 0111   
 0112      // Strip all tags from data ... may p**s some people off, bah, strip_tags is
 0113      // doing the job but can still break HTML output ... have no choice, have
 0114      // to use htmlspecialchars ... be prepared to be moaned at.
 0115      while( list($var, $param) = @each($strip_var_list) )
 0116      {
 0117          if ( !empty($HTTP_POST_VARS[$param]) )
 0118          {
 0119              $$var = trim(htmlspecialchars($HTTP_POST_VARS[$param]));
 0120          }
 0121      }
 0122   
 0123      $username = ( !empty($HTTP_POST_VARS['username']) ) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
 0124   
 0125      $trim_var_list = array('cur_password' => 'cur_password', 'new_password' => 'new_password', 'password_confirm' => 'password_confirm', 'signature' => 'signature');
 0126   
 0127      while( list($var, $param) = @each($trim_var_list) )
 0128      {
 0129          if ( !empty($HTTP_POST_VARS[$param]) )
 0130          {
 0131              $$var = trim($HTTP_POST_VARS[$param]);
 0132          }
 0133      }
 0134   
 0135      $signature = (isset($signature)) ? str_replace('<br />', "\n", $signature) : '';
 0136      $signature_bbcode_uid = '';
 0137   
 0138      // Run some validation on the optional fields. These are pass-by-ref, so they'll be changed to
 0139      // empty strings if they fail.
 0140      validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature);
 0141   
 0142      $viewemail = ( isset($HTTP_POST_VARS['viewemail']) ) ? ( ($HTTP_POST_VARS['viewemail']) ? TRUE : 0 ) : 0;
 0143      $allowviewonline = ( isset($HTTP_POST_VARS['hideonline']) ) ? ( ($HTTP_POST_VARS['hideonline']) ? 0 : TRUE ) : TRUE;
 0144      $notifyreply = ( isset($HTTP_POST_VARS['notifyreply']) ) ? ( ($HTTP_POST_VARS['notifyreply']) ? TRUE : 0 ) : 0;
 0145      $notifypm = ( isset($HTTP_POST_VARS['notifypm']) ) ? ( ($HTTP_POST_VARS['notifypm']) ? TRUE : 0 ) : TRUE;
 0146      $popup_pm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;
 0147      $sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
 0148   
 0149      if ( $mode == 'register' )
 0150      {
 0151          $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $board_config['allow_sig'];
 0152   
 0153          $allowhtml = ( isset($HTTP_POST_VARS['allowhtml']) ) ? ( ($HTTP_POST_VARS['allowhtml']) ? TRUE : 0 ) : $board_config['allow_html'];
 0154          $allowbbcode = ( isset($HTTP_POST_VARS['allowbbcode']) ) ? ( ($HTTP_POST_VARS['allowbbcode']) ? TRUE : 0 ) : $board_config['allow_bbcode'];
 0155          $allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $board_config['allow_smilies'];
 0156      }
 0157      else
 0158      {
 0159          $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $userdata['user_attachsig'];
 0160   
 0161          $allowhtml = ( isset($HTTP_POST_VARS['allowhtml']) ) ? ( ($HTTP_POST_VARS['allowhtml']) ? TRUE : 0 ) : $userdata['user_allowhtml'];
 0162          $allowbbcode = ( isset($HTTP_POST_VARS['allowbbcode']) ) ? ( ($HTTP_POST_VARS['allowbbcode']) ? TRUE : 0 ) : $userdata['user_allowbbcode'];
 0163          $allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $userdata['user_allowsmile'];
 0164      }
 0165   
 0166      $user_style = ( isset($HTTP_POST_VARS['style']) ) ? intval($HTTP_POST_VARS['style']) : $board_config['default_style'];
 0167   
 0168      if ( !empty($HTTP_POST_VARS['language']) )
 0169      {
 0170          if ( preg_match('/^[a-z_]+$/i', $HTTP_POST_VARS['language']) )
 0171          {
 0172              $user_lang = htmlspecialchars($HTTP_POST_VARS['language']);
 0173          }
 0174          else
 0175          {
 0176              $error = true;
 0177              $error_msg = $lang['Fields_empty'];
 0178          }
 0179      }
 0180      else
 0181      {
 0182          $user_lang = $board_config['default_lang'];
 0183      }
 0184   
 0185      $user_timezone = ( isset($HTTP_POST_VARS['timezone']) ) ? doubleval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone'];
 0186   
 0187      $sql = "SELECT config_value
 0188          FROM " . CONFIG_TABLE . "
 0189          WHERE config_name = 'default_dateformat'";
 0190      if ( !($result = $db->sql_query($sql)) )
 0191      {
 0192          message_die(GENERAL_ERROR, 'Could not select default dateformat', '', __LINE__, __FILE__, $sql);
 0193      }
 0194      $row = $db->sql_fetchrow($result);
 0195      $board_config['default_dateformat'] = $row['config_value'];
 0196      $user_dateformat = ( !empty($HTTP_POST_VARS['dateformat']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['dateformat'])) : $board_config['default_dateformat'];
 0197   
 0198      $user_avatar_local = ( isset($HTTP_POST_VARS['avatarselect']) && !empty($HTTP_POST_VARS['submitavatar']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarselect']) : ( ( isset($HTTP_POST_VARS['avatarlocal'])  ) ? htmlspecialchars($HTTP_POST_VARS['avatarlocal']) : '' );
 0199      $user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' ;
 0200   
 0201      $user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['avatarremoteurl'])) : '';
 0202      $user_avatar_upload = ( !empty($HTTP_POST_VARS['avatarurl']) ) ? trim($HTTP_POST_VARS['avatarurl']) : ( ( $HTTP_POST_FILES['avatar']['tmp_name'] != "none") ? $HTTP_POST_FILES['avatar']['tmp_name'] : '' );
 0203      $user_avatar_name = ( !empty($HTTP_POST_FILES['avatar']['name']) ) ? $HTTP_POST_FILES['avatar']['name'] : '';
 0204      $user_avatar_size = ( !empty($HTTP_POST_FILES['avatar']['size']) ) ? $HTTP_POST_FILES['avatar']['size'] : 0;
 0205      $user_avatar_filetype = ( !empty($HTTP_POST_FILES['avatar']['type']) ) ? $HTTP_POST_FILES['avatar']['type'] : '';
 0206   
 0207      $user_avatar = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
 0208      $user_avatar_type = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : '';
 0209   
 0210      if ( (isset($HTTP_POST_VARS['avatargallery']) || isset($HTTP_POST_VARS['submitavatar']) || isset($HTTP_POST_VARS['cancelavatar'])) && (!isset($HTTP_POST_VARS['submit'])) )
 0211      {
 0212          $username = stripslashes($username);
 0213          $email = stripslashes($email);
 0214          $cur_password = htmlspecialchars(stripslashes($cur_password));
 0215          $new_password = htmlspecialchars(stripslashes($new_password));
 0216          $password_confirm = htmlspecialchars(stripslashes($password_confirm));
 0217   
 0218          $icq = stripslashes($icq);
 0219          $aim = stripslashes($aim);
 0220          $msn = stripslashes($msn);
 0221          $yim = stripslashes($yim);
 0222   
 0223          $website = stripslashes($website);
 0224          $location = stripslashes($location);
 0225          $occupation = stripslashes($occupation);
 0226          $interests = stripslashes($interests);
 0227          $signature = htmlspecialchars(stripslashes($signature));
 0228   
 0229          $user_lang = stripslashes($user_lang);
 0230          $user_dateformat = stripslashes($user_dateformat);
 0231   
 0232          if ( !isset($HTTP_POST_VARS['cancelavatar']))
 0233          {
 0234              $user_avatar = $user_avatar_category . '/' . $user_avatar_local;
 0235              $user_avatar_type = USER_AVATAR_GALLERY;
 0236          }
 0237      }
 0238  }
 0239   
 0240  //
 0241  // Let's make sure the user isn't logged in while registering,
 0242  // and ensure that they were trying to register a second time
 0243  // (Prevents double registrations)
 0244  //
 0245  if ($mode == 'register' && ($userdata['session_logged_in'] || $username == $userdata['username']))
 0246  {
 0247      message_die(GENERAL_MESSAGE, $lang['Username_taken'], '', __LINE__, __FILE__);
 0248  }
 0249   
 0250  //
 0251  // Did the user submit? In this case build a query to update the users profile in the DB
 0252  //
 0253  if ( isset($HTTP_POST_VARS['submit']) )
 0254  {
 0255      include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
 0256   
 0257      // session id check
 0258      if ($sid == '' || $sid != $userdata['session_id'])
 0259      {
 0260          $error = true;
 0261          $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Session_invalid'];
 0262      }
 0263   
 0264      $passwd_sql = '';
 0265      if ( $mode == 'editprofile' )
 0266      {
 0267          if ( $user_id != $userdata['user_id'] )
 0268          {
 0269              $error = TRUE;
 0270              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Wrong_Profile'];
 0271          }
 0272      }
 0273      else if ( $mode == 'register' )
 0274      {
 0275          if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
 0276          {
 0277              $error = TRUE;
 0278              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
 0279          }
 0280      }
 0281   
 0282      if ($board_config['enable_confirm'] && $mode == 'register')
 0283      {
 0284          if (empty($HTTP_POST_VARS['confirm_id']))
 0285          {
 0286              $error = TRUE;
 0287              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
 0288          }
 0289          else
 0290          {
 0291              $confirm_id = htmlspecialchars($HTTP_POST_VARS['confirm_id']);
 0292              if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
 0293              {
 0294                  $confirm_id = '';
 0295              }
 0296              
 0297              $sql = 'SELECT code 
 0298                  FROM ' . CONFIRM_TABLE . " 
 0299                  WHERE confirm_id = '$confirm_id' 
 0300                      AND session_id = '" . $userdata['session_id'] . "'";
 0301              if (!($result = $db->sql_query($sql)))
 0302              {
 0303                  message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
 0304              }
 0305   
 0306              if ($row = $db->sql_fetchrow($result))
 0307              {
 0308                  if ($row['code'] != $confirm_code)
 0309                  {
 0310                      $error = TRUE;
 0311                      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
 0312                  }
 0313                  else
 0314                  {
 0315                      $sql = 'DELETE FROM ' . CONFIRM_TABLE . " 
 0316                          WHERE confirm_id = '$confirm_id' 
 0317                              AND session_id = '" . $userdata['session_id'] . "'";
 0318                      if (!$db->sql_query($sql))
 0319                      {
 0320                          message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
 0321                      }
 0322                  }
 0323              }
 0324              else
 0325              {        
 0326                  $error = TRUE;
 0327                  $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
 0328              }
 0329              $db->sql_freeresult($result);
 0330          }
 0331      }
 0332   
 0333      $passwd_sql = '';
 0334      if ( !empty($new_password) && !empty($password_confirm) )
 0335      {
 0336          if ( $new_password != $password_confirm )
 0337          {
 0338              $error = TRUE;
 0339              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
 0340          }
 0341          else if ( strlen($new_password) > 32 )
 0342          {
 0343              $error = TRUE;
 0344              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_long'];
 0345          }
 0346          else
 0347          {
 0348              if ( $mode == 'editprofile' )
 0349              {
 0350                  $sql = "SELECT user_password
 0351                      FROM " . USERS_TABLE . "
 0352                      WHERE user_id = $user_id";
 0353                  if ( !($result = $db->sql_query($sql)) )
 0354                  {
 0355                      message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
 0356                  }
 0357   
 0358                  $row = $db->sql_fetchrow($result);
 0359   
 0360                  if ( $row['user_password'] != md5($cur_password) )
 0361                  {
 0362                      $error = TRUE;
 0363                      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
 0364                  }
 0365              }
 0366   
 0367              if ( !$error )
 0368              {
 0369                  $new_password = md5($new_password);
 0370                  $passwd_sql = "user_password = '$new_password', ";
 0371              }
 0372          }
 0373      }
 0374      else if ( ( empty($new_password) && !empty($password_confirm) ) || ( !empty($new_password) && empty($password_confirm) ) )
 0375      {
 0376          $error = TRUE;
 0377          $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
 0378      }
 0379   
 0380      //
 0381      // Do a ban check on this email address
 0382      //
 0383      if ( $email != $userdata['user_email'] || $mode == 'register' )
 0384      {
 0385          $result = validate_email($email);
 0386          if ( $result['error'] )
 0387          {
 0388              $email = $userdata['user_email'];
 0389   
 0390              $error = TRUE;
 0391              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
 0392          }
 0393   
 0394          if ( $mode == 'editprofile' )
 0395          {
 0396              $sql = "SELECT user_password
 0397                  FROM " . USERS_TABLE . "
 0398                  WHERE user_id = $user_id";
 0399              if ( !($result = $db->sql_query($sql)) )
 0400              {
 0401                  message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
 0402              }
 0403   
 0404              $row = $db->sql_fetchrow($result);
 0405   
 0406              if ( $row['user_password'] != md5($cur_password) )
 0407              {
 0408                  $email = $userdata['user_email'];
 0409   
 0410                  $error = TRUE;
 0411                  $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
 0412              }
 0413          }
 0414      }
 0415   
 0416      $username_sql = '';
 0417      if ( $board_config['allow_namechange'] || $mode == 'register' )
 0418      {
 0419          if ( empty($username) )
 0420          {
 0421              // Error is already triggered, since one field is empty.
 0422              $error = TRUE;
 0423          }
 0424          else if ( $username != $userdata['username'] || $mode == 'register')
 0425          {
 0426              if (strtolower($username) != strtolower($userdata['username']) || $mode == 'register')
 0427              {
 0428                  $result = validate_username($username);
 0429                  if ( $result['error'] )
 0430                  {
 0431                      $error = TRUE;
 0432                      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
 0433                  }
 0434              }
 0435   
 0436              if (!$error)
 0437              {
 0438                  $username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
 0439              }
 0440          }
 0441      }
 0442   
 0443      if ( $signature != '' )
 0444      {
 0445          if ( strlen($signature) > $board_config['max_sig_chars'] )
 0446          {
 0447              $error = TRUE;
 0448              $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Signature_too_long'];
 0449          }
 0450   
 0451          if ( !isset($signature_bbcode_uid) || $signature_bbcode_uid == '' )
 0452          {
 0453              $signature_bbcode_uid = ( $allowbbcode ) ? make_bbcode_uid() : '';
 0454          }
 0455          $signature = prepare_message($signature, $allowhtml, $allowbbcode, $allowsmilies, $signature_bbcode_uid);
 0456      }
 0457   
 0458      if ( $website != '' )
 0459      {
 0460          rawurlencode($website);
 0461      }
 0462   
 0463      $avatar_sql = '';
 0464   
 0465      if ( isset($HTTP_POST_VARS['avatardel']) && $mode == 'editprofile' )
 0466      {
 0467          $avatar_sql = user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
 0468      }
 0469      else
 0470      if ( ( !empty($user_avatar_upload) || !empty($user_avatar_name) ) && $board_config['allow_avatar_upload'] )
 0471      {
 0472          if ( !empty($user_avatar_upload) )
 0473          {
 0474              $avatar_mode = (empty($user_avatar_name)) ? 'remote' : 'local';
 0475              $avatar_sql = user_avatar_upload($mode, $avatar_mode, $userdata['user_avatar'], $userdata['user_avatar_type'], $error, $error_msg, $user_avatar_upload, $user_avatar_name, $user_avatar_size, $user_avatar_filetype);
 0476          }
 0477          else if ( !empty($user_avatar_name) )
 0478          {
 0479              $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));
 0480   
 0481              $error = true;
 0482              $error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $l_avatar_size;
 0483          }
 0484      }
 0485      else if ( $user_avatar_remoteurl != '' && $board_config['allow_avatar_remote'] )
 0486      {
 0487          user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
 0488          $avatar_sql = user_avatar_url($mode, $error, $error_msg, $user_avatar_remoteurl);
 0489      }
 0490      else if ( $user_avatar_local != '' && $board_config['allow_avatar_local'] )
 0491      {
 0492          user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
 0493          $avatar_sql = user_avatar_gallery($mode, $error, $error_msg, $user_avatar_local, $user_avatar_category);
 0494      }
 0495   
 0496      if ( !$error )
 0497      {
 0498          if ( $avatar_sql == '' )
 0499          {
 0500              $avatar_sql = ( $mode == 'editprofile' ) ? '' : "'', " . USER_AVATAR_NONE;
 0501          }
 0502   
 0503          if ( $mode == 'editprofile' )
 0504          {
 0505              if ( $email != $userdata['user_email'] && $board_config['require_activation'] != USER_ACTIVATION_NONE && $userdata['user_level'] != ADMIN )
 0506              {
 0507                  $user_active = 0;
 0508   
 0509                  $user_actkey = gen_rand_string(true);
 0510                  $key_len = 54 - ( strlen($server_url) );
 0511                  $key_len = ( $key_len > 6 ) ? $key_len : 6;
 0512                  $user_actkey = substr($user_actkey, 0, $key_len);
 0513   
 0514                  if ( $userdata['session_logged_in'] )
 0515                  {
 0516                      session_end($userdata['session_id'], $userdata['user_id']);
 0517                  }
 0518              }
 0519              else
 0520              {
 0521                  $user_active = 1;
 0522                  $user_actkey = '';
 0523              }
 0524   
 0525              $sql = "UPDATE " . USERS_TABLE . "
 0526                  SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) ."', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_sig = '" . str_replace("\'", "''", $signature) . "', user_sig_bbcode_uid = '$signature_bbcode_uid', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, user_notify_pm = $notifypm, user_popup_pm = $popup_pm, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_active = $user_active, user_actkey = '" . str_replace("\'", "''", $user_actkey) . "'" . $avatar_sql . "
 0527                  WHERE user_id = $user_id";
 0528              if ( !($result = $db->sql_query($sql)) )
 0529              {
 0530                  message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
 0531              }
 0532   
 0533              // We remove all stored login keys since the password has been updated
 0534              // and change the current one (if applicable)
 0535              if ( !empty($passwd_sql) )
 0536              {
 0537                  session_reset_keys($user_id, $user_ip);
 0538              }
 0539   
 0540              if ( !$user_active )
 0541              {
 0542                  //
 0543                  // The users account has been deactivated, send them an email with a new activation key
 0544                  //
 0545                  include($phpbb_root_path . 'includes/emailer.'.$phpEx);
 0546                  $emailer = new emailer($board_config['smtp_delivery']);
 0547   
 0548                   if ( $board_config['require_activation'] != USER_ACTIVATION_ADMIN )
 0549                   {
 0550                       $emailer->from($board_config['board_email']);
 0551                       $emailer->replyto($board_config['board_email']);
 0552   
 0553                       $emailer->use_template('user_activate', stripslashes($user_lang));
 0554                       $emailer->email_address($email);
 0555                       $emailer->set_subject($lang['Reactivate']);
 0556    
 0557                       $emailer->assign_vars(array(
 0558                           'SITENAME' => $board_config['sitename'],
 0559                           'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
 0560                           'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
 0561    
 0562                           'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
 0563                       );
 0564                       $emailer->send();
 0565                       $emailer->reset();
 0566                   }
 0567                   else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
 0568                   {
 0569                       $sql = 'SELECT user_email, user_lang 
 0570                           FROM ' . USERS_TABLE . '
 0571                           WHERE user_level = ' . ADMIN;
 0572                       
 0573                       if ( !($result = $db->sql_query($sql)) )
 0574                       {
 0575                           message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
 0576                       }
 0577                       
 0578                       while ($row = $db->sql_fetchrow($result))
 0579                       {
 0580                           $emailer->from($board_config['board_email']);
 0581                           $emailer->replyto($board_config['board_email']);
 0582                           
 0583                           $emailer->email_address(trim($row['user_email']));
 0584                           $emailer->use_template("admin_activate", $row['user_lang']);
 0585                           $emailer->set_subject($lang['Reactivate']);
 0586   
 0587                           $emailer->assign_vars(array(
 0588                               'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
 0589                               'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
 0590   
 0591                               'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
 0592                           );
 0593                           $emailer->send();
 0594                           $emailer->reset();
 0595                       }
 0596                       $db->sql_freeresult($result);
 0597                   }
 0598   
 0599                  $message = $lang['Profile_updated_inactive'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
 0600              }
 0601              else
 0602              {
 0603                  $message = $lang['Profile_updated'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
 0604              }
 0605   
 0606              $template->assign_vars(array(
 0607                  "META" => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
 0608              );
 0609   
 0610              message_die(GENERAL_MESSAGE, $message);
 0611          }
 0612          else
 0613          {
 0614              $sql = "SELECT MAX(user_id) AS total
 0615                  FROM " . USERS_TABLE;
 0616              if ( !($result = $db->sql_query($sql)) )
 0617              {
 0618                  message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
 0619              }
 0620   
 0621              if ( !($row = $db->sql_fetchrow($result)) )
 0622              {
 0623                  message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
 0624              }
 0625              $user_id = $row['total'] + 1;
 0626   
 0627              //
 0628              // Get current date
 0629              //
 0630              $sql = "INSERT INTO " . USERS_TABLE . "    (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
 0631                  VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popup_pm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
 0632              if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
 0633              {
 0634                  $user_actkey = gen_rand_string(true);
 0635                  $key_len = 54 - (strlen($server_url));
 0636                  $key_len = ( $key_len > 6 ) ? $key_len : 6;
 0637                  $user_actkey = substr($user_actkey, 0, $key_len);
 0638                  $sql .= "0, '" . str_replace("\'", "''", $user_actkey) . "')";
 0639              }
 0640              else
 0641              {
 0642                  $sql .= "1, '')";
 0643              }
 0644   
 0645              if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
 0646              {
 0647                  message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
 0648              }
 0649   
 0650              $sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
 0651                  VALUES ('', 'Personal User', 1, 0)";
 0652              if ( !($result = $db->sql_query($sql)) )
 0653              {
 0654                  message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql);
 0655              }
 0656   
 0657              $group_id = $db->sql_nextid();
 0658   
 0659              $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
 0660                  VALUES ($user_id, $group_id, 0)";
 0661              if( !($result = $db->sql_query($sql, END_TRANSACTION)) )
 0662              {
 0663                  message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql);
 0664              }
 0665   
 0666              if ( $coppa )
 0667              {
 0668                  $message = $lang['COPPA'];
 0669                  $email_template = 'coppa_welcome_inactive';
 0670              }
 0671              else if ( $board_config['require_activation'] == USER_ACTIVATION_SELF )
 0672              {
 0673                  $message = $lang['Account_inactive'];
 0674                  $email_template = 'user_welcome_inactive';
 0675              }
 0676              else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
 0677              {
 0678                  $message = $lang['Account_inactive_admin'];
 0679                  $email_template = 'admin_welcome_inactive';
 0680              }
 0681              else
 0682              {
 0683                  $message = $lang['Account_added'];
 0684                  $email_template = 'user_welcome';
 0685              }
 0686   
 0687              include($phpbb_root_path . 'includes/emailer.'.$phpEx);
 0688              $emailer = new emailer($board_config['smtp_delivery']);
 0689   
 0690              $emailer->from($board_config['board_email']);
 0691              $emailer->replyto($board_config['board_email']);
 0692   
 0693              $emailer->use_template($email_template, stripslashes($user_lang));
 0694              $emailer->email_address($email);
 0695              $emailer->set_subject(sprintf($lang['Welcome_subject'], $board_config['sitename']));
 0696   
 0697              if( $coppa )
 0698              {
 0699                  $emailer->assign_vars(array(
 0700                      'SITENAME' => $board_config['sitename'],
 0701                      'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
 0702                      'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
 0703                      'PASSWORD' => $password_confirm,
 0704                      'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
 0705   
 0706                      'FAX_INFO' => $board_config['coppa_fax'],
 0707                      'MAIL_INFO' => $board_config['coppa_mail'],
 0708                      'EMAIL_ADDRESS' => $email,
 0709                      'ICQ' => $icq,
 0710                      'AIM' => $aim,
 0711                      'YIM' => $yim,
 0712                      'MSN' => $msn,
 0713                      'WEB_SITE' => $website,
 0714                      'FROM' => $location,
 0715                      'OCC' => $occupation,
 0716                      'INTERESTS' => $interests,
 0717                      'SITENAME' => $board_config['sitename']));
 0718              }
 0719              else
 0720              {
 0721                  $emailer->assign_vars(array(
 0722                      'SITENAME' => $board_config['sitename'],
 0723                      'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
 0724                      'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
 0725                      'PASSWORD' => $password_confirm,
 0726                      'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
 0727   
 0728                      'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
 0729                  );
 0730              }
 0731   
 0732              $emailer->send();
 0733              $emailer->reset();
 0734   
 0735              if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
 0736              {
 0737                  $sql = "SELECT user_email, user_lang 
 0738                      FROM " . USERS_TABLE . "
 0739                      WHERE user_level = " . ADMIN;
 0740                  
 0741                  if ( !($result = $db->sql_query($sql)) )
 0742                  {
 0743                      message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
 0744                  }
 0745                  
 0746                  while ($row = $db->sql_fetchrow($result))
 0747                  {
 0748                      $emailer->from($board_config['board_email']);
 0749                      $emailer->replyto($board_config['board_email']);
 0750                      
 0751                      $emailer->email_address(trim($row['user_email']));
 0752                      $emailer->use_template("admin_activate", $row['user_lang']);
 0753                      $emailer->set_subject($lang['New_account_subject']);
 0754   
 0755                      $emailer->assign_vars(array(
 0756                          'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
 0757                          'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),
 0758   
 0759                          'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
 0760                      );
 0761                      $emailer->send();
 0762                      $emailer->reset();
 0763                  }
 0764                  $db->sql_freeresult($result);
 0765              }
 0766   
 0767              $message = $message . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
 0768   
 0769              message_die(GENERAL_MESSAGE, $message);
 0770          } // if mode == register
 0771      }
 0772  } // End of submit
 0773   
 0774   
 0775  if ( $error )
 0776  {
 0777      //
 0778      // If an error occured we need to stripslashes on returned data
 0779      //
 0780      $username = stripslashes($username);
 0781      $email = stripslashes($email);
 0782      $cur_password = '';
 0783      $new_password = '';
 0784      $password_confirm = '';
 0785   
 0786      $icq = stripslashes($icq);
 0787      $aim = str_replace('+', ' ', stripslashes($aim));
 0788      $msn = stripslashes($msn);
 0789      $yim = stripslashes($yim);
 0790   
 0791      $website = stripslashes($website);
 0792      $location = stripslashes($location);
 0793      $occupation = stripslashes($occupation);
 0794      $interests = stripslashes($interests);
 0795      $signature = stripslashes($signature);
 0796      $signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $signature) : $signature;
 0797   
 0798      $user_lang = stripslashes($user_lang);
 0799      $user_dateformat = stripslashes($user_dateformat);
 0800   
 0801  }
 0802  else if ( $mode == 'editprofile' && !isset($HTTP_POST_VARS['avatargallery']) && !isset($HTTP_POST_VARS['submitavatar']) && !isset($HTTP_POST_VARS['cancelavatar']) )
 0803  {
 0804      $user_id = $userdata['user_id'];
 0805      $username = $userdata['username'];
 0806      $email = $userdata['user_email'];
 0807      $cur_password = '';
 0808      $new_password = '';
 0809      $password_confirm = '';
 0810   
 0811      $icq = $userdata['user_icq'];
 0812      $aim = str_replace('+', ' ', $userdata['user_aim']);
 0813      $msn = $userdata['user_msnm'];
 0814      $yim = $userdata['user_yim'];
 0815   
 0816      $website = $userdata['user_website'];
 0817      $location = $userdata['user_from'];
 0818      $occupation = $userdata['user_occ'];
 0819      $interests = $userdata['user_interests'];
 0820      $signature_bbcode_uid = $userdata['user_sig_bbcode_uid'];
 0821      $signature = ($signature_bbcode_uid != '') ? preg_replace('/:(([a-z0-9]+:)?)' . preg_quote($signature_bbcode_uid, '/') . '(=|\])/si', '\\3', $userdata['user_sig']) : $userdata['user_sig'];
 0822   
 0823      $viewemail = $userdata['user_viewemail'];
 0824      $notifypm = $userdata['user_notify_pm'];
 0825      $popup_pm = $userdata['user_popup_pm'];
 0826      $notifyreply = $userdata['user_notify'];
 0827      $attachsig = $userdata['user_attachsig'];
 0828      $allowhtml = $userdata['user_allowhtml'];
 0829      $allowbbcode = $userdata['user_allowbbcode'];
 0830      $allowsmilies = $userdata['user_allowsmile'];
 0831      $allowviewonline = $userdata['user_allow_viewonline'];
 0832   
 0833      $user_avatar = ( $userdata['user_allowavatar'] ) ? $userdata['user_avatar'] : '';
 0834      $user_avatar_type = ( $userdata['user_allowavatar'] ) ? $userdata['user_avatar_type'] : USER_AVATAR_NONE;
 0835   
 0836      $user_style = $userdata['user_style'];
 0837      $user_lang = $userdata['user_lang'];
 0838      $user_timezone = $userdata['user_timezone'];
 0839      $user_dateformat = $userdata['user_dateformat'];
 0840  }
 0841   
 0842  //
 0843  // Default pages
 0844  //
 0845  include($phpbb_root_path . 'includes/page_header.'.$phpEx);
 0846   
 0847  make_jumpbox('viewforum.'.$phpEx);
 0848   
 0849  if ( $mode == 'editprofile' )
 0850  {
 0851      if ( $user_id != $userdata['user_id'] )
 0852      {
 0853          $error = TRUE;
 0854          $error_msg = $lang['Wrong_Profile'];
 0855      }
 0856  }
 0857   
 0858  if( isset($HTTP_POST_VARS['avatargallery']) && !$error )
 0859  {
 0860      include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
 0861   
 0862      $avatar_category = ( !empty($HTTP_POST_VARS['avatarcategory']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarcategory']) : '';
 0863   
 0864      $template->set_filenames(array(
 0865          'body' => 'profile_avatar_gallery.tpl')
 0866      );
 0867   
 0868      $allowviewonline = !$allowviewonline;
 0869   
 0870      display_avatar_gallery($mode, $avatar_category, $user_id, $email, $current_email, $coppa, $username, $email, $new_password, $cur_password, $password_confirm, $icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature, $viewemail, $notifypm, $popup_pm, $notifyreply, $attachsig, $allowhtml, $allowbbcode, $allowsmilies, $allowviewonline, $user_style, $user_lang, $user_timezone, $user_dateformat, $userdata['session_id']);
 0871  }
 0872  else
 0873  {
 0874      include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);
 0875   
 0876      if ( !isset($coppa) )
 0877      {
 0878          $coppa = FALSE;
 0879      }
 0880   
 0881      if ( !isset($user_style) )
 0882      {
 0883          $user_style = $board_config['default_style'];
 0884      }
 0885   
 0886      $avatar_img = '';
 0887      if ( $user_avatar_type )
 0888      {
 0889          switch( $user_avatar_type )
 0890          {
 0891              case USER_AVATAR_UPLOAD:
 0892                  $avatar_img = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $user_avatar . '" alt="" />' : '';
 0893                  break;
 0894              case USER_AVATAR_REMOTE:
 0895                  $avatar_img = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $user_avatar . '" alt="" />' : '';
 0896                  break;
 0897              case USER_AVATAR_GALLERY:
 0898                  $avatar_img = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $user_avatar . '" alt="" />' : '';
 0899                  break;
 0900          }
 0901      }
 0902   
 0903      $s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
 0904      $s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id'] . '" />';
 0905      if( $mode == 'editprofile' )
 0906      {
 0907          $s_hidden_fields .= '<input type="hidden" name="user_id" value="' . $userdata['user_id'] . '" />';
 0908          //
 0909          // Send the users current email address. If they change it, and account activation is turned on
 0910          // the user account will be disabled and the user will have to reactivate their account.
 0911          //
 0912          $s_hidden_fields .= '<input type="hidden" name="current_email" value="' . $userdata['user_email'] . '" />';
 0913      }
 0914   
 0915      if ( !empty($user_avatar_local) )
 0916      {
 0917          $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" /><input type="hidden" name="avatarcatname" value="' . $user_avatar_category . '" />';
 0918      }
 0919   
 0920      $html_status =  ( $userdata['user_allowhtml'] && $board_config['allow_html'] ) ? $lang['HTML_is_ON'] : $lang['HTML_is_OFF'];
 0921      $bbcode_status = ( $userdata['user_allowbbcode'] && $board_config['allow_bbcode']  ) ? $lang['BBCode_is_ON'] : $lang['BBCode_is_OFF'];
 0922      $smilies_status = ( $userdata['user_allowsmile'] && $board_config['allow_smilies']  ) ? $lang['Smilies_are_ON'] : $lang['Smilies_are_OFF'];
 0923   
 0924      if ( $error )
 0925      {
 0926          $template->set_filenames(array(
 0927              'reg_header' => 'error_body.tpl')
 0928          );
 0929          $template->assign_vars(array(
 0930              'ERROR_MESSAGE' => $error_msg)
 0931          );
 0932          $template->assign_var_from_handle('ERROR_BOX', 'reg_header');
 0933      }
 0934   
 0935      $template->set_filenames(array(
 0936          'body' => 'profile_add_body.tpl')
 0937      );
 0938   
 0939      if ( $mode == 'editprofile' )
 0940      {
 0941          $template->assign_block_vars('switch_edit_profile', array());
 0942      }
 0943   
 0944      if ( ($mode == 'register') || ($board_config['allow_namechange']) )
 0945      {
 0946          $template->assign_block_vars('switch_namechange_allowed', array());
 0947      }
 0948      else
 0949      {
 0950          $template->assign_block_vars('switch_namechange_disallowed', array());
 0951      }
 0952   
 0953   
 0954      // Visual Confirmation
 0955      $confirm_image = '';
 0956      if (!empty($board_config['enable_confirm']) && $mode == 'register')
 0957      {
 0958          $sql = 'SELECT session_id 
 0959              FROM ' . SESSIONS_TABLE; 
 0960          if (!($result = $db->sql_query($sql)))
 0961          {
 0962              message_die(GENERAL_ERROR, 'Could not select session data', '', __LINE__, __FILE__, $sql);
 0963          }
 0964   
 0965          if ($row = $db->sql_fetchrow($result))
 0966          {
 0967              $confirm_sql = '';
 0968              do
 0969              {
 0970                  $confirm_sql .= (($confirm_sql != '') ? ', ' : '') . "'" . $row['session_id'] . "'";
 0971              }
 0972              while ($row = $db->sql_fetchrow($result));
 0973          
 0974              $sql = 'DELETE FROM ' .  CONFIRM_TABLE . " 
 0975                  WHERE session_id NOT IN ($confirm_sql)";
 0976              if (!$db->sql_query($sql))
 0977              {
 0978                  message_die(GENERAL_ERROR, 'Could not delete stale confirm data', '', __LINE__, __FILE__, $sql);
 0979              }
 0980          }
 0981          $db->sql_freeresult($result);
 0982   
 0983          $sql = 'SELECT COUNT(session_id) AS attempts 
 0984              FROM ' . CONFIRM_TABLE . " 
 0985              WHERE session_id = '" . $userdata['session_id'] . "'";
 0986          if (!($result = $db->sql_query($sql)))
 0987          {
 0988              message_die(GENERAL_ERROR, 'Could not obtain confirm code count', '', __LINE__, __FILE__, $sql);
 0989          }
 0990   
 0991          if ($row = $db->sql_fetchrow($result))
 0992          {
 0993              if ($row['attempts'] > 3)
 0994              {
 0995                  message_die(GENERAL_MESSAGE, $lang['Too_many_registers']);
 0996              }
 0997          }
 0998          $db->sql_freeresult($result);
 0999          
 1000          // Generate the required confirmation code
 1001          // NB 0 (zero) could get confused with O (the letter) so we make change it
 1002          $code = dss_rand();
 1003          $code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);
 1004   
 1005          $confirm_id = md5(uniqid($user_ip));
 1006   
 1007          $sql = 'INSERT INTO ' . CONFIRM_TABLE . " (confirm_id, session_id, code) 
 1008              VALUES ('$confirm_id', '". $userdata['session_id'] . "', '$code')";
 1009          if (!$db->sql_query($sql))
 1010          {
 1011              message_die(GENERAL_ERROR, 'Could not insert new confirm code information', '', __LINE__, __FILE__, $sql);
 1012          }
 1013   
 1014          unset($code);
 1015          
 1016          $confirm_image = '<img src="' . append_sid("profile.$phpEx?mode=confirm&amp;id=$confirm_id") . '" alt="" title="" />';
 1017          $s_hidden_fields .= '<input type="hidden" name="confirm_id" value="' . $confirm_id . '" />';
 1018   
 1019          $template->assign_block_vars('switch_confirm', array());
 1020      }
 1021   
 1022   
 1023      //
 1024      // Let's do an overall check for settings/versions which would prevent
 1025      // us from doing file uploads....
 1026      //
 1027      $ini_val = ( phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';
 1028      $form_enctype = ( @$ini_val('file_uploads') == '0' || strtolower(@$ini_val('file_uploads') == 'off') || phpversion() == '4.0.4pl1' || !$board_config['allow_avatar_upload'] || ( phpversion() < '4.0.3' && @$ini_val('open_basedir') != '' ) ) ? '' : 'enctype="multipart/form-data"';
 1029   
 1030      $template->assign_vars(array(
 1031          'USERNAME' => isset($username) ? $username : '',
 1032          'CUR_PASSWORD' => isset($cur_password) ? $cur_password : '',
 1033          'NEW_PASSWORD' => isset($new_password) ? $new_password : '',
 1034          'PASSWORD_CONFIRM' => isset($password_confirm) ? $password_confirm : '',
 1035          'EMAIL' => isset($email) ? $email : '',
 1036          'CONFIRM_IMG' => $confirm_image, 
 1037          'YIM' => $yim,
 1038          'ICQ' => $icq,
 1039          'MSN' => $msn,
 1040          'AIM' => $aim,
 1041          'OCCUPATION' => $occupation,
 1042          'INTERESTS' => $interests,
 1043          'LOCATION' => $location,
 1044          'WEBSITE' => $website,
 1045          'SIGNATURE' => str_replace('<br />', "\n", $signature),
 1046          'VIEW_EMAIL_YES' => ( $viewemail ) ? 'checked="checked"' : '',
 1047          'VIEW_EMAIL_NO' => ( !$viewemail ) ? 'checked="checked"' : '',
 1048          'HIDE_USER_YES' => ( !$allowviewonline ) ? 'checked="checked"' : '',
 1049          'HIDE_USER_NO' => ( $allowviewonline ) ? 'checked="checked"' : '',
 1050          'NOTIFY_PM_YES' => ( $notifypm ) ? 'checked="checked"' : '',
 1051          'NOTIFY_PM_NO' => ( !$notifypm ) ? 'checked="checked"' : '',
 1052          'POPUP_PM_YES' => ( $popup_pm ) ? 'checked="checked"' : '',
 1053          'POPUP_PM_NO' => ( !$popup_pm ) ? 'checked="checked"' : '',
 1054          'ALWAYS_ADD_SIGNATURE_YES' => ( $attachsig ) ? 'checked="checked"' : '',
 1055          'ALWAYS_ADD_SIGNATURE_NO' => ( !$attachsig ) ? 'checked="checked"' : '',
 1056          'NOTIFY_REPLY_YES' => ( $notifyreply ) ? 'checked="checked"' : '',
 1057          'NOTIFY_REPLY_NO' => ( !$notifyreply ) ? 'checked="checked"' : '',
 1058          'ALWAYS_ALLOW_BBCODE_YES' => ( $allowbbcode ) ? 'checked="checked"' : '',
 1059          'ALWAYS_ALLOW_BBCODE_NO' => ( !$allowbbcode ) ? 'checked="checked"' : '',
 1060          'ALWAYS_ALLOW_HTML_YES' => ( $allowhtml ) ? 'checked="checked"' : '',
 1061          'ALWAYS_ALLOW_HTML_NO' => ( !$allowhtml ) ? 'checked="checked"' : '',
 1062          'ALWAYS_ALLOW_SMILIES_YES' => ( $allowsmilies ) ? 'checked="checked"' : '',
 1063          'ALWAYS_ALLOW_SMILIES_NO' => ( !$allowsmilies ) ? 'checked="checked"' : '',
 1064          'ALLOW_AVATAR' => $board_config['allow_avatar_upload'],
 1065          'AVATAR' => $avatar_img,
 1066          'AVATAR_SIZE' => $board_config['avatar_filesize'],
 1067          'LANGUAGE_SELECT' => language_select($user_lang, 'language'),
 1068          'STYLE_SELECT' => style_select($user_style, 'style'),
 1069          'TIMEZONE_SELECT' => tz_select($user_timezone, 'timezone'),
 1070          'DATE_FORMAT' => $user_dateformat,
 1071          'HTML_STATUS' => $html_status,
 1072          'BBCODE_STATUS' => sprintf($bbcode_status, '<a href="' . append_sid("faq.$phpEx?mode=bbcode") . '" target="_phpbbcode">', '</a>'),
 1073          'SMILIES_STATUS' => $smilies_status,
 1074   
 1075          'L_CURRENT_PASSWORD' => $lang['Current_password'],
 1076          'L_NEW_PASSWORD' => ( $mode == 'register' ) ? $lang['Password'] : $lang['New_password'],
 1077          'L_CONFIRM_PASSWORD' => $lang['Confirm_password'],
 1078          'L_CONFIRM_PASSWORD_EXPLAIN' => ( $mode == 'editprofile' ) ? $lang['Confirm_password_explain'] : '',
 1079          'L_PASSWORD_IF_CHANGED' => ( $mode == 'editprofile' ) ? $lang['password_if_changed'] : '',
 1080          'L_PASSWORD_CONFIRM_IF_CHANGED' => ( $mode == 'editprofile' ) ? $lang['password_confirm_if_changed'] : '',
 1081          'L_SUBMIT' => $lang['Submit'],
 1082          'L_RESET' => $lang['Reset'],
 1083          'L_ICQ_NUMBER' => $lang['ICQ'],
 1084          'L_MESSENGER' => $lang['MSNM'],
 1085          'L_YAHOO' => $lang['YIM'],
 1086          'L_WEBSITE' => $lang['Website'],
 1087          'L_AIM' => $lang['AIM'],
 1088          'L_LOCATION' => $lang['Location'],
 1089          'L_OCCUPATION' => $lang['Occupation'],
 1090          'L_BOARD_LANGUAGE' => $lang['Board_lang'],
 1091          'L_BOARD_STYLE' => $lang['Board_style'],
 1092          'L_TIMEZONE' => $lang['Timezone'],
 1093          'L_DATE_FORMAT' => $lang['Date_format'],
 1094          'L_DATE_FORMAT_EXPLAIN' => $lang['Date_format_explain'],
 1095          'L_YES' => $lang['Yes'],
 1096          'L_NO' => $lang['No'],
 1097          'L_INTERESTS' => $lang['Interests'],
 1098          'L_ALWAYS_ALLOW_SMILIES' => $lang['Always_smile'],
 1099          'L_ALWAYS_ALLOW_BBCODE' => $lang['Always_bbcode'],
 1100          'L_ALWAYS_ALLOW_HTML' => $lang['Always_html'],
 1101          'L_HIDE_USER' => $lang['Hide_user'],
 1102          'L_ALWAYS_ADD_SIGNATURE' => $lang['Always_add_sig'],
 1103   
 1104          'L_AVATAR_PANEL' => $lang['Avatar_panel'],
 1105          'L_AVATAR_EXPLAIN' => sprintf($lang['Avatar_explain'], $board_config['avatar_max_width'], $board_config['avatar_max_height'], (round($board_config['avatar_filesize'] / 1024))),
 1106          'L_UPLOAD_AVATAR_FILE' => $lang['Upload_Avatar_file'],
 1107          'L_UPLOAD_AVATAR_URL' => $lang['Upload_Avatar_URL'],
 1108          'L_UPLOAD_AVATAR_URL_EXPLAIN' => $lang['Upload_Avatar_URL_explain'],
 1109          'L_AVATAR_GALLERY' => $lang['Select_from_gallery'],
 1110          'L_SHOW_GALLERY' => $lang['View_avatar_gallery'],
 1111          'L_LINK_REMOTE_AVATAR' => $lang['Link_remote_Avatar'],
 1112          'L_LINK_REMOTE_AVATAR_EXPLAIN' => $lang['Link_remote_Avatar_explain'],
 1113          'L_DELETE_AVATAR' => $lang['Delete_Image'],
 1114          'L_CURRENT_IMAGE' => $lang['Current_Image'],
 1115   
 1116          'L_SIGNATURE' => $lang['Signature'],
 1117          'L_SIGNATURE_EXPLAIN' => sprintf($lang['Signature_explain'], $board_config['max_sig_chars']),
 1118          'L_NOTIFY_ON_REPLY' => $lang['Always_notify'],
 1119          'L_NOTIFY_ON_REPLY_EXPLAIN' => $lang['Always_notify_explain'],
 1120          'L_NOTIFY_ON_PRIVMSG' => $lang['Notify_on_privmsg'],
 1121          'L_POPUP_ON_PRIVMSG' => $lang['Popup_on_privmsg'],
 1122          'L_POPUP_ON_PRIVMSG_EXPLAIN' => $lang['Popup_on_privmsg_explain'],
 1123          'L_PREFERENCES' => $lang['Preferences'],
 1124          'L_PUBLIC_VIEW_EMAIL' => $lang['Public_view_email'],
 1125          'L_ITEMS_REQUIRED' => $lang['Items_required'],
 1126          'L_REGISTRATION_INFO' => $lang['Registration_info'],
 1127          'L_PROFILE_INFO' => $lang['Profile_info'],
 1128          'L_PROFILE_INFO_NOTICE' => $lang['Profile_info_warn'],
 1129          'L_EMAIL_ADDRESS' => $lang['Email_address'],
 1130   
 1131          'L_CONFIRM_CODE_IMPAIRED'    => sprintf($lang['Confirm_code_impaired'], '<a href="mailto:' . $board_config['board_email'] . '">', '</a>'), 
 1132          'L_CONFIRM_CODE'            => $lang['Confirm_code'], 
 1133          'L_CONFIRM_CODE_EXPLAIN'    => $lang['Confirm_code_explain'], 
 1134   
 1135          'S_ALLOW_AVATAR_UPLOAD' => $board_config['allow_avatar_upload'],
 1136          'S_ALLOW_AVATAR_LOCAL' => $board_config['allow_avatar_local'],
 1137          'S_ALLOW_AVATAR_REMOTE' => $board_config['allow_avatar_remote'],
 1138          'S_HIDDEN_FIELDS' => $s_hidden_fields,
 1139          'S_FORM_ENCTYPE' => $form_enctype,
 1140          'S_PROFILE_ACTION' => append_sid("profile.$phpEx"))
 1141      );
 1142   
 1143      //
 1144      // This is another cheat using the block_var capability
 1145      // of the templates to 'fake' an IF...ELSE...ENDIF solution
 1146      // it works well :)
 1147      //
 1148      if ( $mode != 'register' )
 1149      {
 1150          if ( $userdata['user_allowavatar'] && ( $board_config['allow_avatar_upload'] || $board_config['allow_avatar_local'] || $board_config['allow_avatar_remote'] ) )
 1151          {
 1152              $template->assign_block_vars('switch_avatar_block', array() );
 1153   
 1154              if ( $board_config['allow_avatar_upload'] && file_exists(@phpbb_realpath('./' . $board_config['avatar_path'])) )
 1155              {
 1156                  if ( $form_enctype != '' )
 1157                  {
 1158                      $template->assign_block_vars('switch_avatar_block.switch_avatar_local_upload', array() );
 1159                  }
 1160                  $template->assign_block_vars('switch_avatar_block.switch_avatar_remote_upload', array() );
 1161              }
 1162   
 1163              if ( $board_config['allow_avatar_remote'] )
 1164              {
 1165                  $template->assign_block_vars('switch_avatar_block.switch_avatar_remote_link', array() );
 1166              }
 1167   
 1168              if ( $board_config['allow_avatar_local'] && file_exists(@phpbb_realpath('./' . $board_config['avatar_gallery_path'])) )
 1169              {
 1170                  $template->assign_block_vars('switch_avatar_block.switch_avatar_local_gallery', array() );
 1171              }
 1172          }
 1173      }
 1174  }
 1175   
 1176  $template->pparse('body');
 1177   
 1178  include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
 1179   
 1180  ?>