Aide à la création d'un menu derniers posts
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Reprise du message précédent
pour l'instnat j'ai en partie résolu en ajoutant des colonne sur la table phpboost_forums_cat mais c'est pas top donc j'attends les expert pour une solution 100¨phpboost
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Si c'est bien le cas, il faut que tu regardes dans forum/forum_interface.class.php à la ligne 403. C'est cette requête qui remplit le flux RSS du forum.
Dans cette requête, il va chercher le champ auth dans la table forum_cats, il faut que tu le fasses toi aussi.
Ensuite, pour savoir si tu dois afficher ou pas le sujet, tu fais :
Code PHP :
if ($User->check_auth(unserialize($row['auth']), READ_CAT_FORUM)) { // Je peux afficher le sujet } else { // L'utilisateur n'a pas le droit de le voir }
Au dessus du il tu feras un
global $User;si $User n'est pas dans ton contexte.
Je n'ai pas testé ce que je t'ai dit, mais ça devrait marcher. Fais quand même des essais avec différentes autorisations sur les catégories et différents utilisateurs.
Et désolé d'avoir tardé à répondre.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010

j'avoue que je débute en tout, en php et phpboost, et je ne sais vraiment pas comment utilisé cette vérification.
Par contre par quel moyen je peux récupérer la valeur du level de l'utilisateur dans une variable pour la réutiliser plus tard.
je me doute qu'il doit y avoir un rapport avec
$User->get_parameter('level')
ou quelque chose dans le genre mais comment la stocker

merci
Édité par ohemeg Le 12/01/2011 à 22h59
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Fais voir le code de ton module, je te dis où placer le code que je t'ai donné.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
<?php
function menu_lastpost_lastpost($position, $block)
{
global $CONFIG, $Sql; $User;
$tpl = new Template('menus/lastpost/lastpost.tpl');
import('core/menu_service');
MenuService::assign_positions_conditions($tpl, $block);
$resultw = $Sql->query_while("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10) AS t ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC", __LINE__, __FILE__);
while ($roww = $Sql->fetch_assoc($resultw))
{
$title = $roww['title'];
$id_tpc = $roww['idtopic'];
$sql_topic = "SELECT * FROM phpboost_forum_cats, phpboost_forum_topics WHERE phpboost_forum_topics.id='$id_tpc' AND phpboost_forum_topics.idcat = phpboost_forum_cats.id";
$req_topic = mysql_query($sql_topic);
$res_topic = mysql_fetch_assoc($req_topic);
$auth_level = $res_topic['auth_level'];
$id_msg = $roww['id'];
$timest = $roww['max_timestamp'];
$nbr_msg = $roww['nbr_msg'];
$id_user = $roww['user_id'];
$login = $roww['login'];
$date_f = date( 'à' ." H:i
",$timest);
$date_d = date('d/m',$timest);
$page=ceil($nbr_msg/15);
if($User->Check_level($auth_level)===true) {
$tpl->assign_block_vars('top_dl', array(
'TITLE' => $roww['title'],
'ID_TPC' => $roww['idtopic'],
'NBR_MSG' => $nbr_msg,
'TIMEST' => $timest,
'DATE_F' => $date_f,
'DATE_D' => $date_d,
'PAGE' => $page,
'LINK' => '<a href="http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt='.$page.'&id='.$id_tpc.'#m'.$id_msg.'" title="'.$login.' '.$date_f.'">'.$title.'</a>',
/*'DEBUG' => var_dump()*/
));
}
}
$Sql->query_close($resultw);
return $tpl->parse(TEMPLATE_STRING_MODE);
}
?>
function menu_lastpost_lastpost($position, $block)
{
global $CONFIG, $Sql; $User;
$tpl = new Template('menus/lastpost/lastpost.tpl');
import('core/menu_service');
MenuService::assign_positions_conditions($tpl, $block);
$resultw = $Sql->query_while("SELECT t.title,t.idtopic,msg2.id,t.max_timestamp,t.nbr_msg, msg2.user_id,mem.login
FROM phpboost_forum_msg msg2
JOIN (SELECT tpc.title,msg.idtopic,max(msg.timestamp) AS max_timestamp, tpc.nbr_msg
FROM phpboost_forum_msg msg, phpboost_forum_topics tpc
where tpc.id=msg.idtopic
GROUP BY msg.idtopic
ORDER BY max(msg.timestamp) DESC
LIMIT 0,10) AS t ON msg2.idtopic = t.idtopic AND msg2.timestamp = t.max_timestamp,
phpboost_member mem
where msg2.user_id=mem.user_id
ORDER BY t.max_timestamp DESC", __LINE__, __FILE__);
while ($roww = $Sql->fetch_assoc($resultw))
{
$title = $roww['title'];
$id_tpc = $roww['idtopic'];
$sql_topic = "SELECT * FROM phpboost_forum_cats, phpboost_forum_topics WHERE phpboost_forum_topics.id='$id_tpc' AND phpboost_forum_topics.idcat = phpboost_forum_cats.id";
$req_topic = mysql_query($sql_topic);
$res_topic = mysql_fetch_assoc($req_topic);
$auth_level = $res_topic['auth_level'];
$id_msg = $roww['id'];
$timest = $roww['max_timestamp'];
$nbr_msg = $roww['nbr_msg'];
$id_user = $roww['user_id'];
$login = $roww['login'];
$date_f = date( 'à' ." H:i
",$timest);$date_d = date('d/m',$timest);
$page=ceil($nbr_msg/15);
if($User->Check_level($auth_level)===true) {
$tpl->assign_block_vars('top_dl', array(
'TITLE' => $roww['title'],
'ID_TPC' => $roww['idtopic'],
'NBR_MSG' => $nbr_msg,
'TIMEST' => $timest,
'DATE_F' => $date_f,
'DATE_D' => $date_d,
'PAGE' => $page,
'LINK' => '<a href="http://www.team-adlo.fr/~teamadlo/forum/topic.php?pt='.$page.'&id='.$id_tpc.'#m'.$id_msg.'" title="'.$login.' '.$date_f.'">'.$title.'</a>',
/*'DEBUG' => var_dump()*/
));
}
}
$Sql->query_close($resultw);
return $tpl->parse(TEMPLATE_STRING_MODE);
}
?>
petite précision, ne sachant pas comment utiliser les autorisations, j'ai ajouté la colonne "auth_level" sur la table phpboost_forum_cats. puis je renseigne à la main le niveau que jeveux pour chaque catégorie.
Autre point, je me suis aperçu que j'ai inversé la vérification car avec ce code je retourne les 10 dernier posts sans problème, si je suis level 2 (admin) j'en ai dix, mais si je suis 0 (membre) et que parmi les 10 derniers posts il y en a 4 de niveau 2 alors je n'aurais que 6 posts d'afficher.
Donc sans abuser si tu as la possibilité de modifier ce code pour que chaque niveau récupère les 10 derniers posts auquel il a le droit sans avoir à utliser ma nouvelle colonne ça serait top..... et surement plus propre vu que tu maitrises

non ce n'est pas de la lèche
Édité par ohemeg Le 12/01/2011 à 23h36
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Code PHP :
if ($User->check_auth(unserialize($row['auth']), READ_CAT_FORUM)) { // Je peux afficher le sujet } else { // L'utilisateur n'a pas le droit de le voir }
Plusieurs remarques : ta requête SQL est extrêmement compliquée, normalement tu peux la faire sans sous requête. Comme je te l'avais dit, dans /forum/forum_interface.class.php il y a la requête qu'il te faut, à la ligne 403.
Sinon, tu vas certainement avoir un problème de nombre d'éléments. Ta requête va te retourner 10 éléments, si 3 d'entre eux ne sont autorisés qu'aux administrateurs, les visiteurs n'en verront que 7.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Bon j'essaye de reproduire mais je galère de trop comme dit je suis une buse en php et je passe trop de temps à faire des essai dans tous les sens. J'ai passé pas moins de 10 heures a essayer de comprendre comment tout cela fonctionne sans vraiment y arriver (sans les bases php c'est moins bien
).Je pense que je vais m'obstiner à essayer à ma manière car je décompose au fur et à mesure et je comprends mieux ainsi, dans quelques temps ton code sera évident pour moi, mais pas là

sinon comment je peux récupérer dans un tableau tout ce qui se trouve dans $User
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
ohemeg :
jsinon comment je peux récupérer dans un tableau tout ce qui se trouve dans $User
Pourquoi tu veux faire ça ?
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
et donc pour mieux comprendre je voudrais, dans un premier temps rester sur mon code qui est peut être fastidueux mais que j'arrive à comprendre

et donc je voudrais récupérer le level de $User pour ensuite le passer dans ma requête SQL.
Au moins j'aurais réussi à faire ce que je veux après tant d'heure passée dessus.
Par contre je compte bien comprendre la manière dont fonctionne phpboost pour travailler plus tard sur les infos que tu m'as donné.
A moins que tu me fournisse le tout clé en main mais ça serait trop facile
quoique 
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Code PHP :
$User->check_auth(unserialize($row['auth']), READ_CAT_FORUM)
Étudie déjà si le membre à le niveau ou non.Si oui il renvoi true si non il renvoi false. Donc après ta requête tu met une condition comme te l'as montré Ben, et tu met ton code dedans.
ohemeg Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre ohemeg
- Inscrit le : 09/12/2010
Dès que j'aurais fait ce que je veux à ma manière je le posterais
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie