[phpBB-fr] Question anti-robots v3.0.0

Base de données des MODs de phpBB-fr : Télécharger des MODs ; demander du support .

Modérateur: Equipe

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede tof225391 le 07 Aoû 2008 à 11:59

effectivement, jviens de refaire usercp_register.php et ca marche maintenant :)

reste pu que le probleme de l'index du panneau d'admin ...
tof225391
Posteur néophyte
Posteur néophyte
 
Messages: 28
Inscription: 19 Mai 2007 à 20:47
Localisation: seine et marne

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede Badiuth le 18 Aoû 2008 à 23:21

Hello,
J'installe de nouveau ABQ sur un second forum, étant donné le succès rencontré par le mod sur mon premier forum.
Mais me voici avec l'erreur
"Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource..."
j'ai bien lu le premier post :
# Mises à Jour / Correctifs:

* Concernant l'erreur

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home.1/f/r/a/franceba/www/forum/db/mysql4.php on line 318

il vous faut supprimer

Code: Tout sélectionner
$db->sql_freeresult($result);

des lignes 67, 115, 139 et 1242 de functions_abq.php

Mais aucune ligne ne correspond dans mon functions_abq.php
ligne 67 : if ($abq_config['abq_guest'] && !$userdata['session_logged_in'])
ligne 115 : // Delete all ANTI_BOT_QUEST_CONFIRM_TABLE entries without an existing session
et pareil pour les autres, rien ne correspond, le fichier functions_abq.php aurait-il été changé ces derniers mois ?
Merci d'avance
Image
Badiuth
Posteur néophyte
Posteur néophyte
 
Messages: 50
Inscription: 13 Oct 2003 à 10:34

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede ErnadoO le 19 Aoû 2008 à 07:35

non le fichier n'a pas changé, je pense que tu as uploadé directement le fichier corrigé, issu de ton 1er forum.
ErnadoO · Administrateur et responsable de l'équipe des MODs par intérim
Tu as l'âme d'un codeur? l'équipe des MODs recrute toute l'année!
Tout sur l'installation d'un MOD || Intro à la création de MOD || Erreurs fréquentes lors de l'installation de MODs || Mes MODS

phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Dead zone: LA référence francophone sur la série télé Dead zone: photos, résumés, captures, videos, forum.
Aidez la SPA à nourrir un animal abandonné: http://www.clicanimaux.com/
Avatar de l’utilisateur
ErnadoO
Administrateur et resp. des codeurs
Administrateur et resp. des codeurs
 
Messages: 20177
Inscription: 21 Juin 2003 à 12:42
Localisation: Brest/Quimper/Calais

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede Badiuth le 19 Aoû 2008 à 07:47

Désolé fausse alerte, la solution est encore plus simple que je ne le pensais :
ici je bosse sur un Mac et j'édite mes fichier avec un prog qui s'appelle Smultron : aucun PB
Hier soir sur mon PC j'ai cherché un équivalent (editeur de texte avec les N° de ligne) et j'ai téléchargé un truc du genre "Notepad ++", mais visiblement la numérotation de ligne c'est pas son fort ! :mrgreen:
Bref problème réglé !
Merci quand même :)
Image
Badiuth
Posteur néophyte
Posteur néophyte
 
Messages: 50
Inscription: 13 Oct 2003 à 10:34

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede papicx le 19 Aoû 2008 à 09:04

bonjour,
Avec Notepad++ que tu utilises sur ton pc il faut modifier les options de language, pour un php soit tu mets " php " ou " Diff " et tu verras, ça te mets les lignes en couleurs et les numérotations sont respectées.
Si tu ouvres plusieurs fichiers avec des extentions différentes ( .php .sql .tpl ), Notepad++ reconnait le dernier language affiché pour un type d'extention de fichier.
( à ne pas confondre avec Notepad de Microsoft qui n'est pas du tout les mêmes possibilités que ce logiciel ).
il fallait le dire. c'est fait.
plus tout à fait débutant en phpBB... grace à phpbb-fr.com _ merci de votre complaisance tout de même.
Avatar de l’utilisateur
papicx
Posteur néophyte
Posteur néophyte
 
Messages: 74
Inscription: 16 Oct 2006 à 17:04
Localisation: Courbevoie ( 92 )

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede Badiuth le 19 Aoû 2008 à 09:12

Merci de cette précision, je ne le mettrait pas à la corbeille ce soir ! ;)
Image
Badiuth
Posteur néophyte
Posteur néophyte
 
Messages: 50
Inscription: 13 Oct 2003 à 10:34

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 27 Aoû 2008 à 13:57

Bonjour,

J'ai installé le mod, aucun probleme, mais voilà, je fais un test d'enregistement et je ne vois nulle part la question Anti-Robot.
J'ai activé le MOD Question anti-robots lors des inscriptions

Merci d'avance
xtrunk
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: 27 Aoû 2008 à 13:51
Localisation: France

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede papicx le 27 Aoû 2008 à 15:30

bonjour,
Peux tu nous mettres l'adresse de ton forum pour qu'on voit ça svp ?
Tu peux aussi remplir ton profil et indiqué celui-ci en cliquant sur le lien " panneau de l'utilisateur " en haut de la page. ( bien sûr, il faut que tu sois connecté ;-) )
As tu rempli les questions persos si tu t'en sert ?
plus tout à fait débutant en phpBB... grace à phpbb-fr.com _ merci de votre complaisance tout de même.
Avatar de l’utilisateur
papicx
Posteur néophyte
Posteur néophyte
 
Messages: 74
Inscription: 16 Oct 2006 à 17:04
Localisation: Courbevoie ( 92 )

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 28 Aoû 2008 à 08:43

Voici l'adresse

www.ville-joeuf.fr/forum

Merci d'avance
xtrunk
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: 27 Aoû 2008 à 13:51
Localisation: France

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 01 Sep 2008 à 12:32

Personne ????
xtrunk
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: 27 Aoû 2008 à 13:51
Localisation: France

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede Morgyanne le 02 Sep 2008 à 09:39

Salut xtrunk,

Modification dans profile_add_body.tpl non effectuée.

@+
Morgyanne :)
Demande de support par MP = Poubelle
Avatar de l’utilisateur
Morgyanne
Modérateur
Modérateur
 
Messages: 14132
Inscription: 21 Mar 2005 à 12:28

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 02 Sep 2008 à 11:02

Yeees Merci beaucoup !!
xtrunk
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: 27 Aoû 2008 à 13:51
Localisation: France

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 06 Oct 2008 à 08:33

