Voilà je met à votre disposition une petite classe PHP pour gérer les flux RSS de son site : les ajouter, les éditer, les supprimer et en exploiter les données.
La classe a été complètement mis à jour donc ce post est une édition du poste initiale.
- - Héritage de la classe DOMDocument. (sous le conseil de moogli
)
- Documentation retouché. Celle ci est orientée uniquement développeur pour quelque chose de plus technique.
- Conformité totale du flux générer avec la norme W3C.
- Réorganisation des méthodes pour plus de souplesses.
- Ajout de l'exploitation du flux (lecture d'item(s), comptage d'items, récupération de certains item identifiés par un marqueur)
- Débugage de certains points
- N'utilise plus de DTD. Celle ci n'est plus nécessaire puisque les attributs id ne sont plus utilisés.
- Correction de l'ordre des nouveaux items qui lors d'un ajout, se rajouter à la fin du fichier, ces derniers sont maintenant ajouter au début du channel.
- ...
/**
* @name DOMFeedManager.class.php
* @version 1.1
* @author Maxime Elomari <[email protected]>
* @link : http://blog.maximeelomari.com
* @see http://blog.maximeelomari.com/actualites/Feedmanager,-la-classe-PHP-pour-gerer-les-flux-RSS-de-son-site-web-65
*/
/* METHODS */
DOMFeedManager extends DOMDocument {
__construct( [string $path_file] )
void DOMFeedManager::createFeed( void )
void DOMFeedManager::saveFeed( string $path = null )
void DOMFeedManager::addChannel( array $metas )
int DOMFeedManager::editChannel( $nodeName, mixed $nodeContent, array $newMetas )
int DOMFeedManager::deleteChannel( $nodeName, $nodeContent )
void DOMFeedManager::addItem( array $nodes )
int DOMFeedManager::editItem( $nodeName, $value, array $newNodes )
int DOMFeedManager::deleteItem( $nodeName, $nodeContent )
int DOMFeedManager::getItemNumber ( void )
array DOMFeedManager::getItem ( $nodeName = false,$nodeContent = false )
array DOMFeedManager::getDistinctNode ( $nodeName )
array DOMFeedManager::getItemOptions()
array DOMFeedManager::getChannelOptions()
void DOMFeedManager::setChannel ( string $nodeName, mixed $nodeContent )
void DOMFeedManager::setItem ( string $nodeName, mixed $nodeContent )
}
SOMMAIRE-------------
DOMFeedManager::__construct - Crée un nouvel objet DOMFeedManager
DOMFeedManager::createFeed - Crée un nouveau fichier XML de type RSS 2.0
DOMFeedManager::saveFeed - Sauvegarde les modifications apportés au fichier
DOMFeedManager::addChannel - Crée un nouveau channel
DOMFeedManager::editChannel - Edite un/des channel(s) existant
DOMFeedManager::deleteChannel - Supprime un/des channel(s)
DOMFeedManager::addItem - Crée un nouvel item
DOMFeedManager::editItem - Edite un/des item(s) existant
DOMFeedManager::deleteItem - Supprime un / des item(s)
DOMFeedManager::getItemNumber - Retourne le nombre d'items existants
DOMFeedManager::getItems - Retourne le contenu d'un ou des item
DOMFeedManager::getDistinctNode - Retourne les diffèrentes valeurs d'une même méta
DOMFeedManager::getItemOptions - Retourne la liste des balises autorisés pour un item
DOMFeedManager::getChannelOptions - Retourne la liste des balises autorisés pour un channel
DOMFeedManager::setChannel - Défini une balise pour la création d'un channel
DOMFeedManager::setItem - Défini une balise pour la création d'un item
EXEMPLES
------------
/* Défini le chemin du fichier 'feed.xml' à charger ou à enregistrer */
$feed = new DOMFeedManager('feed.xml');
/* Créer un nouveau fichier XML */
$feed->createFeed();
/* 1. Sauvegarde les modifications apportés au chemin du fichier donné lors de l'objet DOMFeedManager */
$feed->saveFeed();
/* 2. Sauvegarde les modifications apportés au fichier au chemin specifié */
$feed->saveFeed('../../feed.xml');
AJOUT, EDITION ET SUPPRESSION DE CHANNELS
--------------------------------------------------------
/* Défini la balise pubDate à la date actuelle, celle ci sera ajouté dans les paramètres,
lors d'un appel à la méthode DOMFeedManager::addChannel */
$feed->setChannel ('pubDate', time());
/* Ajoute un channel au flux avec les paramètres $nodes */
$nodes = array (
'title' => 'Blog de Maxime Elomari',
'description' => 'Des articles écrit par Maxime Elomari',
'link' => 'http://blog.maximeelomari.com/',
'category' => 'PHP',
'webMaster' => 'Maxime Elomari'
);
$feed->addChannel($nodes);
/* Edite le channel ayant comme 'title' : 'Blog de Maxime Elomari' avec les paramètres $newNodes */
$newNodes = array('title' => 'Blog de Maxime Elomari sur le PHP et un peu de tout');
$feed->editChannel('title','DOMFeedManager',$newNodes);
/* Supprime le channel ayant comme 'webMaster' : 'Maxime Elomari' */
$feed->deleteChannel('webMaster','Maxime Elomari');
AJOUT, EDITION ET SUPPRESSION D'ITEMS
-------------------------------------------------
/* Défini la balise pubDate à la date actuelle, celle ci sera ajouté dans les paramètres,
lors d'un appel à la méthode DOMFeedManager::addItem */
$feed->setChannel ('pubDate', time());
/* Ajoute un item au flux avec les paramètres $nodes */
$nodes = array (
'guid' => 26,
'title' => 'DOMFeedManager 1.1',
'description' => 'DOMFeedManager, une classe pour gérér ses flux RSS héritant de la classe DOMDocument',
'link' => 'http://blog.maximeelomari.com/actualites/Feedmanager,-la-classe-PHP-pour-gerer-les-flux-RSS-de-son-site-web-65',
'category' => 'PHP - Développement informatique',
'author' => '[email protected]'
);
$feed->addItem($nodes);
/* Edite l'item ou les items ayant comme 'guid' : '26' avec les paramètres $newNodes */
$newNodes = array (
'title' => 'DOMFeedManager, la version 1.1 Released',
'description' => 'Feedmanager change de nom et devient DOMFeedManager héritant maintenant directement de la classe DOMDocument',
'category' => 'Classe PHP',
);
$feed->editItem('guid', 26,$newNodes);
/* Supprime le channel ayant comme 'category' : 'Classe PHP' */
$feed->deleteItem('category','Classe PHP');
LECTURE DE FLUX
---------------------
/* Retourne le nombre d'items existants */
$nbItems = $feed->getItemNumber();
/* Retourne le contenu de l'item ayant comme guid la valeur 26 */
$items = $feed->getItems('id',26);
foreach($items[0] as $nodeName => $nodeContent)
{
echo $nodeName.' => '.$nodeContent.'<br />';
}
----------------------------Cet exemple affichera :
----------------------------
guid => 26
title => DOMFeedManager, la version 1.1 Released
description => Feedmanager change de nom et devient DOMFeedManager héritant maintenant directement de la classe DOMDocument
link => http://blog.maximeelomari.com/actualite ... ite-web-65
category => PHP - Développement informatique
author => contact[at]maximeelomari[dot]com
--------------------------
/* Retourne le contenu de tous les items */
$item = $feed->getItems();
foreach($item as $nodeName => $nodeContent)
{
echo $nodeName.' => '.$nodeContent.'<br />';
}
/* Retourne les diffèrentes valeurs d'une même $nodeName */
$feed->getDistinctNode('category');
/* Retourne la liste des balises autorisés pour un item */
$feed->getItemOptions();
/* Retourne la liste des balises autorisés pour un channel */
$feed->getChannelOptions();
Et pour télécharger la classe :https://github.com/Skw33d/DOMFeedManage ... anager-1.1