Archives FluxBB.fr

Les archives de FluxBB.fr

Recherche rapide

Vous n'êtes pas identifié(e).

Version 1.4.13 : [.tar.gz][.zip] (maj 20/10/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)

Branche 1.5.x : fluxbb.org

Version 1.2.24 fr (entièrement en français) : [.zip] (maj 26/08/2011)
Pack langue française pour 1.2.x : [.zip] [.rar] (maj 15/10/2006)

Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :

#1 11-09-2008 15:30:11

John Bour
Nouveau Membre

Recuperer des flux RSS distant dans un forum

Salut,

J'ai vu le MOD Rss et les equivalents mais je n'arrive pas a trouver le fonctionnement inverse...

Pour faire simple, j'aimerais recuperer des flux distants et creer automatiquement un topic a chaque nouvel article pour lancer la discussion.

Connaitriez vous un systeme qui fait ça ?

Merci @ tous

Hors ligne

#2 11-09-2008 20:56:26

oldie-2
Habitué très actif

Re : Recuperer des flux RSS distant dans un forum

avec ce bout de code placé à l'endroit de ton choix, ça devrait le faire :

if (!$pun_user['is_guest'])
{
    $feed = "http://XXXXXXX"; //adresse du fil rss
    $rss = @simplexml_load_file($feed); 
    if ($rss !== false) 
    {
      $username = $pun_user['username'];
      $fid = X // id du forum où doit s'insérer le topic
      foreach ($rss->channel->item as $item) 
      { 
        $now = time();
        $subject = $item->title;
        $message = $item->description;
        // Create the topic
        $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
        $tid = $db->insert_id();
        // Create the post ("topic post")
        $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
      }
    }
 }

J'en ferai une extension pour la version 1.3, si ça interesse un certain nombre de personnes

Hors ligne

#3 11-09-2008 22:42:58

Amigo41
Habitué

Re : Recuperer des flux RSS distant dans un forum

ouai je suis prenneur moi aussi happy

Hors ligne

#4 12-09-2008 09:42:00

John Bour
Nouveau Membre

Re : Recuperer des flux RSS distant dans un forum

Super, ça semble effectivement nickel et me reste plus qu'a faire quelques tests avec un cron par exemple wink

Merci

Hors ligne

#5 12-09-2008 09:50:03

oldie-2
Habitué très actif

Re : Recuperer des flux RSS distant dans un forum

1 petite remarque tout de même : il faut ajouter un petit bout de code pour vérifier que le topic n'est pas déja créé en testant par exemple le titre et la date avant de créer le topic pour éviter les doublons

Hors ligne

#6 12-09-2008 10:43:47

John Bour
Nouveau Membre

Re : Recuperer des flux RSS distant dans un forum

Effectivement, j'avais ça en tete avec en plus un preg_match pour trier en fonction de mots clefs

Hors ligne

#7 31-01-2009 17:11:09

hbennis
Nouveau Membre

Re : Recuperer des flux RSS distant dans un forum

Super, vraiment intéressé moi aussi ! J'ai même essayé à l'instant mais j'obtiens un "Parse error: syntax error, unexpected T_FOREACH in /mnt/165/sdb/3/b/espace.psychosocio/forums-psychosociologie/nouveautes-annuaires.php on line 18" avec le code suivant (exclusivement basé sur le code générique proposé et intégré à une page punbb type) :

<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
if ($pun_user['g_read_board'] == '0')
    message($lang_common['No view']);
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / TITRE DE LA PAGE';
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';

if (!$pun_user['is_guest'])
{
    $feed = "http://psychosociologie.objectis.net/annuaires/search_rss?SearchableText=&Title=&Description=&created%3Adate=1970%2F02%2F01+00%3A00%3A00+GMT&created_usage=range%3Amin&pt_toggle=%23&portal_type%3Alist=Link&Creator=&submit=Rechercher"; //adresse du fil rss
    $rss = @simplexml_load_file($feed); 
    if ($rss !== false) 
    {
      $username = $pun_user['username'];
      $fid = 14 // id du forum où doit s'insérer le topic
      foreach ($rss->channel->item as $item) 
      { 
        $now = time();
        $subject = $item->title;
        $message = $item->description;
        // Create the topic
        $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
        $tid = $db->insert_id();
        // Create the post ("topic post")
        $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
      }
    }
 }