Bonjour,
J'ai installé le mod mais maintenant, lors de l'enregistrement d'un nouvel utilisateur, ça me dit que je dois remplir les champs obligatoire, que ma reponse est fausse et que mon adresse mail n'est pas valide, alors que tout est correct.

Merci
xtrunk
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: 27 Aoû 2008 à 13:51
Localisation: France

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede ErnadoO le 06 Oct 2008 à 09:48

en 120 pages de topic, ce problème a déjà été reporté, disons, 50 fois, avec à chaque fois la même réponse.
D'ailleurs si il fait 120 pages au lieu de 30, c'est parce que les membres sont incapables de chercher avant de poser une question vis à vis d'un problème qu'ils pensent être les 1er à avoir.
Donc, merci de chercher :wink:
ErnadoO · Administrateur et responsable de l'équipe des MODs par intérim
Tu as l'âme d'un codeur? l'équipe des MODs recrute toute l'année!
Tout sur l'installation d'un MOD || Intro à la création de MOD || Erreurs fréquentes lors de l'installation de MODs || Mes MODS

phpBB-Services.com: L'hébergement et l'assistance de votre forum phpBB en toute tranquillité.
Dead zone: LA référence francophone sur la série télé Dead zone: photos, résumés, captures, videos, forum.
Aidez la SPA à nourrir un animal abandonné: http://www.clicanimaux.com/
Avatar de l’utilisateur
ErnadoO
Administrateur et resp. des codeurs
Administrateur et resp. des codeurs
 
Messages: 20177
Inscription: 21 Juin 2003 à 12:42
Localisation: Brest/Quimper/Calais

Re: [phpBB-fr] Question anti-robots v3.0.0

Messagede xtrunk le 06 Oct 2008 à 12:56

Je comprends... Seulement voila, j'ai deja un mod installé sur mon forum qui permet la validation des messages. Lors de l'installation de l'anti-robots, pour le fichier usercp_register.php, il me demande de trouver une ligne : $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');. Cette ligne a du etre deja changé par l'autre mod, je ne la trouve pas dans mon fichier. J'ai donc ajouter la ligne modifiée. Mon probleme peut il venir de cela, si oui, que faire ?. Ci-dessous le code de mon fichier :
A la ligne: // A voir

Merci d'avance

Code: Tout sélectionner
<?php
/***************************************************************************
*                            usercp_register.php
*                            -------------------
*   begin                : Saturday, Feb 13, 2001
*   copyright            : (C) 2001 The phpBB Group
*   email                : support@phpbb.com
*
*   $Id: usercp_register.php,v 1.20.2.67 2005/10/31 06:40:27 grahamje Exp $
*
*
***************************************************************************/

/***************************************************************************
*
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
*
*
***************************************************************************/

/*

   This code has been modified from its original form by psoTFX @ phpbb.com
   Changes introduce the back-ported phpBB 2.2 visual confirmation code.

   NOTE: Anyone using the modified code contained within this script MUST include
   a relevant message such as this in usercp_register.php ... failure to do so
   will affect a breach of Section 2a of the GPL and our copyright

   png visual confirmation system : (c) phpBB Group, 2003 : All Rights Reserved

*/

if ( !defined('IN_PHPBB') )
{
   die("Hacking attempt");
   exit;
}
// Anti Bot Question Mod - Start
include($phpbb_root_path . 'includes/functions_abq.' . $phpEx);
// Anti Bot Question Mod - End
$unhtml_specialchars_match = array('#&gt;#', '#&lt;#', '#&quot;#', '#&amp;#');
$unhtml_specialchars_replace = array('>', '<', '"', '&');

// ---------------------------------------
// Load agreement template since user has not yet
// agreed to registration conditions/coppa
//
function show_coppa()
{
   global $userdata, $template, $lang, $phpbb_root_path, $phpEx, $abq_config, $abq_agreedPart2;

   $template->set_filenames(array(
      'body' => 'agreement.tpl')
   );

   $template->assign_vars(array(
      'REGISTRATION' => $lang['Registration'],
      'AGREEMENT' => $lang['Reg_agreement'],
      "AGREE_OVER_13" => $lang['Agree_over_13'],
      "AGREE_UNDER_13" => $lang['Agree_under_13'],
      'DO_NOT_AGREE' => $lang['Agree_not'],

      // Anti Bot Question Mod - Start
      "U_AGREE_OVER13" => append_sid("profile.$phpEx?mode=register&amp;" . (($abq_config['abq_register']) ? $abq_config['agreed_variable_name'] : "agreed") . "=" . (($abq_config['abq_register']) ? $abq_config['agreed_variable_value'] . $abq_agreedPart2 : "true")),
      "U_AGREE_UNDER13" => append_sid("profile.$phpEx?mode=register&amp;" . (($abq_config['abq_register']) ? $abq_config['agreed_variable_name'] : "agreed") . "=" . (($abq_config['abq_register']) ? $abq_config['agreed_variable_value'] . $abq_agreedPart2 : "true") . "&amp;coppa=true"))
      // Anti Bot Question Mod - End
   );

   $template->pparse('body');

}
//
// ---------------------------------------

$error = FALSE;
$error_msg = '';
$page_title = ( $mode == 'editprofile' ) ? $lang['Edit_profile'] : $lang['Register'];
// Anti Bot Question Mod - Start
$abq_agreedPart2 = '';

