From 3c991809eed893c2ba6718c05c421ddb81f752bf Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Fri, 21 Oct 2005 21:03:31 +0000
Subject: [PATCH] la syndication tip-top (esperons !)

---
 backend.php3          |  4 ++++
 dist/backend.html     | 33 +++++++++++++++++++--------------
 ecrire/inc_sites.php3 | 20 +++++++++++---------
 3 files changed, 34 insertions(+), 23 deletions(-)

diff --git a/backend.php3 b/backend.php3
index 3554d7118c..2bdac9cb93 100644
--- a/backend.php3
+++ b/backend.php3
@@ -2,6 +2,10 @@
 $fond = "backend";
 $delais = 3600;
 
+// commentez cette ligne si vous preferez supprimer la production
+// du texte complet (valable dans le fichier dist/backend.html)
+$_GET['texte_complet'] = false;
+
 include ("inc-public.php3");
 
 ?>
diff --git a/dist/backend.html b/dist/backend.html
index 3f90901998..c3d6fc638f 100644
--- a/dist/backend.html
+++ b/dist/backend.html
@@ -1,6 +1,6 @@
 <?php
 	@header('Content-type: text/xml[; charset=(#CHARSET)]');
-	echo '<'.'?xml version="1.0" encoding="#CHARSET"?'.">\n";
+	echo '<'.'?xml version="1.0"[ encoding="(#CHARSET)"]?'.">\n";
 ?>
 <rss version="2.0"
 	xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -12,7 +12,7 @@
 	<link>#URL_SITE_SPIP/</link>
 	<description></description>
 	<language>#LANG</language>
