source: spip-zone/_plugins_/auteurs_last/inc/aula_pipeline_header_prive.php @ 49553

Last change on this file since 49553 was 49553, checked in by paladin@…, 10 years ago

phpdoc

  • Property svn:eol-style set to LF
  • Property svn:keywords set to LastChangedBy LastChangedDate LastChangedRevision
File size: 5.7 KB
Line 
1<?php 
2
3        // inc/aula_pipeline_insert_head.php
4       
5        // $LastChangedRevision: 49553 $
6        // $LastChangedBy: paladin@quesaco.org $
7        // $LastChangedDate: 2011-07-12 07:48:52 +0000 (Tue, 12 Jul 2011) $
8
9        /*****************************************************
10        Copyright (C) 2008 Christian PAULUS
11        cpaulus@quesaco.org - http://www.quesaco.org/
12        /*****************************************************
13       
14        This file is part of AuLa.
15       
16        AuLa is free software; you can redistribute it and/or modify
17        it under the terms of the GNU General Public License as published by
18        the Free Software Foundation; either version 2 of the License, or
19        (at your option) any later version.
20       
21        AuLa is distributed in the hope that it will be useful,
22        but WITHOUT ANY WARRANTY; without even the implied warranty of
23        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24        GNU General Public License for more details.
25       
26        You should have received a copy of the GNU General Public License
27        along with AuLa; if not, write to the Free Software
28        Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
29       
30        /*****************************************************
31       
32        Ce fichier est un des composants de AuLa.
33       
34        AuLa est un programme libre, vous pouvez le redistribuer et/ou le modifier
35        selon les termes de la Licence Publique Generale GNU publiée par
36        la Free Software Foundation (version 2 ou bien toute autre version ultérieure
37        choisie par vous).
38       
39        AuLa est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE,
40        ni explicite ni implicite, y compris les garanties de commercialisation ou
41        d'adaptation dans un but spécifique. Reportez-vous à la Licence Publique Générale GNU
42        pour plus de détails.
43       
44        Vous devez avoir reçu une copie de la Licence Publique Generale GNU
45        en meme temps que ce programme ; si ce n'est pas le cas, ecrivez à la 
46        Free Software Foundation, Inc.,
47        59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis.
48       
49        *****************************************************/
50       
51if (!defined("_ECRIRE_INC_VERSION")) return;
52
53/**
54 * Insertion du résultat dans le head de la page
55 * des auteurs, en espace privé.
56 * @return string
57 */
58function aula_header_prive ($flux) {
59        global $connect_toutes_rubriques;
60
61        $exec = _request('exec');
62       
63        if(
64                ($exec == 'auteurs')
65                && $connect_toutes_rubriques
66                ) {
67
68                $script = "";
69               
70                if($ii = aula_last_array()) {
71                        foreach(aula_last_array() as $key => $value) {
72                                $script .= $key.":"
73                                        .
74                                                (
75                                                        (is_bool($value)) 
76                                                        ?       (
77                                                                        ($value)
78                                                                        ? 'true' // actuellement connecté
79                                                                        : 'false' // ne s'est jamais connecté
80                                                                )
81                                                        :       "'".affdate_jourcourt($value)." ".heures($value).":".minutes($value)."'"
82                                                )
83                                        .",";
84                        }
85                        $script = rtrim($script, ",");
86                }
87               
88                //
89                $script = "var aula_auteurs={".$script."};";
90                $script = "
91
92<!-- aula -->
93<style type='text/css'>
94<!--
95.aula-b {
96        border-top: 1px solid #ccc;
97}
98-->
99</style>
100<script language='JavaScript' type='text/javascript'>
101$script
102var aula_class = 'class=\'aula-b\'';
103function aula_completer () {
104        $('#auteurs table tr').each(function(i){
105                if(!i) v = '"._T(_AULA_PREFIX.':connexion')."';
106                else {
107                        v = $(this).find('td.verdana1 a').attr('href');
108                        var e = /(id_auteur=)([0-9]+)/;
109                        e.exec(v);
110                        v = RegExp.$2;
111                        var c;
112                        if(aula_auteurs[v]) {
113                                v = aula_auteurs[v];
114                                if(v.length > 5) {
115                                        v = '<span class=\'arial1\'>' + v + '<\/span>';
116                                }
117                                else {
118                                        v = $(this).find('img').attr('src');
119                                        v = '<img src=\'' + v + '\' title=\'".($ii = trim(_T(_AULA_PREFIX.':actuellement_connecte'),":"))."\' =alt=\'".$ii."\' \/>';
120                                }
121                                c = aula_class;
122                        }
123                        else if(v >= 1) {
124                                v = '<span class=\'arial1\' title=\'"._T(_AULA_PREFIX.':jamais_connecte')."\'>?<\/span>';
125                                c = aula_class;
126                        }
127                        else {
128                                c = v = '';
129                        }
130                }
131                $(this).append('<td ' + c + '>' + v + '</td>');
132         });
133}
134jQuery().ready(function(){
135        aula_completer (); "
136                /* supprime les appels ajax de la boite des auteurs */
137        . "
138        $('#auteurs td.arial1 a').removeAttr('onclick');
139        $('#auteurs td.arial11 a').removeAttr('onclick');
140        $('#auteurs #bas a').removeAttr('onclick');
141});
142</script>
143<!-- /aula -->
144                ";
145               
146        // compression du script
147        $script = preg_replace("=[[:space:]]+=", " ", $script);
148
149        $flux .= $script;
150       
151        }
152       
153        return ($flux);
154       
155} // end aula_insert_head()
156
157/**
158 * Donne les dernières connexions.
159 * Tableau dont l'index est l'id de l'auteur, la valeur :
160 * - bool TRUE si l'auteur est en ligne, ou
161 * - bool FALSE si jamais connecté, ou
162 * - la date de dernière connexion
163 * @return bool|array
164 */
165function aula_last_array () {
166        include_spip('inc/filtres');
167       
168        $where = ($ii = _request('statut')) ? "statut="._q($ii) : "statut='0minirezo' OR statut='1comite'";
169
170        //$current_date = date("Y-m-d H:i:s");
171        // mieux vaut demander l'heure de la base (si distante ?)
172        $current_date = spip_fetch_array(spip_query("SELECT NOW()"));
173        $current_date = $current_date['NOW()'];
174
175        // récupère les heures de connexion
176        $sql_query = "SELECT id_auteur,maj,en_ligne FROM spip_auteurs WHERE $where";
177        $sql_result = spip_query($sql_query);
178       
179        while($row = spip_fetch_array($sql_result)) {
180                $en_ligne = vider_date($row['en_ligne']);
181                $maj = vider_date($row['maj']);
182
183                $result[$row['id_auteur']] = 
184                        (!empty($en_ligne))
185                        ?       (
186                                (aula_last_interval($current_date, $en_ligne))
187                                        ? true // connexion en cours
188                                        // date dernière connexion
189                                        : (($maj > $en_ligne) ? $maj : $en_ligne)
190                                ) 
191                        : false; // ne s'est pas encore connecté
192        }
193        return($result);
194}
195
196/**
197 * Calcule de l'intervalle
198 * @return int
199 */
200function aula_last_interval ($current_date, $en_ligne, $interval_minutes = _AULA_DELAY_MINUTES) {
201        $en_ligne = strtotime($en_ligne);
202        $current_date = strtotime($current_date);
203        return($en_ligne > ($current_date - $interval_minutes) && $en_ligne < ($current_date + $interval_minutes));
204}
205
Note: See TracBrowser for help on using the repository browser.