if (($abq_config['abq_register']) && ($mode == 'register'))
{
   $sql = 'DELETE FROM ' . ANTI_BOT_QUEST_REGCONFIRM_TABLE . '
      WHERE start_time < ' . (time() - (int) $board_config['session_length']) . '
      AND session_id <> \'' . $userdata['session_id'] . '\'';
   if (!$db->sql_query($sql))
   {
      message_die(GENERAL_ERROR, 'Could not delete stale anti bot question data', '', __LINE__, __FILE__, $sql);
   }
   $db->sql_freeresult($result);

   $sql = 'SELECT confirm_id
      FROM ' . ANTI_BOT_QUEST_REGCONFIRM_TABLE . '
      WHERE session_id = \'' . $userdata['session_id'] . '\'';
   if (!($result = $db->sql_query($sql)))
   {
      message_die(CRITICAL_ERROR, "Could not query anti bot question mod registration information", "", __LINE__, __FILE__, $sql);
   }
   if ($db->sql_numrows($result) > 0)
   {
      while ($row = $db->sql_fetchrow($result))
      {
         $abqrow = $row;
      }
      $abq_agreedPart2 = $abqrow['confirm_id'];
   }
   if ($abq_agreedPart2 == '')
   {
      $abq_agreedPart2 = md5(uniqid($user_ip));

      $sql = 'INSERT INTO ' . ANTI_BOT_QUEST_REGCONFIRM_TABLE . ' (confirm_id, session_id, start_time)
         VALUES (\'' . $abq_agreedPart2 . '\', \'' . $userdata['session_id'] . '\', ' . time() . ')';
      if (!$db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Could not insert new anti bot question registration information', '', __LINE__, __FILE__, $sql);
      }

   }
   elseif ((!isset($HTTP_POST_VARS[$abq_config['agreed_variable_name']])) && (!isset($HTTP_GET_VARS[$abq_config['agreed_variable_name']])))
   {
      $abq_agreedPart2 = md5(uniqid($user_ip));

      $sql = 'UPDATE ' . ANTI_BOT_QUEST_REGCONFIRM_TABLE . '
         SET confirm_id = \'' . $abq_agreedPart2 . '\',
         start_time = ' . time() . '
         WHERE session_id = \'' . $userdata['session_id'] . '\'';
      if ( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could not update anti bot question registration information', '', __LINE__, __FILE__, $sql);
      }
   }

   if (((isset($HTTP_POST_VARS[$abq_config['agreed_variable_name']])) && ($HTTP_POST_VARS[$abq_config['agreed_variable_name']] == $abq_config['agreed_variable_value'].$abq_agreedPart2)) || ((isset($HTTP_GET_VARS[$abq_config['agreed_variable_name']])) && ($HTTP_GET_VARS[$abq_config['agreed_variable_name']] == $abq_config['agreed_variable_value'].$abq_agreedPart2)))
   {}
   else
   {
      if ((isset($HTTP_POST_VARS['agreed'])) || (isset($HTTP_GET_VARS['agreed'])) || (isset($HTTP_POST_VARS['email'])))
      {
         $sql = 'SELECT *
            FROM ' . ANTI_BOT_QUEST_CONFIG_TABLE . '
            WHERE config_name = \'counter_vari\'';
         if( !($result = $db->sql_query($sql)) )
         {
            message_die(CRITICAL_ERROR, "Could not query anti bot question mod counter information", "", __LINE__, __FILE__, $sql);
         }
         while ( $row = $db->sql_fetchrow($result) )
         {
            $abq_counter_vari = $row['config_value'];
         }
         $abq_counter_vari++;

         $sql = 'UPDATE ' . ANTI_BOT_QUEST_CONFIG_TABLE . ' SET
            config_value = \'' . $abq_counter_vari . '\'
            WHERE config_name = \'counter_vari\'';
         if( !$db->sql_query($sql) )
         {
            message_die(GENERAL_ERROR, "Failed to update anti bot question mod counter", "", __LINE__, __FILE__, $sql);
         }
      }

      $template->assign_vars(array(
         "META" => '<meta name="robots" content="noindex,nofollow" /><meta name="robots" content="noarchive" /><meta http-equiv="expires" content="0" /><meta http-equiv="pragma" content="no-cache" />')
      );
      include($phpbb_root_path . 'includes/page_header.'.$phpEx);
      show_coppa();
      include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
   }
}
elseif (!$abq_config['abq_register'])
// Anti Bot Question Mod - End
if ( $mode == 'register' && !isset($HTTP_POST_VARS['agreed']) && !isset($HTTP_GET_VARS['agreed']) )
{
   include($phpbb_root_path . 'includes/page_header.'.$phpEx);

   show_coppa();

   include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
}

$coppa = ( empty($HTTP_POST_VARS['coppa']) && empty($HTTP_GET_VARS['coppa']) ) ? 0 : TRUE;

//
// Check and initialize some variables if needed
//
if (
   isset($HTTP_POST_VARS['submit']) ||
   isset($HTTP_POST_VARS['avatargallery']) ||
   isset($HTTP_POST_VARS['submitavatar']) ||
   isset($HTTP_POST_VARS['cancelavatar']) ||
   $mode == 'register' )
{
   include($phpbb_root_path . 'includes/functions_validate.'.$phpEx);
   include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
   include($phpbb_root_path . 'includes/functions_post.'.$phpEx);

   if ( $mode == 'editprofile' )
   {
      $user_id = intval($HTTP_POST_VARS['user_id']);
      $current_email = trim(htmlspecialchars($HTTP_POST_VARS['current_email']));
   }
// Anti Bot Question Mod - Start
   if ($abq_config['abq_register'])
   {
      $abq_email_variable_name = $abq_config['email_variable_name'];
   }
   else
   {
      $abq_email_variable_name = 'email';
   }
   // Anti Bot Question Mod - End
   

//A VOIR
$strip_var_list = array('email' => $abq_email_variable_name, 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests', 'confirm_code' => 'confirm_code', 'abq_aw' => $abq_config['abq_variable_name'], 'idabq' => 'idabq');
$strip_var_list = array('username' => 'username', 'email' => 'email', 'icq' => 'icq', 'aim' => 'aim', 'msn' => 'msn', 'yim' => 'yim', 'website' => 'website', 'location' => 'location', 'occupation' => 'occupation', 'interests' => 'interests');
   $strip_var_list['confirm_code'] = 'confirm_code';
// FIN A VOIR



   // Strip all tags from data ... may p**s some people off, bah, strip_tags is
   // doing the job but can still break HTML output ... have no choice, have
   // to use htmlspecialchars ... be prepared to be moaned at.
   while( list($var, $param) = @each($strip_var_list) )
   {
      if ( !empty($HTTP_POST_VARS[$param]) )
      {
         $$var = trim(htmlspecialchars($HTTP_POST_VARS[$param]));
      }
   }

   $trim_var_list = array('cur_password' => 'cur_password', 'new_password' => 'new_password', 'password_confirm' => 'password_confirm', 'signature' => 'signature');

   while( list($var, $param) = @each($trim_var_list) )
   {
      if ( !empty($HTTP_POST_VARS[$param]) )
      {
         $$var = trim($HTTP_POST_VARS[$param]);
      }
   }

   $signature = (isset($signature)) ? str_replace('<br />', "\n", $signature) : '';
   $signature_bbcode_uid = '';

   // Run some validation on the optional fields. These are pass-by-ref, so they'll be changed to
   // empty strings if they fail.
   validate_optional_fields($icq, $aim, $msn, $yim, $website, $location, $occupation, $interests, $signature);

   $viewemail = ( isset($HTTP_POST_VARS['viewemail']) ) ? ( ($HTTP_POST_VARS['viewemail']) ? TRUE : 0 ) : 0;
   $allowviewonline = ( isset($HTTP_POST_VARS['hideonline']) ) ? ( ($HTTP_POST_VARS['hideonline']) ? 0 : TRUE ) : TRUE;
   $notifyreply = ( isset($HTTP_POST_VARS['notifyreply']) ) ? ( ($HTTP_POST_VARS['notifyreply']) ? TRUE : 0 ) : 0;
   $notifypm = ( isset($HTTP_POST_VARS['notifypm']) ) ? ( ($HTTP_POST_VARS['notifypm']) ? TRUE : 0 ) : TRUE;
   $popup_pm = ( isset($HTTP_POST_VARS['popup_pm']) ) ? ( ($HTTP_POST_VARS['popup_pm']) ? TRUE : 0 ) : TRUE;
   $sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;



   if ( $mode == 'register' )
   {
      $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $board_config['allow_sig'];

      $allowhtml = ( isset($HTTP_POST_VARS['allowhtml']) ) ? ( ($HTTP_POST_VARS['allowhtml']) ? TRUE : 0 ) : $board_config['allow_html'];
      $allowbbcode = ( isset($HTTP_POST_VARS['allowbbcode']) ) ? ( ($HTTP_POST_VARS['allowbbcode']) ? TRUE : 0 ) : $board_config['allow_bbcode'];
      $allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $board_config['allow_smilies'];
   }
   else
   {
      $attachsig = ( isset($HTTP_POST_VARS['attachsig']) ) ? ( ($HTTP_POST_VARS['attachsig']) ? TRUE : 0 ) : $userdata['user_attachsig'];

      $allowhtml = ( isset($HTTP_POST_VARS['allowhtml']) ) ? ( ($HTTP_POST_VARS['allowhtml']) ? TRUE : 0 ) : $userdata['user_allowhtml'];
      $allowbbcode = ( isset($HTTP_POST_VARS['allowbbcode']) ) ? ( ($HTTP_POST_VARS['allowbbcode']) ? TRUE : 0 ) : $userdata['user_allowbbcode'];
      $allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $userdata['user_allowsmile'];
   }

   $user_style = ( isset($HTTP_POST_VARS['style']) ) ? intval($HTTP_POST_VARS['style']) : $board_config['default_style'];

   if ( !empty($HTTP_POST_VARS['language']) )
   {
      if ( preg_match('/^[a-z_]+$/i', $HTTP_POST_VARS['language']) )
      {
         $user_lang = htmlspecialchars($HTTP_POST_VARS['language']);
      }
      else
      {
         $error = true;
         $error_msg = $lang['Fields_empty'];
      }
   }
   else
   {
      $user_lang = $board_config['default_lang'];
   }

   $user_timezone = ( isset($HTTP_POST_VARS['timezone']) ) ? doubleval($HTTP_POST_VARS['timezone']) : $board_config['board_timezone'];

   $sql = "SELECT config_value
      FROM " . CONFIG_TABLE . "
      WHERE config_name = 'default_dateformat'";
   if ( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Could not select default dateformat', '', __LINE__, __FILE__, $sql);
   }
   $row = $db->sql_fetchrow($result);
   $board_config['default_dateformat'] = $row['config_value'];
   $user_dateformat = ( !empty($HTTP_POST_VARS['dateformat']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['dateformat'])) : $board_config['default_dateformat'];

   $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']) : '' );
   $user_avatar_category = ( isset($HTTP_POST_VARS['avatarcatname']) && $board_config['allow_avatar_local'] ) ? htmlspecialchars($HTTP_POST_VARS['avatarcatname']) : '' ;

   $user_avatar_remoteurl = ( !empty($HTTP_POST_VARS['avatarremoteurl']) ) ? trim(htmlspecialchars($HTTP_POST_VARS['avatarremoteurl'])) : '';
   $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'] : '' );
   $user_avatar_name = ( !empty($HTTP_POST_FILES['avatar']['name']) ) ? $HTTP_POST_FILES['avatar']['name'] : '';
   $user_avatar_size = ( !empty($HTTP_POST_FILES['avatar']['size']) ) ? $HTTP_POST_FILES['avatar']['size'] : 0;
   $user_avatar_filetype = ( !empty($HTTP_POST_FILES['avatar']['type']) ) ? $HTTP_POST_FILES['avatar']['type'] : '';

   $user_avatar = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar'] : '';
   $user_avatar_type = ( empty($user_avatar_local) && $mode == 'editprofile' ) ? $userdata['user_avatar_type'] : '';

   if ( (isset($HTTP_POST_VARS['avatargallery']) || isset($HTTP_POST_VARS['submitavatar']) || isset($HTTP_POST_VARS['cancelavatar'])) && (!isset($HTTP_POST_VARS['submit'])) )
   {
      $username = stripslashes($username);
      $email = stripslashes($email);
      $cur_password = htmlspecialchars(stripslashes($cur_password));
      $new_password = htmlspecialchars(stripslashes($new_password));
      $password_confirm = htmlspecialchars(stripslashes($password_confirm));

      $icq = stripslashes($icq);
      $aim = stripslashes($aim);
      $msn = stripslashes($msn);
      $yim = stripslashes($yim);

      $website = stripslashes($website);
      $location = stripslashes($location);
      $occupation = stripslashes($occupation);
      $interests = stripslashes($interests);
      $signature = htmlspecialchars(stripslashes($signature));

      $user_lang = stripslashes($user_lang);
      $user_dateformat = stripslashes($user_dateformat);

      if ( !isset($HTTP_POST_VARS['cancelavatar']))
      {
         $user_avatar = $user_avatar_category . '/' . $user_avatar_local;
         $user_avatar_type = USER_AVATAR_GALLERY;
      }
   }
}

//
// Let's make sure the user isn't logged in while registering,
// and ensure that they were trying to register a second time
// (Prevents double registrations)
//
if ($mode == 'register' && ($userdata['session_logged_in'] || $username == $userdata['username']))
{
   message_die(GENERAL_MESSAGE, $lang['Username_taken'], '', __LINE__, __FILE__);
}

//
// Did the user submit? In this case build a query to update the users profile in the DB
//
if ( isset($HTTP_POST_VARS['submit']) )
{
   include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);
   // session id check
   if ($sid == '' || $sid != $userdata['session_id'])
   {
      $error = true;
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Session_invalid'];
   }


   $passwd_sql = '';
   if ( $mode == 'editprofile' )
   {
      if ( $user_id != $userdata['user_id'] )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Wrong_Profile'];
      }
   }
else if ( $mode == 'register' )
   {
      if ( empty($username) || empty($new_password) || empty($password_confirm) || empty($email) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
      }
      if ( !empty($website) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . "Les robots ne sont pas admis !<br />Afin d'éviter l'inscription de robots, veuillez ne pas mentionner l'adresse de votre site Web lors de votre inscription.<br /> Vous pourrez remplir ce champ ultérieurement en éditant votre profil.";
      }
   }

   if ($board_config['enable_confirm'] && $mode == 'register')
   {
      if (empty($HTTP_POST_VARS['confirm_id']))
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
      }
      else
      {
         $confirm_id = htmlspecialchars($HTTP_POST_VARS['confirm_id']);
         if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
         {
            $confirm_id = '';
         }
         
         $sql = 'SELECT code
            FROM ' . CONFIRM_TABLE . "
            WHERE confirm_id = '$confirm_id'
               AND session_id = '" . $userdata['session_id'] . "'";
         if (!($result = $db->sql_query($sql)))
         {
            message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);

         }

         if ($row = $db->sql_fetchrow($result))
         {
            if ($row['code'] != $confirm_code)
            {
               $error = TRUE;
               $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
            }
            else
            {
               $sql = 'DELETE FROM ' . CONFIRM_TABLE . "
                  WHERE confirm_id = '$confirm_id'
                     AND session_id = '" . $userdata['session_id'] . "'";
               if (!$db->sql_query($sql))
               {
                  message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);

               }
            }
         }
         else
         {      
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
         }
         $db->sql_freeresult($result);
      }
   }
