Darathor
Citation :
But : Ajoute le un bouton dans le panneau de modération des forums. Ce bouton permet de resynchroniser le compteur de post d'un topic. Les topics peuvent être désynchronisés lors de plantages ou de surcharges ou bug du serveur au moment du postage d'un message.
Attention :
Appliquées à un grand nombre de topic ou bien à de gros topics, la resynchronisation peut s'avérer lourde (en nombre de requetes SQL, autant qu'en consommation de ressources). Il est donc recommandé de ne pas en abuser.
Auteur : Darathor (darathor@free.fr)
Version : 1.0 TEST - A (06/05/2006)
Compatibilité phpBB : 2.0.19
Dans "modcp.php" :
Code :
#
# Trouver
#
$unlock = ( isset($HTTP_POST_VARS['unlock']) ) ? TRUE : FALSE;
#
# Ajouter après
#
// DEBUT MOD Resynchronise topics
$topic_resync = ( isset($HTTP_POST_VARS['topic_resync']) ) ? TRUE : FALSE;
// FIN MOD Resynchronise topics
#
# Trouver
#
else if ( $unlock )
{
$mode = 'unlock';
}
#
# Ajouter après
#
// DEBUT MOD Resynchronise topics
elseif($topic_resync)
{
$mode = 'topic_resync';
}
// FIN MOD Resynchronise topics
#
# Trouver
#
default:
#
# Ajouter avant
#
// DEBUT MOD Resynchronise topics
case 'topic_resync' :
// Récupération de la liste des topics à resynchronser.
$topics = (isset($HTTP_POST_VARS['topic_id_list'])) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id);
// Parcours des topics.
foreach($topics as $topic_id)
{
// Comptage des messages associés au topic.
$sql = "SELECT COUNT(*) AS topic_replies FROM " . POSTS_TABLE . " WHERE topic_id = $topic_id";
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not count topic\'s posts', '', __LINE__, __FILE__, $sql);
}
// Si le topic contient des messages, on met à jour ce nombre.
if($row = $db->sql_fetchrow($result))
{
$topic_replies = $row['topic_replies'] -1;
$sql = "UPDATE " . TOPICS_TABLE . " SET topic_replies = $topic_replies WHERE topic_id = $topic_id";
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not update topic\'s postcount', '', __LINE__, __FILE__, $sql);
}
}
}
message_die(GENERAL_MESSAGE, $lang['ReTo_Seccessfully_resynchronised']);
break;
// FIN MOD Resynchronise topics
#
# Trouver
#
'L_SELECT' => $lang['Select'],
#
# Ajuter après
#
// DEBUT MOD Resynchronise topics
'L_RESYNC' => $lang['ReTo_Resynchonise'],
// FIN MOD Resynchronise topics
Dans "language/lang_french/lang_main.php" :
Code :
#
# Trouver
#
?>
#
# Ajouter avant
#
// DEBUT MOD Resynchronise topics
$lang['ReTo_Resynchonise'] = 'Resynchroniser';
$lang['ReTo_Seccessfully_resynchronised'] = 'Les topics on été resynchronisés avec succès';
// FIN MOD Resynchronise topics
Dans "templates/subSilver/modcp_body.tpl" :
Code :
#
# Trouver
#
<input type="submit" name="delete" class="liteoption" value="{L_DELETE}" />
#
# Ajouter avant
#
<input class="liteoption" type="submit" name="topic_resync" value="{L_RESYNC}" />