From 4e6e9ae87c5aec35a5350c1f4c84451eb491e856 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Fri, 20 Jan 2006 13:38:32 +0000 Subject: [PATCH] eclatement de inc_suivi_revisions pour qu'il ne soit plus charge a la fois automatiquement et manuellement. --- .gitattributes | 1 + ecrire/inc_rss.php3 | 428 --------------------------------- ecrire/inc_suivi_revisions.php | 203 +--------------- ecrire/inc_suivi_versions.php | 217 +++++++++++++++++ 4 files changed, 219 insertions(+), 630 deletions(-) delete mode 100644 ecrire/inc_rss.php3 create mode 100644 ecrire/inc_suivi_versions.php diff --git a/.gitattributes b/.gitattributes index 61d1d36703..49d2fe7941 100644 --- a/.gitattributes +++ b/.gitattributes @@ -338,6 +338,7 @@ ecrire/inc_statistiques_referers.php -text ecrire/inc_statistiques_repartition.php -text ecrire/inc_statistiques_svg.php -text ecrire/inc_statistiques_visites.php -text +ecrire/inc_suivi_versions.php -text ecrire/inc_synchro.php -text ecrire/inc_upgrade.php -text ecrire/inc_utils.php -text diff --git a/ecrire/inc_rss.php3 b/ecrire/inc_rss.php3 deleted file mode 100644 index 63efac1257..0000000000 --- a/ecrire/inc_rss.php3 +++ /dev/null @@ -1,428 +0,0 @@ -<?php - -/***************************************************************************\ - * SPIP, Systeme de publication pour l'internet * - * * - * Copyright (c) 2001-2006 * - * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * - * * - * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * - * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * -\***************************************************************************/ - - -if (!defined("_ECRIRE_INC_VERSION")) return; - -include_ecrire("inc_minipres"); -include_ecrire("inc_acces"); -include_ecrire("inc_texte"); // utile pour l'espace public, deja fait sinon - -// mais d'abord un tri par date (inverse) -function trier_par_date($a, $b) { - return ($a['date'] < $b['date']); -} - - -// -// Prend un tableau et l'affiche au format rss -// (fonction inverse de analyser_backend) -// A completer (il manque des tests, des valeurs par defaut, les enclosures, -// differents formats de sortie, etc.) -// -function affiche_rss($rss, $intro = '', $fmt='') { - if (!$fmt) $fmt = 'rss'; - if (function_exists($f = 'affiche_rss_'.$fmt)) { - return $f($rss, $intro); - } - else - spip_log("Format $fmt inconnu"); -} - -function affiche_rss_rss($rss, $intro = '') { - // entetes - $u = '<'.'?xml version="1.0" encoding="'.$GLOBALS['meta']['charset'].'"?'.">\n"; - - $u .= ' -<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/"> -<channel> - <title>'.texte_backend($intro['title']).'</title> - <link>'.texte_backend(url_absolue($intro['url'])).'</link> - <description>'.texte_backend($intro['description']).'</description> - <language>'.texte_backend($intro['language']).'</language> - '; - - // elements - if (is_array($rss)) { - usort($rss, 'trier_par_date'); - foreach ($rss as $article) { - if ($article['email']) - $article['author'].=' <'.$article['email'].'>'; - $u .= ' - <item> - <title>'.texte_backend($article['title']).'</title> - <link>'.texte_backend(url_absolue($article['url'])).'</link> - <date>'.texte_backend($article['date']).'</date> - <description>'. - texte_backend(liens_absolus($article['description'])) - .'</description> - <author>'.texte_backend($article['author']).'</author> - <dc:date>'.date_iso($article['date']).'</dc:date> - <dc:format>text/html</dc:format> - <dc:language>'.texte_backend($article['lang']).'</dc:language> - <dc:creator>'.texte_backend($article['author']).'</dc:creator> - </item> -'; - } - } - - // pied - $u .= ' - </channel> -</rss> -'; - - return array($u, 'Content-Type: text/xml; charset='.$GLOBALS['meta']['charset']); -} - -function affiche_rss_ical($rss, $intro = '') { - - // entetes - $u = -'BEGIN:VCALENDAR -CALSCALE:GREGORIAN -X-WR-CALNAME;VALUE=TEXT:'.filtrer_ical($intro['title']).' -X-WR-RELCALID:'.filtrer_ical(url_absolue($intro['url'])).' -'; - - // elements - if (is_array($rss)) { - usort($rss, 'trier_par_date'); - foreach ($rss as $article) { - - // Regler la date de fin a h+60min - if (!$article['enddate']) - $article['enddate'] = date_ical($article['date'],60); - else - $article['enddate'] = date_ical($article['enddate']); - - // Type d'evenement - if ($article['type'] == 'todo') - $type = 'VTODO'; - else - $type = 'VEVENT'; - - $u .= -'BEGIN:'.$type.' -SUMMARY:'.filtrer_ical($article['title']).' -URL:'.filtrer_ical(url_absolue($article['url'])).' -DTSTAMP:'. date_ical($article['date']).' -DTSTART:'. date_ical($article['date']).' -DTEND:'. $article['enddate'].' -DESCRIPTION:'.filtrer_ical(liens_absolus($article['description'])).' -ORGANIZER:'.filtrer_ical($article['author']).' -CATEGORIES:-- -END:'.$type.' -'; - } - } - - // pied - $u .= 'END:VCALENDAR'; - - return array($u, 'Content-Type: text/calendar; charset=utf-8'); -} - -// -// Fonctions de remplissage du RSS -// - - -// Suivi des revisions d'articles -function rss_suivi_versions($a) { - include_ecrire("inc_suivi_versions"); - return afficher_suivi_versions (0, $a['id_secteur'], $a['id_auteur'], $a['lang_choisie'], true, true); - -} - -// Suivi des forums -function rss_suivi_forums($a, $query_forum='', $lien_moderation=false) { - include_ecrire("inc_forum"); - - $result_forum = spip_query(" - SELECT * " . $query_forum . " - ORDER BY date_heure DESC LIMIT 20" - ); - - while ($t = spip_fetch_array($result_forum)) { - $item = array(); - $item['title'] = typo($t['titre']); - if ($a['page'] == 'public' - AND $t['statut']<>'publie' - ) - $item['title'] .= ' ('.$t['statut'].')'; - $item['date'] = $t['date_heure']; - $item['author'] = $t['auteur']; - $item['email'] = $t['email_auteur']; - - if ($lien_moderation) - $item['url'] = generer_url_ecrire('controle_forum', 'page='.$a['page'] .'&debut_id_forum='.$t['id_forum']); - else - $item['url'] = generer_url_forum($t['id_forum']); - - $item['description'] = propre($t['texte']); - if ($GLOBALS['les_notes']) { - $item['description'] .= '<hr />'.$GLOBALS['les_notes']; - $GLOBALS['les_notes'] = ''; - } - if ($t['nom_site'] OR vider_url($t['url_site'])) - $item['description'] .= propre("\n- [".$t['nom_site']."->".$t['url_site']."]<br />"); - - $rss[] = $item; - } - - return $rss; -} - - - -// Suivi de la messagerie privee -function rss_suivi_messagerie($a) { - $rss = array(); - - // 1. les messages - $s = spip_query("SELECT * FROM spip_messages AS messages, - spip_auteurs_messages AS lien WHERE lien.id_auteur=".$a['id_auteur'] - ." AND lien.id_message=messages.id_message - GROUP BY messages.id_message ORDER BY messages.date_heure DESC"); - while ($t = spip_fetch_array($s)) { - if ($compte++<10) { - $auteur = spip_fetch_array(spip_query("SELECT - auteurs.nom AS nom, auteurs.email AS email - FROM spip_auteurs AS auteurs, - spip_auteurs_messages AS lien - WHERE lien.id_message=".$t['id_message']." - AND lien.id_auteur!=".$t['id_auteur']." - AND lien.id_auteur = auteurs.id_auteur")); - $item = array( - 'title' => typo($t['titre']), - 'date' => $t['date_heure'], - 'author' => typo($auteur['nom']), - 'email' => $auteur['email'], - 'description' => propre($t['texte']), - 'url' => generer_url_ecrire('message', 'id_message='.$t['id_message'] )); - $rss[] = $item; - } - $messages_vus[] = $t['id_message']; - } - - // 2. les reponses aux messages - if ($messages_vus) { - $s = spip_query("SELECT * FROM spip_forum WHERE id_message - IN (".join(',', $messages_vus).") - ORDER BY date_heure DESC LIMIT 10"); - - while ($t = spip_fetch_array($s)) { - $item = array( - 'title' => typo($t['titre']), - 'date' => $t['date_heure'], - 'description' => propre($t['texte']), - 'author' => typo($t['auteur']), - 'email' => $t['email_auteur'], - 'url' => generer_url_ecrire('message', 'id_message='.$t['id_message'] .'#'.$t['id_forum'] )); - $rss[] = $item; - } - } - - return $rss; -} - -// Suivi de la page "a suivre" : articles, breves, sites proposes et publies -function rss_a_suivre($a) { - $rss_articles = rss_articles("statut = 'prop'"); - $rss_breves = rss_breves("statut = 'prop'"); - $rss_sites = rss_sites("statut = 'prop'"); - - return array_merge($rss_articles, $rss_breves, $rss_sites); -} - -function rss_articles($critere) { - $rss = array(); - $s = spip_query("SELECT * FROM spip_articles WHERE $critere - ORDER BY date DESC LIMIT 10"); - while ($t = spip_fetch_array($s)) { - $auteur = spip_fetch_array(spip_query("SELECT - auteurs.nom AS nom, auteurs.email AS email - FROM spip_auteurs AS auteurs, - spip_auteurs_articles AS lien - WHERE lien.id_article=".$t['id_article']." - AND lien.id_auteur = auteurs.id_auteur")); - $item = array( - 'title' => typo($t['titre']), - 'date' => $t['date'], - 'author' => typo($auteur['nom']), - 'email' => $auteur['email'], - 'description' => propre(couper("{{".$t['chapo']."}}\n\n".$t['texte'],300)), - 'url' => generer_url_ecrire('articles', 'id_article='.$t['id_article'] )); - if ($t['statut'] == 'prop') - $item['title'] = _T('info_article_propose').' : '.$item['title']; - - $rss[] = $item; - } - return $rss; -} - - -function rss_breves($critere) { - $rss = array(); - $s = spip_query("SELECT * FROM spip_breves WHERE $critere - ORDER BY date_heure DESC LIMIT 10"); - while ($t = spip_fetch_array($s)) { - $item = array( - 'title' => typo($t['titre']), - 'date' => $t['date_heure'], - 'description' => propre(couper($t['texte'],300)), - 'url' => generer_url_ecrire('breves_voir', 'id_breve='.$t['id_breve'] )); - if ($t['statut'] == 'prop') - $item['title'] = _T('titre_breve_proposee').' : '.$item['title']; - - $rss[] = $item; - } - return $rss; -} - - -function rss_sites($critere) { - $rss = array(); - $s = spip_query("SELECT * FROM spip_syndic WHERE $critere - ORDER BY date DESC LIMIT 10"); - while ($t = spip_fetch_array($s)) { - $item = array( - 'title' => typo($t['titre']." ".$t['url_site']), - 'date' => $t['date'], - 'description' => propre(couper($t['texte'],300)), - 'url' => generer_url_ecrire('sites', 'id_syndic='.$t['id_syndic'] )); - if ($t['statut'] == 'prop') - $item['title'] = _T('info_site_attente').' : '.$item['title']; - - $rss[] = $item; - } - return $rss; -} - -// On recoit un op (operation) + args (arguments) -// + id (id_auteur) + cle (low_sec(id_auteur, "op args")) -// On verifie que la cle correspond -// On cree ensuite le RSS correspondant a l'operation - - -function spip_action_rss_dist() -{ - global $args, $cle, $fmt, $id, $lang, $op; - - charger_generer_url(); - -// -// Verifier la securite du lien et decoder les arguments -// -spip_timer('rss'); -if (!verifier_low_sec ($id, $cle, -"rss $op $args" -) -OR ($a['id_auteur']>0 AND $id<>$a['id_auteur'])) { - $op = 'erreur securite'; - unset($a); -} else { - $a = array(); - foreach (split(':', $args) as $bout) { - list($var, $val) = split('-', $bout, 2); - $a[$var] = $val; - } - include_ecrire('inc_lang'); - lang_select($lang); -} - -// -// Choisir la fonction de calcul du RSS -// -switch($op) { - # forum public - case 'forum': - if ($id = intval($a['id_article'])) { - $critere = "statut='publie' AND id_article=$id"; - $url = generer_url_article($id); - } - else if ($id = intval($a['id_syndic'])) { - $critere = "statut='publie' AND id_syndic=$id"; - $url = generer_url_site($id); - } - else if ($id = intval($a['id_breve'])) { - $critere = "statut='publie' AND id_breve=$id"; - $url = generer_url_breve($id); - } - else if ($id = intval($a['id_rubrique'])) { - $critere = "statut='publie' AND id_rubrique=$id"; - $url = generer_url_rubrique($id); - } - else if ($id = intval($a['id_thread'])) { - $critere = "statut='publie' AND id_thread=$id"; - $url = generer_url_forum($id); - } - if ($id) $rss = rss_suivi_forums($a, "FROM spip_forum WHERE $critere", false); - $title = _T("ecrire:titre_page_forum_suivi"); - break; - # suivi prive des forums - case 'forums': - include_ecrire("inc_forum"); - $critere = critere_statut_controle_forum($a['page']); - $rss = rss_suivi_forums($a, $critere, true); - $title = _T("ecrire:titre_page_forum_suivi")." (".$a['page'].")"; - $url = generer_url_ecrire('controle_forum', 'page='.$a['page']); - break; - # revisions des articles - case 'revisions': - $rss = rss_suivi_versions($a); - $title = _T("icone_suivi_revisions"); - $url = ""; - foreach (array('id_secteur', 'id_auteur', 'lang_choisie') as $var) - if ($a[$var]) $url.= $var.'='.$a[$var] . '&'; - $url = generer_url_ecrire('suivi_revisions', $url); - break; - # messagerie privee - case 'messagerie': - $rss = rss_suivi_messagerie($a); - $title = _T("icone_messagerie_personnelle"); - $url = generer_url_ecrire('messagerie'); - break; - # a suivre - case 'a-suivre': - $rss = rss_a_suivre($a); - $title = _T("icone_a_suivre"); - $url = _DIR_RESTREINT_ABS; - break; - case 'erreur securite': - $rss = array(array('title' => _L('Erreur de sécurité'))); - $title = _L('Erreur de sécurité'); - $url = ''; - break; - default: - $rss = array(array('title' => _L('Erreur'))); - $title = _L('Erreur'); - $url = ''; - break; -} - -// -// Envoyer le RSS -// -$intro = array( - 'title' => "[".$GLOBALS['meta']['nom_site']."] RSS ".$title, - 'url' => $url -); - -list($content,$header) = affiche_rss($rss, $intro, $fmt); -if ($header) @header($header); -echo $content; - -spip_log("spip_rss: ".spip_timer('rss')); -} -?> diff --git a/ecrire/inc_suivi_revisions.php b/ecrire/inc_suivi_revisions.php index 7dbe93191b..5a014e5e33 100644 --- a/ecrire/inc_suivi_revisions.php +++ b/ecrire/inc_suivi_revisions.php @@ -13,9 +13,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; include_ecrire("inc_presentation"); -include_ecrire('inc_rss'); -include_ecrire("lab_revisions"); -include_ecrire("lab_diff"); +include_ecrire("inc_suivi_versions"); function suivi_revisions_dist() { @@ -134,203 +132,4 @@ afficher_suivi_versions ($debut, $id_secteur, fin_page(); } -function afficher_para_modifies ($texte, $court = false) { - // Limiter la taille de l'affichage - if ($court) $max = 200; - else $max = 2000; - - $paras = explode ("\n",$texte); - for ($i = 0; $i < count($paras) AND strlen($texte_ret) < $max; $i++) { - if (strpos($paras[$i], '"diff-')) $texte_ret .= $paras[$i]."\n\n"; - } - $texte = $texte_ret; - return $texte; -} - -function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $id_auteur = false, $lang = "", $court = false, $rss = false) { - global $dir_lang; - - $nb_aff = 10; - $champs = array('surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps'); - - if ($id_auteur) { - $req_where = " AND articles.statut IN ('prepa','prop','publie')"; - $req_where = " AND versions.id_auteur = $id_auteur"; - } else { - $req_where = " AND articles.statut IN ('prop','publie')"; - } - - if (strlen($lang) > 0) $req_where .= " AND articles.lang='$lang'"; - - if ($id_secteur > 0) $req_where .= " AND articles.id_secteur = $id_secteur"; - - $query = " - SELECT versions.*, articles.statut, articles.titre - FROM spip_versions AS versions, spip_articles AS articles - WHERE versions.id_article = articles.id_article AND versions.id_version > 1 $req_where "; - - $result = spip_query($query . " ORDER BY versions.date DESC LIMIT $debut, $nb_aff"); - if (spip_num_rows($result) > 0) { - - // Afficher l'entete de la boite - if (!$rss) { - $titre_table = _T('icone_suivi_revisions').aide('suivimodif'); - if ($court) - $titre_table = afficher_plus(generer_url_ecrire("suivi_revisions")) - . $titre_table; - - echo "<div style='height: 12px;'></div>"; - echo "<div class='liste'>"; - bandeau_titre_boite2($titre_table, "historique-24.gif"); - - $total = spip_num_rows(spip_query($query . "LIMIT 0, 149")); - - if ($total > $nb_aff) { - $nb_tranches = ceil($total / $nb_aff); - - echo "<div class='arial2' style='background-color: #dddddd; padding: 5px;'>"; - - for ($i = 0; $i < $nb_tranches; $i++) { - if ($i > 0) echo " | "; - if ($i*$nb_aff == $debut) echo "<b>"; - else { - $next = ($i * $nb_aff); -echo "<a href='", generer_url_ecrire('suivi_revisions', "debut=$next&id_secteur=$id_secteur&uniq_auteur=$uniq_auteur&lang_choisie=$lang"),"'>"; - } - echo (($i * $nb_aff) + 1); - if ($i*$nb_aff == $debut) echo "</b>"; - else echo "</a>"; - } - echo "</div>"; - } - } - - // Afficher les 10 elements - while ($row = spip_fetch_array($result)) { - $id_version = $row['id_version']; - $id_auteur = $row['id_auteur']; - $date = $row['date']; - $id_article = $row['id_article']; - $statut = $row['statut']; - $titre = propre($row['titre']); - $query_auteur = " - SELECT nom,email - FROM spip_auteurs - WHERE id_auteur = $id_auteur"; - $row_auteur = spip_fetch_array(spip_query($query_auteur)); - $nom = typo($row_auteur["nom"]); - $email = $row_auteur['email']; - - - - if (!$rss) { - $logo_statut = "puce-".puce_statut($statut).".gif"; - echo "<div class='tr_liste' style='padding: 5px; border-top: 1px solid #aaaaaa;'>"; - - echo "<span class='arial2'>"; - if (!$court) echo bouton_block_visible("$id_version-$id_article-$id_auteur"); - echo "<img src='" . _DIR_IMG_PACK . "$logo_statut' border='0'> "; - echo "<a class='$statut' style='font-weight: bold;' href='" . generer_url_ecrire("articles_versions","id_article=$id_article") . "'>$titre</a>"; - echo "</span>"; - echo "<span class='arial1'$dir_lang>"; - echo " ".date_relative($date)." "; - if (strlen($nom)>0) echo "($nom)"; - echo "</span>"; - } else { - $item = array( - 'title' => $titre, - 'url' => generer_url_ecrire("articles_versions","id_article=$id_article&id_version=$id_version"), - 'date' => $date, - 'author' => $nom, - 'email' => $email - ); - } - - if (!$court) { - $query_diff = " - SELECT id_version - FROM spip_versions - WHERE id_article=$id_article AND id_version<$id_version - ORDER BY id_version DESC LIMIT 0,1"; - if ($result_diff = spip_query($query_diff)) { - $row_diff = spip_fetch_array($result_diff); - $id_diff = $row_diff['id_version']; - } - - - $query_art = " - SELECT * - FROM spip_articles - WHERE id_article='$id_article'"; - $result_art = spip_query($query_art); - - if ($row_art = spip_fetch_array($result_art)) { - $id_article = $row_art["id_article"]; - $id_rubrique = $row_art["id_rubrique"]; - $date = $row_art["date"]; - $statut_article = $row_art["statut"]; - $maj = $row_art["maj"]; - $date_redac = $row_art["date_redac"]; - $visites = $row_art["visites"]; - $referers = $row_art["referers"]; - $extra = $row_art["extra"]; - $id_trad = $row_art["id_trad"]; - } - - $textes = recuperer_version($id_article, $id_version); - - if ($id_version && $id_diff) { - if ($id_diff > $id_version) { - $t = $id_version; - $id_version = $id_diff; - $id_diff = $t; - $old = $textes; - $new = $textes = recuperer_version($id_article, $id_version); - } - else { - $old = recuperer_version($id_article, $id_diff); - $new = $textes; - } - $textes = array(); - foreach ($champs as $champ) { - if (!$new[$champ] && !$old[$champ]) continue; - $diff = new Diff(new DiffTexte); - $textes[$champ] = afficher_para_modifies(afficher_diff($diff->comparer(preparer_diff($new[$champ]), preparer_diff($old[$champ]))), $court); - } - } - - if (!$rss) - echo debut_block_visible("$id_version-$id_article-$id_auteur"); - - if (is_array($textes)) - foreach ($textes as $var => $t) { - if (strlen($t) > 0) { - if (!$rss) echo "<blockquote class='serif1'>"; - $aff = propre_diff($t); - if ($GLOBALS['les_notes']) { - $aff .= '<p>'.$GLOBALS['les_notes']; - $GLOBALS['les_notes'] = ''; - } - if (!$rss) { - echo $aff; - echo "</blockquote>"; - } else - $item['description'] = $aff; - } - } - if (!$rss) echo fin_block(); - } - - if (!$rss) echo "</div>"; - - if ($rss) - $items[] = $item; - } - if (!$rss) echo "</div>"; - } - - if ($rss) - return $items; -} - ?> diff --git a/ecrire/inc_suivi_versions.php b/ecrire/inc_suivi_versions.php new file mode 100644 index 0000000000..435b4d7097 --- /dev/null +++ b/ecrire/inc_suivi_versions.php @@ -0,0 +1,217 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2006 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +include_ecrire("lab_revisions"); +include_ecrire("lab_diff"); + +function afficher_para_modifies ($texte, $court = false) { + // Limiter la taille de l'affichage + if ($court) $max = 200; + else $max = 2000; + + $paras = explode ("\n",$texte); + for ($i = 0; $i < count($paras) AND strlen($texte_ret) < $max; $i++) { + if (strpos($paras[$i], '"diff-')) $texte_ret .= $paras[$i]."\n\n"; + } + $texte = $texte_ret; + return $texte; +} + +function afficher_suivi_versions ($debut = 0, $id_secteur = 0, $id_auteur = false, $lang = "", $court = false, $rss = false) { + global $dir_lang; + + $nb_aff = 10; + $champs = array('surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'ps'); + + if ($id_auteur) { + $req_where = " AND articles.statut IN ('prepa','prop','publie')"; + $req_where = " AND versions.id_auteur = $id_auteur"; + } else { + $req_where = " AND articles.statut IN ('prop','publie')"; + } + + if (strlen($lang) > 0) $req_where .= " AND articles.lang='$lang'"; + + if ($id_secteur > 0) $req_where .= " AND articles.id_secteur = $id_secteur"; + + $query = " + SELECT versions.*, articles.statut, articles.titre + FROM spip_versions AS versions, spip_articles AS articles + WHERE versions.id_article = articles.id_article AND versions.id_version > 1 $req_where "; + + $result = spip_query($query . " ORDER BY versions.date DESC LIMIT $debut, $nb_aff"); + if (spip_num_rows($result) > 0) { + + // Afficher l'entete de la boite + if (!$rss) { + $titre_table = _T('icone_suivi_revisions').aide('suivimodif'); + if ($court) + $titre_table = afficher_plus(generer_url_ecrire("suivi_revisions")) + . $titre_table; + + echo "<div style='height: 12px;'></div>"; + echo "<div class='liste'>"; + bandeau_titre_boite2($titre_table, "historique-24.gif"); + + $total = spip_num_rows(spip_query($query . "LIMIT 0, 149")); + + if ($total > $nb_aff) { + $nb_tranches = ceil($total / $nb_aff); + + echo "<div class='arial2' style='background-color: #dddddd; padding: 5px;'>"; + + for ($i = 0; $i < $nb_tranches; $i++) { + if ($i > 0) echo " | "; + if ($i*$nb_aff == $debut) echo "<b>"; + else { + $next = ($i * $nb_aff); +echo "<a href='", generer_url_ecrire('suivi_revisions', "debut=$next&id_secteur=$id_secteur&uniq_auteur=$uniq_auteur&lang_choisie=$lang"),"'>"; + } + echo (($i * $nb_aff) + 1); + if ($i*$nb_aff == $debut) echo "</b>"; + else echo "</a>"; + } + echo "</div>"; + } + } + + // Afficher les 10 elements + while ($row = spip_fetch_array($result)) { + $id_version = $row['id_version']; + $id_auteur = $row['id_auteur']; + $date = $row['date']; + $id_article = $row['id_article']; + $statut = $row['statut']; + $titre = propre($row['titre']); + $query_auteur = " + SELECT nom,email + FROM spip_auteurs + WHERE id_auteur = $id_auteur"; + $row_auteur = spip_fetch_array(spip_query($query_auteur)); + $nom = typo($row_auteur["nom"]); + $email = $row_auteur['email']; + + + + if (!$rss) { + $logo_statut = "puce-".puce_statut($statut).".gif"; + echo "<div class='tr_liste' style='padding: 5px; border-top: 1px solid #aaaaaa;'>"; + + echo "<span class='arial2'>"; + if (!$court) echo bouton_block_visible("$id_version-$id_article-$id_auteur"); + echo "<img src='" . _DIR_IMG_PACK . "$logo_statut' border='0'> "; + echo "<a class='$statut' style='font-weight: bold;' href='" . generer_url_ecrire("articles_versions","id_article=$id_article") . "'>$titre</a>"; + echo "</span>"; + echo "<span class='arial1'$dir_lang>"; + echo " ".date_relative($date)." "; + if (strlen($nom)>0) echo "($nom)"; + echo "</span>"; + } else { + $item = array( + 'title' => $titre, + 'url' => generer_url_ecrire("articles_versions","id_article=$id_article&id_version=$id_version"), + 'date' => $date, + 'author' => $nom, + 'email' => $email + ); + } + + if (!$court) { + $query_diff = " + SELECT id_version + FROM spip_versions + WHERE id_article=$id_article AND id_version<$id_version + ORDER BY id_version DESC LIMIT 0,1"; + if ($result_diff = spip_query($query_diff)) { + $row_diff = spip_fetch_array($result_diff); + $id_diff = $row_diff['id_version']; + } + + + $query_art = " + SELECT * + FROM spip_articles + WHERE id_article='$id_article'"; + $result_art = spip_query($query_art); + + if ($row_art = spip_fetch_array($result_art)) { + $id_article = $row_art["id_article"]; + $id_rubrique = $row_art["id_rubrique"]; + $date = $row_art["date"]; + $statut_article = $row_art["statut"]; + $maj = $row_art["maj"]; + $date_redac = $row_art["date_redac"]; + $visites = $row_art["visites"]; + $referers = $row_art["referers"]; + $extra = $row_art["extra"]; + $id_trad = $row_art["id_trad"]; + } + + $textes = recuperer_version($id_article, $id_version); + + if ($id_version && $id_diff) { + if ($id_diff > $id_version) { + $t = $id_version; + $id_version = $id_diff; + $id_diff = $t; + $old = $textes; + $new = $textes = recuperer_version($id_article, $id_version); + } + else { + $old = recuperer_version($id_article, $id_diff); + $new = $textes; + } + $textes = array(); + foreach ($champs as $champ) { + if (!$new[$champ] && !$old[$champ]) continue; + $diff = new Diff(new DiffTexte); + $textes[$champ] = afficher_para_modifies(afficher_diff($diff->comparer(preparer_diff($new[$champ]), preparer_diff($old[$champ]))), $court); + } + } + + if (!$rss) + echo debut_block_visible("$id_version-$id_article-$id_auteur"); + + if (is_array($textes)) + foreach ($textes as $var => $t) { + if (strlen($t) > 0) { + if (!$rss) echo "<blockquote class='serif1'>"; + $aff = propre_diff($t); + if ($GLOBALS['les_notes']) { + $aff .= '<p>'.$GLOBALS['les_notes']; + $GLOBALS['les_notes'] = ''; + } + if (!$rss) { + echo $aff; + echo "</blockquote>"; + } else + $item['description'] = $aff; + } + } + if (!$rss) echo fin_block(); + } + + if (!$rss) echo "</div>"; + + if ($rss) + $items[] = $item; + } + if (!$rss) echo "</div>"; + } + + if ($rss) + return $items; +} + +?> -- GitLab