// Anti Bot Question Mod - Start
   ABQ_CheckAnswer('Registration');
   // Anti Bot Question Mod - End
   $passwd_sql = '';
   if ( !empty($new_password) && !empty($password_confirm) )
   {
      if ( $new_password != $password_confirm )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
      }
      else if ( strlen($new_password) > 32 )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_long'];
      }
      else
      {
         if ( $mode == 'editprofile' )
         {
            $sql = "SELECT user_password
               FROM " . USERS_TABLE . "
               WHERE user_id = $user_id";
            if ( !($result = $db->sql_query($sql)) )
            {
               message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
            }
         // We remove all stored login keys since the password has been updated
         // and change the current one (if applicable)
         if ( !empty($passwd_sql) )
         {
            session_reset_keys($user_id, $user_ip);
         }

            $row = $db->sql_fetchrow($result);

            if ( $row['user_password'] != md5($cur_password) )
            {
               $error = TRUE;
               $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
            }
         }

         if ( !$error )
         {
            $new_password = md5($new_password);
            $passwd_sql = "user_password = '$new_password', ";
         }
      }
   }
   else if ( ( empty($new_password) && !empty($password_confirm) ) || ( !empty($new_password) && empty($password_confirm) ) )
   {
      $error = TRUE;
      $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Password_mismatch'];
   }

   //
   // Do a ban check on this email address
   //
   if ( $email != $userdata['user_email'] || $mode == 'register' )
   {
      $result = validate_email($email);
      if ( $result['error'] )
      {
         $email = $userdata['user_email'];

         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
      }

      if ( $mode == 'editprofile' )
      {
         $sql = "SELECT user_password
            FROM " . USERS_TABLE . "
            WHERE user_id = $user_id";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not obtain user_password information', '', __LINE__, __FILE__, $sql);
         }

         $row = $db->sql_fetchrow($result);

         if ( $row['user_password'] != md5($cur_password) )
         {
            $email = $userdata['user_email'];

            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Current_password_mismatch'];
         }
      }
   }

   $username_sql = '';
   if ( $board_config['allow_namechange'] || $mode == 'register' )
   {
      if ( empty($username) )
      {
         // Error is already triggered, since one field is empty.
         $error = TRUE;
      }
      else if ( $username != $userdata['username'] || $mode == 'register')
      {
         if (strtolower($username) != strtolower($userdata['username']) || $mode == 'register')
         {
            $result = validate_username($username);
            if ( $result['error'] )
            {
               $error = TRUE;
               $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $result['error_msg'];
            }
         }

         if (!$error)
         {
            $username_sql = "username = '" . str_replace("\'", "''", $username) . "', ";
         }
      }
   }

   if ( $signature != '' )
   {
      if ( strlen($signature) > $board_config['max_sig_chars'] )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Signature_too_long'];
      }

      if ( !isset($signature_bbcode_uid) || $signature_bbcode_uid == '' )
      {
         $signature_bbcode_uid = ( $allowbbcode ) ? make_bbcode_uid() : '';
      }
      $signature = prepare_message($signature, $allowhtml, $allowbbcode, $allowsmilies, $signature_bbcode_uid);
   }

   if ( $website != '' )
   {
      rawurlencode($website);
   }

   $avatar_sql = '';

   if ( isset($HTTP_POST_VARS['avatardel']) && $mode == 'editprofile' )
   {
      $avatar_sql = user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
   }
   else
   if ( ( !empty($user_avatar_upload) || !empty($user_avatar_name) ) && $board_config['allow_avatar_upload'] )
   {
      if ( !empty($user_avatar_upload) )
      {
         $avatar_mode = (empty($user_avatar_name)) ? 'remote' : 'local';
         $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);
      }
      else if ( !empty($user_avatar_name) )
      {
         $l_avatar_size = sprintf($lang['Avatar_filesize'], round($board_config['avatar_filesize'] / 1024));

         $error = true;
         $error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $l_avatar_size;
      }
   }
   else if ( $user_avatar_remoteurl != '' && $board_config['allow_avatar_remote'] )
   {
      user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
      $avatar_sql = user_avatar_url($mode, $error, $error_msg, $user_avatar_remoteurl);
   }
   else if ( $user_avatar_local != '' && $board_config['allow_avatar_local'] )
   {
      user_avatar_delete($userdata['user_avatar_type'], $userdata['user_avatar']);
      $avatar_sql = user_avatar_gallery($mode, $error, $error_msg, $user_avatar_local, $user_avatar_category);
   }

   if ( !$error )
   {
      if ( $avatar_sql == '' )
      {
         $avatar_sql = ( $mode == 'editprofile' ) ? '' : "'', " . USER_AVATAR_NONE;
      }

      if ( $mode == 'editprofile' )
      {
         if ( $email != $userdata['user_email'] && $board_config['require_activation'] != USER_ACTIVATION_NONE && $userdata['user_level'] != ADMIN )
         {
            $user_active = 0;

            $user_actkey = gen_rand_string(true);
            $key_len = 54 - ( strlen($server_url) );
            $key_len = ( $key_len > 6 ) ? $key_len : 6;
            $user_actkey = substr($user_actkey, 0, $key_len);

            if ( $userdata['session_logged_in'] )
            {
               session_end($userdata['session_id'], $userdata['user_id']);
            }
         }
         else
         {
            $user_active = 1;
            $user_actkey = '';
         }

         $sql = "UPDATE " . USERS_TABLE . "
            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 . "
            WHERE user_id = $user_id";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not update users table', '', __LINE__, __FILE__, $sql);
         }

         if ( !$user_active )
         {
            //
            // The users account has been deactivated, send them an email with a new activation key
            //
            include($phpbb_root_path . 'includes/emailer.'.$phpEx);
            $emailer = new emailer($board_config['smtp_delivery']);

            if ( $board_config['require_activation'] != USER_ACTIVATION_ADMIN )
            {
               $emailer->from($board_config['board_email']);
               $emailer->replyto($board_config['board_email']);

               $emailer->use_template('user_activate', stripslashes($user_lang));
               $emailer->email_address($email);
               $emailer->set_subject($lang['Reactivate']);
 
               $emailer->assign_vars(array(
                  'SITENAME' => $board_config['sitename'],
                  'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
                  'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
 
                  'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
               );
               $emailer->send();
               $emailer->reset();
            }
            else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
            {
               $sql = 'SELECT user_email, user_lang
                  FROM ' . USERS_TABLE . '
                  WHERE user_level = ' . ADMIN;
               
               if ( !($result = $db->sql_query($sql)) )
               {
                  message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
               }
               
               while ($row = $db->sql_fetchrow($result))
               {
                  $emailer->from($board_config['board_email']);
                  $emailer->replyto($board_config['board_email']);
                  
                  $emailer->email_address(trim($row['user_email']));
                  $emailer->use_template("admin_activate", $row['user_lang']);
                  $emailer->set_subject($lang['Reactivate']);

                  $emailer->assign_vars(array(
                     'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
                     'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

                     'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
                  );
                  $emailer->send();
                  $emailer->reset();
               }
               $db->sql_freeresult($result);
            }

            $message = $lang['Profile_updated_inactive'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
         }
         else
         {
            $message = $lang['Profile_updated'] . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
         }

         $template->assign_vars(array(
            "META" => '<meta http-equiv="refresh" content="5;url=' . append_sid("index.$phpEx") . '">')
         );

         message_die(GENERAL_MESSAGE, $message);
      }
      else
      {
         $sql = "SELECT MAX(user_id) AS total
            FROM " . USERS_TABLE;
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
         }

         if ( !($row = $db->sql_fetchrow($result)) )
         {
            message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
         }
         $user_id = $row['total'] + 1;

         //
         // Get current date
         //
         $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)
            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, ";
         if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
         {
            $user_actkey = gen_rand_string(true);
            $key_len = 54 - (strlen($server_url));
            $key_len = ( $key_len > 6 ) ? $key_len : 6;
            $user_actkey = substr($user_actkey, 0, $key_len);
            $sql .= "0, '" . str_replace("\'", "''", $user_actkey) . "')";
         }
         else
         {
            $sql .= "1, '')";
         }

         if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
         {
            message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
         }

         $sql = "INSERT INTO " . GROUPS_TABLE . " (group_name, group_description, group_single_user, group_moderator)
            VALUES ('', 'Personal User', 1, 0)";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql);
         }

         $group_id = $db->sql_nextid();

         $sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
            VALUES ($user_id, $group_id, 0)";
         if( !($result = $db->sql_query($sql, END_TRANSACTION)) )
         {
            message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql);
         }

         if ( $coppa )
         {
            $message = $lang['COPPA'];
            $email_template = 'coppa_welcome_inactive';
         }
         else if ( $board_config['require_activation'] == USER_ACTIVATION_SELF )
         {
            $message = $lang['Account_inactive'];
            $email_template = 'user_welcome_inactive';
         }
         else if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
         {
            $message = $lang['Account_inactive_admin'];
            $email_template = 'admin_welcome_inactive';
         }
         else
         {
            $message = $lang['Account_added'];
            $email_template = 'user_welcome';
         }

         include($phpbb_root_path . 'includes/emailer.'.$phpEx);
         $emailer = new emailer($board_config['smtp_delivery']);

         $emailer->from($board_config['board_email']);
         $emailer->replyto($board_config['board_email']);

         $emailer->use_template($email_template, stripslashes($user_lang));
         $emailer->email_address($email);
         $emailer->set_subject(sprintf($lang['Welcome_subject'], $board_config['sitename']));

         if( $coppa )
         {
            $emailer->assign_vars(array(
               'SITENAME' => $board_config['sitename'],
               'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
               'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
               'PASSWORD' => $password_confirm,
               'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

               'FAX_INFO' => $board_config['coppa_fax'],
               'MAIL_INFO' => $board_config['coppa_mail'],
               'EMAIL_ADDRESS' => $email,
               'ICQ' => $icq,
               'AIM' => $aim,
               'YIM' => $yim,
               'MSN' => $msn,
               'WEB_SITE' => $website,
               'FROM' => $location,
               'OCC' => $occupation,
               'INTERESTS' => $interests,
               'SITENAME' => $board_config['sitename']));
         }
         else
         {
            $emailer->assign_vars(array(
               'SITENAME' => $board_config['sitename'],
               'WELCOME_MSG' => sprintf($lang['Welcome_subject'], $board_config['sitename']),
               'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
               'PASSWORD' => $password_confirm,
               'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

               'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
            );
         }

         $emailer->send();
         $emailer->reset();

         if ( $board_config['require_activation'] == USER_ACTIVATION_ADMIN )
         {
            $sql = "SELECT user_email, user_lang
               FROM " . USERS_TABLE . "
               WHERE user_level = " . ADMIN;
            
            if ( !($result = $db->sql_query($sql)) )
            {
               message_die(GENERAL_ERROR, 'Could not select Administrators', '', __LINE__, __FILE__, $sql);
            }
            
            while ($row = $db->sql_fetchrow($result))
            {
               $emailer->from($board_config['board_email']);
               $emailer->replyto($board_config['board_email']);
               
               $emailer->email_address(trim($row['user_email']));
               $emailer->use_template("admin_activate", $row['user_lang']);
               $emailer->set_subject($lang['New_account_subject']);

               $emailer->assign_vars(array(
                  'USERNAME' => preg_replace($unhtml_specialchars_match, $unhtml_specialchars_replace, substr(str_replace("\'", "'", $username), 0, 25)),
                  'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']),

                  'U_ACTIVATE' => $server_url . '?mode=activate&' . POST_USERS_URL . '=' . $user_id . '&act_key=' . $user_actkey)
               );
               $emailer->send();
               $emailer->reset();
            }
            $db->sql_freeresult($result);
         }

         $message = $message . '<br /><br />' . sprintf($lang['Click_return_index'],  '<a href="' . append_sid("index.$phpEx") . '">', '</a>');

         message_die(GENERAL_MESSAGE, $message);
      } // if mode == register
   }
} // End of submit


