Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Resynchronise topics (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 : 06 Mai 2006 16:28
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
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}" />
      &nbsp;

Revenir en haut Aller en bas
Hors ligne | Profil | MP | E-mail | Site web
Dernière édition par Darathor le 05 Juil 2006 13:27; édité 2 fois
  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