-	<generator url="http://www.spip.net">SPIP</generator>
+	<generator>SPIP - www.spip.net</generator>
 
 [	<image>
 		<title>[(#NOM_SITE_SPIP|texte_backend)]</title>
@@ -22,6 +22,13 @@
 		[<width>(#LOGO_SITE_SPIP||extraire_attribut{width})</width>]
 	</image>
 ]
+
+[(#REM)
+	On diffuse la rubrique et les mots-cles a la mode RSS
+]		<BOUCLE_rubrique_rss(RUBRIQUES){id_rubrique}><category[ domain="(#URL_RUBRIQUE|url_absolue)"]>[(#TITRE|html_backend)]</category></BOUCLE_rubrique_rss>
+<BOUCLE_mots_rss(MOTS){id_article}>
+		<dc:subject>[(#TITRE|html_backend)]</dc:subject></BOUCLE_mots_rss>
+
 	<BOUCLE_un_article(ARTICLES){id_article}>
 	<item>
 		<title>[(#TITRE|supprimer_numero|texte_backend)]</title>
@@ -37,21 +44,20 @@
 	Le bloc qui suit diffuse la rubrique et les mots-cles
 	sous forme de "microformats"
 
-]<B_rubrique>- <BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
+]<BOUCLE_rubrique_mf(RUBRIQUES){id_rubrique}>-
 &lt;a href="[(#URL_RUBRIQUE|url_absolue)]" rel="category"&gt;[(#TITRE|texte_backend)]&lt;/a&gt;
-</BOUCLE_rubrique><B_mots>
-- <BOUCLE_mots(MOTS){id_article}{", "}>
-&lt;a href="[(#URL_MOT|url_absolue)]" rel="tag"&gt;[(#TITRE|texte_backend)]&lt;/a&gt;</BOUCLE_mots>
+</BOUCLE_rubrique_mf><B_mots_mf>
+/ <BOUCLE_mots_mf(MOTS){id_article}{", "}>
+&lt;a href="[(#URL_MOT|url_absolue)]" rel="tag"&gt;[(#TITRE|texte_backend)]&lt;/a&gt;</BOUCLE_mots_mf>
 
 		</description>
 
 [(#REM)
-	Lorsque ce fichier backend est appele avec un parametre ?full=1,
-	il diffuse aussi le texte integral de l'article, ce qui permet une
-	syndication plus riche.
-
-][(#ENV{full}|?{' ',''})
-		<content:encoded>[(#LOGO_ARTICLE|right||texte_backend)
+	Le bloc qui suit diffuse aussi le texte integral de l'article,
+	ce qui permet une syndication plus riche (mais plus "lourde").
+	Fonction desactivable en modifiant backend.php3
+][
+(#ENV{texte_complet}|?{' ',''})<content:encoded>[(#LOGO_ARTICLE|right||texte_backend)
 		][&lt;div class='rss_chapo'&gt;(#CHAPO|texte_backend)&lt;/div&gt;
 		][&lt;div class='rss_texte'&gt;(#TEXTE|texte_backend)&lt;/div&gt;
 		][&lt;hr /&gt;
@@ -62,8 +68,7 @@
 [(#REM)
 	Le bloc qui suit diffuse l'adresse des documents associes aux articles ;
 	ajouter par ex. {extension=mp3} pour limiter a un certain type de document.
-]
-		<BOUCLE_podcast(DOCUMENTS){id_article}{mode=document}{doublons}>[
+]		<BOUCLE_podcast(DOCUMENTS){id_article}{mode=document}{doublons}>[
 		<enclosure url="(#URL_DOCUMENT|url_absolue|unique)"[ length="(#TAILLE)"][ type="(#MIME_TYPE)"] />]
 		</BOUCLE_podcast>
 
diff --git a/ecrire/inc_sites.php3 b/ecrire/inc_sites.php3
index 4805d4c8df..372fb5c75d 100644
--- a/ecrire/inc_sites.php3
+++ b/ecrire/inc_sites.php3
@@ -316,7 +316,7 @@ function ajouter_tags($matches, $item) {
 	include_ecrire('inc_filtres.php3');
 	$tags = array();
 	foreach ($matches as $match) {
-		$type = $match[3];
+		$type = ($match[3] == 'category') ? 'category':'tag';
 		$mot = supprimer_tags($match[0]);
 		if (!$mot) break;
 		// rechercher un url
@@ -500,7 +500,13 @@ function analyser_backend($rss, $url_syndic='') {
 		',<(([a-z]+:)?(subject|category|keywords?|tags?))[^>]*>'
 		.'(.*?)</\1>,ims',
 		$item, $matches, PREG_SET_ORDER))
-			$data['tags'] = ajouter_tags($matches, $item);
+			$tags = ajouter_tags($matches, $item); # array()
+
+		// Trouver les pieces jointes <enclosure> (RSS)
+		if (preg_match_all(',<enclosure[[:space:]][^<>]+>,i',
+		$item, $matches, PREG_PATTERN_ORDER))
+			$data['enclosures'] = join(', ',
+				array_map('enclosure2microformat', $matches[0]));
 
 		$data['item'] = $item;
 
@@ -515,20 +521,16 @@ function analyser_backend($rss, $url_syndic='') {
 		if (preg_match_all(
 		',<a[[:space:]]([^>]+[[:space:]])?rel=[^>]+>.*</a>,Uims',
 		$data['item'], $regs, PREG_PATTERN_ORDER)) {
-			$data['tags'] = $regs[0];
+			$tags = $regs[0];
 		}
 		// Cas particulier : tags Connotea sous la forme <a class="postedtag">
 		if (preg_match_all(
 		',<a[[:space:]][^>]+ class="postedtag"[^>]*>.*</a>,Uims',
 		$data['item'], $regs, PREG_PATTERN_ORDER))
-			$data['tags'] = preg_replace(', class="postedtag",i',
+			$tags = preg_replace(', class="postedtag",i',
 			' rel="tag"', $regs[0]);
 
-		// Trouver les pieces jointes <enclosure> (RSS)
-		if (preg_match_all(',<enclosure[[:space:]][^<>]+>,i',
-		$item, $matches, PREG_PATTERN_ORDER))
-			$data['enclosures'] = join(', ',
-				array_map('enclosure2microformat', $matches[0]));
+		$data['tags'] = $tags;
 
 		$articles[] = $data;
 	}
-- 
GitLab