Annonce

Important, migration recommandée : WordPress 2.6.3 est disponible en français.À lire avant la migration !
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

Soph
Passionné WP
Lieu: WPmu 1.5.1
Date d'inscription: 18-04-2008
Messages: 162
Site web

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

  1. <?php
  2. /*
  3. Plugin Name: is connected to smf
  4. Plugin URI: http://www.wordpress-fr.net/support/post.php?tid=14365
  5. Description: Test si l'utilisateur est connect&eacute; au forum SMF pour faire un commentaire
  6. Version: 1.1
  7. Author: Soph
  8. Author URI: http://sporemania.com/
  9. */
  10.  
  11. function is_connected_to_smf() {
  12. global $smf_data;
  13.  
  14. require '/CHEMIN_ABSOLU/Settings.php'; // CHEMIN ABSOLU A CHANGER VERS LE FICHIER Settings.php du Forum
  15. $smf_data['autorise_guest'] = 1; // 0 = ne PAS autoriser les invités à poster des commentaires, 1 = autoriser les invités à poster des commentaires.
  16.  
  17. $ID_MEMBER=0;
  18. $smf_data['boardurl']=$boardurl;
  19. if (isset($_COOKIE[$cookiename]))
  20. {
  21.       $ZECOOKIE = stripslashes($_COOKIE[$cookiename]);
  22.       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);
  23.       $ID_MEMBER = $valeur[1];
  24.  
  25.     if (is_numeric($ID_MEMBER) && $ID_MEMBER>0)
  26.     {     
  27.       $latable = $db_name.'.'.$db_prefix.'members'; // pour se connecter à la table smf si une connexion sql existe deja sur une autre table
  28.       $sql = "SELECT passwd, passwordSalt, realName, emailAddress, websiteUrl, is_activated FROM $latable WHERE ID_MEMBER = '$ID_MEMBER' LIMIT 1";
  29.       $res  = mysql_query($sql);
  30.       $smf_data = mysql_fetch_array($res);
  31.      
  32.       if ($valeur[2]== sha1($smf_data['passwd'].$smf_data['passwordSalt']) && $smf_data['is_activated']==1)
  33.         {
  34.           $smf_data['ID_MEMBER'] = $ID_MEMBER;
  35.           return;
  36.         }
  37.       else
  38.         {
  39.         $smf_data['ID_MEMBER'] = 0;
  40.         return;
  41.         }
  42.     }
  43.     else
  44.     {
  45.       $smf_data['ID_MEMBER'] = 0;
  46.       return;
  47.     }
  48. }
  49. else
  50.   {
  51.   $smf_data['ID_MEMBER'] = 0;
  52.   }
  53.  
  54. }
  55. function ajoute_champs_hidden()
  56. {
  57.     global $smf_data, $user_ID;
  58.       if (!$user_ID && $smf_data["realName"]!='') {
  59.       echo '<p>Vous &ecirc;tes connect&eacute; avec le pseudo <strong>'.$smf_data["realName"].'</strong> du forum.</p>';
  60.       echo '<input type="hidden" name="author" id="author" value="'.$smf_data["realName"].'" tabindex="1">';
  61.       echo '<input type="hidden" name="email" id="email" value="'.$smf_data["emailAddress"].'" tabindex="2">';
  62.       echo '<input type="hidden" name="url" id="url" value="'.$smf_data["websiteUrl"].'" tabindex="3">';
  63.       }
  64. }
  65. ?>


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

  1. <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
  2. <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?></p>
  3. <?php else : ?>
  4.  
  5. <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
  6.  
  7. <?php if ( $user_ID ) : ?>
  8.  
  9. <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 &raquo;'); ?></a></p>
  10.  
  11. <?php else : ?>

par

Code: php

  1. <?php is_connected_to_smf(); global $smf_data; if ( get_option('comment_registration') && !$user_ID ) : ?>
  2. <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?></p>
  3. <?php elseif ($smf_data['autorise_guest'] == 0 && $smf_data['ID_MEMBER']<1) : echo '<p>Vous devez &ecirc;tre connect&eacute; 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 : ?>
  4.  
  5. <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
  6.  
  7. <?php if ( $user_ID ) : ?>
  8.  
  9. <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 &raquo;'); ?></a></p>
  10.  
  11. <?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)


http://www.sporemania.com/upload/images/1157883255p.png

Hors ligne

 

#27 08-06-2008 08:58:49

