Liaison Blog Dotclear --> forum phpBB, Un billet sur le blog = un topic créé sur le forum |
Bienvenue invité ( Connexion | Inscription )
Liaison Blog Dotclear --> forum phpBB, Un billet sur le blog = un topic créé sur le forum |
13 Oct 2006, 18:35
Message
#1
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
Bonjour à tous
Exposé du problème : Soit un blog Dotclear (version 1.2.4) Soit un forum phpBB (version 2.1.7) Soit PEAR qui est à jour Soit la volonté que la création d'un billet sur le blog crée un topic sur le forum (à l'image de ce qui est installé ici sur MB entre news et forum) Avancée d'une solution possible Je suis parti d'un mod créé par netclectic. J'ai allégé la chose pour ne garder que ce qui m'intéressait. Le code du script est donc maintenant : CODE <?php define('IN_PHPBB', true); // modify this to point to your phpbb directory, relevent to this file. e.g. './phpBB2/' $phpbb_root_path = './'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'common.'.$phpEx); include($phpbb_root_path . 'mods/netclectic/includes/function_insert_post.'.$phpEx); // choose a user $user_id = 5; // initialise the userdata $sql = "SELECT * FROM " . USERS_TABLE . " WHERE user_id = $user_id"; if ( !($result = $db->sql_query($sql)) ) { message_die(CRITICAL_ERROR, 'Could not obtain lastvisit data from user table', '', __LINE__, __FILE__, $sql); } $userdata = $db->sql_fetchrow($result); init_userprefs($userdata); // update the users last visit time $current_time = time(); $sql = "UPDATE " . USERS_TABLE . " SET user_session_time = $current_time, user_session_page = " . PAGE_INDEX . ", user_lastvisit = $current_time WHERE user_id = $user_id"; if ( !$db->sql_query($sql) ) { message_die(CRITICAL_ERROR, 'Error updating last visit time', '', __LINE__, __FILE__, $sql); } $userdata['user_lastvisit'] = $last_visit; // pick a forum to add out post to $forum_id = 2; $message = stripslashes($HTTP_POST_VARS['message']); if ( $message != '' ) { $subject = stripslashes($HTTP_POST_VARS['subject']); $post_details = insert_post($message, $subject, $forum_id, $userdata['user_id'], $userdata['username'], $userdata['user_attachsig']); $url = append_sid($phpbb_root_path . 'viewtopic.' . $phpEx . '?' . POST_TOPIC_URL . '=' . $post_details['topic_id']); } else { echo '<form method="post"><input type="Text" size="50" name="subject" id="subject"/><br/><textarea cols="50" rows="10" name="message" id="message"></textarea><br/><input type="Submit"/></form>'; } ?> Quand je teste cette fonction via le script de test fourni avec le mod, tout fonctionne parfaitement. Le topic est créé au bon endroit, avec le bon user et toutes les tables phpBB sont correctement renseignées. Le script de test en question (allégé aussi) est le suivant : CODE <?php require_once("HTTP/Request.php"); $request =& new HTTP_Request("http://xxx.xxxxx.xxx/phpBBtest/test_insert_post2.php"); $request->setMethod("POST"); $request->addHeader('User-agent', $_SERVER['HTTP_USER_AGENT']); $request->addPostData("subject", $titre); $request->addPostData("message", $content); ?> C'est là que je bloque ! Il me reste à faire le lien entre Dotclear et phpBB via l'utilisation de ce script. C'est là où je coince Je suppose évidemment qu'il faut faire appel à ce script dans le fichier poster.php de Dotclear (fichier gérant la création de billets que j'ai mis en pièce jointe). Mais sous quelle forme et à quel endroit ? Cerise sur le gâteux Si au lieu d'utiliser un user "neutre" spécialement créé pour l'occasion (le "$user_id = 5;" du script) il y a un moyen de faire le lien entre compte de l'auteur sur le blog et compte de l'auteur sur le forum (chaque auteur sur le blog a son compte sur le forum), je suis preneur aussi Précautions d'usage Ça fait trois mois que je ne m'étais pas repenché sur le problème et j'y connais rien dans le domaine (j'ai déjà réalisé un exploit pour en arriver là ) donc merci de me causer simple Merci d'avance à vous pour votre aide
Fichier(s) joint(s)
|
|
|
13 Oct 2006, 18:58
Message
#2
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 594 Inscrit : 11 Nov 2005 Lieu : Var Membre no 49 761 |
Moins économique en ressources mais plus simple, faire un requête http avec des variables post
-------------------- Blog Jaune, un blog jaune :)
|
|
|
13 Oct 2006, 19:00
Message
#3
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(applemac @ 13 Oct 2006, 19:58) [snapback]1931073[/snapback] Moins économique en ressources mais plus simple, faire un requête http avec des variables post J'avais pourtant précisé de me causer simple Merci |
|
|
13 Oct 2006, 19:03
Message
#4
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 594 Inscrit : 11 Nov 2005 Lieu : Var Membre no 49 761 |
En gros, tu envois le formulaire d'ajout de nouveau sujet à partir de ton script php.
-------------------- Blog Jaune, un blog jaune :)
|
|
|
13 Oct 2006, 19:09
Message
#5
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
Je sens que t'es un bavard toi
C'est très sympa de t'intéresser à mon cas et je t'en remercie mais je ne comprends pas ce que tu souhaites m'expliquer. Désolé CITATION(applemac @ 13 Oct 2006, 20:03) [snapback]1931084[/snapback] En gros, tu envois le formulaire d'ajout de nouveau sujet à partir de ton script php. Quel formulaire ? Quel script .php (j'en ai 3 à priori dont je cause) ? Merci de prendre le temps de m'expliquer clairement, sinon c'est pas grave |
|
|
13 Oct 2006, 19:32
Message
#6
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 594 Inscrit : 11 Nov 2005 Lieu : Var Membre no 49 761 |
Vu ton script php compliqué, je pensais que tu t'y connaissais dans ce domaine
Bon, quand tu ajoute un sujet sur le forum, tu envois un formulaire. Ton navigateur envoi au serveur du forum de macbidouille des données contenant le titre du sujet, le message, ton pseudo, des codes de confirmation, etc… Tu n'es pas obligé de passer par un navigateur Un script php peut envoyer exactement les mêmes informations que ton navigateur. C'est pratique quand tu n'as pas besoin d'un accès à la base de donnée, ou si tu veux pouvoir changer le script de serveur comme tu veux. Un petit exemple en ruby CODE require 'net/http' headers = { 'Referer' => 'http://www.google.fr/', 'Content-Type' => 'application/x-www-form-urlencoded' } donnees = "donnee=test" connection = Net::HTTP.new('forum.macbidouille.com',80) envoi = connection.post('index.php',donnees,headers) puts envoi.body Ce message a été modifié par applemac - 13 Oct 2006, 19:33. -------------------- Blog Jaune, un blog jaune :)
|
|
|
13 Oct 2006, 19:44
Message
#7
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(applemac @ 13 Oct 2006, 20:32) [snapback]1931136[/snapback] Vu ton script php compliqué, je pensais que tu t'y connaissais dans ce domaine Je me suis contenté de couper des trucs qui ne m'intéressaient pas dans un script existant (je ne t'explique même pas le nombre de tests que j'ai dû faire pour en arriver là ) CITATION(applemac @ 13 Oct 2006, 20:32) [snapback]1931136[/snapback] C'est pratique quand tu n'as pas besoin d'un accès à la base de donnée, ou si tu veux pouvoir changer le script de serveur comme tu veux. Mais j'ai besoin d'un accès à la base de données pour que les tables soient correctement renseignées non ? CITATION(applemac @ 13 Oct 2006, 20:32) [snapback]1931136[/snapback] Un petit exemple en ruby Ça ressemble fortement au script de test dont je parlais (le deuxième dans mon message) non ? En tout cas, merci pour tes explications claires |
|
|
13 Oct 2006, 19:55
Message
#8
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 594 Inscrit : 11 Nov 2005 Lieu : Var Membre no 49 761 |
C'est le script du forum qui se charge de tout bien renseigner pour la base de donnée
-------------------- Blog Jaune, un blog jaune :)
|
|
|
13 Oct 2006, 20:01
Message
#9
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(applemac @ 13 Oct 2006, 20:55) [snapback]1931159[/snapback] C'est le script du forum qui se charge de tout bien renseigner pour la base de donnée OK, je pense avoir compris Donc en fait dans le script que j'ai récupéré, toute la partie concernant la mise à jour des tables et autres est inutile ? Mais ton script, de quelle façon puis-je l'utiliser ? Pour en revenir à ma question principale, comment Dotclear communique-t-il avec le forum phpBB pour lui indiquer de créer un nouveau topic ? Où installer ce script ? Le placer dans un dossier et l'appeler depuis le fichier poster.php? Le mettre dans le corps du fichier poster.php ? Merci pour ta patience |
|
|
14 Oct 2006, 09:12
Message
#10
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 594 Inscrit : 11 Nov 2005 Lieu : Var Membre no 49 761 |
CITATION Donc en fait dans le script que j'ai récupéré, toute la partie concernant la mise à jour des tables et autres est inutile ? Oui, pas besoin de tout çà CITATION Mais ton script, de quelle façon puis-je l'utiliser ? Pour en revenir à ma question principale, comment Dotclear communique-t-il avec le forum phpBB pour lui indiquer de créer un nouveau topic ? Où installer ce script ? Le placer dans un dossier et l'appeler depuis le fichier poster.php? Le mettre dans le corps du fichier poster.php ? Je n'ai jamais cherché à voir comment fonctionnait doctclear et phpbb. Là, je n'en ai aucune idée Peut-être une sorte de plugins Quelqu'un sait comment faire çà ? -------------------- Blog Jaune, un blog jaune :)
|
|
|
16 Oct 2006, 10:44
Message
#11
|
|
Adepte de Macbidouille Groupe : Membres Messages : 156 Inscrit : 20 Jan 2003 Lieu : Colombes Membre no 5 726 |
CITATION(Grognon @ 13 Oct 2006, 19:35) [snapback]1931033[/snapback] C'est là que je bloque ! Il me reste à faire le lien entre Dotclear et phpBB via l'utilisation de ce script. C'est là où je coince Je suppose évidemment qu'il faut faire appel à ce script dans le fichier poster.php de Dotclear (fichier gérant la création de billets que j'ai mis en pièce jointe). Mais sous quelle forme et à quel endroit ? pas forcément... personnellement, j'irai plutôt voir du côté des classes... par exemple dans dotclear\inc\classes\class.blog.php je rajouterais un fonction addPHPBBSubject( $titre,$subject,$post_id,$urlcible ) (post_id étant là pour éventuellement enrichir le contenu d'un lien vers dotclear, et url_cible pour ne pas polluer la classe avec des données variables) que j'appellerais après la fonction addpost dans le fichier poster.php. Concrètement : dans le fichier poster.php, rechercher addpost CODE # Insertion if (empty($post_id)) { if (($post_id = $blog->addPost($_SESSION['sess_user_id'],$titre,$titre_url,$chapo,$content, $notes,$cat_id,$format,$etat,$open_comment,$open_tb,$lang,$selected, $_SESSION['sess_user_delta'])) !== false) { if ($do_trackbacks) { $return_link = 'trackback.php?post_id='.$post_id.'&auto=1'; } else { $return_link = 'poster.php?post_id='.$post_id; } # AJOUT POUR PHPBB $blog->addPHPBBSubject($titre, $content, $post_id, "http://xxx.xxxxx.xxx/phpBBtest/test_insert_post2.php"); # FIN AJOUT PHPBB header('Location: '.$return_link); exit; } else { $err = $blog->error(1); } } et dans le fichier de classe CODE /** @function addPHPBBSubject Création d'un sujet correspondant à un billet dans un forum phpBB @param string titre Titre du billet @param string content Contenu @param integer id post_id de dotclear @param string url adresse d'envoi du formulaire */ function addPHPBBSubject($titre, $content, $post_id, $request_url) { require_once("HTTP/Request.php"); $request =& new HTTP_Request($request_url); $request->setMethod("POST"); $request->addHeader('User-agent', $_SERVER['HTTP_USER_AGENT']); $request->addPostData("subject", $titre); $request->addPostData("message", $content); } TSUNAMi rien de tout ça n'a été testé Ce message a été modifié par Tsunami - 16 Oct 2006, 10:55. -------------------- Ibook 14' G3 8OO - 30 Go - 640Mo RAM
Codeur fou |
|
|
16 Oct 2006, 10:46
Message
#12
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
Ah, une nouvelle piste ! Merci
J'essaye de regarder ça cet après-midi et je te tiens au courant |
|
|
17 Oct 2006, 00:56
Message
#13
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(Tsunami @ 16 Oct 2006, 11:44) [snapback]1934213[/snapback] et dans le fichier de classe CODE ( )snip( ) Quand j'intègre ce code dans le fichier class, j'ai soit : - Parse error: parse error in /Library/WebServer/Documents/blogtest/inc/classes/class.blog.php on line 3 - Parse error: parse error in /Library/WebServer/Documents/blogtest/inc/classes/class.blog.php on line (la première de ton code) Quel que soit l'endroit où je le place (je n'y connais rien donc je teste mais je fais quand même attention à le placer entre deux fonctions existantes sans couper le code de celles-ci ). J'ai raté quelque chose ? En tout cas, merci pour ton aide |
|
|
17 Oct 2006, 08:58
Message
#14
|
|
Adepte de Macbidouille Groupe : Membres Messages : 156 Inscrit : 20 Jan 2003 Lieu : Colombes Membre no 5 726 |
tu peux déjà commencé par virer les commentaires
CODE function addPHPBBSubject($titre, $content, $post_id, $request_url) { require_once("HTTP/Request.php"); $request =& new HTTP_Request($request_url); $request->setMethod("POST"); $request->addHeader('User-agent', $_SERVER['HTTP_USER_AGENT']); $request->addPostData("subject", $titre); $request->addPostData("message", $content); } et ainsi de suite pour identifier la ligne qui pose problème. Sinon je ne vois rien d'étrange d'autant plus si ton script marche par ailleurs, je n'ai fait qu'en reprendre le code dans une fonction juste vérifier l'accès au fichier Request.php, que le chemin relatif soit correct. sinon je peux regarder ce soir... à partir de 22h -------------------- Ibook 14' G3 8OO - 30 Go - 640Mo RAM
Codeur fou |
|
|
17 Oct 2006, 21:53
Message
#15
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(Tsunami @ 17 Oct 2006, 09:58) [snapback]1935663[/snapback] juste vérifier l'accès au fichier Request.php, que le chemin relatif soit correct. Argh ! Après quelques heures à essayer de comprendre plein de choses (déjà quand j'ouvre un dictionnaire, j'adore me perdre de renvoi en renvoi ; pour le PHP et autres, c'est encore pire car je n'y comprends rien mais je m'accroche quand même ), je relis pour la troisième fois ton message et je tombe sur ça qui pourrait expliquer bien des choses Je devrais donc avoir quelque part un fichier Request.php. C'est normal que je n'en trouve aucun ? |
|
|
17 Oct 2006, 23:22
Message
#16
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
Bon, j'essaye de comprendre cette histoire de Request.php que je ne trouve nulle part.
J'ai vérifié et PEAR est bien à jour pour ce qui concerne le package HTTP_Request (j'avais tout fait dans le Terminal tout seul comme un grand. Non non n'applaudissez pas ). Je vais voir sur http://pear.php.net, je télécharge apparemment le même package HTTP_Request (version 1.3.0) et là, pour le coup, j'ai un fichier Request.php dans le dossier décompressé. Qu'est-ce que dois-je faire quoi avec ? L'installation de PEAR et des packages nécessaires via le Terminal n'est donc pas suffisante ? |
|
|
18 Oct 2006, 09:01
Message
#17
|
|
Adepte de Macbidouille Groupe : Membres Messages : 156 Inscrit : 20 Jan 2003 Lieu : Colombes Membre no 5 726 |
CITATION(Grognon @ 18 Oct 2006, 00:22) [snapback]1936907[/snapback] Qu'est-ce que dois-je faire quoi avec ? juste mettre à jour le chemin relatif dans la classe blog. en clair dans CODE require_once("HTTP/Request.php"); la partie CODE "HTTP/Request.php" doit "mapper" le fichier dont tu disposes : ce pourrait très bien être CODE "racine/include/PEAR/HTTP/Request.php" (j'ai mis n'importe quoi, c'est un exemple...) si tu n'y arrives pas on peut essayer de résoudre ça en MP ou par MSN un de ces soirs. bon courage Ce message a été modifié par Tsunami - 18 Oct 2006, 09:02. -------------------- Ibook 14' G3 8OO - 30 Go - 640Mo RAM
Codeur fou |
|
|
18 Oct 2006, 11:28
Message
#18
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
Les packages et fichiers PEAR sont correctement installés (voir ce magnifiquer topic ).
Mon chemin relatif est bon. La vérité est donc ailleurs PS : je t'ai rajouté dans ma liste iChat |
|
|
4 Dec 2006, 15:45
Message
#19
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
CITATION(Tsunami @ 17 Oct 2006, 08:58) [snapback]1935663[/snapback] Sinon je ne vois rien d'étrange d'autant plus si ton script marche par ailleurs, je n'ai fait qu'en reprendre le code dans une fonction Ouais et c'est bien là le problème car ce script ne fonctionne pas Je me suis mélangé les pinceaux dans mon premier message (c'est ça quand on bosse quelques heures sur un truc sur six mois de temps ) Le premier script n'est pas la fonction insert_post mais le script de test. Le deuxième script est un essai sur lequel j'étais parti mais qui n'a jamais fonctionné. Je me repenche sur le problème depuis hhier soir et je viens de me rendre compte de l'erreur. Désolé pour le temps que je vous ai fait perdre C'est le code du premier script (dans mon premier message) qu'il faudrait intégrer dans une fonction |
|
|
13 Dec 2006, 17:18
Message
#20
|
|
Gumby Berrichon Groupe : Modérateurs Messages : 15 372 Inscrit : 5 Dec 2002 Membre no 5 011 |
C'est bon, j'ai trouvé une solution qui fonctionne parfaitement y compris la transformation HTML (Dotclear) --> BBcode (phpBB)
Un tuto récapitulatif arrivera dans quelques jours. Merci de votre aide |
|
|
24 Aug 2009, 08:36
Message
#21
|
|
Adepte de Macbidouille Groupe : Membres Messages : 256 Inscrit : 9 May 2002 Membre no 2 422 |
C'est bon, j'ai trouvé une solution qui fonctionne parfaitement y compris la transformation HTML (Dotclear) --> BBcode (phpBB) Un tuto récapitulatif arrivera dans quelques jours. Merci de votre aide Bonjour à tous, Je serais très intéressé par ce tuto DC2/PhpBB2 Si Grognon accepterait de reprendre ce fil Amicalement |
|
|
24 Aug 2009, 09:12
Message
#22
|
|
Modératurc cyclothymique !<br/>Burning Chrome Groupe : Ancien de la team Messages : 3 250 Inscrit : 12 Apr 2005 Lieu : Toulouse Membre no 36 979 |
Juste pour information, le couple WordPress/BBPress permet une intégration quasi-native (un plug-in permet en sus de synchroniser posts et commentaires entre le blog et le forum).
-------------------- |
|
|
Nous sommes le : 25th April 2024 - 06:04 |