[php5][classe] génération de flux rss 2.0

Soyez le premier à donner votre avis sur cette source.

Vue 15 005 fois - Téléchargée 869 fois

Description

Ce package de classes PHP5 permet de générer des flux RSS simples ou complexes.
Il gère tous les tags possibles d'un flux RSS 2.0.

Le package est composé de 5 classes :

abstract RSSFeedTools (outils de validation des informations)
abstract RSSFeedBase (classe permettant de partager les attributs / méthodes communs d'un flux et d'un item)
concrete RSSFeed (classe permettant d'instancier un nouveau flux RSS, dérive de RSSFeedBase)
concrete RSSFeedItem (classe permettant de construire un item de flux, dérive de RSSFeedBase)
concrete RSSFeedException (classe d'exception dérivant d'Exception)

De plus, j'ai rédigé une documentation complète (en anglais) et mis à disposition deux fichiers d'exemples.

Ci-dessous, un exemple de flux basique

Source / Exemple :


<?php

	// Import the RSSFeed class
	require_once('path/to/RSSFeed/RSSFeed.class.php');

	// MySQL Connection
	$connection = mysql_connect('localhost','root','example');
	mysql_select_db('website', $connection);
	
	try
	{
		// Create the new instance of the RSS Feed
		$rssFeed = new RSSFeed('utf-8');
		// Activate the string protection
		$rssFeed->setProtectString(true);
		// Set the feed title
		$rssFeed->setTitle('My blog : the best in the world');
		// Set the feed description
		$rssFeed->setDescription('A little blog, which talks about Web programming');
		// Set the feed link
		$rssFeed->setLink('http://www.mywebsite.com/blog/rss/posts.php');
		// Set the feed publication date
		$rssFeed->setPubDate('2007-08-01');
		// Set the feed last build date
		$rssFeed->setLastBuildDate(date('Y-m-d'));
		// Set the feed webmaster
		$rssFeed->setWebMaster('me@mywebsite.com','John Doe');
		// Set the feed managing editor
		$rssFeed->setManagingEditor('me@mywebsite.com','John Doe');
		// Set the feed image
		$rssFeed->setImage('http://www.mywebsite.com/image/logo.jpg','My Logo','My blog',100,200);
		
		// Adding items
		$request = mysql_query('SELECT post_id, post_title, post_description, post_author_email, post_author_name, post_date FROM post WHERE post_valid=1 LIMIT 10');
		
		while($row = mysql_fetch_object($request))
		{
			// Creating a new feed item
			$rssItem = new RSSFeedItem();
			$rssItem->setTitle($row->post_title);
			$rssItem->setDescription($row->post_description);
			$rssItem->setLink('http://www.mywebsite.com/blog/post.php?id='. $row->post_id);
			$rssItem->setGuid('http://www.mywebsite.com/blog/post.php?id='. $row->post_id, true);
			$rssItem->setComments('http://www.mywebsite.com/blog/post.php?id='. $row->post_id .'#comments');
			$rssItem->setAuthor($row->post_author_email, $row->post_author_name);
			$rssItem->setPubDate($row->post_date);
			
			// Add the item to the feed
			$rssFeed->appendItem($rssItem);
		}
		
		// Save the feed
		$rssFeed->save();
		
		// SQL connection closing
		mysql_close();
		
		// Send headers to the browser
		header('Content-Type: text/xml; charset=utf-8');
		// Display the feed
		$rssFeed->display();
	}
	catch(RSSFeedException $e)
	{
		echo $e->getErrorMessage();	
	}
?>

Conclusion :


Le reste est dans le ZIP ^^

Nécessite bien évidemment un serveur PHP5.

Documentation en ligne à cette adresse : http://www.apprendre-php.com/downloads/RSSFeed/documentation/index.html

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
ton zip est vide...
dans gestion, il n'y a pas que ecriture...

sinon, c'est domage de ne pas avoir fait des interfaces Feed, et des classes Rss et Atom par exemple...
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
1 -
Euh je viens de télécharger le zip et il y'a bien tous les fichiers... Etrange !

Oui je n'ai fait que de l'écriture. D'ailleurs je l'ai bien indiqué dans le titre de la source "Génération" et non "gestion".

Oui il faudrait que je fasse un de ces jours un couplage de cette classe et de ma classe de génération de flux Atom. Mais cette dernière n'est constituée que d'une classe. Il faudrait que je prenne le temps de la recoder de la même manière que celle-ci.

Merci pour ton commentaire ;)

PS : si tu veux downloader le zip, tu le trouver également ici : http://www.apprendre-php.com/RSSFeed/RSSFeed.zip

++
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
l'interet de la classe ici, c'est justement de generer soit un atom soit un rss, avec le meme code, juste en changeant le nom de la calsse
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
1 -
Oui je comprends bien. Mais le flux Atom dispose de bien plus d'éléments que le format RSS. Il faudrait faire une classe Feed qui prend soit RSS ou ATOM en paramètre de constructeur. En fonction de celui ci, on instancie soit l'une ou l'autre des classes et on retourne l'instance.
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Hello,

moi je suis d'accord avec Coucou : une petite abstraction, des classes étendues...ça reste des feeds quand même. Tu peux en effet passer par une méthode d'usinage comme tu le suggères, en plus. Mais vraiment, créer une classe d'abstraction au-dessus, et l'étendre pour générer des classes capable de créer d'autres feeds reste une bonne idée.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.