IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Liaison Blog Dotclear --> forum phpBB, Un billet sur le blog = un topic créé sur le forum
Options
Grognon
posté 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 smile.gif

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 ! tongue.gif
Il me reste à faire le lien entre Dotclear et phpBB via l'utilisation de ce script. C'est là où je coince confused5.gif
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 ? ohmy.gif

Cerise sur le gâteux tongue.gif
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 smile.gif

Précautions d'usage biggrin.gif
Ç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à tongue.gif) donc merci de me causer simple smile.gif

Merci d'avance à vous pour votre aide wink.gif

Fichier(s) joint(s)
Fichier joint  poster.php ( 19.27 Ko ) Nombre de téléchargements : 48
 
Go to the top of the page
 
+Quote Post
applemac
posté 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 biggrin.gif


--------------------
Blog Jaune, un blog jaune :)
Go to the top of the page
 
+Quote Post
Grognon
posté 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 biggrin.gif

blink.gif
J'avais pourtant précisé de me causer simple tongue.gif Merci wink.gif
Go to the top of the page
 
+Quote Post
applemac
posté 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 :)
Go to the top of the page
 
+Quote Post
Grognon
posté 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 tongue.gif

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é wink.gif

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 ? huh.gif
Quel script .php (j'en ai 3 à priori dont je cause) ? huh.gif

Merci de prendre le temps de m'expliquer clairement, sinon c'est pas grave smile.gif
Go to the top of the page
 
+Quote Post
applemac
posté 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 ph34r.gif
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 wink.gif
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 smile.gif
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 :)
Go to the top of the page
 
+Quote Post
Grognon
posté 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 ph34r.gif

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à tongue.gif)

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 ? huh.gif

CITATION(applemac @ 13 Oct 2006, 20:32) [snapback]1931136[/snapback]

Un petit exemple en ruby smile.gif

Ça ressemble fortement au script de test dont je parlais (le deuxième dans mon message) non ? huh.gif

En tout cas, merci pour tes explications claires smile.gif
Go to the top of the page
 
+Quote Post
applemac
posté 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 wink.gif


--------------------
Blog Jaune, un blog jaune :)
Go to the top of the page
 
+Quote Post
Grognon
posté 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 wink.gif


OK, je pense avoir compris smile.gif
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 smile.gif
Go to the top of the page
 
+Quote Post
applemac
posté 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 çà wink.gif

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 unsure.gif
Peut-être une sorte de plugins rolleyes.gif
Quelqu'un sait comment faire çà ?


--------------------
Blog Jaune, un blog jaune :)
Go to the top of the page
 
+Quote Post
Tsunami
posté 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 ! tongue.gif
Il me reste à faire le lien entre Dotclear et phpBB via l'utilisation de ce script. C'est là où je coince confused5.gif
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 ? ohmy.gif


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é blink.gif

Ce message a été modifié par Tsunami - 16 Oct 2006, 10:55.


--------------------
Ibook 14' G3 8OO - 30 Go - 640Mo RAM
Codeur fou
Go to the top of the page
 
+Quote Post
Grognon
posté 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 smile.gif

J'essaye de regarder ça cet après-midi et je te tiens au courant smile.gif
Go to the top of the page
 
+Quote Post
Grognon
posté 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 tongue.gif mais je fais quand même attention à le placer entre deux fonctions existantes sans couper le code de celles-ci wink.gif).
J'ai raté quelque chose ? unsure.gif

En tout cas, merci pour ton aide smile.gif
Go to the top of the page
 
+Quote Post
Tsunami
posté 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 laugh.gif
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 ph34r.gif



--------------------
Ibook 14' G3 8OO - 30 Go - 640Mo RAM
Codeur fou
Go to the top of the page
 
+Quote Post
Grognon
posté 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 biggrin.gif ), je relis pour la troisième fois ton message et je tombe sur ça qui pourrait expliquer bien des choses huh.gif

Je devrais donc avoir quelque part un fichier Request.php. C'est normal que je n'en trouve aucun ? ph34r.gif tongue.gif
Go to the top of the page
 
+Quote Post
Grognon
posté 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 tongue.gif ).
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 ?
Go to the top of the page
 
+Quote Post
Tsunami
posté 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
Go to the top of the page
 
+Quote Post
Grognon
posté 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 tongue.gif ).

Mon chemin relatif est bon. La vérité est donc ailleurs huh.gif

PS : je t'ai rajouté dans ma liste iChat wink.gif
Go to the top of the page
 
+Quote Post
Grognon
posté 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 laugh.gif


Ouais et c'est bien là le problème car ce script ne fonctionne pas ph34r.gif
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…) rolleyes.gif

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 sad.gif

C'est le code du premier script (dans mon premier message) qu'il faudrait intégrer dans une fonction ohmy.gif
Go to the top of the page
 
+Quote Post
Grognon
posté 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) smile.gif

Un tuto récapitulatif arrivera dans quelques jours. Merci de votre aide smile.gif
Go to the top of the page
 
+Quote Post
exaequo
posté 24 Aug 2009, 08:36
Message #21


Adepte de Macbidouille
*

Groupe : Membres
Messages : 256
Inscrit : 9 May 2002
Membre no 2 422



Citation (Grognon @ 13 Dec 2006, 18:18) *
C'est bon, j'ai trouvé une solution qui fonctionne parfaitement y compris la transformation HTML (Dotclear) --> BBcode (phpBB) smile.gif

Un tuto récapitulatif arrivera dans quelques jours. Merci de votre aide smile.gif

Bonjour à tous,

Je serais très intéressé par ce tuto DC2/PhpBB2 unsure.gif
Si Grognon accepterait de reprendre ce fil

Amicalement
Go to the top of the page
 
+Quote Post
greg57
posté 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).


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th April 2024 - 06:04