Valider 93d41845 rédigé par Fil's avatar Fil
Parcourir les fichiers

- de grosses modifs sur la syndication :
	* prend en compte les <source url="xxxx">titre</source> (RSS2)
	  -> resoud #35 , avec des idees inspirees par Stephane Laurent 
	* prend en compte la <lang> des articles (format a revoir...)
	* prend en compte les "tags" de del.icio.us, flickr, itunes etc
	* gestion de syndication "riche"

- au passage, utilisation massive de safehtml() lors de l'affichage des #DESCRIPTIF des articles syndiques (y compris dans l'espace prive)

- et de fil en aiguille aussi dans les forums

parent fffdc3b2
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+18 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -24,14 +24,26 @@
		<date>#DATE</date>
		


	[<description>(#INTRODUCTION|texte_backend)</description>]

	<B_mots>
	<dc:subject><BOUCLE_mots(MOTS){id_article}{" "}>[(#TITRE|former_tag)]</BOUCLE_mots></dc:subject>
	</B_mots>

[(#REM)
	Il est possible de mettre le texte integral de l'article dans le backend
	en remplacant *INTRODUCTION par *CHAPO et *TEXTE etc., a filtrer avec
	"liens_absolus".
	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||html_backend)
	][&lt;div class='rss_chapo'>(#CHAPO|html_backend)&lt;/div>
	][&lt;div class='rss_texte'>(#TEXTE|html_backend)&lt;/div>
	][&lt;hr />
	&lt;div class='rss_notes'>(#NOTES|html_backend)&lt;/div>
	]</content:encoded>
]

<description>[(#LOGO_ARTICLE|right||liens_absolus|texte_backend)
][(#INTRODUCTION|texte_backend)]</description>
		<author><BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteurs></author>
		<dc:date>[(#DATE|date_iso)]</dc:date>
		<dc:format>text/html</dc:format>
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -70,9 +70,10 @@
<div class="liste-articles">

<BOUCLE_articles(SYNDIC_ARTICLES) {id_syndic} {par date}{inverse}{0,10}>
	<h2><a href="#URL_ARTICLE" [title="(#DESCRIPTIF|couper{400}|textebrut|entites_html)"]>#TITRE</a></h2>
	<h2><a href="#URL_ARTICLE">#TITRE</a></h2>
	<div class="detail">
	[(#DATE|nom_jour)] [(#DATE|affdate)]
	[: (#DESCRIPTIF)] [&mdash; <em>(#TAGS)</em>]
	</div>
	<br />
</BOUCLE_articles>
+11 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -114,7 +114,7 @@ function controle_un_forum($row, $rappel) {
	$forum_id_breve = $row['id_breve'];
	$forum_date_heure = $row['date_heure'];
	$forum_titre = echapper_tags($row['titre']);
	$forum_texte = echapper_tags($row['texte']);
	$forum_texte = $row['texte'];
	$forum_auteur = echapper_tags($row['auteur']);
	$forum_email_auteur = echapper_tags($row['email_auteur']);
	$forum_nom_site = echapper_tags($row['nom_site']);
@@ -152,17 +152,22 @@ function controle_un_forum($row, $rappel) {
	  "</span>";
	if ($forum_auteur) {
		if ($forum_email_auteur)
			$forum_auteur="<a href='mailto:$forum_email_auteur?SUBJECT=".rawurlencode($forum_titre)."'>$forum_auteur</A>";
		$controle .= "<span class='arial2'> / <B>$forum_auteur</B></span>";
			$forum_auteur="<a href='mailto:"
			.htmlspecialchars($forum_email_auteur)
			."?subject=".rawurlencode($forum_titre)."'>".$forum_auteur
			."</A>";
		$controle .= safehtml("<span class='arial2'> / <b>$forum_auteur</b></span>");
	}

	$controle .= boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur, "$type=$valeur", $forum_ip);

	$controle .= "\n<br />$avant<B>$pref <A HREF='$url'>$titre</A></B>" .
	  "<P align='justify'>".propre($forum_texte);
	$suite = "\n<br />$avant<b>$pref
	<a href='$url'>$titre</a></b>" . justifier(propre($forum_texte));

	if (strlen($forum_url_site) > 10 AND strlen($forum_nom_site) > 3)
		$controle .= "\n<div align='left' class='serif'><B><A HREF='$forum_url_site'>$forum_nom_site</A></B></div>";
		$suite .= "\n<div align='left' class='serif'><B><A HREF='$forum_url_site'>$forum_nom_site</A></B></div>";

	$controle .= safehtml($suite);

	if (lire_meta("mots_cles_forums") == "oui") {
		$query_mots = "SELECT * FROM spip_mots AS mots, spip_mots_forum AS lien WHERE lien.id_forum = '$id_forum' AND lien.id_mot = mots.id_mot";
+17 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1443,4 +1443,21 @@ function email_valide($adresses) {
	return $adresse;
}

// Filtrer les champs de tags (a developper)
// Un champ de tags c'est un ensemble de mots separes par des espaces
// On pourrait les envoyer vers les mots-cles correspondants dans la base,
// ou vers les tags del.icio.us/flickr correspondants, etc...
// ici essai avec del.icio.us
function traiter_tags($tags) {
	$tags = explode(' ', supprimer_tags($tags));
	foreach($tags as $tag)
		$l .= " <a href='http://del.icio.us/tag/$tag'>$tag</a>";
	return trim($l);
}

// former un tag a parti d'un titre de mot-cle
function former_tag($mot) {
	return str_replace(' ', '_', trim(supprimer_tags(typo($mot))));
}

?>
+11 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -1063,6 +1063,17 @@ function maj_base() {
		maj_version(1.901);
	}

	// Syndication : ajout de source, url_source, tags
	if ($version_installee < 1.902) {
		spip_query("ALTER TABLE spip_syndic_articles
			ADD url_source TINYTEXT DEFAULT '' NOT NULL");
		spip_query("ALTER TABLE spip_syndic_articles
			ADD source TINYTEXT DEFAULT '' NOT NULL");
		spip_query("ALTER TABLE spip_syndic_articles
			ADD tags TEXT DEFAULT '' NOT NULL");
		maj_version(1.902);
	}

	return true;
}

Chargement en cours