source: spip-zone/_plugins_/sedna/trunk/sedna_options.php @ 68163

Last change on this file since 68163 was 68163, checked in by kent1@…, 7 years ago

Un fichier d'installation qui ajoute le champs sedna sur les auteurs

On évite un peu de PHP dans les squelettes et refaisant un peu la fonction d'affichage des posts

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