if ( $error )
{
   //
   // If an error occured we need to stripslashes on returned data
   //
   $username = stripslashes($username);
   $email = stripslashes($email);
   $cur_password = '';
   $new_password = '';
   $password_confirm = '';

   $icq = stripslashes($icq);
   $aim = str_replace('+', ' ', stripslashes($aim));
   $msn = stripslashes($msn);
   $yim = stripslashes($yim);

   $website = stripslashes($website);
   $location = stripslashes($location);
   $occupation = stripslashes($occupation);
   $interests = stripslashes($interests);
   $signature = stripslashes($signature);
   $signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $signature) : $signature;

   $user_lang = stripslashes($user_lang);
   $user_dateformat = stripslashes($user_dateformat);

}
else if ( $mode == 'editprofile' && !isset($HTTP_POST_VARS['avatargallery']) && !isset($HTTP_POST_VARS['submitavatar']) && !isset($HTTP_POST_VARS['cancelavatar']) )
{
   $user_id = $userdata['user_id'];
   $username = $userdata['username'];
   $email = $userdata['user_email'];
   $cur_password = '';
   $new_password = '';
   $password_confirm = '';

   $icq = $userdata['user_icq'];
   $aim = str_replace('+', ' ', $userdata['user_aim']);
   $msn = $userdata['user_msnm'];
   $yim = $userdata['user_yim'];

   $website = $userdata['user_website'];
   $location = $userdata['user_from'];
   $occupation = $userdata['user_occ'];
   $interests = $userdata['user_interests'];
   $signature_bbcode_uid = $userdata['user_sig_bbcode_uid'];
   $signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $userdata['user_sig']) : $userdata['user_sig'];

   $viewemail = $userdata['user_viewemail'];
   $notifypm = $userdata['user_notify_pm'];
   $popup_pm = $userdata['user_popup_pm'];
   $notifyreply = $userdata['user_notify'];
   $attachsig = $userdata['user_attachsig'];
   $allowhtml = $userdata['user_allowhtml'];
   $allowbbcode = $userdata['user_allowbbcode'];
   $allowsmilies = $userdata['user_allowsmile'];
   $allowviewonline = $userdata['user_allow_viewonline'];

   $user_avatar = ( $userdata['user_allowavatar'] ) ? $userdata['user_avatar'] : '';
   $user_avatar_type = ( $userdata['user_allowavatar'] ) ? $userdata['user_avatar_type'] : USER_AVATAR_NONE;

   $user_style = $userdata['user_style'];
   $user_lang = $userdata['user_lang'];
   $user_timezone = $userdata['user_timezone'];
   $user_dateformat = $userdata['user_dateformat'];
}

