source: spip-zone/_plugins_/actijour_2/inc/affiche_blocs.php @ 47770

Last change on this file since 47770 was 47770, checked in by teddy.spip@…, 10 years ago

Oups!!!

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