Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Realy make new session ? (DEV - A)

Poster un nouveau sujet Répondre au sujet

Rechercher dans ce sujet :
Messages
Darathor Sexe : Masculin
Site Admin
Membre

Inscrit le : 02 Nov 2003
Messages : 1101
Localisation : Strasbourg
MessagePosté le : 23 Sep 2005 22:19
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Requêtes SQL :
Code :
INSERT INTO `phpbb_config` ( `config_name` , `config_value` ) VALUES ('active_question_new_session', '1');

ALTER TABLE `phpbb_users` ADD `user_session_auto_reponse` TINYINT UNSIGNED DEFAULT '0' NOT NULL;


Dans "includes/constants.php" :
Code :
#
# Trouver
#
define('CRITICAL_ERROR', 204);

#
# Ajouter après
#
// DEBUT MOD Realy make new session ?
define('SESSION_QUESTION', 205);
// FIN MOD Realy make new session ?


Dans "include/function.php" :
Code :
#
# Trouver
#
// CRITICAL_ERROR : Used when config data cannot be obtained, eg
// no database connection. Should _not_ be used in 99.5% of cases
//

#
# Ajouter après
#
//// DEBUT MOD Realy make new session ?
// SESSION_QUESTION : Utilisé pour la question posée avant de valider
// une nouvelle session. Le comportement est identique à CRITICAL_MESSAGE
// mais ne teste pas si la fonction message_die est déjà appelée.
//// FIN MOD Realy make new session ?
//
#
# Trrouver
#
   if(defined('HAS_DIED'))

#
# Remplacer par
#
   // DEBUT MOD Realy make new session ?
   // -- DEBUT Enlevé
   // if(defined('HAS_DIED'))
   // -- FIN Enlevé
   if($msg_code == SESSION_QUESTION)
   {
      // Si l'on a déjà posé la quesiton, on sort de la fonciton pour éviter une éventuelle boucle.
      if(defined('SESSION_QUESTION_ASKED')) { return; }
      // Sinon, on mémorise le fait de l'avoir posée et on passe en mode CRITICAL_MESSAGE.
      else
      {
         define('SESSION_QUESTION_ASKED', 1);
         $msg_code = CRITICAL_MESSAGE;
      }      
   }
   elseif(defined('HAS_DIED'))
   // FIN MOD Realy make new session ?



Dans "includes/session.php" :
Code :
#
# Trouver
#
      $last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time;

#
# Remplacer par
#
      // DEBUT MOD Realy make new session ?
      // -- DEBUT Enlevé
      // $last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time;
      // -- FIN Enlevé
      $reponse_auto = 0;
      if($board_config['active_question_new_session'])
      {
         if($userdata['user_session_time'] == 0) { $last_visit = $current_time; }
         else
         {
            global $make_new_session;
            switch($userdata['user_session_auto_reponse'])
            {
               case 1 : $make_new_session = 3; break;
               case 2 : $make_new_session = 2; break;
               default : $make_new_session = (isset($make_new_session)) ? $make_new_session : 0; break;
            }   
            // Gestion de l'auto-réponse.         
            switch($make_new_session)
            {
               case 3 : $reponse_auto = 1; $make_new_session = 1; break;
               case 2 : $reponse_auto = 2; $make_new_session = 0; break;
               default : $reponse_auto = 0; break;
            }
            $sessiondata['user_session_auto_reponse'] = $reponse_auto;
            $last_visit = ($make_new_session == 1) ? $userdata['user_session_time'] : $userdata['user_lastvisit'];    
         }
      }
      else { $last_visit = ( $userdata['user_session_time'] > 0 ) ? $userdata['user_session_time'] : $current_time; }      
      // FIN MOD Realy make new session ?