?>


<div id="announce" class="block"><h2>Nouveautés des Annuaires ont été chargées ?</h2>
<div class="box">
<div class="inbox">

</div>
</div>
</div>

<?php require PUN_ROOT.'footer.php';

Voulez-vous bien me dire ce que vous en pensez (outre le fait que je ne maitrise vraiment pas php de toute évidence ... hmm) ?

Hors ligne

#8 31-01-2009 17:41:47

Mpok
Néo Admin

Re : Recuperer des flux RSS distant dans un forum

Il manque un ; après "$fid = 14"


Life is a struggle, programming is a suffer.

Hors ligne

#9 31-01-2009 18:00:06

hbennis
Nouveau Membre

Re : Recuperer des flux RSS distant dans un forum

ok Merci Mpok, rectifié depuis mais si le code est à présent correct, la page s'affiche (le html prévu) mais j'ai l'impression qu'il ne se produit rien :

1. les topics ne sont pas créés (quelque soit le forum que j'utilise en variable fid : j'ai essayé avec forums avec différents droits admin/membre/guest, rien ne change) ;
2. aucun des messages d'erreur prévus ('Unable to create topic' ... etc) ne n'affiche pour autant.

huh A quel endroit pensez-vous que je dois insérer le script dans ma page punbb pour qu'il ait une chance de fonctionner ? C'est sans doute ça que j'ai loupé, même si oldie-2 indiquait dans son post que l'on pouvait le faire "à l'endroit de [s]on choix" ..

