Darathor
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.2 (27/08/2005)
Compatibilité phpBB : 2.0.17
Validité HTML : XHTML 1.1
Changements :
1.2 (27/08/2005) :
- si la boîte archive a un nombre maximum de 0, elle n'est pas affichée.
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']))
);
}
// La boîte archive n'est montrée que si elle peut contenir des messages.
if($board_config['max_savebox_privmsgs'] > 0)
{
$template->assign_block_vars('mp_bloc.switch_savebox_allowed', array());
}
// 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