source: spip-zone/_plugins_/actijour/trunk/inc/affiche_blocs.php

Last change on this file was 98276, checked in by cedric@…, 3 years ago

faire marcher a minima le plugin avec 3.0/3.1 et le plugin grenier

  • Property svn:executable set to *
File size: 36.0 KB
Line 
1<?php
2/*
3+--------------------------------------------+
4| ACTIVITE DU JOUR v. 2.1 - 06/2011 - SPIP 2.1
5+--------------------------------------------+
6| H. AROUX . Scoty . koakidi.com
7| D. Chiche . pour la maj 2.0
8| T. Payet . pour la maj 2.1
9| Script certifie KOAK2.0 strict, mais si !
10
11+--------------------------------------------+
12| generer les blocs d_infos
13+--------------------------------------------+
14*/
15
16/*---------------------------------------------------------------------------*\
17Elements de stats generales : visites, pages, global, moyenne gen.
18\*---------------------------------------------------------------------------*/
19function bloc_stats_generales(
20        $prev_visites,
21        $global_jour,
22        $date_globaljour,
23        $global_stats,
24        $prim_jour_stats,
25        $nb_jours_stats,
26        $moy_global_stats,
27        $cumul_vis_art_jour,
28        $moy_pages_jour,
29        $global_pages_stats,
30        $moy_pag_vis,
31        $date_max,
32        $visites_max
33) {
34
35        if (is_array($prev_visites)) {
36                if ($prev = intval($prev_visites[1])) {
37                        $prev = "&nbsp;+ " . $prev;
38                } else {
39                        $prev = '';
40                }
41        }
42
43        $aff = '';
44
45        $aff .= debut_cadre_relief("statistiques-24.gif", true)
46                . "<span class='verdana3 bold'>" . _T('actijour:nombre_visites_') . "</span>\n"
47                . "<br /><span class='verdana2'>" . $date_globaljour . "</span>"
48                . "<div class='cell_info alter-fond'>"
49                . _T('actijour:global_vis_jour', array('global_jour' => $global_jour . $prev))
50                . "</div>\n"
51                . "<div class='cell_info'>"
52                . _T('actijour:global_vis_global', array('global_stats' => $global_stats))
53                . "</div>\n";
54
55        $aff .= "<div style='margin-top:8px;'>\n"
56                . "<span class='verdana3 bold'>" . _T('actijour:stats_actives_') . "</span>\n"
57                . "<div class='cell_info'>\n"
58                . _T('actijour:depuis_le_prim_jour', array('prim_jour_stats' => $prim_jour_stats)) . "<br />\n"
59                . _T('actijour:soit_nbre_jours', array('nb_jours_stats' => $nb_jours_stats)) . "<br />\n"
60                . _T('actijour:soit_moyenne_par_jour', array('moy_global_stats' => $moy_global_stats)) . "\n"
61                . "</div>\n"
62                . "</div>\n";
63
64        $aff .= "<div style='margin-top:8px;'>\n"
65                . "<span class='verdana3 bold'>" . _T('actijour:pages_article_vues') . "</span><br />\n"
66                . "<div class='cell_info alter-fond'>\n"
67                . _T('actijour:pages_art_cumul_jour', array('cumul_vis_art_jour' => $cumul_vis_art_jour)) . "<br />\n"
68                . _T('actijour:pages_art_moyenne_jour', array('moy_pages_jour' => $moy_pages_jour)) . "<br />\n"
69                . "</div>\n";
70
71        $aff .= "<div class='cell_info'>\n"
72                . _T('actijour:pages_global_cumul_jour', array('global_pages_stats' => $global_pages_stats)) . "<br />\n"
73                . _T('actijour:pages_global_moyenne_jour', array('moy_pag_vis' => $moy_pag_vis)) . "<br />\n"
74                . "</div>\n"
75                . "</div>\n";
76
77        $aff .= "<div style='margin-top:8px;'>\n"
78                . "<span class='verdana3 bold'>" . _T('actijour:grosse_journee_') . "</span>\n"
79                . "<div class='cell_info'>\n"
80                . http_img_pack('puce-verte-breve.gif', 'ico', '', '') . "&nbsp;"
81                . _T('actijour:date_jour_maxi_vis', array('date_max' => $date_max, 'visites_max' => $visites_max))
82                . "</div>\n"
83                . "</div>\n";
84        $aff .= fin_cadre_relief(true);
85
86        return $aff;
87}// bloc_stats_generales
88
89
90/*---------------------------------------------------------------------------*\
91contribution de jean-marc.viglino@ign.fr - 20/11/06
92Derniere visite des "auteurs".
93\*---------------------------------------------------------------------------*/
94function auteurs_visite_jour() {
95        global $couleur_claire, $connect_id_auteur;
96        $nb_auteurs = $GLOBALS['actijour']['nbl_aut'];
97
98        $q = sql_select("id_auteur, nom, DATE_FORMAT(en_ligne,'%d/%m/%y %H:%i') AS vu, statut
99                        FROM spip_auteurs
100                        WHERE statut IN ('0minirezo', '1comite') AND DATE_FORMAT(en_ligne,'%Y-%m-%d') = CURDATE()
101                        ORDER BY en_ligne DESC
102                        LIMIT 0,$nb_auteurs"
103        );
104        $ifond = 0;
105        $aff = '';
106
107        $aff .= debut_cadre_relief("annonce.gif", true);
108
109        $aff .= "<table align='center' border='0' cellpadding='2' cellspacing='0' width='100%'>\n"
110                . "<tr><td colspan='2' class='cart_titre verdana3 bold'>" . _T('actijour:auteurs_connections')
111                . "</td></tr>";
112
113        while ($row = sql_fetch($q)) {
114                $ifond = $ifond ^ 1;
115                $couleur = ($ifond) ? $couleur_claire : '#FFFFFF';
116                #if($row['id_auteur']!=$connect_id_auteur) {// .. 05/05 on affiche tout le monde !
117                $aff .= "<tr bgcolor='$couleur'>"
118                        . "<td width='5%' rowspan='2' style='vertical-align:top;'>\n"
119                        . bonhomme_statut($row) . "</td>\n"
120                        . "<td width='95%'>"
121                        . "<div align='left' class='verdana2 bold'>"
122                        . "<a href='" . generer_url_ecrire("auteur_infos", "id_auteur=" . $row['id_auteur']) . "'>"
123                        . $row['nom'] . "</a>\n"
124                        . "</div></td></tr>\n"
125                        . "<tr bgcolor='$couleur'><td width='95%'>\n"
126                        . "<div align='right' class='verdana1'>" . $row['vu'] . "</div>\n"
127                        . "</td></tr>\n";
128                #}
129        }
130        $aff .= "</table>\n\n";
131
132        $aff .= "\n<br /><div class='verdana1'>" . _T('actijour:info_dernieres_connections',
133                        array('nb_aut' => $nb_auteurs)) . "</div>\n";
134
135        $aff .= fin_cadre_relief(true);
136
137        return $aff;
138} // auteurs_visite_jour
139
140
141/*---------------------------------------------------------------------------*\
142h..25/04/08
143Date derniere visite de tous user-spip".
144\*---------------------------------------------------------------------------*/
145function tous_auteurs_date_passage() {
146        global $couleur_claire, $connect_id_auteur;
147
148        // fixer le nombre de ligne du tableau (tranche)
149        $fl = $GLOBALS['actijour']['nbl_aut'];
150
151        // recup $vl dans URL
152        $dl = intval(_request('vl'));
153        $dl = ($dl + 0);
154        // valeur de tranche affichꥍ
155        $nba1 = $dl + 1;
156
157        $p_st = _request('st');
158        if (!$p_st) {
159                $where_st = "statut IN ('0minirezo','1comite','6forum')";
160                $p_st = 'tous';
161        } else {
162                $where_st = "statut = " . _q($p_st);
163        }
164
165        $q = sql_select("SQL_CALC_FOUND_ROWS id_auteur, statut, nom,
166                                                DATE_FORMAT(en_ligne,'%d/%m/%y %H:%i') AS vu "
167                . "FROM spip_auteurs "
168                . "WHERE $where_st "
169                . "ORDER BY en_ligne DESC,nom "
170                . "LIMIT $dl,$fl"
171        );
172
173        // recup nombre total d'entrees
174        $nl = sql_select("FOUND_ROWS()");
175        $found = @sql_fetch($nl);
176        $nb_auteurs = $found['FOUND_ROWS()'];
177
178        $ifond = 0;
179
180        $aff = '';
181
182        # onglet select statut
183        $lst_statut = array('tous', '0minirezo', '1comite', '6forum');
184        $script = _request('exec');
185
186        $aff .= debut_onglet();
187        foreach ($lst_statut as $statut) {
188                $aff .= onglet(_T('actijour:onglet_connect_' . $statut),
189                        generer_url_ecrire($script, 'st=' . ($statut == 'tous' ? '' : $statut)),
190                        $statut,
191                        ($p_st == $statut ? $statut : ''), '');
192        }
193        $aff .= fin_onglet();
194
195
196        # tableau
197        #
198        $aff .= debut_cadre_relief("annonce.gif", true);
199
200        $aff .= "<table align='center' border='0' cellpadding='2' cellspacing='0' width='100%'>\n"
201                . "<tr><td colspan='3' class='verdana3 bold'>" . _T('actijour:tous_date_connections')
202                . "</td></tr>";
203        # Tranches
204        $aff .= "<tr><td colspan='3' class='verdana3 bold'>";
205        $aff .= "<div align='center' class='iconeoff verdana2 bold' style='clear:both;'>\n"
206                . tranches_liste_art($nba1, $nb_auteurs, $fl)
207                . "\n</div>\n";
208        $aff .= "</td></tr>";
209
210        while ($row = sql_fetch($q)) {
211                $ifond = $ifond ^ 1;
212                $couleur = ($ifond) ? '#FFFFFF' : $couleur_claire;
213
214                $aff .= "<tr bgcolor='$couleur'>"
215                        . "<td width='5%'>\n"
216                        . bonhomme_statut($row) . "</td>\n"
217                        . "<td width='75%'>"
218                        . "<a class='verdana2 bold' href='" . generer_url_ecrire("auteur_infos", "id_auteur=" . $row['id_auteur']) . "'>"
219                        . entites_html($row['nom']) . "</a>\n"
220                        . "<td width='20%'>\n"
221                        . "<div align='right' class='verdana1'>" . $row['vu'] . "</div>\n"
222                        . "</td></tr>\n";
223
224        }
225        $aff .= "</table>\n\n";
226
227        $aff .= fin_cadre_relief(true);
228
229        return $aff;
230} // tous_auteurs_date_passage
231
232
233/******************************************************************************\
234 * nombre auteurs (statuts std spip) connectes depuis 15 mn
235 * \******************************************************************************/
236function nbr_auteurs_enligne() {
237        global $couleur_claire, $connect_id_auteur;
238        $aff = '';
239        $aff .= debut_cadre_relief("annonce.gif", true);
240// nombre d_auteurs depuis 15 mn ()
241# inc/auth.php update-set en_ligne => NOW() : "moment" de session !
242# voir ecrire/action:logout.php
243# spip update-set 'en_ligne' datetime -15 mn au logout de session !!??!!
244# aff' nbr corresp aux auteurs affiches par spip en bandeau sup !
245
246        $q = sql_select("COUNT(DISTINCT id_auteur) AS nb, statut " .
247                "FROM spip_auteurs " .
248                "WHERE en_ligne > DATE_SUB( NOW(), INTERVAL 15 MINUTE) " .
249                "AND statut IN ('0minirezo', '1comite', '6forum') " . // limite statuts spip (autres!)
250                "AND id_auteur != $connect_id_auteur " .
251                "GROUP BY statut"
252        );
253
254        if (sql_count($q)) {
255                $aff .= _T("actijour:auteurs_en_ligne") . "<br />\n";
256                While ($r = sql_fetch($q)) {
257                        if ($r['statut'] == '0minirezo') {
258                                $stat = _T('actijour:abrv_administrateur');
259                        } elseif ($r['statut'] == '1comite') {
260                                $stat = _T('actijour:abrv_redacteur');
261                        } elseif ($r['statut'] == '6forum') {
262                                $stat = _T('actijour:abrv_visiteur');
263                        }
264                        $aff .= $r['nb'] . " $stat<br />\n";
265                }
266
267        } else {
268                $aff .= _T("actijour:aucun_auteur_en_ligne") . "\n";
269        }
270        $aff .= fin_cadre_relief(true);
271
272        return $aff;
273}
274
275/*---------------------------------------------------------------------------*\
276 Lister Articles du jour.
277\*---------------------------------------------------------------------------*/
278function liste_articles_jour($date_jour, $nb_art_visites_jour, $date_maj_art, $prev_visites = '') {
279        global $couleur_foncee, $couleur_claire;
280
281        // fixer le nombre de ligne du tableau (tranche)
282        $fl = $GLOBALS['actijour']['nbl_art'];
283
284        // recup $vl dans URL
285        $dl = intval(_request('vl'));
286        $dl = ($dl + 0);
287
288        //
289        // requete liste article du jour
290        $q = sql_select("sva.id_article, sva.date, sva.visites as visites_j,
291                        sa.titre, sa.visites, sa.popularite, sa.statut
292                        FROM spip_visites_articles sva
293                        LEFT JOIN spip_articles sa ON sva.id_article = sa.id_article
294                        WHERE sva.date='$date_jour'
295                        ORDER BY visites_j DESC LIMIT $dl,$fl");
296
297        $nbart = sql_count($q);
298
299
300        $aff = debut_cadre_relief("cal-jour.gif", true);
301
302        // bouton relance brut de la page
303        // en attendant de passer a jquery !
304        if ($date_jour == date('Y-m-d', mktime(0, 0, 0, date("m"), date("d"), date("Y")))) {
305                $aff .= "<div class='bouton_maj'>\n"
306                        . "<a href='" . generer_url_ecrire("actijour_pg") . "'>"
307                        . http_img_pack('puce-blanche.gif', 'ico', '', _T('actijour:mise_a_jour')) . "</a>\n"
308                        . "</div>\n";
309        }
310
311        // texte entete
312        if (empty($date_maj_art)) {
313                # La date du jour passé en 1er arg (jour, hier ...)
314                $tbdate = recup_date($date_jour);
315                $date_maj_art = date('d/m/y', mktime(0, 0, 0, $tbdate[1], $tbdate[2], $tbdate[0]));
316        }
317        $aff .= "<div class='verdana3'>"
318                . _T('actijour:entete_tableau_art_jour', array(
319                        'nb_art_visites_jour' => $nb_art_visites_jour,
320                        'aff_date_now' => ' - ' . $date_maj_art
321                ))
322                . "</div>\n";
323
324        // affichage tableau
325        if (sql_count($q)) {
326                // valeur de tranche affichꥉ
327                $nba1 = $dl + 1;
328                //     
329                $ifond = 0;
330
331                // Presenter valeurs de la tranche de la requete
332                $aff .= "<div align='center' class='iconeoff verdana2 bold' style='clear:both;'>\n"
333                        . tranches_liste_art($nba1, $nb_art_visites_jour, $fl)
334                        . "\n</div>\n";
335
336                // tableau
337                $aff .= "<table align='center' border='0' cellpadding='1' cellspacing='1' width='100%'>\n"
338                        . "<tr bgcolor='$couleur_foncee' class='head_tbl'>\n"
339                        . "<td width='7%'>" . _T('actijour:numero_court') . "</td>\n"
340                        . "<td width='65%'>" . _T('actijour:titre_article') . "</td>\n"
341                        . "<td width=9%>" . _T('actijour:visites_jour') . "</td>\n"
342                        . "<td width=11%>" . _T('actijour:total_visites') . "</td>\n"
343                        . "<td width=8%>" . _T('actijour:popularite') . "</td>\n"
344                        . "</tr>\n";
345
346                // corps du tableau
347                while ($row = sql_fetch($q)) {
348                        $visites_a = $row['visites'];
349                        $visites_j = $row['visites_j'];
350                        $id_art = $row['id_article'];
351                        $titre = $row['titre'];
352                        $etat = $row['statut'];
353                        // round sur popularit鍊                 $pop = round($row['popularite']);
354                        // Le total-visites de l'article
355                        #$tt_visit = $visit + $ipv;
356
357                        $ifond = $ifond ^ 1;
358                        $couleur = ($ifond) ? '#FFFFFF' : $couleur_claire;
359
360                        $aff .= "<tr bgcolor='$couleur'><td width='7%'>\n"
361                                . "<div align='right' class='verdana2'>"
362                                . affiche_lien_graph($id_art, $titre, $etat, 'spip')
363                                . "</div>\n</td>"
364                                . "<td width='65%'>\n"
365                                . "<div align='left' class='verdana1' style='margin-left:5px;'><b>"
366                                . affiche_lien_graph($id_art, $titre, $etat)
367                                . "</b></div></td>\n"
368                                . "<td width='9%'>\n"
369                                . "<div align='center' class='verdana2'><b>$visites_j</b></div></td>\n"
370                                . "<td width='11%'>\n"
371                                . "<div align='right' class='verdana1' style='margin-right:3px;'><b>$visites_a</b></div></td>\n"
372                                . "<td width='8%'>\n"
373                                . "<div align='center' class='verdana1'>$pop</div>\n"
374                                . "</td></tr>\n";
375                }
376                $aff .= "</table>";
377        } // aucun articles
378        else {
379                $aff .= "<div align='center' class='iconeoff bold' style='clear:both;'>"
380                        . _T('actijour:aucun_article_visite') . "</div><br />\n";
381        }
382        $aff .= visites_pre_traitement($prev_visites);
383        $aff .= fin_cadre_relief(true);
384
385        return $aff;
386} // liste_articles_jour
387
388
389/*---------------------------------------------------------------------------*\
390Visites et Nbr articles /j. sur les 8 derniers jours + moyenne.
391\*---------------------------------------------------------------------------*/
392function articles_visites_semaine($nbj = '8') {
393        # $nbj --> nombre de jours du tableau
394        # par defaut 8 ; tableau de la semaine dans actijour_pg.php
395
396        global $couleur_foncee, $couleur_claire;
397
398        $q = sql_select(
399                "DATE_FORMAT(sva.date,'%d/%m') AS date_fr,
400                COUNT(sva.id_article) AS nbart, sv.visites, sva.date
401                FROM spip_visites_articles sva LEFT JOIN spip_visites sv ON sva.date = sv.date
402                WHERE sva.date > DATE_SUB(NOW(),INTERVAL $nbj DAY)
403                GROUP BY sva.date
404                ORDER BY sva.date"
405        );
406
407        # construit table semaine
408        $semainier = array();
409        while ($row = sql_fetch($q)) {
410                $key = strtotime($row['date']);
411                $semainier[$key]['date_fr'] = $row['date_fr'];
412                $semainier[$key]['nbart'] = $row['nbart'];
413                $semainier[$key]['visites'] = $row['visites'];
414                $i++;
415        }
416        reset($semainier);
417#echo "<pre>"; print_r($semainier); echo "</pre>";
418
419        # combler les jours sans visite
420        if (count($semainier) < $nbj) {
421                for ($i = 0; $i < $nbj; $i++) {
422                        if (!array_key_exists($ante = ante_date_jour($i), $semainier)) {
423                                $semainier[$ante]['date_fr'] = ante_date_jour($i, true);
424                                $semainier[$ante]['nbart'] = '0';
425                                $semainier[$ante]['visites'] = '0';
426                        }
427                }
428        }
429#echo "2 - <pre>"; print_r($semainier); echo "</pre> - 2";
430        ksort($semainier);
431
432        #
433        # affiche bloc stats semaine
434        #
435        $aff = debut_cadre_relief("cal-semaine.gif", true);
436        # prepa tableau
437        $aff .= "<span class='verdana3 bold'>" . _T('actijour:huit_derniers_jours') . "</span>\n"
438                . "<table width='100%' border='0' cellpadding='1' cellspacing='0'>\n"
439                . "<tr><td><div class='cell_huit_t' style='background-color:$couleur_foncee;'>"
440                . _T('actijour:jour') . "</div>\n"
441                . "<div class='cell_huit_m'>" . _T('actijour:nombre_art') . "</div>\n"
442                . "<div class='cell_huit_p' style='background-color:$couleur_claire;'>"
443                . _T('actijour:visites') . "</div>\n</td>";
444
445        # les colonnes
446        $add = 0;
447        foreach ($semainier as $day => $vals) {
448                $aff .= "<td><div class='cell_huit_t' style='background-color:$couleur_foncee;'>"
449                        . $vals['date_fr'] . "</div>\n"
450                        . "<div class='cell_huit_m'>" . $vals['nbart'] . "</div>\n"
451                        . "<div class='cell_huit_p' style='background-color:$couleur_claire;'>" . $vals['visites']
452                        . "</div></td>\n";
453                //calcul moyenne de la "periode"
454                $add += $vals['visites'];
455        }
456        # moyenne visite semaine
457        $moysem = round($add / 8);
458
459        # derniere colonne affichage : moyenne periode
460        $aff .= "<td>"
461                . "<div class='cell_huit_t'>&nbsp;</div>"
462                . "<div class='cell_huit_m' style='background-color:$couleur_claire;'>"
463                . _T('actijour:moyenne_c')
464                . "<div class='cell_huit_p' style='background-color:$couleur_claire;'>" . $moysem . "</div>"
465                . "</td></tr></table>";
466
467        $aff .= fin_cadre_relief(true);
468
469        return $aff;
470} // articles_visites_semaine
471
472
473/*---------------------------------------------------------------------------*\
474visites du jour reparties dans secteur/rubrique
475\*---------------------------------------------------------------------------*/
476function tableau_visites_rubriques($date) {
477        global $couleur_claire;
478
479        $tab_rubart = rubriques_du_jour($date);
480
481        $aff = '';
482        $aff .= debut_cadre_relief('rubrique-24.gif', true);
483        $aff .= "<div class='cart_titre_bold verdana3'>" . _T('actijour:repartition_visites_secteurs') . "</div>";
484
485        if ($tab_rubart) {
486                // add visites
487                $nbr = 0;
488                foreach ($tab_rubart as $s => $c) {
489                        $nbr += $c['vis'];
490                }
491
492                $ifond = 0;
493
494                $aff .= "<table cellpadding='2' cellspacing='0' width='100%' border='0'>\n";
495
496                foreach ($tab_rubart as $sect => $cat) {
497                        $ifond = $ifond ^ 1;
498                        $couleur = ($ifond) ? '#FFFFFF' : $couleur_claire;
499                        $s_titre = typo(info_rubrique($sect));
500                        $prct_s = round(($cat['vis'] / $nbr) * 100, 1);
501
502                        $aff .= "<tr bgcolor='$couleur'>\n<td colspan='2'>"
503                                . http_img_pack('secteur-12.gif', 'ico', 'align=\'absmiddle\'', '') . "&nbsp;<b>"
504                                . supprimer_numero($s_titre) . "</b></td>\n"
505                                . "<td width='8%'><div align='right'><b>"
506                                . $cat['vis'] . "</b></div></td>\n"
507                                . "<td width='12%'><div class='verdana2 bold' align='right'>"
508                                . $prct_s . "%</div></td>\n"
509                                . "</tr>\n";
510
511                        if ($cat['rub']) {
512                                foreach ($cat['rub'] as $idr => $vis) {
513                                        $r_titre = typo(info_rubrique($idr));
514                                        $prct_r = round(($vis / $nbr) * 100, 1);
515
516                                        $aff .= "<tr bgcolor='$couleur'>\n<td width='2%'>&nbsp;</td>"
517                                                . "<td>"
518                                                . http_img_pack('rubrique-12.gif', 'ico', 'align=\'absmiddle\'', '') . "&nbsp;"
519                                                . supprimer_numero($r_titre) . "</td>\n"
520                                                . "<td width='8%'><div align='right'>"
521                                                . $vis . "</div></td>\n"
522                                                . "<td width='12%'><div class='verdana1' align='right'>"
523                                                . $prct_r . "%</div></td>\n</tr>\n";
524                                }
525                        }
526                }
527                $aff .= "</table>\n";
528        }
529        $aff .= fin_cadre_relief(true);
530
531        return $aff;
532}
533
534
535/*---------------------------------------------------------------------------*\
536Affichage des referers du jour (orig. spip inc/statistiques)
537\*---------------------------------------------------------------------------*/
538function liste_referers_jour($jour) {
539        # nombre de referers a afficher
540        $limit = intval($limit);  //secu
541        if ($limit == 0) {
542                $limit = 100;
543        }
544
545        $q = sql_select("referer, visites_jour AS vis
546                                        FROM spip_referers
547                                        WHERE date = \"$jour\"
548                                        ORDER BY visites_jour 
549                                        DESC 
550                                        LIMIT $limit");
551
552        $aff = debut_cadre_trait_couleur("referers-24.gif", true)
553                . "<div class='cart_titre verdana3 bold'>" . _T('actijour:liens_entrants_jour') . "</div>"
554                . aff_referers($q, $limit, '')
555                . "<div style='clear:both;'></div>"
556                . fin_cadre_trait_couleur(true);
557
558        return $aff;
559}
560
561
562/*---------------------------------------------------------------------------*\
563visites mensuelles du site en chiffres (jauge) sur n mois (18)
564\*---------------------------------------------------------------------------*/
565function visites_mensuelles_chiffres($global_jour) {
566        global $couleur_foncee, $couleur_claire;
567
568        $periode = date('m/y');    // mois /annee en cours (format de $date)
569        $dday = date('j');      // numero du jour
570        $nb_mois = $GLOBALS['actijour']['nbl_mensuel'];  // nombre mois affiche
571
572        $requete = "FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%m') AS d_mois, 
573                        FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%y') AS d_annee, 
574                        FROM_UNIXTIME(UNIX_TIMESTAMP(date),'%m/%y') AS date_unix, 
575                        SUM(visites) AS visit_mois 
576                        FROM spip_visites WHERE date > DATE_SUB(NOW(),INTERVAL 2700 DAY) 
577                        GROUP BY date_unix ORDER BY date DESC LIMIT 0,$nb_mois";
578
579        // calcul du $divis : MAX de visites_mois
580        $r = sql_select($requete);
581        $tblmax = array();
582        while ($rmx = @sql_fetch($r)) {
583                $tblmax[count($tblmax) + 1] = $rmx['visit_mois'];
584        }
585        reset($tblmax);
586
587        if (count($tblmax) == 0) {
588                $tblmax[] = 1;
589        }
590        $divis = max($tblmax) / 100;
591
592        //le tableau a jauges horizontales
593        $aff .= debut_cadre_relief("", true)
594                . "<span class='arial2'>" . _T('actijour:entete_tableau_mois', array('nb_mois' => $nb_mois)) . "\n</span>"
595                . "<table width='100%' cellpadding='2' cellspacing='0' border='0' class='arial2'>\n"
596                . "<tr><td align='left'>" . _T('actijour:mois_pipe')
597                . "</td><td width='50%'>" . _T('actijour:moyenne_mois') . "</td>\n"
598                . "<td><b>" . _T('actijour:visites') . "</b></td></tr>";
599
600        $ra = sql_select($requete);
601        while ($row = sql_fetch($ra)) {
602                $val_m = $row['d_mois'];
603                $val_a = $row['d_annee'];
604                $date = $row['date_unix'];
605                $visit_mois = $row['visit_mois'];
606                $idefix = '';
607
608                //nombre de jours du mois $mois
609                $mois = mktime(0, 0, 0, $val_m, 1, $val_a);
610                $nbr_jours = intval(date("t", $mois));
611
612                // nombre de jours, moyenne, si mois en cours
613                if ($date != $periode) {
614                        $nbj = $nbr_jours;
615                        $moy_mois = floor($visit_mois / $nbj);
616                        $totvisit = $visit_mois;
617                } else {
618                        $nbj = ($dday == 1) ? $dday : $dday - 1;
619                        $moy_mois = floor(($visit_mois - $global_jour) / $nbj);
620                        $totvisit = $visit_mois - $global_jour;
621                        $idefix = "*";
622                }
623                $totvisit = number_format($totvisit, 0, ',', '.');
624
625                //longeur jauge (ne tiens pas compte du jour en cour)
626                $long = floor($visit_mois / $divis);
627
628                // couleur de jauge pour mois le plus fort
629                $color_texte = '';
630                if ($long == 100) {
631                        $coul_jauge = $couleur_foncee;
632                        $color_texte = "style='color:#ffffff;'";
633                } else {
634                        $coul_jauge = $couleur_claire;
635                }
636
637                $aff .= "<tr><td class='arial2' colspan='3'>"
638                        . "<div style='position:relative; z-index:1; width:100%;'>"
639                        . "<div class='cell_info_mois'>$date</div>"
640                        . "<div class='cell_moymens'>$moy_mois</div>"
641                        . "<div class='cell_info_tot' $color_texte><b>$totvisit</b>$idefix</div>"
642                        . "</div>";
643                # barre horiz
644                $aff .= "<div class='fond_barre'>\n"
645                        . "<div style='width:" . $long . "%; height:11px; background-color:" . $coul_jauge . ";'></div>\n"
646                        . "</div>\n"
647                        . "</td></tr>\n";
648
649        }
650        $aff .= "<tr><td colspan='3'><span class='verdana1'>"
651                . _T('actijour:pied_tableau_mois') . "</span></td></tr>\n"
652                . "</table></span>\n";
653        $aff .= fin_cadre_relief(true);
654
655        return $aff;
656
657}// visites_mensuelles_chiffres
658
659
660/*---------------------------------------------------------------------------*\
661recense les sessions tmp/visites/ - bloc -> liste_articles_jour()
662\*---------------------------------------------------------------------------*/
663function visites_pre_traitement($prev_visites) {
664
665        # pour page hier
666        if (!is_array($prev_visites)) {
667                return;
668        }
669
670        $temps = $prev_visites[0];
671        $visites = $prev_visites[1];
672        $visites_a = $prev_visites[2];
673
674        if (count($temps)) {
675                sort($temps);
676        }
677
678        $aff = '';
679        if ($nb_articles = count($visites_a)) {
680                $heure_f = date('H\hi', $temps[0]);
681                $date_f = date('d/m/Y', $temps[0]);
682
683                $aff .= "<div align='center' class='iconeoff verdana2 bold' style='clear:both;'>\n"
684                        . _T('actijour:depuis_date_visites_pg',
685                                array(
686                                        'heure' => $heure_f,
687                                        'date' => $date_f == date('d/m/Y') ? '' : '(' . $date_f . ')',
688                                        'nb_visite' => $visites,
689                                        'nb_articles' => $nb_articles
690                                ))
691                        . "\n</div>\n";
692        }
693
694        return $aff;
695}
696
697
698/*---------------------------------------------------------------------------*\
699classement des 10 articles les + visites sur 8 / 30 jours
700\*---------------------------------------------------------------------------*/
701function topten_articles_periode($periode) {
702        global $couleur_claire;
703
704        if ($periode == '8') {
705                $top = $GLOBALS['actijour']['nbl_topsem'];
706        } elseif ($periode == '30') {
707                $top = $GLOBALS['actijour']['nbl_topmois'];
708        } else {
709                $top = '10';
710        }
711
712        $q = sql_select("sva.id_article, SUM(sva.visites) AS volume, 
713                                MAX(sva.visites) AS picvis, sa.statut, sa.titre, sa.visites 
714                                FROM spip_visites_articles sva 
715                                LEFT JOIN spip_articles sa ON sva.id_article=sa.id_article 
716                                WHERE sa.statut='publie' AND sva.date > DATE_SUB(NOW(),INTERVAL $periode DAY) 
717                                GROUP BY sva.id_article 
718                                ORDER BY volume DESC 
719                                LIMIT 0,$top"
720        );
721        $ifond = 0;
722        $aff = '';
723
724        $aff .= debut_cadre_relief("article-24.gif", true)
725                . "<table align='center' border='0' cellpadding='2' cellspacing='1' width='100%'>\n"
726                . "<tr><td colspan='5' class='cart_titre_bold verdana3'>" . _T('actijour:top_ten_article_' . $periode . '_j')
727                . "</td></tr>";
728
729        $aff .= "<tr class='legend_topten'><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td></tr>\n";
730
731        while ($row = sql_fetch($q)) {
732                $ifond = $ifond ^ 1;
733                $couleur = ($ifond) ? $couleur_claire : '#FFFFFF';
734
735                $aff .= "<tr bgcolor='$couleur'><td width='7%'>\n"
736                        . "<div align='right' class='verdana2'>"
737                        . affiche_lien_graph($row['id_article'], $row['titre'], $row['statut'], 'spip')
738                        . "</div></td>\n"
739                        . "<td width='70%'>\n<div align='left' class='verdana2'><b>"
740                        . affiche_lien_graph($row['id_article'], $row['titre'], $row['statut'])
741                        . "</b></div></td>\n"
742                        . "<td width='6%'>\n<div align='right' class='verdana1' style='margin-right:3px;'><b>"
743                        . $row['volume'] . "</b></div></td>\n"
744                        . "<td width='7%'>\n<div align='right' class='verdana1' style='margin-right:3px;'><b>"
745                        . $row['picvis'] . "</b></div>\n</td>\n"
746                        . "<td width='10%'>\n<div align='right' class='verdana1' style='margin-right:3px;'><b>"
747                        . $row['visites'] . "</b></div>\n</td>\n</tr>\n";
748        }
749        $aff .= "</table>";
750        $aff .= fin_cadre_relief(true);
751
752        return $aff;
753} // topten_articles_semaine
754
755
756/*---------------------------------------------------------------------------*\
757classement des 10 articles les + visites
758\*---------------------------------------------------------------------------*/
759function topten_articles_global() {
760        global $couleur_claire;
761        $top = $GLOBALS['actijour']['nbl_topgen'];
762
763        $q = sql_select("id_article, titre, statut, visites 
764                                FROM spip_articles WHERE statut='publie' 
765                                ORDER BY visites DESC LIMIT 0,$top"
766        );
767        $ifond = 0;
768        $aff = '';
769
770        $aff .= debut_cadre_relief("article-24.gif", true)
771                . "<table align='center' border='0' cellpadding='2' cellspacing='1' width='100%'>\n"
772                . "<tr><td colspan='5' class='cart_titre_bold verdana3'>" . _T('actijour:top_ten_article_gen')
773                . "</td></tr>";
774
775        $aff .= "<tr class='legend_topten'><td>A</td><td>B</td><td>E</td></tr>";
776
777        while ($row = sql_fetch($q)) {
778                $ifond = $ifond ^ 1;
779                $couleur = ($ifond) ? $couleur_claire : '#FFFFFF';
780                $aff .= "<tr bgcolor='$couleur'><td width='7%'>\n"
781                        . "<div align='right' class='verdana2'>"
782                        . affiche_lien_graph($row['id_article'], $row['titre'], $row['statut'], 'spip')
783                        . "</div></td>\n"
784                        . "<td width='80%'>\n<div align='left' class='verdana2'><b>"
785                        . affiche_lien_graph($row['id_article'], $row['titre'], $row['statut'])
786                        . "</b></div></td>\n"
787                        . "<td width='13%'>\n<div align='right' class='verdana1' style='margin-right:3px;'><b>"
788                        . $row['visites'] . "</b></div>\n</td></tr>\n";
789        }
790        $aff .= "</table>";
791        $aff .= fin_cadre_relief(true);
792
793        return $aff;
794} // topten_articles_global
795
796
797/*---------------------------------------------------------------------------*\
798signatures petitions du jour
799\*---------------------------------------------------------------------------*/
800function signatures_petitions_jour($date) {
801        $r = sql_select("sa.id_article, 
802                                COUNT(DISTINCT ss.id_signature) AS nb_sign_pet, sa.titre 
803                                FROM spip_signatures ss 
804                                LEFT JOIN spip_petitions sp ON ss.id_petition = sp.id_petition
805                                LEFT JOIN spip_articles sa ON sp.id_article = sa.id_article 
806                                WHERE DATE_FORMAT(ss.date_time,'%Y-%m-%d') = '$date' 
807                                GROUP BY sa.id_article"
808        );
809
810        $aff = debut_cadre_relief("", true)
811                . "<div class='bouton_droite icone36'>\n"
812                . "<a href='" . generer_url_ecrire("controle_petition") . "' title='"
813                . _T('actijour:voir_suivi_petitions') . "'>\n"
814                . http_img_pack('suivi-petition-24.gif', 'ico', '', '') . "</a>\n"
815                . "</div>\n\n"
816                . "<br /><span class='arial2 bold'>" . _T('actijour:signatures_petitions') . "</span>\n"
817                . "<div style='clear:both;'></div>\n"
818                . "<ol class='verdana1' style='padding-left:30px;'>\n";
819
820        if (sql_count($r)) {
821                while ($t = sql_fetch($r)) {
822                        $aff .= "<li value='" . $t['id_article'] . "'>"
823                                . $t['titre'] . " : <b>" . $t['nb_sign_pet'] . "</b>"
824                                . "</li>\n";
825                }
826        } else {
827                $aff .= "<li value='0'>" . _T('actijour:aucune_moment') . "</li>";
828        }
829        $aff .= "</ol>\n";
830        $aff .= fin_cadre_relief(true);
831
832        return $aff;
833}
834
835
836/*---------------------------------------------------------------------------*\
837* articles creer/modifer, d un jour donne.. h.26/04/08
838* double affichage :
839        aff_det => affiche tableau complet -> page actijour_art
840        !aff_det => encart dans actijour_pg.
841\*---------------------------------------------------------------------------*/
842function articles_creer_modifer_jour($date_jour, $aff_det = false) {
843        global $couleur_foncee, $couleur_claire;
844
845        $tbl_jour = recup_date($date_jour);
846        $deb_jour = date('YmdHis', mktime(0, 0, 0, $tbl_jour[1], $tbl_jour[2], $tbl_jour[0]));
847        $fin_jour = date('YmdHis', mktime(0, 0, 0, $tbl_jour[1], $tbl_jour[2] + 1, $tbl_jour[0]));
848
849        $jour = date('d/m/Y', mktime(0, 0, 0, $tbl_jour[1], $tbl_jour[2], $tbl_jour[0]));
850
851        $aff = "";
852
853        #
854        $q = sql_select("id_article, titre, statut, id_rubrique, 
855                                                DATE_FORMAT(date,'%d/%m/%Y %H:%i') as f_date, 
856                                                DATE_FORMAT(maj,'%d/%m/%Y %H:%i') as f_maj, 
857                                                DATE_FORMAT(date_redac,'%d/%m/%Y %H:%i') as f_date_redac, 
858                                                DATE_FORMAT(date_modif,'%d/%m/%Y %H:%i') as f_date_modif "
859                . "FROM spip_articles "
860                . "WHERE maj > $deb_jour AND maj < $fin_jour "
861                . "ORDER BY maj DESC"
862        );
863        $nb_art = sql_count($q);
864
865        if ($aff_det) {
866                # tableau de page actijour_art
867
868                $aff .= debut_cadre_relief("", true)
869                        . "<div class='cell_huit_p'>" . _T('actijour:articles_modifies_crees_jour', array('jour' => $jour)) . "</div>";
870
871                if ($nb_art) {
872                        $ifond = 0;
873
874                        $aff .= "<table align='center' border='0' cellpadding='2' cellspacing='0' width='100%'>\n"
875                                . "<tr bgcolor='$couleur_foncee' class='head_tbl'>\n"
876                                . "<td width='7%'>" . _T('actijour:numero_court') . "</td>\n"
877                                . "<td width='50%'>" . _T('actijour:titre_article') . "</td>\n"
878                                . "<td width=25%>" . _T('actijour:date_maj') . "</td>\n"
879                                . "</tr>\n";
880
881                        while ($r = sql_fetch($q)) {
882                                $ifond = $ifond ^ 1;
883                                $couleur = ($ifond) ? '#FFFFFF' : $couleur_claire;
884                                $url_art = generer_url_ecrire('articles', 'id_article=' . $r['id_article']);
885
886                                $aff .= "<tr bgcolor='$couleur'>"
887                                        . "<td width='7%'>\n"
888                                        . "<div align='right' class='verdana2'>"
889                                        . $r['id_article']
890                                        . "</div>\n</td>"
891                                        . "<td width='50%'>\n"
892                                        . "<div class='verdana3' style='margin-left:5px;'><a href='" . $url_art . "'>"
893                                        . http_img_pack("puce-" . puce_statut($r['statut']) . ".gif", 'ico', '', '') . "&nbsp;&nbsp;"
894                                        . entites_html(supprimer_numero($r['titre']))
895                                        . "</a></div>\n"
896                                        . "</td>\n"
897                                        . "<td width='25%'>\n"
898                                        . "<div align='center' class='verdana2'><b>" . $r['f_maj'] . "</b></div></td>\n"
899                                        . "</tr>\n"
900                                        . "<tr bgcolor='$couleur'><td colspan='3'>"
901                                        . "<div align='right' class='verdana1'>"
902                                        . _T('actijour:date_publication_dpt') . $r['f_date'] . "<br />"
903                                        . _T('actijour:date_redaction_dpt') . $r['f_date_redac'] . "</div>\n"
904                                        . "</tr>\n";
905                        }
906                        $aff .= "</table>";
907                } else {
908                        $aff .= _T('actijour:aucun_article_cree');
909                }
910                $aff .= fin_cadre_relief(true);
911        } else {
912                # encart sur actijour_pg
913                $url = generer_url_ecrire('actijour_art', 'd=' . $date_jour);
914                $icone = http_img_pack('article-24.gif', 'ico', '', '');
915
916                $aff .= debut_cadre_relief('', true);
917                $aff .= "<div class='bouton_droite icone36'>\n"
918                        . "<a href='" . $url . "' title='" . _T('actijour:voir_details') . "'>\n"
919                        . $icone . "</a>\n"
920                        . "</div>\n";
921                $aff .= "<span class='arial2 bold'>" . _T('actijour:articles_crees_modifies') . "</span><br />";
922                #
923                if ($nb_art) {
924                        $aff .= http_img_pack(_DIR_IMG_ACJR . "mini_art.png", 'ico', '', '') . "&nbsp;" . $nb_art;
925                } else {
926                        $aff .= _T('actijour:aucun');
927                }
928
929                $aff .= "<div class='nettoyeur'></div>";
930                $aff .= fin_cadre_relief(true);
931
932        }
933
934        return $aff;
935} // articles_creer_modifer_jour
936
937
938/*---------------------------------------------------------------------------*\
939nombre de message forum public (identif. GAFoSPIP/SPIPBB)
940\*---------------------------------------------------------------------------*/
941function activite_forum_site($nbr_post_jour) {
942
943        $pluged = unserialize($GLOBALS['meta']['plugin']);
944
945        if (is_array($pluged['GAF'])) {
946                $icone = "<img src='" . _DIR_PLUGINS . $pluged['GAF']['dir'] . "/img_pack/gaf_ico-24.gif' border='0'>";
947                $url = generer_url_ecrire("gaf_admin");
948                $plugin = 'GAFoSPIP';
949        } elseif (is_array($pluged['SPIPBB'])) {
950                $icone = "<img src='" . _DIR_PLUGINS . $pluged['SPIPBB']['dir'] . "/img_pack/spipbb-24.png' border='0'>";
951                $url = generer_url_ecrire("spipbb_admin");
952                $plugin = 'SpipBB';
953        } else {
954                $icone = http_img_pack('suivi-forum-24.gif', 'ico', '', '');
955                $url = generer_url_ecrire("controle_forum");
956        }
957
958        $aff = debut_cadre_relief('', true);
959        $aff .= "<div class='bouton_droite icone36'>\n"
960                . "<a href='" . $url . "' title='"
961                . ($plugin ? _T('actijour:voir_plugin') . $plugin : _T('actijour:voir_suivi_forums')) . "'>\n"
962                . $icone . "</a>\n"
963                . "</div>\n"
964                . "<span class='bold'>" . _T('actijour:forums') . "</span><br />";
965
966        // nbr posts du jour sur vos forum
967        if ($nbr_post_jour) {
968                $aff .= $nbr_post_jour . "&nbsp;";
969        } else {
970                $aff .= _T('actijour:aucun');
971        }
972
973        if ($nbr_post_jour > 1) {
974                $aff .= _T('actijour:messages');
975        } else {
976                $aff .= _T('actijour:message');
977        }
978
979        $aff .= "<div class='nettoyeur'></div>";
980        $aff .= fin_cadre_relief(true);
981
982        return $aff;
983}
984
985
986/*---------------------------------------------------------------------------*\
987Telechargement de fichiers du jour (via DW2)
988\*---------------------------------------------------------------------------*/
989function telechargement_dw2_jour($date) {
990        $plugins = unserialize($GLOBALS['meta']['plugin']);
991        $aff = '';
992
993        # si DW2 present ?
994        if (is_array($plugins['DW2'])) {
995                $icone = "<img src='" . _DIR_PLUGINS . $plugins['DW2']['dir'] . "/img_pack/telech.gif' border='0'>";
996                $url = generer_url_ecrire("dw2_admin");
997                $plugin = 'DW2';
998
999                $q = sql_select("SUM(telech) AS tot FROM spip_dw2_stats WHERE date=" . _q($date));
1000                $r = sql_fetch($q);
1001
1002                $aff .= debut_cadre_relief('', true);
1003                $aff .= "<div class='bouton_droite icone36'>\n"
1004                        . "<a href='" . $url . "' title='" . _T('actijour:voir_plugin') . $plugin . "'>\n"
1005                        . $icone . "</a>\n"
1006                        . "</div>\n";
1007                $aff .= "<span class='arial2 bold'>" . _T('actijour:telechargements_dpt') . "</span><br />";
1008                #
1009                if ($r['tot']) {
1010                        $aff .= $r['tot'];
1011                } else {
1012                        $aff .= _T('actijour:aucun');
1013                }
1014
1015                $aff .= "<div class='nettoyeur'></div>";
1016                $aff .= fin_cadre_relief(true);
1017        }
1018
1019        return $aff;
1020}
1021
1022
1023/*---------------------------------------------------------------------------*\
1024 formulaire choix date affichee sur page actijour_hier
1025\*---------------------------------------------------------------------------*/
1026function formulaire_periode($date_jour, $retour, $prim_an_stats) {
1027        include_spip('inc/date');
1028
1029        $date = recup_date($date_jour);
1030
1031        $aff = debut_boite_info(true)
1032                . "<form action ='" . generer_url_ecrire($retour) . "' method='post'>"
1033                . "<div style='padding:3px;' align='center' ><b>"
1034                . _T('actijour:jour_affiche_dpt') . "</b><br /><br />"
1035
1036                . afficher_jour($date[2], "name='jour' size='1' class='fondl' ", true)
1037                . afficher_mois($date[1], "name='mois' size='1' class='fondl' ", true) . "<br /><br />"
1038                . acjr_afficher_annee($date[0], "name='annee' size='1' class='fondl' ", $prim_an_stats) . "<br /><br />"
1039
1040                . "<input type='submit' class='fondo' value='" . _T('actijour:text_bouton_afficher') . "' />"
1041                . "</div>"
1042                . "</form>"
1043                . fin_boite_info(true);
1044
1045        return $aff;
1046}
1047
1048function acjr_afficher_annee($annee, $attributs, $debut = 1996) {
1049        $res = ($annee > 1996) ? '' : my_sel($annee, $annee, $annee);
1050        for ($i = $debut; $i <= date("Y"); $i++) { // hack h. : for ($i=$debut; $i < date("Y")+3; $i++) {
1051                $res .= my_sel($i, $i, $annee);
1052        }
1053
1054        return "<select $attributs>\n$res</select>\n";
1055}
1056
1057
1058?>
Note: See TracBrowser for help on using the repository browser.