EDIT du 01-02-2009 : j'ai enlevé le "@" devant la fonction simplexml (je ne sais pas si c'était indispensable pour qu'elle s'exécute) et modifié le htaccess de mon forum pour passer sous php5 (je suis chez free et j'était encore en php4 par défaut) afin que la fonction soit prise en compte (créée sous php5 d'après ce que j'ai pu lire via mes recherches sur google), mais cela ne change rien au constat en 2 point ci-dessus ...

Dernière modification par hbennis (01-02-2009 12:29:35)

Hors ligne

#10 01-02-2009 15:31:25

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

je suis aussi très intéresser par ce mod ...
pour intégrer des articles d'un blog wordpress à mon forum ..

Hors ligne

#11 01-02-2009 17:57:31

Lyconide
Habitué

Re : Recuperer des flux RSS distant dans un forum

hbennis a écrit :

EDIT du 01-02-2009 : j'ai enlevé le "@" devant la fonction simplexml (je ne sais pas si c'était indispensable pour qu'elle s'exécute) et modifié le htaccess de mon forum pour passer sous php5 (je suis chez free et j'était encore en php4 par défaut) afin que la fonction soit prise en compte (créée sous php5 d'après ce que j'ai pu lire via mes recherches sur google), mais cela ne change rien au constat en 2 point ci-dessus ...

Une précision au niveau du '@', il permet de ne pas afficher les erreurs de la fonction, si erreur il y a. Donc pour le coup, ça n'est pas gênant pour l'exécution du code (je dirais au contraire, ça aurait pu permettre de voir une éventuelle erreur tongue)

2. aucun des messages d'erreur prévus ('Unable to create topic' ... etc) ne n'affiche pour autant.

Appriori, s'il n'affiche aucun message, c'est peut être qu'il ne trouve aucun item (variable "$rss->channel->item" qui serait en cause), et donc pour le coup la fonction simplexml_load_file qui ne ferait pas ce qu'il faut. (et donc la variable $rss qui serait vide ou un truc du genre...)
*a pas testé le script*

Hors ligne

#12 01-02-2009 18:21:26

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

je viens de tester même problème.. .. le lien rss doit ce finir par .xml ou pas ?

edit 1 : j'ai enlever le @ et voici les erreur :

Warning: simplexml_load_file() [function.simplexml-load-file]: URL file-access is disabled in the server configuration in /homepages/2/d196531865/htdocs/forum/rssrk.php on line 13

Warning: simplexml_load_file(http://renkei.fr/blog/feed/) [function.simplexml-load-file]: failed to open stream: no suitable wrapper could be found in /homepages/2/d196531865/htdocs/forum/rssrk.php on line 13

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://renkei.fr/blog/feed/" in /homepages/2/d196531865/htdocs/forum/rssrk.php on line 13

edit 2 : ok j'ai résolu ce problème en mettant un allow_url_fopen = On dans mon php.ini mais ça ne marche toujours pas tongue les erreurs on disparu mais aucun topic n'est crée ..

edit 3 : (oai je  flood l'edit tongue) donc en faite sa marche mais dans la home du forum les topic ne sont pas comptabiliser les compteurs sont à zero , une fois que on entre dans le forum la les topic sont bien visible ! donc sa marche ! mais il y a encore un problème pour les images et les caractères  spéciaux .

et surtout le bug le plus genant les topic sont re-crée a chaque fois donc faudrait vérifier si les topic sont déjà la ou pas

Dernière modification par renkei (01-02-2009 18:35:43)

Hors ligne

#13 01-02-2009 18:34:38

Lyconide
Habitué

Re : Recuperer des flux RSS distant dans un forum

J'ai testé avec le lien rss que tu avais fournis hbennis (sur http://psychosociologie.objectis.net)

En fait, il faut faire une petite modification :

foreach ($rss->channel->item as $item)

par :

foreach ($rss->item as $item)

Ça devrait déjà être mieux.
(edit : d'ailleurs, j'pense que cette modif est à faire parce que c'est pas vraiment un fichier rss ton lien, ou alors il est mal formé tongue)

@renkei : Ton problème a l'air différent encore, il semblerait qu'au niveau de la configuration de ton serveur, tu ne puisses pas faire d'include de fichier externe.
C'est en tout cas ce qu'indique le premier message d'erreur apparemment. :-/

Dernière modification par Lyconide (01-02-2009 19:19:21)

Hors ligne

#14 01-02-2009 18:36:40

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ouep problème résolu enfin sauf tous les autres bug (j'ai édité mon message)

Dernière modification par renkei (01-02-2009 18:58:31)

Hors ligne

#15 01-02-2009 20:44:03

oldie-2
Habitué très actif

Re : Recuperer des flux RSS distant dans un forum

@hbennis :
1: pour que ça marche, il faut que le flux RSS soit valide, un flux sans la balise channel n'est pas valide
2: je persiste et signe que ce code peut-être mis n'importe où à condition qu'il se situe après l'include de common.php
2: il faudra remettre le @ après simplexml_load_file lors du passage en prod
3: désolé pour l'oubli du ; et merci à Mpok

renkei a écrit :

et surtout le bug le plus genant les topic sont re-crée a chaque fois donc faudrait vérifier si les topic sont déjà la ou pas

J'avais prévenu dans un de mes posts wink

oldie-2 a écrit :

1 petite remarque tout de même : il faut ajouter un petit bout de code pour vérifier que le topic n'est pas déja créé en testant par exemple le titre et la date avant de créer le topic pour éviter les doublons

Hors ligne

#16 01-02-2009 21:36:51

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

j'y connais rien, mais ya t'il un moyen de modifier les articles RSS lors du passage sur le forum afin de mettre les balises IMG pour les images et URL pour les liens ?

Hors ligne

#17 01-02-2009 23:08:42

Lyconide
Habitué

Re : Recuperer des flux RSS distant dans un forum

C'est cette fonction :

//
// Parse message text
//
function parse_message($text, $hide_smilies);

En gros tu remplaces :

$message = $item->description;

Par :

$message = parse_message($item->description, 0);

Hors ligne

#18 01-02-2009 23:32:38

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

mm il me dit qu'il ne connait pas ça ..

Fatal error: Call to undefined function parse_message()

je doit la defenir ou la fonction ?

Dernière modification par renkei (01-02-2009 23:35:00)

Hors ligne

#19 01-02-2009 23:36:28

Lyconide
Habitué

Re : Recuperer des flux RSS distant dans un forum

Juste après :
require PUN_ROOT.'include/common.php';

Ajoute :
require PUN_ROOT.'include/parser.php';

Hors ligne

#20 01-02-2009 23:39:03

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

ca m'affiche tous le code html tongue mais aucune trace des images ..

si j'utilise un mod qui me permet d'afficher du html dans les topic ca peut marcher ?

edit : oai ca vire le code html (normal tongue)

mais par contre aucune trace des images ..

Dernière modification par renkei (01-02-2009 23:53:56)

Hors ligne

#21 02-02-2009 21:43:40

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

comment afficher les images de l'article en rss ?

Hors ligne

#22 03-02-2009 19:58:14

hbennis
Nouveau Membre

Re : Recuperer des flux RSS distant dans un forum

@Lyconide :

Merci pour tes conseils. Tu avais pointé le problème principal : mon flux est en rdf:rdf construit avec les "channel" et "items" nécessaire, donc il qui fonctionne normalement et il ne devrait pas y avoir besoin de remplacer le "foreach ($rss->channel->item as $item") mais il faut croire que la fonction simplexml_load_file préfère les flux rss:xml aux rdf:rdf huh ... Je vais donc modifier le code qui génère le flux sur mon Plone pour obtenir du rss:xml et utiliser tout ça.

@oldie-2

Merci d'avoir aussi répondu très rapidement à ma demande. Mon flux d'origine comportait bien une balise channel, mais c'est la nature elle-même du flux qui semble en cause (rdf ou pas) :

<rdf:RDF>
<channel rdf:about="http://psychosociologie.objectis.net/annuaires/search_rss">
<title>Annuaires de Psychosociologie.fr</title>
<link>http://psychosociologie.objectis.net</link>
<description>These are the search results for the query, showing results 1 to 7.</description>
<image rdf:resource="http://psychosociologie.objectis.net/logo.jpg"/>
<items>

...etc

Ta proposition était donc parfaite (on va pas pinailler pour un ";", surtout pas moi) puisque je suis parvenu à la mettre en pratique avec un autre flux (test réussi). Une fois que j'aurai codé le flux définitif à utiliser, il ne me restera donc plus qu'à me creuser les méninges pour essayer de faire un test sur le titre du topic (pour ne pas le re-créer s'il existe déjà).

@ renkei : désolé, peux pas t'aider pour l'instant (faudrait que j'avance en php), mais tes remarques m'ont aussi bien servi.

En résumé, ça c'est du forum réactif, chapeau à tous !

Dernière modification par hbennis (03-02-2009 20:02:53)

Hors ligne

#23 04-02-2009 00:27:12

Lyconide
Habitué

Re : Recuperer des flux RSS distant dans un forum

renkei a écrit :

comment afficher les images de l'article en rss ?

Ce sont des balises html <img> tout ce qu'il y a de plus normal ? (un petit exemple pour un noob en rss ? big_smile) Parce que je vois une balise <image> dans l'exemple de hbennis, mais comme c'est pas au niveau des items, j'me dis que c'est peut être autre chose tongue

Dernière modification par Lyconide (04-02-2009 00:27:30)

Hors ligne

#24 04-02-2009 18:10:49

renkei
Membre

Re : Recuperer des flux RSS distant dans un forum

nan mais quand les articles passe du flux rss au topic sur le forum les images disparaissent .. voila le code du script :

<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
require PUN_ROOT.'include/parser.php';
if ($pun_user['g_read_board'] == '0')
    message($lang_common['No view']);
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / maj des articles';
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';

if (!$pun_user['is_guest'])
{
    $feed = "http://renkei.fr/blog/feed/"; //adresse du fil rss
    $rss = simplexml_load_file($feed); 
    if ($rss !== false) 
    {
      $username = $pun_user['username'];
      $fid = 13; // id du forum où doit s'insérer le topic
      foreach ($rss->channel->item as $item) 
      { 
        $now = time();
        $subject = $item->title;
        $message = parse_message($item->description, 0);        
        // Create the topic
        $db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
        $tid = $db->insert_id();
        // Create the post ("topic post")
        $db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
      }
    }
 }
?>


<div id="announce" class="block"><h2>Article update ?</h2>
<div class="box">
<div class="inbox">

</div>
</div>
</div>

<?php require PUN_ROOT.'footer.php';

Hors ligne

#25 04-02-2009 20:11:21

oldie-2
Habitué très actif

Re : Recuperer des flux RSS distant dans un forum

Je pense qu'il faut d'abord transformer le HTML en BBCode avant parse_message. Il existe peut-être une fonction de FluxBB qui fait ça, je n'ai pas regardé ...

Hors ligne

Pied de page des forums