Mise en route du suivi.
[aidenligne_francais_universite.git] / ecrire / exec / export.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2007 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13
14 if (!defined("_ECRIRE_INC_VERSION")) return;
15
16 // Conversion timestamp MySQL (format ascii) en Unix (format integer)
17 // http://doc.spip.org/@mysql_timestamp_to_time
18 function mysql_timestamp_to_time($maj)
19 {
20 $t_an = substr($maj, 0, 4);
21 $t_mois = substr($maj, 4, 2);
22 $t_jour = substr($maj, 6, 2);
23 $t_h = substr($maj, 8, 2);
24 $t_min = substr($maj, 10, 2);
25 $t_sec = substr($maj, 12, 2);
26 return mktime ($t_h, $t_min, $t_sec, $t_mois, $t_jour, $t_an, 0);
27 }
28
29
30
31 // Liste un sommaire d'objets de n'importe quel type
32 // a la condition d'etre publics et plus recents que $maj
33 // http://doc.spip.org/@liste_objets
34 function liste_objets($result, $type, $maj) {
35
36 $res = array();
37 if ($result)
38 while ($row = spip_fetch_array($result)) {
39 $t_id = $row["id_$type"];
40 $t_statut = $row["statut"];
41 $t_maj = mysql_timestamp_to_time($row["maj"]);
42 if (!$maj ||
43 ($t_maj > $maj &&
44 (!$t_statut || $t_statut == "publie"))) {
45 echo "$type $t_id ", ($maj ? $t_maj : ""), "\n";
46 if ($type == "article") $res[]=$t_id;
47 }
48 }
49 spip_free_result($result);
50 return $res;
51 }
52
53 // Liste un sommaire recursif de rubriques
54 // a condition que la mise a jour soit plus recente que $maj
55 // http://doc.spip.org/@liste_rubriques
56 function liste_rubriques($id_rubrique) {
57 global $maj;
58 static $rubriques = array();
59 if ($id_rubrique)
60 $result = spip_query("SELECT * FROM spip_rubriques WHERE id_rubrique='$id_rubrique'");
61 else
62 $result = spip_query("SELECT * FROM spip_rubriques WHERE id_parent=0");
63
64 if ($result) while ($row=spip_fetch_array($result)) {
65 $id_rubrique = $row['id_rubrique'];
66 $id_parent = $row['id_parent'];
67 $titre = $row['titre'];
68 $descriptif = $row['descriptif'];
69 $texte = $row['texte'];
70 $rubrique_maj = mysql_timestamp_to_time($row["maj"]);
71 if ($rubrique_maj > $maj) {
72 echo "rubrique $id_rubrique $rubrique_maj\n";
73 }
74 $t_rubriques[] = $id_rubrique;
75 $rubriques[] = $id_rubrique;
76 }
77 spip_free_result($result);
78 if ($t_rubriques) {
79 $t_rubriques = join(",", $t_rubriques);
80 liste_rubriques(spip_query("SELECT * FROM spip_rubriques WHERE id_parent IN ($t_rubriques)"));
81
82 }
83 return $rubriques;
84 }
85
86 // http://doc.spip.org/@exec_export_dist
87 function exec_export_dist()
88 {
89
90 global $id_rubrique, $maj;
91 $id_rubrique = intval($id_rubrique);
92
93 header("Content-Type: text/plain");
94
95 $rubriques = liste_rubriques($id_rubrique);
96
97 if ($rubriques) {
98 $rubriques = join(",", $rubriques);
99
100 $query = spip_query("SELECT id_article, statut, maj FROM spip_articles WHERE id_rubrique IN ($rubriques)");
101 $articles = liste_objets($query, "article", $maj);
102
103 $query = spip_query("SELECT id_breve, statut, maj FROM spip_breves WHERE id_rubrique IN ($rubriques)");
104 liste_objets($query, "breve", $maj);
105
106 if ($articles) {
107 $articles = join(",", $articles);
108
109 $query = spip_query("SELECT DISTINCT id_auteur FROM spip_auteurs_articles WHERE id_article IN ($articles)");
110 liste_objets($query, "auteur", 0);
111 }
112 }
113
114 }
115 ?>