1 | <?php |
---|
2 | |
---|
3 | if (!defined("_ECRIRE_INC_VERSION")) return; |
---|
4 | if (preg_match(',&age=([0-9]+)&age=([0-9]+),',$_SERVER['REQUEST_URI'],$regs)){ |
---|
5 | url_de_base(); |
---|
6 | $url = parametre_url(self(),'age',$regs[1],'&'); |
---|
7 | include_spip('inc/headers'); |
---|
8 | redirige_par_entete($url); |
---|
9 | } |
---|
10 | |
---|
11 | if ($var_color=_request('var_color')) { |
---|
12 | include_spip('inc/cookie'); |
---|
13 | spip_setcookie('sedna_color', $var_color, time()+365*24*3600); |
---|
14 | $_COOKIE['sedna_color'] = $var_color; |
---|
15 | } |
---|
16 | $GLOBALS['marqueur'].=isset($_COOKIE['sedna_color'])?(":".$_COOKIE['sedna_color']):""; |
---|
17 | function sedna_utils(){ |
---|
18 | $GLOBALS['forcer_lang']= true; |
---|
19 | |
---|
20 | // Descriptifs : affiches ou masques ? |
---|
21 | // l'accessibilite sans javascript => affiches par defaut |
---|
22 | if ($_COOKIE['sedna_style'] == 'masquer') { |
---|
23 | $class_desc = "desc_masquer"; |
---|
24 | } else { |
---|
25 | $class_desc = "desc_afficher"; |
---|
26 | } |
---|
27 | // l'identifiant du lien est fonction de son url et de sa date |
---|
28 | // ce qui permet de reperer les "updated" *et* les doublons |
---|
29 | include_spip('inc/filtres'); |
---|
30 | function afficher_lien( |
---|
31 | $id_syndic_article, |
---|
32 | $id_lien, |
---|
33 | $id_syndic, |
---|
34 | $date, |
---|
35 | $url, |
---|
36 | $titre, |
---|
37 | $lesauteurs, |
---|
38 | $desc, |
---|
39 | $lang |
---|
40 | ) { |
---|
41 | static $vu, $lus, $ferme_ul, $id, $iddesc; |
---|
42 | global $ex_syndic, $class_desc; |
---|
43 | |
---|
44 | // Articles a ignorer |
---|
45 | if (!_request('id_syndic') |
---|
46 | AND $_COOKIE['sedna_ignore_'.$id_syndic]) |
---|
47 | return; |
---|
48 | |
---|
49 | // initialiser la liste des articles lus |
---|
50 | if (!is_array($lus)) |
---|
51 | $lus = array_flip(explode('-', '-'.$_COOKIE['sedna_lu'])); |
---|
52 | |
---|
53 | if ($vu[$id_lien]++) return; |
---|
54 | |
---|
55 | // regler la classe des liens, en fonction du cookie sedna_lu |
---|
56 | $class_link = $lus[$id_lien] ? 'vu' : ''; |
---|
57 | |
---|
58 | if (unique(substr($date,0,10))) |
---|
59 | $affdate = '<h1 class="date">' |
---|
60 | .jour($date).' '.nom_mois($date).'</h1>'; |
---|
61 | |
---|
62 | |
---|
63 | // indiquer un intertitre si on change de source ou de date |
---|
64 | if ($affdate OR ($id_syndic != $ex_syndic)) { |
---|
65 | echo $ferme_ul; $ferme_ul="</ul>\n"; |
---|
66 | echo $affdate; |
---|
67 | } |
---|
68 | |
---|
69 | // Suite intertitres |
---|
70 | if ($affdate OR ($id_syndic != $ex_syndic)) { |
---|
71 | echo "<h2 id='site${id_syndic}_".(++$id)."' |
---|
72 | onmouseover=\"getElementById('url".$id."').className='urlsiteon';\" |
---|
73 | onmouseout=\"getElementById('url".$id."').className='urlsite';\" |
---|
74 | >"; |
---|
75 | $link = parametre_url(self(),'id_syndic',$id_syndic); |
---|
76 | if ($age = intval($GLOBALS['age'])) |
---|
77 | $link = parametre_url($link,'age',$age); |
---|
78 | echo "<a href=\"$link\">".$GLOBALS['nom_site_'.$id_syndic] |
---|
79 | ."</a>"; |
---|
80 | echo " <a class=\"urlsite\" |
---|
81 | href=\"" |
---|
82 | .$GLOBALS['url_site_'.$id_syndic] |
---|
83 | .'" id="url'.$id.'">' |
---|
84 | .$GLOBALS['url_site_'.$id_syndic] |
---|
85 | ."</a>"; |
---|
86 | echo "</h2>\n<ul>\n"; |
---|
87 | $ex_syndic = $id_syndic; |
---|
88 | } |
---|
89 | |
---|
90 | echo "<li class='hentry'"; |
---|
91 | if (!$_GET['id_syndic'] AND !strlen($_GET['recherche'])) |
---|
92 | echo " id='item${id_syndic}_${id_syndic_article}'"; |
---|
93 | echo " onmousedown=\"jai_lu('$id_lien');\">\n", |
---|
94 | # "<small>".affdate($date,'H:i')."</small>", |
---|
95 | "<abbr class='published updated' |
---|
96 | title='".date_iso($date)."'>".affdate($date,'H:i')."</abbr>", |
---|
97 | "<div class=\"titre\">", |
---|
98 | "<a href=\"$url\" |
---|
99 | title=\"$url\" |
---|
100 | class=\"link$class_link\" |
---|
101 | id=\"news$id_lien\" |
---|
102 | rel=\"bookmark\""; |
---|
103 | if ($lang) echo " hreflang=\"$lang\""; |
---|
104 | echo ">", |
---|
105 | "<span class=\"entry-title\">", # le "title" du microformat hAtom.hfeed.hentry |
---|
106 | $titre, "</span></a>", |
---|
107 | $lesauteurs, |
---|
108 | "\n<span class=\"source\"><a href=\"", |
---|
109 | $GLOBALS['url_site_'.$id_syndic]."\">", |
---|
110 | $GLOBALS['nom_site_'.$id_syndic]."</a></span>\n", |
---|
111 | "</div>\n"; |
---|
112 | |
---|
113 | if ($desc) |
---|
114 | echo "<div class=\"desc\">", |
---|
115 | "<div class=\"$class_desc\" id=\"desc_".(++$iddesc)."\">\n", |
---|
116 | "<span class=\"entry-summary\">", $desc, "</span>\n", |
---|
117 | '</div></div>'; |
---|
118 | |
---|
119 | |
---|
120 | echo "\n</li>\n"; |
---|
121 | } |
---|
122 | |
---|
123 | // Si synchro active il faut comparer le contenu du cookie et ce |
---|
124 | // qu'on a stocke dans le champ spip_auteurs.sedna (a creer au besoin) |
---|
125 | $synchro = ''; |
---|
126 | if ($_COOKIE['sedna_synchro'] == 'oui' |
---|
127 | AND $id = $GLOBALS['auteur_session']['id_auteur']) { |
---|
128 | // Recuperer ce qu'on a stocke |
---|
129 | if (!$s = spip_query("SELECT sedna FROM spip_auteurs |
---|
130 | WHERE id_auteur=$id")) { |
---|
131 | // creer le champ sedna si ce n'est pas deja fait |
---|
132 | spip_query("ALTER TABLE spip_auteurs |
---|
133 | ADD sedna TEXT NOT NULL DEFAULT ''"); |
---|
134 | } |
---|
135 | $champ = spip_fetch_array($s); |
---|
136 | $champ = $champ['sedna']; |
---|
137 | // mixer avec le cookie en conservant un ordre chronologique |
---|
138 | if ($_COOKIE['sedna_lu'] <> $champ) { |
---|
139 | $lus_cookie = preg_split(',[- +],',$_COOKIE['sedna_lu']); |
---|
140 | $lus_champ = preg_split(',[- +],',$champ); |
---|
141 | $lus = array(); |
---|
142 | while (count($lus_cookie) OR count($lus_champ)) { |
---|
143 | if ($a = array_shift($lus_cookie)) |
---|
144 | $lus[$a] = true; |
---|
145 | if ($a = array_shift($lus_champ)) |
---|
146 | $lus[$a] = true; |
---|
147 | } |
---|
148 | $lus = substr(join('-', array_keys($lus)),0,3000); # 3ko maximum |
---|
149 | // Mettre la base a jour |
---|
150 | spip_query("UPDATE spip_auteurs SET sedna='" |
---|
151 | .addslashes($lus)."' |
---|
152 | WHERE id_auteur=$id"); |
---|
153 | $synchro = ' *'; |
---|
154 | |
---|
155 | // Si le cookie n'est pas a jour, on l'update sur le brouteur |
---|
156 | if ($lus <> $_COOKIE['sedna_lu']) { |
---|
157 | include_spip('inc/cookie'); |
---|
158 | spip_setcookie('sedna_lu', $lus, |
---|
159 | time()+365*24*3600); |
---|
160 | $_COOKIE['sedna_lu'] = $lus; |
---|
161 | // Signaler que la synchro a eu lieu |
---|
162 | $synchro = ' <<'; |
---|
163 | } |
---|
164 | } |
---|
165 | } |
---|
166 | // forcer le refresh ? |
---|
167 | if ($id = intval(_request('refresh'))) { |
---|
168 | include_ecrire('inc_syndic'); |
---|
169 | spip_touch(_DIR_TMP.'syndic.lock'); |
---|
170 | syndic_a_jour($id); |
---|
171 | } |
---|
172 | |
---|
173 | // Calcul du delais optimal (on est tjs a jour, mais quand meme en cache) |
---|
174 | // valeur max = 15 minutes (900s) (et on hacke #ENV{max_maj} pour affichage |
---|
175 | // de "Derniere syndication..." en pied de page). |
---|
176 | $GLOBALS['sedna_max_maj'] = @filemtime(_DIR_TMP.'syndic.lock'); |
---|
177 | if ($GLOBALS['sedna_max_maj'] > lire_meta('derniere_modif')) { |
---|
178 | include_spip('inc/meta'); |
---|
179 | ecrire_meta('derniere_modif', $GLOBALS['sedna_max_maj']); |
---|
180 | ecrire_metas(); |
---|
181 | } |
---|
182 | $GLOBALS['sedna_max_maj'] = date('Y-m-d H:i:s', $GLOBALS['sedna_max_maj']); # format SPIP |
---|
183 | } |
---|
184 | |
---|
185 | ?> |
---|