source: spip-zone/_plugins_/analyclick/branches/V0.1/exec/statistiques_anaclic_v3.php @ 79856

Last change on this file since 79856 was 79856, checked in by jean-marc.viglino@…, 7 years ago

{UPDATE} Mise à jour pour SPIP v3

File size: 5.9 KB
Line 
1<?php
2/**
3* Plugin Analyclick
4*
5* @author: Jean-Marc Viglino (ign.fr)
6*
7* Copyright (c) 2011
8* Logiciel distribue sous licence GNU/GPL.
9*
10* Affichage des statistiques
11*
12**/
13
14if (!defined("_ECRIRE_INC_VERSION")) return;
15
16include_spip('inc/presentation');
17include_spip('inc/statistiques');
18
19function exec_statistiques_anaclic_v3_dist()
20{
21        $id_document = intval(_request('id_document'));
22        $type = _request('type');
23        if (!preg_match('/^\w+$/', $type)) $type = 'day';
24        $duree = intval(_request('duree'));
25        if (!$duree) $duree = 105;
26        $interval = intval(_request('interval'));
27        if (!$interval) {
28          if ($type == 'day')
29            $interval = 3600*24;
30          else $interval = 3600;
31        }
32
33        // nombre de referers a afficher
34        $limit = intval(_request('limit'));
35        if ($limit == 0) $limit = 100;
36
37        if (!autoriser('voirstats', $id_document ? 'document':'', $id_document)) {
38                include_spip('inc/minipres');
39                echo minipres();
40        } else exec_statistiques_anaclic_args($id_document, $duree, $interval, $type, $limit);
41}
42
43/** Affichage des documents les plus telecharges
44*/
45function aff_statistiques_comptage_document($info, $serveur, $id_document, $where, $max)
46{       // Compteur par document
47        $result = sql_select("SUM(telechargement) AS c, id_document", "spip_doc_compteurs", $where, 'id_document', 'c DESC', $max,'', $serveur);
48       
49        $out = "";
50       
51        $classement = 0;
52        while ($r = sql_fetch($result,$serveur)) 
53        {       $id = $r['id_document'];
54                $row = sql_fetsel("titre", "spip_documents", "id_document=$id", '', '', '','', $serveur);
55                $nom = $row['titre'] ? $row['titre'] : _T('document')." #$id";
56                $count = $r['c'];
57                $titre = "";
58                $classement++;
59                //
60                if ($id_document == $id) $out .= "<li class='on'><em>$classement.</em>$nom</li>";
61                else $out .= "<li><em>$classement.</em><a href='" 
62                        . generer_url_ecrire("statistiques_anaclic_v3","id_document=$id") 
63                        . "' title='"
64                        ._T('info_popularite_3', array('popularite' => $count, 'visites' => $visites))
65                        ."'>$nom</a></li>";
66        }
67
68        return !$out ? '' : (
69                debut_cadre_enfonce("",true)
70                .typo($info)
71                ."<ul class='classement'>"
72                .$out
73                ."</ul>"
74                .fin_cadre_enfonce(true));
75}
76
77function exec_statistiques_anaclic_args($id_document, $duree, $interval, $type, $limit,$serveur='')
78{       // Decompte
79        if ($id_document)
80        {       $row = sql_fetsel("SUM(telechargement) AS total_absolu", "spip_doc_compteurs","id_document=$id_document",'','','','',$serveur);
81                $total_absolu = $row ? $row['total_absolu'] : 0;
82                $row = sql_fetsel("titre", "spip_documents","id_document=$id_document",'','','','',$serveur);
83                $titre = typo($row['titre']);
84        } 
85        else 
86        {       $row = sql_fetsel("SUM(telechargement) AS total_absolu", "spip_doc_compteurs",'','','','','',$serveur);
87                $total_absolu = $row ? $row['total_absolu'] : 0;
88        }
89
90        $pour = $titre ? " "._T('info_pour')." &laquo; $titre &raquo;" : "";
91        $commencer_page = charger_fonction('commencer_page', 'inc');
92        echo $commencer_page(_T('anaclic:statistiques_documents').$pour, "statistiques_analic", "analic");
93       
94        echo '<div id="haut">'.barre_onglets("statistiques", "statistiques_anaclic_v3").'</div>';
95        //echo gros_titre(_T('anaclic:statistiques_documents'),'', false);
96        if ($titre) echo gros_titre($titre,'', false);
97
98        echo debut_gauche('', true);
99
100        // Statistiques sur tout le site
101        echo debut_cadre_enfonce("",true);
102        echo typo(_T('anaclic:info_afficher'));
103        echo "<ul>";
104                if ($id_document>0) {
105                        echo "<li><b><a href='" . generer_url_ecrire("statistiques_anaclic_v3","") . "'>"._T('info_tout_site')."</a></b></li>";
106                } else {
107                        echo "<li><b>"._T('titre_page_articles_tous')."</b></li>";
108                }
109        echo "</ul>";
110        echo fin_cadre_enfonce(true);
111
112        // Afficher le document
113        if ($id_document)
114        {       /*
115                $docs = sql_allfetsel("*", "spip_documents", "id_document=$id_document", '', '');
116                // $documenter = charger_fonction('documenter', 'inc');
117                echo debut_cadre('e','doc-24.gif', '', $cadre, "document$id_document")
118                        //.$documenter ($docs, 'document', 'document')
119                        .fin_cadre($style);
120                */
121        }
122       
123        $classement = array();
124        $liste = 0;
125        // Decompte depuis 1 mois
126        echo aff_statistiques_comptage_document(_T('anaclic:info_telechargement_30'), $serveur, $id_document, "date > DATE_SUB(NOW(),INTERVAL 30 DAY)", 20);
127
128        echo creer_colonne_droite('', true);
129       
130        if (autoriser('configurer','anaclic'))
131        {       $res = icone_horizontale(_T('icone_configuration_site'), generer_url_ecrire("anaclic_config"), "statistiques-24.gif","rien.gif", false);
132                echo bloc_des_raccourcis($res);
133        }
134
135        // Decompte depuis le debut
136        $result = aff_statistiques_comptage_document(_T('anaclic:info_telechargement'), $serveur, $id_document, "", 20);
137        echo $result;
138
139        echo debut_droite('', true);
140       
141        // Limiter a un document
142        $duree = intval(_request('duree'));
143        if (!$duree) $duree = 90;
144        $where = "date > DATE_SUB(".sql_quote(date('Y-m-d H:i:s')).",INTERVAL $duree day)";
145        if ($id_document) $where .= " AND id_document=$id_document";
146       
147        // Calcul des statistiques / jour
148        $result = sql_select("date, SUM(telechargement) AS total_absolu", "spip_doc_compteurs",$where,'date','date','','',$serveur);
149        $statj = array();
150        while ($row = sql_fetch($result)) 
151        {       array_push ($statj, [ $row['date'], $row['total_absolu'] ]);
152        }
153        // Calcul des statistiques / mois
154        $result = sql_select("YEAR(date) as year, MONTH(date) as month, SUM(telechargement) AS total_absolu", "spip_doc_compteurs",$where,'year,month','date','','',$serveur);
155        $statm = array();
156        while ($row = sql_fetch($result)) 
157        {       array_push ($statm, [ $row[year]."-".($row['month']<10?'0':'').$row['month'], $row['total_absolu'] ]);
158        }
159        // Affichage
160        echo debut_cadre_sous_rub('statistique-24.png',true,'','', 'statistiques');
161        echo recuperer_fond ('fonds/statistiques_anaclic_v3', array('id_document'=>$id_document, 'duree'=>$duree, 'stat_jour' => json_encode($statj), 'stat_mois' => json_encode($statm) ));
162        echo fin_cadre_relief(true);
163
164        echo fin_gauche(), fin_page(); 
165}
166
167?>
Note: See TracBrowser for help on using the repository browser.