Affichage :
Le laboratoire de Darathor Index du Forum

Le laboratoire de Darathor

Ressources diverses, principalement sur les fourms phpBB
[MOD] Détails des boîtes MP dans l'index (1.1)

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 Aoû 2005 13:54
Masquer ce messageAfficher ce message
Répondre en citantAjouter à liste des messages à citerRetirer de la liste des messages à citer
Citation :
But : Ajoute en bas de l'index (facilement déplaçable ou intégrable sur une autre page) un bloc donnant diverses informations sur les boîtes MP :
- la liste des 4 boîtes de MPs avec pour chaque boîte un lien direct pour y accéder, le nombre de MPs contenu et le nombre max de MPs qu'elle peut contenir.
- pour la boîte de réception, il indique également le nombre de messages non-lu.
- il signale chaque boîte pleine.
- le bloc n'est affiché que pour les membres et non les invités.

Auteur : Darathor (darathor@free.fr)
Version : 1.1 (06/08/2005)
Compatibilité phpBB : 2.0.17
Validité HTML : XHTML 1.1

Changements :
1.1 (06/08/2005) :
- correction d'un bug lorsqu'une boîte avait un nombre maximum de 0 (le message d'alerte était affiché).
- refonte du code pour faciliter l'insertion de ce bloc récapitulatif sur n'importe quelle page.
- suppression du bloc pour les invités (avant il y avait une ligne disant qu'il fallait se connecter pour accéder aux MP).
- les messages d'alertes affichés en cas de boîte(s) pleine(s) indiquent maintenant la boîte concernée.


Dans "includes/functions.php" :
Code :
#
# Trouver
#
?>

#
# Ajouter avant
#
// DEBUT MOD Détails boites MP
/**
 * Génère un bloc contenant le récapitulatif des boîtes MP.
 * Ce bloc est ajouté à l'emlacement {MP_BLOC} du ficheir .tpl de la page appelant la fonction.
 *
 * $affiche : 'table' (inclut les balise de début et de fin de tableau) ou 'row' (uniquement les lignes du tableau correspondant).
 */
function addMPBloc($affiche)
{
   global $template, $lang, $images, $board_config, $phpbb_root_path, $phpEx, $userdata, $db;
   
   // On ne génère le bloc que si l'on est logué.
   if($userdata['session_logged_in'])
   {
      // Initialisations.
      $mp_new = 0; // Nouveaux messages reçus.
      $mp_unread = 0; // Messages reçus non-lus.
      $mp_inbox = 0; // Total de la boite de récetion.
      $mp_sent = 0; // Total de la boite des messages envoyés.
      $mp_out = 0; // Total des la boite d'envois (non reçus par le testinataire).
      $mp_save = 0; // Total de la boite d'archives.
      $inbox_max = $board_config['max_inbox_privmsgs']; // Nombre max dans inbox.
      $sentbox_max = $board_config['max_sentbox_privmsgs']; // Nombre max dans sentbox.
      $savebox_max = $board_config['max_savebox_privmsgs']; // Nombre max dans savebox.

      // Décompte des messages dont on est le récepteur.
      $sql = "SELECT privmsgs_type, count(*) AS nb
         FROM " . PRIVMSGS_TABLE . "
         WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
            AND ( privmsgs_type = " . PRIVMSGS_READ_MAIL . "
               OR privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
               OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "
               OR privmsgs_type = " . PRIVMSGS_SAVED_IN_MAIL . " )   
         GROUP BY privmsgs_type";
   
      if(!($result = $db->sql_query($sql)))
      {
         message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
      }
      
      while($privmsg_group = $db->sql_fetchrow($result))
      {
         switch($privmsg_group['privmsgs_type'])
         {
              case PRIVMSGS_SAVED_IN_MAIL :
               $mp_save += $privmsg_group['nb'];
               break;
            
            case PRIVMSGS_NEW_MAIL :
               $mp_inbox += $privmsg_group['nb']; $mp_unread += $privmsg_group['nb'];
               $mp_new += $privmsg_group['nb'];
               break;
               
            case PRIVMSGS_UNREAD_MAIL :
               $mp_inbox += $privmsg_group['nb'];
               $mp_unread += $privmsg_group['nb'];
               break;
            
            default :
               $mp_inbox += $privmsg_group['nb'];
               break;
         }
      }
   
      // Décompte des messages dont on est l'auteur.
      $sql = "SELECT privmsgs_type, count(*) AS nb
         FROM " . PRIVMSGS_TABLE . "
         WHERE privmsgs_from_userid = " . $userdata['user_id'] . "
            AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "   
               OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . "
               OR privmsgs_type = " . PRIVMSGS_SENT_MAIL ."
               OR privmsgs_type = " . PRIVMSGS_SAVED_OUT_MAIL . ")
         GROUP BY privmsgs_type";
      
      if(!($result = $db->sql_query($sql)))
      {
         message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
      }   
   
      while($privmsg_group = $db->sql_fetchrow($result))
      {
         switch($privmsg_group['privmsgs_type'])
         {
              case PRIVMSGS_SAVED_OUT_MAIL :
               $mp_save += $privmsg_group['nb'];
               break;
            
            case PRIVMSGS_SENT_MAIL :
               $mp_sent += $privmsg_group['nb'];
               break;
            
            default :
               $mp_out += $privmsg_group['nb'];
               break;
         }
      }
      
      // Création du bloc pour le template.
      $template->set_filenames(array(
         'mp_recap_bloc' => 'privmsgs_recap_bloc.tpl')
      );
      
      // Si l'on est en mode 'table', on inclut les balises d'ouverture et fermeture du tableau.
      if($affiche == 'table') { $template->assign_block_vars('switch_table', array()); }
      
      $template->assign_block_vars('mp_bloc', array(
         'L_MP_TITRE' => $lang['Private_Messaging'],
         'L_INBOX' => $lang['Inbox'],   
         'L_SENTBOX'   => $lang['Sentbox'],
         'L_OUTBOX' => $lang['Outbox'],
         'L_SAVEBOX' => $lang['Savebox'],
         'L_WARNING' => $lang['DBMP_warning'],
         
         'INBOX_NB' => $mp_inbox,
         'INBOX_MAX' => $inbox_max,
         'INBOX_NON_LUS' => (($mp_unread > 0) ? ('(' . $mp_unread . ' ' . $lang['DBMP_unread'] . ')') : ''),
         'SENTBOX_NB' => $mp_sent,
         'SENTBOX_MAX' => $sentbox_max,
         'OUTBOX_NB' => $mp_out,
         'SAVEBOX_NB' => $mp_save,
         'SAVEBOX_MAX' => $savebox_max,
         
         'U_MP_IMG' => (($mp_unread > 0) ? $images['forum_new'] : $images['forum']),
         'U_INBOX' => append_sid('privmsg.'.$phpEx.'?folder=inbox'),
         'U_SENTBOX' => append_sid('privmsg.'.$phpEx.'?folder=sentbox'),
         'U_OUTBOX' => append_sid('privmsg.'.$phpEx.'?folder=outbox'),
         'U_SAVEBOX' => append_sid('privmsg.'.$phpEx.'?folder=savebox'))
      );
      
      // Génération des warnings en cas de boîte(s) pleine(s).
      $mp_warnings = '';
      if($inbox_max > 0 && $mp_inbox >= $inbox_max)
      {
         $template->assign_block_vars('mp_bloc.warningrow', array(
            'WARNING_MESSAGE' => sprintf($lang['DBMP_warning_message'], $lang['Inbox']))
         );
      }
      if($sentbox_max > 0 && $mp_sent >= $sentbox_max)
      {
         $template->assign_block_vars('mp_bloc.warningrow', array(
            'WARNING_MESSAGE' => sprintf($lang['DBMP_warning_message'], $lang['Sentbox']))
         );
      }
      if($savebox_max > 0 && $mp_save >= $savebox_max)
      {
         $template->assign_block_vars('mp_bloc.warningrow', array(
            'WARNING_MESSAGE' => sprintf($lang['DBMP_warning_message'], $lang['Savebox']))
         );
      }
      
      // Assignation du bloc à la page.
      $template->assign_var_from_handle('MP_BLOC', 'mp_recap_bloc');
   }
}
// FIN MOD Détails boites MP


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

#
# Ajouter avant
#
// DEBUT MOD Détails boites MP
$lang['DBMP_unread'] = 'non-lus';
$lang['DBMP_warning'] = 'ATTENTION';
$lang['DBMP_warning_message'] = 'la boîte "%s" est pleine !';
// FIN MOD Détails boites MP


Dans "index.php" :
Code :
#
# Trouver
#
      'U_MARK_READ' => append_sid("index.$phpEx?mark=forums"))
   );

#
# Ajouter après
#
   // DEBUT MOD Détails boites MP
   addMPBloc('table');
   // FIN MOD Détails boites MP


Dans "subsilver/index_body.tpl" :
Code :
#
# Trouver
#
   <td align="left" valign="top"><span class="gensmall">{L_ONLINE_EXPLAIN}</span></td>
</tr>
</table>

#
# Ajouter après
#
{MP_BLOC}


Uploader aux emplacement suivants les fichiers contenus dans ce zip :
- template/subsilver/privmsgs_recap_bloc.tpl
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