Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
Version 1.4.13 : [.tar.gz][.zip] (maj 20/10/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)
Branche 1.5.x : fluxbb.org
Pack langue française pour 1.5.x : [.zip] (maj 14/01/2016)
Ancienne Version 1.2.24 fr : [.zip] (maj 26/08/2011)
Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :
Pour ma part je suis admin d'un forum d'entraide et je voudrais afficher sur le portail créer avec l'astuce mini portail
les 5 dernieres demandes d'aide ? de ma catégorie "Entraide Windows" uniquement
est-il possible de faire cela ?
Hors ligne
UP !
Hors ligne
C'est possible oui, il te faut préciser l'id de la catégorie dont les topics doivent être récupérés.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
dans quel fichier et comment précisé ceci ?
Hors ligne
Dans le fichier "/include/last-topic.php", tu ajoutes le code suivant juste avant le "ORDER BY" des 3 requêtes lignes 23, 27 et 31, en remplaçant le X par l'id de la catégorie
AND cat_id = X
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
sa ne fonctionne pas je veut uniquement pour un forum...
Hors ligne
"Ça marche pas" comment ? Ça n'affiche rien ou ça t'affiche pour la catégorie au lieu du forum ? Ton message indiquait "de ma catégorie "Entraide Windows"", d'où la proposition postée...
Inspire toi de ce que j'ai mis mais en faisant la condition sur l'id du forum dans la requête, au lieu de l'id de la catégorie.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
j'ai justement tenté : AND forum_id = X
qui n'a pas fonctionné mieux, j'ai toujours tout les sujet...
désolé, abus de language de ma part je voulais dire Forum et non catégorie...
Hors ligne
J'ai mis
AND t.forum_id = 132
juste avant les 3 ORDER des requêtes, et ça fonctionne nickel chez moi...
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Sa fonctionne merci Bien
j'avais oublié le "t."
Hors ligne
Bonjour voila j'aimerai un peu d'aide concernant cetee mod si possible
Voila j'ai installé le Mod Colorize_groups et j'aimerai que la couleur des posteurs apparaissent aussi dans les topics actifs.
Après plusieurs tentatives ratés pourriez-vous m'aider s'il vous plaît?
Second souci j(aimerai indiqué le nombres de pages des topics
malheuresement je n'arrive pas a mettre la main sur la fonctions qui indique le nombres de pages.
Pourriez vous encore une fois m'aidez
Je vous remercie
Hors ligne
Hors ligne
Bonjour
Tout d'abord merci de prendre le temps de m'apporter une réponse
Malheuresement votre correction n'est pas valable sur mon forum
Voici l'indication :
Fatal error: Call to undefined function makeurl() in /home/nomdusite/public_html/include/last-topics.php on line 51
Or à la ligne 51 apparait
$subject = '<a href="'.makeurl("topic-", $cur_topic['id'] ,$cur_topic['subject']).'">'.pun_htmlspecialchars($cur_topic['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.$col_group.'</span>';
qui bien sur n'a rien de commun avec la fonction de base ce qui donc me semble compliqué aà comprendre :
$subject = '<a href="viewtopic.php?id='.$cur_topic['id'].'">'.pun_htmlspecialchars($cur_topic['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.pun_htmlspecialchars($cur_topic['poster']).'</span>';
Voila merci encore
Dernière modification par ozz (07-09-2011 18:59:09)
Hors ligne
Arg je t'ai donné le code du fichier de WS avec le rewrite activé.
Version corrigée:
<?php
//
// Last Topics mod by adaur
//
// Make sure no one attempts to run this script "directly"... it would be bad
if (!defined('PUN'))
exit;
// Load the viewforum.php language file
if (file_exists(PUN_ROOT.'lang/'.$pun_user['language'].'/forum.php'))
require PUN_ROOT.'lang/'.$pun_user['language'].'/forum.php';
else
require PUN_ROOT.'lang/English/forum.php';
$show = isset($show) ? $show : NULL;
if ($show < '1' || $show > '50' || $show == '') $show = '5'; // Don't mess up with the numbers :P
if ($pun_user['g_id'] == PUN_ADMIN)
$result = $db->query('SELECT u.id AS uid, u.group_id, up.id AS up_id, up.group_id AS up_group_id, t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'users AS u ON (t.last_poster=u.username) LEFT JOIN '.$db->prefix.'users AS up ON (t.poster=up.username) LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
elseif ($pun_user['is_guest'])
$result = $db->query('SELECT u.id AS uid, u.group_id, up.id AS up_id, up.group_id AS up_group_id, t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'users AS u ON (t.last_poster=u.username) LEFT JOIN '.$db->prefix.'users AS up ON (t.poster=up.username) LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
else
$result = $db->query('SELECT u.id AS uid, u.group_id, up.id AS up_id, up.group_id AS up_group_id, t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'users AS u ON (t.last_poster=u.username) LEFT JOIN '.$db->prefix.'users AS up ON (t.poster=up.username) LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
?>
<div class="blocktable">
<h2><span>Topics actifs</span></h2>
<div class="box">
<div class="inbox">
<table cellspacing="0">
<thead>
<tr>
<th class="tcl" scope="col"><?php echo $lang_common['Topic']; ?></th>
<th class="tc2" scope="col"><?php echo $lang_common['Replies'] ?></th>
<th class="tc3" scope="col"><?php echo $lang_forum['Views'] ?></th>
<th class="tcr" scope="col"><?php echo $lang_common['Last post'] ?></th>
</tr>
</thead>
<tbody>
<?php
while ($cur_topic = $db->fetch_assoc($result)) {
if ($pun_config['o_censoring'] == '1')
$cur_topic['subject'] = censor_words($cur_topic['subject']);
$date = format_time($cur_topic['posted']);
$col_group = colorize_group($cur_topic['poster'], $cur_topic['up_group_id'], $cur_topic['up_id']);
$subject = '<a href="viewtopic.php?id='.$cur_topic['id'].'">'.pun_htmlspecialchars($cur_topic['subject']).'</a> <span class="byuser">'.$lang_common['by'].' '.$col_group.'</span>';
$num_pages_topic = ceil(($cur_topic['num_replies'] + 1) / $pun_user['disp_posts']);
if ($num_pages_topic > 1)
$subject_multipage = '<span class="pagestext">[ '.paginate($num_pages_topic, -1, 'viewtopic.php?id='.$cur_topic['id']).' ]</span>';
else
$subject_multipage = null;
$last_post = '<a href="viewtopic.php?pid='.$cur_topic['last_post_id'].'#p'.$cur_topic['last_post_id'].'">'.format_time($cur_topic['last_post']).'</a> <span class="byuser">'.$lang_common['by'].' '.colorize_group($cur_topic['last_poster'], $cur_topic['group_id'], $cur_topic['uid']).'</span>';
if (!$pun_user['is_guest'])
{
$tracked_topics = get_tracked_topics();
}
if (!$pun_user['is_guest'] && $cur_topic['last_post'] > $pun_user['last_visit'] && (!isset($tracked_topics['topics'][$cur_topic['id']]) || $tracked_topics['topics'][$cur_topic['id']] < $cur_topic['last_post']) && (!isset($tracked_topics['forums'][$cur_topic['forum_id']]) || $tracked_topics['forums'][$cur_topic['forum_id']] < $cur_topic['last_post']) && $cur_topic['moved_to'] == null)
{
$item_status = ' inew';
$icon_type = 'icon icon-new';
$subject = '<strong>'.$subject.'</strong>';
$subject_new_posts = '<span class="newtext">[ <a href="viewtopic.php?id='.$cur_topic['id'].'&action=new" title="'.$lang_common['New posts info'].'">'.$lang_common['New posts'].'</a> ]</span>';
}
else
{
$item_status = '';
$icon_type = 'icon';
$subject_new_posts = null;
}
// Should we show the "New posts" and/or the multipage links?
if (!empty($subject_new_posts) || !empty($subject_multipage))
{
$subject .= !empty($subject_new_posts) ? ' '.$subject_new_posts : '';
$subject .= !empty($subject_multipage) ? ' '.$subject_multipage : '';
}
++$forum_count;
$item_status = ($forum_count % 2 == 0) ? 'roweven '.$item_status : 'rowodd '.$item_status;
?>
<tr<?php if ($item_status != '') echo ' class="'.trim($item_status).'"'; ?>>
<td class="tcl">
<div class="intd">
<div class="<?php echo $icon_type ?>"><div class="nosize"></div></div>
<div class="tclcon">
<?php echo $subject."\n\t\t" ?>
</div>
</div>
</td>
<td class="tc2"><?php echo $cur_topic['num_replies'] ?></td>
<td class="tc3"><?php echo $cur_topic['num_views'] ?></td>
<td class="tcr"><?php echo $last_post ?></td>
</tr>
<?php
} // That's all folks!
?>
</tbody></table></div></div></div>
Dernière modification par adaur (07-09-2011 19:33:33)
Hors ligne
Et ba un énorme Merci à toi
J'aurais été incapable d'arriver à faire ces modifications moi même
Sa fonctionne nikel !!
Je suis aux anges
Hors ligne
Bonsoir,
Petite question : je désire afficher deux petites choses de plus que celles proposées par ce script déjà génial, à savoir le corps du premier message du sujet ainsi que l'avatar du posteur
J'ai tenté de reprendre le code de viewtopic mais ça ne me méne nulle part... je me suis également dit qu'il faudrait que je récupère les infos par la requête sql mais malheureusement je suis largué
Je continue de chercher mais si vous avez une solution simple je ne serais pas contre
En tout cas merci Adaur pour cette mod simple et efficace
Hors ligne
Par posteur tu sous entends auteur du topic, ou dernier posteur?
J'te demande ça car généralement (sur les forums que je cotoie), il s'agit du dernier posteur.
Et qu'entends tu par corps du message? Un ptit bout du topic? Comment tu comptes caser ça O__o
Hors ligne
Je voudrais afficher l'auteur du post d'origine ainsi que son avatar, après pour placer ça comme tu dis tout est question de mise en page
Hors ligne
Dans le fichier include/last-topics.php
Chercher :
if ($pun_user['g_id'] == PUN_ADMIN)
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
}
elseif ($pun_user['is_guest'])
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
}
else
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
}
Remplacer par :
if ($pun_user['g_id'] == PUN_ADMIN)
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id, u.id AS uid, p.message FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) LEFT JOIN '.$db->prefix.'users AS u ON u.username = t.poster LEFT JOIN '.$db->prefix.'posts AS p ON p.id = t.first_post_id WHERE t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the admin\'s topic list', __FILE__, __LINE__, $db->error());
}
elseif ($pun_user['is_guest'])
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id, u.id AS uid, p.message FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) LEFT JOIN '.$db->prefix.'users AS u ON u.username = t.poster LEFT JOIN '.$db->prefix.'posts AS p ON p.id = t.first_post_id WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the guest\'s topic list', __FILE__, __LINE__, $db->error());
}
else
{
$result = $db->query('SELECT t.id, t.poster, t.subject, t.posted, t.last_post, t.last_post_id, t.last_poster, t.num_replies, t.num_views, t.moved_to, t.forum_id, u.id AS uid, p.message FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') LEFT JOIN '.$db->prefix.'users AS u ON u.username = t.poster LEFT JOIN '.$db->prefix.'posts AS p ON p.id = t.first_post_id WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '.$show) or error('Unable to get the member\'s topic list', __FILE__, __LINE__, $db->error());
}
Pour afficher l'avatar, j'te conseille de faire :
if(file_exists('img/avatars/'.$cur_topic['uid'].'.png))
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'" src="img/avatars/'.$cur_topic['uid'].'.png">';
elseif(file_exists('img/avatars/'.$cur_topic['uid'].'.gif))
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'" src="img/avatars/'.$cur_topic['uid'].'.gif">';
elseif(file_exists('img/avatars/'.$cur_topic['uid'].'.jpg))
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'" src="img/avatars/'.$cur_topic['uid'].'.jpg">';
else
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'" src="img/avatars/defaut.jpg">';
Ensuite tu afficheras l'avatar depuis la variable $avatar.
Quant au texte, il te suffit de faire un echo $cur_topic['message'].
Ps : J'te conseille de prévoir un avatar par defaut (comme le propose le code)
Hors ligne
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'
Alerte faille!
$avatar = '<img alt="Avatar de '.pun_htmlspecialchars($cur_topic['poster']).'
Hors ligne
Merci à vous deux, je teste ça ce soir
Hors ligne
$avatar = '<img alt="Avatar de '.$cur_topic['poster'].'
Alerte faille!
$avatar = '<img alt="Avatar de '.pun_htmlspecialchars($cur_topic['poster']).'
Pourquoi faille? Les données enregistrées en BDD sont censé être infaillible non?
J'vois pas l'intérêt de vérifier les entrées et sorties des données sql
(sauf s'il s'agit d'une autre faille encore)
Hors ligne
Si un utilisateur a pour nom <script machin, celui ci doit être affiché en tant que texte et pas interprété (voir le code partout où on affiche un username extrait de la BDD).
Hors ligne
Testé et approuvé
J'ai fait la modification pour ajouter le premier message du post et ça fonctionne parfaitement, c'est ce à quoi j'avais pensé sans pour autant avoir su le faire
Par contre pour l'avatar j'ai une erreur, mais comme je compte utiliser l'image en background css je vais modifier ça tranquillement
Merci encore
Hors ligne
Si un utilisateur a pour nom <script machin, celui ci doit être affiché en tant que texte et pas interprété (voir le code partout où on affiche un username extrait de la BDD).
Mais justement, normalement un tel pseudo en BDD est impossible à enregistrer. Du moins, lors de l'inscription (ou même d'un changement de pseudo), le pseudo enregistré voit ses caractères spéciaux remplacé avant d'être mis en BDD.
Donc à la sortie, il est censé être déjà sécurisé, non?
Normalement on a un truc dans ce genre :
// Lors de l'inscription
$pseudo = pun_htmlspecialchars($_POST(['pseudo']));
// Insertion en BDD
Et si on récupère le pseudo via une requête, on tombe sur la valeur de $pseudo et non la valeur de $_POST['pseudo'].
Bref, tout ça pour dire que si on vérifie un pseudo avant de l'enregistrer en bdd, il est totalement inutile de le revérifier quand on va aller le chercher via une requête sql.
(Bien entendu tout ce que j'dis suppose que les variables sont "nettoyé" avant l'enregistrement en bdd)
@Defaz : tu as quelle erreur pour l'avatar?
Hors ligne