Vous n'êtes pas identifié.
Annonce
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
#26 07-06-2008 13:30:51
Re: Coordonné avec un forum
Comme je pense que ca peux intéresser d'autres personnes, je donne le code pour SMF
(suivra le code pour PunBB/FluxBB dans la soirée ou demain)
Nota: Les avatars du forum ne sont pas affichés (cela feras parti d'un futur plugin ou hack)
Etape 1 : Le plugin à installer dans plugins et à activer (ou mu-plugins si WPmu et sur tous les blogs)
(Ne pas oublier dedans de changer le chemin absolu)
Code: php
- <?php
- /*
- Plugin Name: is connected to smf
- Plugin URI: http://www.wordpress-fr.net/support/post.php?tid=14365
- Description: Test si l'utilisateur est connecté au forum SMF pour faire un commentaire
- Version: 1.1
- Author: Soph
- Author URI: http://sporemania.com/
- */
- function is_connected_to_smf() {
- global $smf_data;
- require '/CHEMIN_ABSOLU/Settings.php'; // CHEMIN ABSOLU A CHANGER VERS LE FICHIER Settings.php du Forum
- $smf_data['autorise_guest'] = 1; // 0 = ne PAS autoriser les invités à poster des commentaires, 1 = autoriser les invités à poster des commentaires.
- $ID_MEMBER=0;
- $smf_data['boardurl']=$boardurl;
- {
- preg_match('~^a:4:\{i:0;s:[1-6]:"([0-9]{1,8})";i:1;s:40:"([a-fA-F0-9]{40})";i:2;i:([0-9]{1,12});i:3;i:2;\}~', $ZECOOKIE, $valeur);
- $ID_MEMBER = $valeur[1];
- {
- $latable = $db_name.'.'.$db_prefix.'members'; // pour se connecter à la table smf si une connexion sql existe deja sur une autre table
- $sql = "SELECT passwd, passwordSalt, realName, emailAddress, websiteUrl, is_activated FROM $latable WHERE ID_MEMBER = '$ID_MEMBER' LIMIT 1";
- if ($valeur[2]== sha1($smf_data['passwd'].$smf_data['passwordSalt']) && $smf_data['is_activated']==1)
- {
- $smf_data['ID_MEMBER'] = $ID_MEMBER;
- return;
- }
- else
- {
- $smf_data['ID_MEMBER'] = 0;
- return;
- }
- }
- else
- {
- $smf_data['ID_MEMBER'] = 0;
- return;
- }
- }
- else
- {
- $smf_data['ID_MEMBER'] = 0;
- }
- }
- function ajoute_champs_hidden()
- {
- if (!$user_ID && $smf_data["realName"]!='') {
- echo '<p>Vous êtes connecté avec le pseudo <strong>'.$smf_data["realName"].'</strong> du forum.</p>';
- echo '<input type="hidden" name="author" id="author" value="'.$smf_data["realName"].'" tabindex="1">';
- echo '<input type="hidden" name="email" id="email" value="'.$smf_data["emailAddress"].'" tabindex="2">';
- }
- }
- ?>
Etape 2: Modifier le fichier comments.php du thème
(je ne sais pas faire par plugins cela, si quelqu'un sait, qu'il se manifeste ^^ )
Remplacez :
Code: php
- <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
- <?php else : ?>
- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
- <?php if ( $user_ID ) : ?>
- <p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Log out »'); ?></a></p>
- <?php else : ?>
par
Code: php
- <?php is_connected_to_smf(); global $smf_data; if ( get_option('comment_registration') && !$user_ID ) : ?>
- <?php elseif ($smf_data['autorise_guest'] == 0 && $smf_data['ID_MEMBER']<1) : echo '<p>Vous devez être connecté avec <a href="'.get_option('siteurl').'/wp-login.php?redirect_to='.urlencode(get_permalink()).'">votre compte wordpress</a> <a href="'.$smf_data['boardurl'].'/index.php?action=login" target=_blank>ou votre compte forum</a> pour laisser un commentaire.</p>'; else : ?>
- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
- <?php if ( $user_ID ) : ?>
- <p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Log out »'); ?></a></p>
- <?php elseif ($smf_data['ID_MEMBER'] > 0) : ajoute_champs_hidden(); else : ?>
Fonctionnement :
Si la personne est loggé à wordpress, son compte wordpress est utilisé pour poster un commentaire
Si la personne n'est pas loggé à wordpress (ou n'as pas de compte wordpress), son compte du Forum (si elle est loggé au forum) seras utilisé pour poster un commentaire.
Si aucun des deux seras affiché la boite de commentaire habituelle pour les invités.
Nota:
- Si vous désirez que les invités ne puissent pas poster, changez dans le plugin $smf_data['autorise_guest'] = 0;
- Vous ne devez pas avoir coché la case "Un utilisateur doit être enregistré et connecté pour publier des commentaires" pour que les "forumeurs" puissent poster des commentaires.
Nota2: Aucune vérification sur un éventuel Ban de l'IP ou du membre n'est fait.
Dernière modification par Soph (09-06-2008 23:20:02)
Hors ligne
#27 08-06-2008 08:58:49
Re: Coordonné avec un forum
Code PunBB/FluxBB
Etape 1 : Le plugin à installer dans plugins et à activer (ou mu-plugins si WPmu et sur tous les blogs)
(Ne pas oublier dedans de changer : le chemin absolu, le lien vers le forum, invités peuvent poster ou non)
Code: php
- <?php
- /*
- Plugin Name: is connected to PunBB/FluxBB
- Plugin URI: http://www.wordpress-fr.net/support/post.php?tid=14365
- Description: Test si l'utilisateur est connecteacute; au forum PunBB/FluxBB
- Version: 1.1
- Author: Soph
- Author URI: http://sporemania.com/
- */
- function is_connected_to_punbb() {
- global $PunBB_data;
- require '/CHEMIN_ABSOLU_PUNBB/config.php'; // CHEMIN ABSOLU A CHANGER VERS LE FICHIER config.php du Forum
- $PunBB_data['boardurl'] = 'http://monsite.tld/punbb'; // lien vers le forum
- $PunBB_data['autorise_guest'] = 1; // 0 = les invités ne peuvent pas poster, 1 = Les invités peuvent poster aussi.
- $PunBB_data['id'] = 1;
- {
- preg_match('~^a:2:\{i:0;s:[1-6]:"([0-9]{1,8})";i:1;s:32:"([a-fA-F0-9]{32})?";\}~', $ZECOOKIE, $valeurs);
- {
- $latable = $db_name.'.'.$db_prefix.'users';
- $sql = "SELECT username, password, email, url, activate_key FROM $latable WHERE id = '".intval($valeurs[1])."' LIMIT 1";
- {
- $PunBB_data['id'] = $valeurs[1];
- return;
- }
- else
- {
- $PunBB_data['id'] = 1;
- return;
- }
- }
- else
- {
- $PunBB_data['id'] = 1;
- return;
- }
- }
- else
- {
- $PunBB_data['id'] = 1;
- }
- }
- function ajoute_champs_hidden_punbb()
- {
- if (!$user_ID && $PunBB_data["username"]!='') {
- echo '<p>Vous êtes connecté avec le pseudo <strong>'.$PunBB_data["username"].'</strong> du forum.</p>';
- echo '<input type="hidden" name="author" id="author" value="'.$PunBB_data["username"].'" tabindex="1">';
- }
- }
- ?>
Etape 2: Modifier le fichier comments.php du thème
Remplacez :
Code: php
- <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
- <?php else : ?>
- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
- <?php if ( $user_ID ) : ?>
- <p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Log out »'); ?></a></p>
- <?php else : ?>
par :
Code: php
- <?php is_connected_to_punbb(); global $PunBB_data; if ( get_option('comment_registration') && !$user_ID ) : ?>
- <?php elseif ($PunBB_data['autorise_guest'] == 0 && $PunBB_data['id']<2) : echo '<p>Vous devez être connecté avec <a href="'.get_option('siteurl').'/wp-login.php?redirect_to='.urlencode(get_permalink()).'">votre compte wordpress</a> <a href="'.$PunBB_data['boardurl'].'/login.php" target=_blank>ou votre compte forum</a> pour laisser un commentaire.</p>'; else : ?>
- <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
- <?php if ( $user_ID ) : ?>
- <p><?php printf(__('Logged in as %s.'), '<a href="'.get_option('siteurl').'/wp-admin/profile.php">'.$user_identity.'</a>'); ?> <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log out of this account') ?>"><?php _e('Log out »'); ?></a></p>
- <?php elseif ($PunBB_data['id'] > 1) : ajoute_champs_hidden_punbb(); else : ?>
Fonctionnement :
Si la personne est loggé à wordpress, son compte wordpress est utilisé pour poster un commentaire
Si la personne n'est pas loggé à wordpress (ou n'as pas de compte wordpress), son compte du Forum (si elle est loggé au forum) seras utilisé pour poster un commentaire.
Si aucun des deux seras affiché la boite de commentaire habituelle pour les invités.
Nota :
- Si vous désirez que les invités ne puissent pas poster, changez dans le plugin $PunBB_data['autorise_guest'] = 0;
- Vous ne devez pas avoir coché la case "Un utilisateur doit être enregistré et connecté pour publier des commentaires" pour que les "forumeurs" puissent poster des commentaires.
Nota2: Comme pour le code SMF, aucune vérification sur un éventuel Ban de l'IP ou du membre n'est fait.
Dernière modification par Soph (08-06-2008 09:09:25)
Hors ligne
#28 08-06-2008 11:58:40
- Paulloz
- Connaisseur WP

- Date d'inscription: 09-05-2008
- Messages: 24
Re: Coordonné avec un forum
C'est plus que super là, c'est ... sublime !
Hors ligne
#29 08-06-2008 12:45:42
Re: Coordonné avec un forum
Merci 
D'autant que c'est adaptable à d'autre chose que les commentaires 
à une page spécial du template ou un plugin 
en appelant (pour smf) <?php is_connected_to_smf(); global $smf_data; if ($smf_data['ID_MEMBER'] > 0) { le code à executer } else echo "vous devez être connecté pour voir cela"; ?>
ou PunBB : <?php is_connected_to_punbb(); global $PunBB_data; if ($PunBB_data['id'] > 1) { le code à executer } else echo "vous devez être connecté pour voir cela"; ?>
Dernière modification par Soph (08-06-2008 12:48:13)
Hors ligne