//
// Default pages
//
// Anti Bot Question Mod - Start
$template->assign_vars(array(
   "META" => '<meta name="robots" content="noindex,nofollow" /><meta name="robots" content="noarchive" /><meta http-equiv="expires" content="0" /><meta http-equiv="pragma" content="no-cache" />')
);
// Anti Bot Question Mod - Ende
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

make_jumpbox('viewforum.'.$phpEx);

if ( $mode == 'editprofile' )
{
   if ( $user_id != $userdata['user_id'] )
   {
      $error = TRUE;
      $error_msg = $lang['Wrong_Profile'];
   }
}

if( isset($HTTP_POST_VARS['avatargallery']) && !$error )
{
   include($phpbb_root_path . 'includes/usercp_avatar.'.$phpEx);

   $avatar_category = ( !empty($HTTP_POST_VARS['avatarcategory']) ) ? htmlspecialchars($HTTP_POST_VARS['avatarcategory']) : '';

   $template->set_filenames(array(
      'body' => 'profile_avatar_gallery.tpl')
   );

   $allowviewonline = !$allowviewonline;

   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']);
}
else
{
   include($phpbb_root_path . 'includes/functions_selects.'.$phpEx);

   if ( !isset($coppa) )
   {
      $coppa = FALSE;
   }

   if ( !isset($user_style) )
   {
      $user_style = $board_config['default_style'];
   }

   $avatar_img = '';
   if ( $user_avatar_type )
   {
      switch( $user_avatar_type )
      {
         case USER_AVATAR_UPLOAD:
            $avatar_img = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $user_avatar . '" alt="" />' : '';
            break;
         case USER_AVATAR_REMOTE:
            $avatar_img = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $user_avatar . '" alt="" />' : '';
            break;
         case USER_AVATAR_GALLERY:
            $avatar_img = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $user_avatar . '" alt="" />' : '';
            break;
      }
   }

   // Anti Bot Question Mod - Start
   if ($abq_config['abq_register'])
   {
      $s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="' . $abq_config['agreed_variable_name'] . '" value="' . $abq_config['agreed_variable_value'] . $abq_agreedPart2 . '" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
   }
   else
   {
      // Anti Bot Question Mod - End
      $s_hidden_fields = '<input type="hidden" name="mode" value="' . $mode . '" /><input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
      // Anti Bot Question Mod - Start
   }
   // Anti Bot Question Mod - End
   $s_hidden_fields .= '<input type="hidden" name="sid" value="' . $userdata['session_id']
. '" />';


   if( $mode == 'editprofile' )
   {
      $s_hidden_fields .= '<input type="hidden" name="user_id" value="' . $userdata['user_id'] . '" />';
      //
      // Send the users current email address. If they change it, and account activation is turned on
      // the user account will be disabled and the user will have to reactivate their account.
      //
      $s_hidden_fields .= '<input type="hidden" name="current_email" value="' . $userdata['user_email'] . '" />';
   }

   if ( !empty($user_avatar_local) )
   {
      $s_hidden_fields .= '<input type="hidden" name="avatarlocal" value="' . $user_avatar_local . '" /><input type="hidden" name="avatarcatname" value="' . $user_avatar_category . '" />';
   }

   $html_status =  ( $userdata['user_allowhtml'] && $board_config['allow_html'] ) ? $lang['HTML_is_ON'] : $lang['HTML_is_OFF'];
   $bbcode_status = ( $userdata['user_allowbbcode'] && $board_config['allow_bbcode']  ) ? $lang['BBCode_is_ON'] : $lang['BBCode_is_OFF'];
   $smilies_status = ( $userdata['user_allowsmile'] && $board_config['allow_smilies']  ) ? $lang['Smilies_are_ON'] : $lang['Smilies_are_OFF'];

   if ( $error )
   {
      $template->set_filenames(array(
         'reg_header' => 'error_body.tpl')
      );
      $template->assign_vars(array(
         'ERROR_MESSAGE' => $error_msg)
      );
      $template->assign_var_from_handle('ERROR_BOX', 'reg_header');
   }

   $template->set_filenames(array(
      'body' => 'profile_add_body.tpl')
   );
// Anti Bot Question Mod - Start
   $abq_quest = '';
   $abq_answerfield = '';
   $abq_CaseInfo = 0;
   // Anti Bot Question Mod - End
   if ( $mode == 'editprofile' )
   {
      $template->assign_block_vars('switch_edit_profile', array());
   }
// Anti Bot Question Mod - Start
   else if (( $mode == 'register' ) && ($abq_config['abq_register']))
   {
      $abq_CaseInfo = ABQ_AskQuestion('Registration');
   }
   // Anti Bot Question Mod - End

   if ( ($mode == 'register') || ($board_config['allow_namechange']) )
   {
      $template->assign_block_vars('switch_namechange_allowed', array());
   }
   else
   {
      $template->assign_block_vars('switch_namechange_disallowed', array());
   }


   // Visual Confirmation
   $confirm_image = '';
   if (!empty($board_config['enable_confirm']) && $mode == 'register')
   {
      $sql = 'SELECT session_id
         FROM ' . SESSIONS_TABLE;
      if (!($result = $db->sql_query($sql)))
      {
         message_die(GENERAL_ERROR, 'Could not select session data', '', __LINE__, __FILE__, $sql);
      }

      if ($row = $db->sql_fetchrow($result))
      {
         $confirm_sql = '';
         do
         {
            $confirm_sql .= (($confirm_sql != '') ? ', ' : '') . "'" . $row['session_id'] . "'";
         }
         while ($row = $db->sql_fetchrow($result));
      
         $sql = 'DELETE FROM ' .  CONFIRM_TABLE . "
            WHERE session_id NOT IN ($confirm_sql)";
         if (!$db->sql_query($sql))
         {
            message_die(GENERAL_ERROR, 'Could not delete stale confirm data', '', __LINE__, __FILE__, $sql);
         }
      }
      $db->sql_freeresult($result);

      $sql = 'SELECT COUNT(session_id) AS attempts
         FROM ' . CONFIRM_TABLE . "
         WHERE session_id = '" . $userdata['session_id'] . "'";
      if (!($result = $db->sql_query($sql)))
      {
         message_die(GENERAL_ERROR, 'Could not obtain confirm code count', '', __LINE__, __FILE__, $sql);
      }

      if ($row = $db->sql_fetchrow($result))
      {
         if ($row['attempts'] > 3)
         {
            message_die(GENERAL_MESSAGE, $lang['Too_many_registers']);
         }
      }
      $db->sql_freeresult($result);
      
      // Generate the required confirmation code
      // NB 0 (zero) could get confused with O (the letter) so we make change it
      $code = dss_rand();
      $code = substr(str_replace('0', 'Z', strtoupper(base_convert($code, 16, 35))), 2, 6);

      $confirm_id = md5(uniqid($user_ip));

      $sql = 'INSERT INTO ' . CONFIRM_TABLE . " (confirm_id, session_id, code)
         VALUES ('$confirm_id', '". $userdata['session_id'] . "', '$code')";
      if (!$db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Could not insert new confirm code information', '', __LINE__, __FILE__, $sql);
      }

      unset($code);
      
      $confirm_image = '<img src="' . append_sid("profile.$phpEx?mode=confirm&amp;id=$confirm_id") . '" alt="" title="" />';
      $s_hidden_fields .= '<input type="hidden" name="confirm_id" value="' . $confirm_id . '" />';

      $template->assign_block_vars('switch_confirm', array());
   }


   //
   // Let's do an overall check for settings/versions which would prevent
   // us from doing file uploads....
   //
   $ini_val = ( phpversion() >= '4.0.0' ) ? 'ini_get' : 'get_cfg_var';
   $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"';
// Anti Bot Question Mod - Start
   if ($abq_config['abq_register'])
   {
      $abq_email_variable_name = $abq_config['email_variable_name'];
   }
   else
   {
      $abq_email_variable_name = 'email';
   }
   // Anti Bot Question Mod - End
   $template->assign_vars(array(
      'USERNAME' => isset($username) ? $username : '',
      'CUR_PASSWORD' => isset($cur_password) ? $cur_password : '',
      'NEW_PASSWORD' => isset($new_password) ? $new_password : '',
      'PASSWORD_CONFIRM' => isset($password_confirm) ? $password_confirm : '',
      'EMAIL' => isset($email) ? $email : '',
      'CONFIRM_IMG' => $confirm_image,
// Anti Bot Question Mod - Start
      'S_ABQ_EMAIL' => $abq_email_variable_name,
      'L_ABQ_QUEST' => $abq_quest,
      'L_ABQ_EXPLAIN' => $lang['ABQ_RegisterForm_explain'],
      'L_ABQ_NOTE' => sprintf($lang['ABQ_Form_Problems'], '<a href="mailto:' . $board_config['board_email'] . '">', '</a>'),
      'L_ABQ_QUESTION' => $lang['ABQ_Form_Question'],
      'L_ABQ_ANSWER' => $lang['ABQ_Form_YourAnswer'],
      'L_ABQ_ANSWER_EXPLAIN' => (($abq_CaseInfo) && (substr($abq_answerfield,0,7) != '<select')) ? '<br />'.$lang['ABQ_Form_CaseSensitive'] : '',
      'S_ABQ' => $abq_answerfield,
      // Anti Bot Question Mod - End

      'YIM' => $yim,
      'ICQ' => $icq,
      'MSN' => $msn,
      'AIM' => $aim,
      'OCCUPATION' => $occupation,
      'INTERESTS' => $interests,
      'LOCATION' => $location,
      'WEBSITE' => $website,
      'SIGNATURE' => str_replace('<br />', "\n", $signature),
      'VIEW_EMAIL_YES' => ( $viewemail ) ? 'checked="checked"' : '',
      'VIEW_EMAIL_NO' => ( !$viewemail ) ? 'checked="checked"' : '',
      'HIDE_USER_YES' => ( !$allowviewonline ) ? 'checked="checked"' : '',
      'HIDE_USER_NO' => ( $allowviewonline )