Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Cross-edit prevention (TEST - 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 : 01 Juil 2006 17:06
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Citation :
But : Vérifie à chaque édition de message si le message a été édité pendant que vous l'éditiez (par un modérateur par exemple).

Prérequis :
- [Sous-MOD] Définitions CSS complémentaires (1.1)
- [MOD] Log all editions (1.0)

Auteur : Darathor (darathor@free.fr)
Version : 1.0 (19/06/2006)
Compatibilité phpBB : 2.0.21


Dans "posting.php" :
Code :
#
# Trouver
#
      $where_sql = ( !$submit ) ? "AND pt.post_id = p.post_id AND u.user_id = p.poster_id" : '';
      
#
# Ajouter après
#
      // DEBUT MOD Cross-edit prevention
      if($mode == 'editpost' && $submit)
      {
         $select_sql = ', t.topic_title, p.enable_bbcode, p.enable_html, p.enable_smilies, p.enable_sig, p.post_username, pt.post_text, pt.bbcode_uid, pt.post_subject, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid, p.post_edit_time, p.post_edit_count, p.post_last_editor';
         $from_sql = ", " . POSTS_TEXT_TABLE . " pt, " . USERS_TABLE . " u";
         $where_sql = "AND pt.post_id = p.post_id AND u.user_id = p.poster_id";
      }
      // FIN MOD Cross-edit prevention

#
# Trouver
#
//
// The user is not authed, if they're not logged in then redirect

#
# Ajouter avant
#
// DEBUT MOD Cross-edit prevention
if($mode == 'editpost' && $submit && ($post_info['post_edit_time'] > intval($HTTP_POST_VARS['get_text_time'])))
{
   $submit = FALSE;
   $refresh = TRUE;
   
   // Mise à jour de la dernière date de chargement.
   $HTTP_POST_VARS['get_text_time'] = $post_info['post_edit_time'];

   $template->assign_block_vars('last_edit_block', array(
      'L_BLOCK_TITLE' => $lang['CrEP_error'],
      'L_LAST_TEXT' => $lang['CrEP_last_text'],
      'L_LAST_EDIT' => sprintf($lang['CrEP_last_edit'], $post_info['post_last_editor'], create_date($board_config['default_dateformat'], $post_info['post_edit_time'], $board_config['board_timezone'])),
      
      'LAST_EDIT_TIME' => $post_info['post_edit_time'],
      'LAST_EDITOR' => $post_info['post_last_editor'],
      'LAST_MESSAGE_TEXT' => $message = preg_replace('/\:(([a-z0-9]:)?)' . $post_info['bbcode_uid'] . '/s', '', $post_info['post_text']))
   );
}
// FIN MOD Cross-edit prevention

#
# Trouver
#
// Generate smilies listing for page output

#
# Ajouter avant
#
// DEBUT MOD Cross-edit prevention
if(isset($HTTP_POST_VARS['get_text_time'])) { $get_text_time = intval($HTTP_POST_VARS['get_text_time']); }
else { $get_text_time = time(); }
$hidden_form_fields .= '<input type="hidden" name="get_text_time" value="' . $get_text_time . '" />';
// FIN MOD Cross-edit prevention


Dans "templates/subSilver/posting_body.tpl" :
Code :
#
# Trouver
#
<form action="{S_POST_ACTION}" method="post" name="post" onsubmit="return checkForm(this)">

#
# Ajouter après
#
<!-- BEGIN last_edit_block -->
<table class="cm forumline complet gen" cellpadding="3" cellspacing="1">
  <tr>
   <th class="thHead" colspan="2">{last_edit_block.L_BLOCK_TITLE}</th>
  </tr>
  <tr>
   <td class="row3 bold" colspan="2">{last_edit_block.L_LAST_EDIT}</td>
  </tr>
  <tr>
   <td class="lm row1 bold quart">{last_edit_block.L_LAST_TEXT}&nbsp;:</td>
   <td class="row2"><textarea class="post gensmall complet" style="height:300px; overflow:auto;" name="old_message" rows="15" cols="35">{last_edit_block.LAST_MESSAGE_TEXT}</textarea></td>
  </tr>
</table>
<br />
<!-- END last_edit_block -->


Dans "language/lang_french/lang_main.php" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Cross-edit prevention
$lang['CrEP_error'] = 'Attention ! Ce message a été édité depuis que vous en avez chargé le texte.';
$lang['CrEP_last_edit'] = 'Ce message a été édité pour la dernière fois par %s le %s.';
$lang['CrEP_last_text'] = 'Le texte actuellement stocké dans la base est';
// FIN MOD Cross-edit prevention

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