#
# Trouver
#
      if (!$admin)
      {

#
# Ajouter après
#
      // COMMENTAIRE MOD Realy make new session ? : La requête qui suit a été modifiée.

#
# Trouver
#
         SET user_session_time = $current_time, user_session_page = $page_id, user_lastvisit = $last_visit

#
# Dans la ligne, ajouter après
#
, user_session_auto_reponse = $reponse_auto

#
# Trouver
#
   $user_id = ( isset($sessiondata['userid']) ) ? intval($sessiondata['userid']) : ANONYMOUS;
   
#
# Ajouter après
#
   // DEBUT MOD Realy make new session ?
   if($board_config['active_question_new_session'] && $user_id != ANONYMOUS && $sessiondata['autologinid'] != '')
   {
      global $make_new_session;
      switch($sessiondata['user_session_auto_reponse'])
      {
         case 1 : $make_new_session = 1; break;
         case 2 : $make_new_session = 0; break;
         default : $make_new_session = -1; break;
      }
      if($make_new_session == -1)
      {
         if(!isset($HTTP_GET_VARS['make_new_session']) && !isset($HTTP_POST_VARS['make_new_session']))
         {
            global $_SERVER, $phpEx;
            include($phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/lang_main.'.$phpEx);
            $message_url = $_SERVER["REQUEST_URI"] . ((substr($_SERVER["REQUEST_URI"], strlen($_SERVER["REQUEST_URI"])-1) == '/') ? "index.php" : "");
            $message_url .= (strstr($message_url, "?") == false) ? "?make_new_session=" : "&make_new_session=";
            $message = $lang['RMNS_question_new_session'] . '<br /><br /><strong><a href="' . $message_url . '1">' . $lang['Yes'] .'</a></strong>&nbsp;&nbsp;<a href="' . $message_url . '0">' . $lang['No'] .'</a>';
            $message .= '<br /><br /><a href="' . $message_url . '3">' . $lang['RMNS_auto_oui'] . '</a>*&nbsp;&nbsp;<a href="' . $message_url . '2">' . $lang['RMNS_auto_non'] . '</a>**';
            $message .= '<br /><br />* ' . $lang['RMNS_auto_oui_explain'] . '<br />** ' . $lang['RMNS_auto_non_explain'];
            message_die(SESSION_QUESTION, $message, $lang['RMNS_question_new_session_titre']);
         }
         else
         {
            $make_new_session = (!empty($HTTP_POST_VARS['make_new_session'])) ? intval($HTTP_POST_VARS['make_new_session']) : intval($HTTP_GET_VARS['make_new_session']);
         }
      }
   }
   // FIN MOD Realy make new session ?


Dans "login.php" :
Code :
#
# Trouver
#
      $sql = "SELECT user_id, username, user_password, user_active, user_level

#
# Remplacer par
#
      // COMMENTAIRE MOD Realy make new session ? : La requête qui suit a été modifiée.
      $sql = "SELECT user_id, username, user_password, user_active, user_level, user_session_auto_reponse

#
# Trouver
#
               $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

#
# Ajouter avant
#
               // DEBUT MOD Realy make new session ?
               if($board_config['active_question_new_session'] && !isset($HTTP_POST_VARS['admin']))
               {
                  switch($row['user_session_auto_reponse'])
                  {
                     case 1 : $make_new_session = 1; break;
                     case 2 : $make_new_session = 0; break;
                     default : $make_new_session = -1; break;
                  }
                  if($make_new_session == -1)
                  {
                     if(!empty($HTTP_GET_VARS['make_new_session']) || !empty($HTTP_POST_VARS['make_new_session']))
                     {
                        $make_new_session = (!empty($HTTP_POST_VARS['make_new_session'])) ? $HTTP_POST_VARS['make_new_session'] : $HTTP_GET_VARS['make_new_session'];
                        if($make_new_session == $lang['RMNS_auto_oui']) { $make_new_session = 3; }
                        if($make_new_session == $lang['RMNS_auto_non']) { $make_new_session = 2; }
                        elseif($make_new_session == $lang['Yes']) { $make_new_session = 1; }
                        elseif($make_new_session == $lang['No']) { $make_new_session = 0; }
                        else { $make_new_session = -1; }
                     }
                     else
                     {
                        if (!empty($HTTP_POST_VARS['redirect']) || !empty($HTTP_GET_VARS['redirect']))
                        {
                           $message_redirect = (!empty($HTTP_POST_VARS['redirect'])) ? $HTTP_POST_VARS['redirect'] : $HTTP_GET_VARS['redirect'];
                        }
                        else { $message_redirect = ''; }
                        $message_hidden = ($message_redirect != '') ? ('<input type="hidden" name="redirect" value="' . $message_redirect . '" />') : '';
                        $message_hidden .= (isset($HTTP_POST_VARS['autologin'])) ? ('<input type="hidden" name="autologin" value="' . $HTTP_POST_VARS['autologin'] . '" />') : '';
                        $message_hidden .= '<input type="hidden" name="login" value="true" /><input type="hidden" name="username" value="' . stripslashes($HTTP_POST_VARS['username']) . '" /><input type="hidden" name="password" value="' . $password . '" />';
                        $message = '<form action="login.php" method="post">' . $lang['RMNS_question_new_session'] . '<br /><br />' . $message_hidden . '<input type="submit" name="make_new_session" value="' . $lang['Yes'] . '" class="mainoption" />&nbsp;&nbsp;<input type="submit" name="make_new_session" value="' . $lang['No'] . '" class="liteoption" />';
                        $message .= '<br /><br /><input type="submit" name="make_new_session" value="' . $lang['RMNS_auto_oui'] . '" class="liteoption" />*&nbsp;&nbsp;<input type="submit" name="make_new_session" value="' . $lang['RMNS_auto_non'] . '" class="liteoption" />**</form>';
                        $message .= '<br /><br />* ' . $lang['RMNS_auto_oui_explain'] . '<br />** ' . $lang['RMNS_auto_non_explain'];
                        message_die(SESSION_QUESTION, $message, $lang['RMNS_question_new_session_titre']);
                     }
                  }
               }
               // FIN MOD Realy make new session ?


Dans "lang_main" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Realy make new session ?
$lang['RMNS_question_new_session_titre'] = 'Voulez-vous démarrer une nouvelle session ?';
$lang['RMNS_question_new_session'] = 'En cliquant sur <strong>oui</strong>, vous commencerez une nouvelle session. C\'est ce qui se passe par défaut sur les forums en général. Les messages antérieurs à la dernière visite sont alors marqués comme lus.<br /><br />En cliquant sur <strong>non</strong>, tout se passera comme si votre précédente connexion n\'avait pas eu lieu et les messages postés entre vos deux précédentes connexions ne seront pas marqués comme lus.';
$lang['RMNS_auto_oui'] = 'Toujours oui';
$lang['RMNS_auto_non'] = 'Toujours non';
$lang['RMNS_auto_pas'] = 'poser la question';
$lang['RMNS_auto_oui_explain'] = 'Répondre automatiquement <strong>oui</strong> lors des prochaines connexions (le comportement sera alors le même que sur un forum phpBB classique).';
$lang['RMNS_auto_non_explain'] = 'Répondre automatiquement <strong>non</strong> lors des prochaines connexions.';
$lang['RMNS_mode'] = 'Démarrer une nouvelle session lors d\'une connexion : ';
$lang['RMNS_reinitialiser'] = ' (%sreposer la question%s)';
$lang['RMNS_reinitialiser_secces'] = 'La question de savoir si vous voulez créer une nouvelle session vous sera reposée lors de vos prochaines connexions.';
// FIN MOD Realy make new session ?


Dans "admin/admin_board.php" :
Code :
#
# Trouver
#
$smtp_no = ( !$new['smtp_delivery'] ) ? "checked=\"checked\"" : "";

#
# Ajouter après
#
// DEBUT MOD Realy make new session ?
$question_new_session_yes = ( $new['active_question_new_session'] ) ? "checked=\"checked\"" : "";
$question_new_session_no = ( !$new['active_question_new_session'] ) ? "checked=\"checked\"" : "";
// FIN MOD Realy make new session ?

#
# Trouver
#
   "L_RESET" => $lang['Reset'],

#
# Ajouter après
#
   // FIN MOD Realy make new session ?
   "L_ACTIVE_QUESTION_NEW_SESSION" => $lang['RMNS_question'],
   // FIN MOD Realy make new session ?

#
# Trouver
#
   "COPPA_MAIL" => $new['coppa_mail'],

#
# Ajouter après
#
   // DEBUT MOD Realy make new session ?
   "ACTIVE_QUESTION_NEW_SESSION_YES" => $question_new_session_yes,
   "ACTIVE_QUESTION_NEW_SESSION_NO" => $question_new_session_no,
   // FIN MOD Realy make new session ?


Dans "subsilver/admin/board_config_body.tpl" :
Code :
#
# Trouver
#
   <tr>
      <td class="row1">{L_COOKIE_SECURE}<br /><span class="gensmall">{L_COOKIE_SECURE_EXPLAIN}</span></td>
      <td class="row2"><input type="radio" name="cookie_secure" value="0" {S_COOKIE_SECURE_DISABLED} />{L_DISABLED}&nbsp; &nbsp;<input type="radio" name="cookie_secure" value="1" {S_COOKIE_SECURE_ENABLED} />{L_ENABLED}</td>
   </tr>

#
# Ajouter après
#
   <!-- DEBUT MOD Realy make new session ? -->
   <tr>
      <td class="row1">{L_ACTIVE_QUESTION_NEW_SESSION}<br /></td>
      <td class="row2"><input type="radio" name="active_question_new_session" value="1" {ACTIVE_QUESTION_NEW_SESSION_YES} />{L_YES}&nbsp; &nbsp;<input type="radio" name="active_question_new_session" value="0" {ACTIVE_QUESTION_NEW_SESSION_NO} />{L_NO}</td>
   </tr>
   <!-- FIN MOD Realy make new session ? -->


Dans "lang_admin.php" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Realy make new session ?
$lang['RMNS_question'] = 'Activer l\'option permettant de poursuivre la précédente session lors d\'une nouvelle connexion ?';
// FIN MOD Realy make new session ?


Dans "index.php" :
Code :
#
# Trouver
#
//
// End session management
//

#
# Ajouter après
#
// DEBUT MOD Realy make new session ?
if(intval($HTTP_GET_VARS['session_question']) == 1 || intval($HTTP_POST_VARS['session_question']) == 1)
{
   $sql = "UPDATE " . USERS_TABLE . "
      SET user_session_auto_reponse = 0
      WHERE user_id = " . $userdata['user_id'];
      
   if ( !$db->sql_query($sql) )
   {
      message_die(CRITICAL_ERROR, 'Error updating user data', '', __LINE__, __FILE__, $sql);
   }
   
   // Mise à jour du cookie si autologin.
   $sessiondata = isset($HTTP_COOKIE_VARS[$cookiename . '_data']) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$cookiename . '_data'])) : array();
   if($sessiondata['autologinid'] != '')
   {
      $sessiondata['user_session_auto_reponse'] = 0;
      setcookie($cookiename . '_data', serialize($sessiondata), $current_time + 31536000, $cookiepath, $cookiedomain, $cookiesecure);
   }
   
   $message = $lang['RMNS_reinitialiser_secces'] . '<br /><br />' . sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
   message_die(GENERAL_MESSAGE, $message);
}
// FIN MOD Realy make new session ?