Soph
Passionné WP
Lieu: WPmu 1.5.1
Date d'inscription: 18-04-2008
Messages: 162
Site web

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

  1. <?php
  2. /*
  3. Plugin Name: is connected to PunBB/FluxBB
  4. Plugin URI: http://www.wordpress-fr.net/support/post.php?tid=14365
  5. Description: Test si l'utilisateur est connecteacute; au forum PunBB/FluxBB
  6. Version: 1.1
  7. Author: Soph
  8. Author URI: http://sporemania.com/
  9. */
  10.  
  11. function is_connected_to_punbb() {
  12. global $PunBB_data;
  13.  
  14. require '/CHEMIN_ABSOLU_PUNBB/config.php'; // CHEMIN ABSOLU A CHANGER VERS LE FICHIER config.php du Forum
  15. $PunBB_data['boardurl'] = 'http://monsite.tld/punbb'; // lien vers le forum
  16. $PunBB_data['autorise_guest'] = 1; // 0 = les invités ne peuvent pas poster, 1 = Les invités peuvent poster aussi.
  17.  
  18. $PunBB_data['id'] = 1;
  19. if (isset($_COOKIE[$cookie_name]))
  20. {
  21.     $ZECOOKIE = stripslashes($_COOKIE[$cookie_name]);
  22.     preg_match('~^a:2:\{i:0;s:[1-6]:"([0-9]{1,8})";i:1;s:32:"([a-fA-F0-9]{32})?";\}~', $ZECOOKIE, $valeurs);
  23.  
  24.     if (is_numeric($valeurs[1]) && $valeurs[1]>1)
  25.     {
  26.      
  27.       $latable = $db_name.'.'.$db_prefix.'users';
  28.       $sql = "SELECT username, password, email, url, activate_key FROM $latable WHERE id = '".intval($valeurs[1])."' LIMIT 1";
  29.       $res  = mysql_query($sql);
  30.       $PunBB_data = mysql_fetch_array($res);
  31.      
  32.       if (md5($cookie_seed.$PunBB_data["password"])==$valeurs[2] && $PunBB_data["activate_key"]==NULL)
  33.       {
  34.           $PunBB_data['id'] = $valeurs[1];
  35.           return;
  36.       }
  37.       else
  38.         {
  39.         $PunBB_data['id'] = 1;
  40.         return;
  41.         }
  42.     }
  43.     else
  44.     {
  45.       $PunBB_data['id'] = 1;
  46.       return;
  47.     }
  48. }
  49. else
  50.   {
  51.   $PunBB_data['id'] = 1;
  52.   }
  53.  
  54. }
  55. function ajoute_champs_hidden_punbb()
  56. {
  57.     global $PunBB_data, !$user_ID;
  58.       if (!$user_ID && $PunBB_data["username"]!='') {
  59.       echo '<p>Vous &ecirc;tes connect&eacute; avec le pseudo <strong>'.$PunBB_data["username"].'</strong> du forum.</p>';
  60.       echo '<input type="hidden" name="author" id="author" value="'.$PunBB_data["username"].'" tabindex="1">';
  61.       echo '<input type="hidden" name="email" id="email" value="'.$PunBB_data["email"].'" tabindex="2">';
  62.       echo '<input type="hidden" name="url" id="url" value="'.$PunBB_data["url"].'" tabindex="3">';
  63.       }
  64. }
  65. ?>


Etape 2: Modifier le fichier comments.php du thème

Remplacez :

Code: php

  1. <?php if ( get_option('comment_registration') && !$user_ID ) : ?>
  2. <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?></p>
  3. <?php else : ?>
  4.  
  5. <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
  6.  
  7. <?php if ( $user_ID ) : ?>
  8.  
  9. <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 &raquo;'); ?></a></p>
  10.  
  11. <?php else : ?>


par :

Code: php

  1. <?php is_connected_to_punbb(); global $PunBB_data; if ( get_option('comment_registration') && !$user_ID ) : ?>
  2. <p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.'), get_option('siteurl')."/wp-login.php?redirect_to=".urlencode(get_permalink()));?></p>
  3. <?php elseif ($PunBB_data['autorise_guest'] == 0 && $PunBB_data['id']<2) : echo '<p>Vous devez &ecirc;tre connect&eacute; 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 : ?>
  4.  
  5. <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
  6.  
  7. <?php if ( $user_ID ) : ?>
  8.  
  9. <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 &raquo;'); ?></a></p>
  10.  
  11. <?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)


http://www.sporemania.com/upload/images/1157883255p.png

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

Soph
Passionné WP
Lieu: WPmu 1.5.1
Date d'inscription: 18-04-2008
Messages: 162
Site web

Re: Coordonné avec un forum

Merci wink

D'autant que c'est adaptable à d'autre chose que les commentaires smile

à une page spécial du template ou un plugin wink


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)


http://www.sporemania.com/upload/images/1157883255p.png

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.20
© Copyright 2005-2006 WordPress France