Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » Version future » » Flux RSS  
AuteurFlux RSS
PhilGuen
932      

PhilGuen
  Posté : 29-02-2012 08:24

Pour afficher les flux RSS, j'ai utilisé la librairie fil_le.

Comme je ne suis qu'un "bidouilleur" et non un vrai programmeur, mon code est sans doute assez folklo, mais il fonctionne. Il est sans doute possible de l'améliorer pour l'intégrer à NPDS.

Voici ce que j'ai fait

dans header_before.inc


if (file_exists("modules/fil_le/lecteurRSS.php")) !include!_once("m odules/fil_le/lecteurRSS.php");



code de lecteurRSS.php



<?php    
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers& nbsp;RSS/RDF/Atom
// Dominique WOJYLAC < http://wojylac.free.fr>
// Distribué sous GNU General Public License. < br />// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />// fonction destinée à nettoyer le texte r écupéré
// que l'on pourrait séparer de ce code&nb sp;en la mettant dans un fichier à inclure < br />
function clean_text($text$encodage '',$long) {
    if ($encodage == 'utf-8') {
        $text = utf8_decode ($text);
    }
    $avant = array(
        '&lt;',
        '&gt;',
        '&quot;',
        '&amp;',
        '|@|' // pour  traitement correct des caractères spéciaux préalableme nt remplacés (voir plus bas)
        );
    $apres = array(
        '<',
        '>',
        '"',
        '&',
        '&#'
        );
    $text = substr(str_replace($avant, $ap res, $text),0,$long).' ...';
    return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage,$long,$block_title)&nbs p;{
// chemin relatif vers le dossier cache
// le répertoire "cache" doit être autorisé&nbs p;en écriture
// ne pas oublier / à la fin
$dir_cache = './cache/';

// nom du fichier mis en cache
//$file_cache = 'flux.html';
$url_explode = explode('/',$flux); 
$file_cache = ($url_explode[2]).'.html';

if (!is_dir($dir_cache)) {
    exit ('Répertoire cache "'.$dir_cache. '" inexistant !');
}

!include!_once('rss_read.inc.php'); 
$rss = new rss_read();
//$flux = ' http://npds.org/backend.php'; //adresse du flux passée par la fonction.
// voir la doc pour cette fonction
$date_modif = $rss -> get_last_modified($flux);

if ($date_modif > 0) {
    // le serveur distant a reto urné une date de dermière modification
    // on remettra à jour immédi atement en cas de modification postérieure
    // à la date du fichier  ;en cache
    $delai = 0;
}
else {
    // on impose la mise à  jour avec une certaine periodicité
    $date_modif = time();
    // le delai entre deux rafra ichissements en secondes à régler suivant le  ;type de fil ici 2 heures
    //$delai = 600; //délai passé&nbs p;par la fonction
}

// le fichier est-il en cache et suffisamm ent jeune
$file_cache = $dir_cache.$file_cache;
$en_cache = file_exists($file_cache);
if ($en_cache) {
    $en_cache = ($date_modif < fil emtime($file_cache) + $delai);
}

if (!$en_cache) {
    // il est considéré comme n' étant pas en cache on le génére
    $content = '';
    
    // caractères parasites pouvant ê tre contenus dans le fils rss et à remp lacer par d'autres
    // doit être invoqué avant p arsefile
    // cette fonction est optionnelle  et ne doit être utilisée que pour cert ains fils.
    $avant = array('&#','&bull;');
    $apres = array('|@|','-');
    $rss -> to_replace_with($avant, $ap res);

    // parser le fichier news
    $res = $rss -> parsefile($flux );
    
    if ($res) {
        $encode = $rss  ;-> get_encoding();
        
        // recupération des  données sur le channel
        $channel = $rss&nbs p;-> get_channel();
    
        // nombre d'items&n bsp;
        if ($nbnews >&nb sp;$rss -> get_num_items()) $nbnews =  $rss&nb sp;-> get_num_items(); // nombre de news à&nbs p;afficher passé par la fonction
        
        // recup array  ;des données 
        $items = $rss  -> get_items();
        if ($items) {
            $cont ent .= '<ul>';
            for($ i = 0; $i < $nbnews; $i++) { 
              ;   if ($affichage == '1') {
              ;       $content .= '<li>&nb sp;'.$items[$i]['link'].'</li>'."\n";
              ;   } else {
              ;       $content .= '<li>&nb sp;<a href="'.$items[$i]['link'].'" target="_blank" class="noir">'.clean_text($items[$i]['title'], $encode, $long).'&l t;/a></li>'."\n";
              ;   }
            }
            $cont ent .= '</ul>';
        }
        // affichage site,& nbsp;url, description 
        $content .=  ' <p align = \'right\'><a href="'. $channel['li nk'].'" target="_blank" class="noir"> Lire la suite ...</a></p>';
    } // fin if $rss
    
    $fd = fopen($file_cache, "w");
    fputs($fd, $content);
    fclose($fd);
} else {
        //Ouverture du fich ier en lecture seule
        $handle = fopen($fi le_cache, 'r');
        //Si on a réus si à ouvrir le fichier
        if ($handle)
        {
            $cont ent = '';
            //Tan t que l'on est pas à la fin du fic hier
            while  (!feof($handle))
            {
              ;   //On lit la ligne courante  &n bsp; 
              ;   $content .= fgets($handle);
            }
            //On& nbsp;ferme le fichier
            fclos e($handle);
        } else {
            $cont ent = 'Erreur de lecture du fichier en  cache';
        }
} // fin if !$en_cache
themesidebox($block_title,$content);
} // fin de fonction
?>




et enfin, dans chaque block devant afficher un fil



function#lit_RSS
params# http://gghsm.forumpro.fr/rss,600,5,0,15,GGHSM



A améliorer

- le passage du titre du block autrement que par l'appel de la fonction et sans doute plein d'autres choses.

- la lecture du flux un peu spécial de PedifreeDataBase dont le "link" contient déjà les balises http://la news> ma news alors que pour les flux "normaux" on reconstitue l'adresse.

- la gestion du nom des fichiers cache

Amusez-vous bien

  Profil  E-mail  www  Citation   
  
Sauter à :

Temps : 0.0108 seconde(s)