#
# Trouver
#
      setcookie($board_config['cookie_name'] . '_f_all', time(), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);

#
# Remplacer par
#
      // DEBUT MOD Realy make new session ?
      // -- DEBUT Enlevé
      // setcookie($board_config['cookie_name'] . '_f_all', time(), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
      // -- FIN Enlevé
      $time_now = time();
      $user_id = $userdata['user_id'];
      $sql = "UPDATE " . USERS_TABLE . "
         SET user_lastvisit = $time_now
         WHERE user_id = $user_id";
      if ( !($result = $db->sql_query($sql)) )
      {
         message_die(GENERAL_ERROR, 'Could update user_lastvisit', '', __LINE__, __FILE__, $sql);
      }   
      // FIN MOD Realy make new session ?

#
# Trouver
#
   $template->set_filenames(array(
      'body' => 'index_body.tpl')
   );

#
# Ajouter après
#
   // DEBUT MOD Realy make new session ?
   if($board_config['active_question_new_session'] && $userdata['user_id'] != -1)
   {
      $mode_new_session = $lang['RMNS_mode'];
      switch($userdata['user_session_auto_reponse'])
      {
         // Auto oui.
         case 1 :
            $mode_new_session .= $lang['RMNS_auto_oui'] . sprintf($lang['RMNS_reinitialiser'], "<a href=\"index.$phpEx?session_question=1\">", "</a>") . ".";
            break;
         // Auto non.
         case 2 :
            $mode_new_session .= $lang['RMNS_auto_non'] . sprintf($lang['RMNS_reinitialiser'], "<a href=\"index.$phpEx?session_question=1\">", "</a>") . ".";
            break;
         default :
            $mode_new_session .= $lang['RMNS_auto_pas'] . ".";
            break;
      }
   }
   else { $mode_new_session = '&nbsp;'; }
   // DEBUT MOD Realy make new session ?   

#
# Trouver
#
      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))

#
# Ajouter avant
#
      // DEBUT MOD Realy make new session ?
      'MODE_NEW_SESSION' => $mode_new_session,
      // FIN MOD Realy make new session ?


Dans "subsilver/index_body.tpl" :
Code :
#
# Trouver
#
<!-- BEGIN switch_user_logged_out -->

#
# Ajouter avant
#
<!-- DEBUT MOD Realy make new session ? -->
<table width="100%" cellpadding="1" cellspacing="1" border="0">
<tr>
   <td align="left" valign="top"><span class="gensmall">{MODE_NEW_SESSION}</span></td>
</tr>
</table>
<!-- FIN MOD Realy make new session ? -->

Revenir en haut Aller en bas
Hors ligne | Profil | MP | E-mail | Site web
  Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum