Accueil
Forum PHPBoost
Développement
Développement du noyau
Un autre projet : affichage de la couleur du pseudo dans le forum
Forum PHPBoost
Développement
Développement du noyau
Un autre projet : affichage de la couleur du pseudo dans le forum
Forum PHPBoost
Salut à tous,
Un autre projet pour lequel j'ai besoin de votre aide.
Je veux être en mesure de récupérer la couleur des pseudos partout dans le forum. J'ai réussi à le faire lorsque l'on consulte un sujet, soit à la page du topic. Comment j'ai fait :
1. J'ai récupéré une fonction existante du fichier forum_functions.php :
Code PHP :
2. Par la suite, j'ai modifié le fichier topic.php pour inclure cette fonction. Grâce à la requête sql qui s'y trouve, ej pouvais récupérer la valeur des variables user_groups et level :
Code PHP :
De cette façon, ça fonctionne et je peux attribuer la couleur des pseudos (après avoir fait des modifs au fichier tpl et utiliser une nouvelle variable pour en extraire la couleur).
Par contre, si j'essaie de faire la même chose au niveau de l'index du forum, ça ne fonctionne pas. Voilà la requête sql que j'ai modifiée :
Code PHP :
Où j'ai ajouté la récupération de m.user_groups et m.level AS user_level de la table DB_TABLE_MEMBER. je ne vois pas pourquoi je suis incapble d'extraire la couleur. Serait à cause qu'il n'y a pas de leftjoin avec la table DB_TABLE_SESSIONS ?
Je sais, c'est ambitieux, mais j'aimerais bien réussir.
Merci à l'avance de votre aide.
Un autre projet pour lequel j'ai besoin de votre aide.
Je veux être en mesure de récupérer la couleur des pseudos partout dans le forum. J'ai réussi à le faire lorsque l'on consulte un sujet, soit à la page du topic. Comment j'ai fait :
1. J'ai récupéré une fonction existante du fichier forum_functions.php :
Code PHP :
$group_color = User::get_group_color($row['user_groups'], $row['level']); switch ($row['level']) //Coloration du membre suivant son level d'autorisation. { case -1: $status = 'visiteur'; break; case 0: $status = 'member'; break; case 1: $status = 'modo'; break; case 2: $status = 'admin'; break; }
2. Par la suite, j'ai modifié le fichier topic.php pour inclure cette fonction. Grâce à la requête sql qui s'y trouve, ej pouvais récupérer la valeur des variables user_groups et level :
Code PHP :
$result = $Sql->query_while("SELECT msg.id, msg.timestamp, msg.timestamp_edit, msg.user_id_edit, m.user_id, m.user_groups, p.question, p.answers, p.voter_id, p.votes, p.type, m.login, m.level, m.user_mail, m.user_show_mail, m.timestamp AS registered, m.user_avatar, m.user_msg, m.user_local, m.user_web, m.user_sex, m.user_msn, m.user_yahoo, m.user_sign, m.user_warning, m.user_readonly, m.user_ban, m2.login as login_edit, s.user_id AS connect, tr.id AS trackid, tr.pm as trackpm, tr.track AS track, tr.mail AS trackmail, msg.contents FROM " . PREFIX . "forum_msg msg LEFT JOIN " . PREFIX . "forum_poll p ON p.idtopic = '" . $id_get . "' LEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = msg.user_id LEFT JOIN " . DB_TABLE_MEMBER . " m2 ON m2.user_id = msg.user_id_edit LEFT JOIN " . PREFIX . "forum_track tr ON tr.idtopic = '" . $id_get . "' AND tr.user_id = '" . $User->get_attribute('user_id') . "' LEFT JOIN " . DB_TABLE_SESSIONS . " s ON s.user_id = msg.user_id AND s.session_time > '" . (time() - $CONFIG['site_session_invit']) . "' AND s.user_id != -1 WHERE msg.idtopic = '" . $id_get . "' ORDER BY msg.timestamp ...
De cette façon, ça fonctionne et je peux attribuer la couleur des pseudos (après avoir fait des modifs au fichier tpl et utiliser une nouvelle variable pour en extraire la couleur).
Par contre, si j'essaie de faire la même chose au niveau de l'index du forum, ça ne fonctionne pas. Voilà la requête sql que j'ai modifiée :
Code PHP :
$result = $Sql->query_while("SELECT c.id AS cid, c.level, c.name, c.subname, c.url, c.nbr_msg, c.nbr_topic, c.status, c.last_topic_id, t.id AS tid, t.idcat, t.title, t.last_timestamp, t.last_user_id, t.last_msg_id, t.nbr_msg AS t_nbr_msg, t.display_msg, m.user_id, m.login, [b]m.user_groups, m.level AS user_level[/b], v.last_view_id FROM " . PREFIX . "forum_cats c LEFT JOIN " . PREFIX . "forum_topics t ON t.id = c.last_topic_id LEFT JOIN " . PREFIX . "forum_view v ON v.user_id = '" . $User->get_attribute('user_id') . "' AND v.idtopic = t.id LEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = t.last_user_id WHERE c.aprob = 1 " . $display_sub_cat . " " . $unauth_cats . " ORDER BY c.id_left", __LINE__, __FILE__);
Où j'ai ajouté la récupération de m.user_groups et m.level AS user_level de la table DB_TABLE_MEMBER. je ne vois pas pourquoi je suis incapble d'extraire la couleur. Serait à cause qu'il n'y a pas de leftjoin avec la table DB_TABLE_SESSIONS ?
Je sais, c'est ambitieux, mais j'aimerais bien réussir.
Merci à l'avance de votre aide.
Oui c'est exact, il n'y a pas de jointure sur la table en question.
Rajoute ça à la suite des LEFT JOIN
Code SQL :
Je n'ai pas testé, si il y a une erreur, colle-la ici.
Rajoute ça à la suite des LEFT JOIN
Code SQL :
LEFT JOIN " . DB_TABLE_MEMBER . " m ON m.user_id = t.user_id
Je n'ai pas testé, si il y a une erreur, colle-la ici.
____________________
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++:
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."
Salut ben.popeye,
Ce n'est pas plutôt DB_TABLE_SESSIONS ?
Une fois testé et avoir cahngé l'alias m pour s comme tu me le propose (parce que ça créait une erreur), aucun effet. incapable d'extraire la couleur. Il me manque un truc et je ne vois pas quoi.
Edité par DaaX Le 16/02/10 à 21h12
Ce n'est pas plutôt DB_TABLE_SESSIONS ?

Une fois testé et avoir cahngé l'alias m pour s comme tu me le propose (parce que ça créait une erreur), aucun effet. incapable d'extraire la couleur. Il me manque un truc et je ne vois pas quoi.
Edité par DaaX Le 16/02/10 à 21h12
non c'est bien ca
T'as une erreur avec 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++:
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."
Une fois que j'ai changé l'alias, non.
En fait, ça ne change rien du tout. J'ai fait des tests de variable afin de voir si tout était ok. Ça me semble effectivement bien. Je crois avoir réussi pour l'index seulement avec cette fonction :
Code PHP :
J'ai modifié la variable $last ainsi :
Code PHP :
où j'ai ajouté ceci : ' style="color:' . $group_color . '"' . '" class="' . $status
Ça semble fonctionner sur ma plate-forme de test, mais je devrai faire d'autres tests avec la présence de plusieurs groupes.
Je vous tiens au jus.
En fait, ça ne change rien du tout. J'ai fait des tests de variable afin de voir si tout était ok. Ça me semble effectivement bien. Je crois avoir réussi pour l'index seulement avec cette fonction :
Code PHP :
$group_color = User::get_group_color($row['user_groups'], $row['user_level']); switch ($row['user_level']) //Coloration du membre suivant son level d'autorisation. { case -1: $status = 'visiteur'; break; case 0: $status = 'member'; break; case 1: $status = 'modo'; break; case 2: $status = 'admin'; break; }
J'ai modifié la variable $last ainsi :
Code PHP :
$last = '<a href="topic' . url('.php?id=' . $row['tid'], '-' . $row['tid'] . '+' . url_encode_rewrite($row['title']) . '.php') . '" class="small_link">' . $last_topic_title . '</a><br /> <a href="topic' . url('.php?' . $last_page . 'id=' . $row['tid'], '-' . $row['tid'] . $last_page_rewrite . '+' . url_encode_rewrite($row['title']) . '.php') . '#m' . $last_msg_id . '"><img src="../templates/' . get_utheme() . '/images/ancre.png" alt="" /></a> ' . $LANG['on'] . ' ' . gmdate_format('date_format', $row['last_timestamp']) . '<br />' . $LANG['by'] . ' ' . ($row['last_user_id'] != '-1' ? '<a href="../member/member' . url('.php?id=' . $row['last_user_id'], '-' . $row['last_user_id'] . '.php') . ' style="color:' . $group_color . '"' . '" class="' . $status . '">' . $row['login'] . '</a>' : '<em>' . $LANG['guest'] . '</em>');
où j'ai ajouté ceci : ' style="color:' . $group_color . '"' . '" class="' . $status
Ça semble fonctionner sur ma plate-forme de test, mais je devrai faire d'autres tests avec la présence de plusieurs groupes.
Je vous tiens au jus.
Salut tout le monde,
Ben voilà, après avoir modifié les requêtes des fichiers php ainsi que les variables correspondantes et avoir utilisé la fonction de colorisation, j'ai réussi à propager la couleur des pseudos dans tout le forum.
Merci à tous de votre aide.
Idéalement, je crois que pour la prochaine version, la couleur devrait faire partie de la table des membres.
Ben voilà, après avoir modifié les requêtes des fichiers php ainsi que les variables correspondantes et avoir utilisé la fonction de colorisation, j'ai réussi à propager la couleur des pseudos dans tout le forum.
Merci à tous de votre aide.
Idéalement, je crois que pour la prochaine version, la couleur devrait faire partie de la table des membres.
DaaX:
Non, la couleur est une valeur calculée en fonction des données de l'utilisateur, ce genre de champ ne se stocke pas en base de données.
Idéalement, je crois que pour la prochaine version, la couleur devrait faire partie de la table des membres.
Non, la couleur est une valeur calculée en fonction des données de l'utilisateur, ce genre de champ ne se stocke pas en base de données.
____________________
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++:
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."
Salut ben.popeye,
Je ne suis pas d'accord avec toi. Elle peut être stocké au moment de l'ajout/modification d'un utilisateur. Une fois la valeur stocké, il est facile de la passer en paramètre de la balise style.
Je ne suis pas d'accord avec toi. Elle peut être stocké au moment de l'ajout/modification d'un utilisateur. Une fois la valeur stocké, il est facile de la passer en paramètre de la balise style.
Je suis bien d'accord qu'elle peut-être stockée, mais conceptuellement, ce n'est pas une bonne chose de faire ça. Théoriquement, on ne doit pas stocker les champs calculés.
Le problème c'est pas au niveau de la base de données mais au niveau du framework qui devrait permettre d'obtenir directement la classe correspondante.
Le problème c'est pas au niveau de la base de données mais au niveau du framework qui devrait permettre d'obtenir directement la classe correspondante.
____________________
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++:
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."
Salut ben.popeye,
Tu as bien raison concernant les champs calculés parce que dans ce cas-ci, il l'est. Mais il n'est pas obligé d'être calculé. Si on le défini aux niveau de l'ajout/modificxation du membre, ce champ devient une donnée statique (un code de couleur).
Effectivement, il ne suffit pas que d'ajouter le champ dans la base. Le framework doit permettre de générer la couleur de chaque membre ainsi que son groupe. Un peu comme le fait phpbb.
Edité par DaaX Le 19/02/10 à 19h31
Tu as bien raison concernant les champs calculés parce que dans ce cas-ci, il l'est. Mais il n'est pas obligé d'être calculé. Si on le défini aux niveau de l'ajout/modificxation du membre, ce champ devient une donnée statique (un code de couleur).
Effectivement, il ne suffit pas que d'ajouter le champ dans la base. Le framework doit permettre de générer la couleur de chaque membre ainsi que son groupe. Un peu comme le fait phpbb.
Edité par DaaX Le 19/02/10 à 19h31
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie





PHPBoost

Support
Téléchargements
Développement
Communauté













