Darathor
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} :</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