source: spip-zone/_plugins_/stats_data/inclure/stats_data.html @ 109291

Last change on this file since 109291 was 109291, checked in by booz@…, 16 months ago

presentation

File size: 12.2 KB
Line 
1#CACHE{0}
2[(#REM)
3Afficher des stats dans l'admin avec des boucles data :
4- Le nombre de visites sur la période (en ce moment | aujourd'hui | hier )
5- Les articles lus sur la période, ordonnés par nombre de visites
6- Les domaines affulents sur la période (éventuellement par article), ordonnés par nombre de visites
7
8        Array
9                a2192 => Array
10                        visites => 1557
11       
12                a58360 => Array
13                        visites => 787
14       
15- Les domaines affluents (éventuellement d'un article) et leurs liens entrant, ordonnés par leur nombre de visites.
16        Array
17                monsite => Array
18                        visites => 1
19                        sites_affluents => Array
20                                0 => http://www.monsite.net/Organisations.html
21
22]
23
24[(#REM) Régler la date (actuellement, aujourd'hui, hier) ]
25
26[(#REM) Aujourd'hui : date du jour ]
27#SET{date,#DATE|affdate{Y-m-d}}
28
29[(#REM) Actuellement : date du fichier de visite le plus recemment modifié ]
30<BOUCLE_derniere_visite(DATA){si #ENV{jour}|non}{source ls,#CHEMIN{tmp/visites}/*}{!par mtime}>
31#SET{date,#VAL{Y-m-d H:i:s}|date{#MTIME}}
32#SET{maj,#GET{date}}
33</BOUCLE_derniere_visite>
34
35[(#REM) Hier : date de la veille ]
36[(#ENV{jour}|=={veille}|oui) #SET{date,#VAL{Y-m-d}|date{#VAL{-1 day}|strtotime} ]
37
38[(#REM) Peupler les tableaux de stats (articles, domaines affluents) ]
39
40#SET{articles_lus,#ARRAY}
41#SET{sites_affluents,#ARRAY}
42#SET{referers_articles,#ARRAY}
43
44#SET{reg_domaine,"^[a-zA-Z_-]+://([a-zA-Z]+\.)?([a-zA-Z]+\.)?((?!com|co)[a-zA-Z0-9-_]+)\.((?:com|co)\.)?([a-zA-Z]{2,3})"}
45
46[(#REM) Si la période n'est pas précisée parcourir les fichiers de visites en cours dans tmp/visites et enregistrer les données dans des tableaux (articles lus, sites affluents, et nombre de visites sur les articles) ]
47
48<BOUCLE_visites(DATA){source ls,#EVAL{_DIR_TMP . 'visites'}/*}{si #ENV{jour}|non}><BOUCLE_visite(DATA){source file,#FILE}><BOUCLE_pages_vues(DATA){source table,#VALEUR|unserialize}>
49#SET{type,#CLE|explode{"        "}|table_valeur{0}}
50#SET{id,#CLE|explode{"  "}|table_valeur{1}}
51#SET{referrer,#CLE|explode{"    "}|table_valeur{2}}
52
53[(#REM)
54        Récupérer les articles lus ordonnés par nombre de visites
55]
56[(#GET{type}|=={article}|oui)
57        #SET{valeurs_actuelles,#GET{articles_lus}|table_valeur{a#GET{id}}|sinon{#ARRAY}}
58        #SET{nb_visites,#GET{articles_lus}|table_valeur{a#GET{id}}|table_valeur{visites}|plus{1}}
59        #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
60        #SET{ajout,#ARRAY{a#GET{id},#GET{valeurs_actuelles}}}
61       
62        [(#ENV{id_article}|non)
63                #SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
64        ]
65        [(#ENV{id_article}|oui)
66                [(#ENV{id_article}|=={#GET{id}}|oui)
67                        #SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
68                ]
69        ]
70]
71
72[(#REM)
73        Récupérer les sites affluents ordonnés par leur nombre de visites, et garder les referrers.
74]
75[(#GET{referrer}|oui)
76        #SET{domaine,#GET{referrer}|match{#GET{reg_domaine},"i",3}}
77        #SET{valeurs_actuelles,#GET{sites_affluents}|table_valeur{#GET{domaine}}|sinon{#ARRAY}}
78       
79        #SET{nb_visites,#GET{valeurs_actuelles}|table_valeur{visites}|plus{1}}
80        #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
81       
82        #SET{referers_actuels,#GET{valeurs_actuelles}|table_valeur{referers}|sinon{#ARRAY}}
83        #SET{referers,#GET{referers_actuels}|push{#GET{referrer}}}
84        #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{referers,#GET{referers}}}}
85       
86        #SET{ajout,#ARRAY{#GET{domaine},#GET{valeurs_actuelles}}}
87       
88        [(#ENV{id_article}|non)
89                #SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
90        ]
91        [(#ENV{id_article}|=={#GET{id}}|oui)
92                #SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
93        ]
94]
95</BOUCLE_pages_vues></BOUCLE_visite></BOUCLE_visites>
96#SET{visites,#TOTAL_BOUCLE}
97</B_visites>
98       
99        [(#REM)
100                Cas alternatif avec période précisée : on regarde non pas dans les fichiers de session mais dans la BDD.
101                A refaire avec la boucle date stats_referers_to_array du plugin statistiques ?
102        ]
103       
104        [(#REM) Aujourd'hui / hier = boucle data sql pour obtenir les infos à la date demandée. ]
105       
106        #SET{reqd,#VAL{"select * from spip_visites where date='LADATE' order by maj desc limit 0,1"}|replace{LADATE,#GET{date}}}
107       
108        <BOUCLE_visites_jour(DATA){si #ENV{jour}}{source sql,#GET{reqd}}>
109        #SET{visites,#VISITES}
110        #SET{maj,#MAJ}
111       
112        [(#SET{req,select * from spip_visites_articles where date=[(#DATE|affdate{Y-m-d}|_q)] order by visites desc})]
113       
114        #SET{demain,#VAL{Y-m-d}|date{#VAL{+1 day}|strtotime{#DATE|strtotime}}
115        [(#SET{select,[(#VAL{"select visites_JOUR visites, referer"}|replace{JOUR,[(#ENV{jour})]})]})]
116        [(#SET{periode,[(#VAL{"visites_JOUR"}|replace{JOUR,[(#ENV{jour})]})]})]
117       
118        [(#SET{req_affluents,[(#GET{select})] from spip_referers where [(#GET{periode})] > 0 order by [(#GET{periode})] desc })]
119       
120        [(#REM) si article dans le contexte on précise ]
121        #SET{lendemain,#VAL{Y-m-d}|date{#VAL{+1 day}|strtotime{#GET{date}|strtotime}}}
122        [(#ENV{id_article}|oui)
123                [(#SET{req,select * from spip_visites_articles where date=[(#GET{date}|affdate{Y-m-d}|_q)] and id_article=[(#ENV{id_article})] order by visites desc})]
124                [(#SET{req_affluents,[(#GET{select})] from spip_referers_articles where [(#GET{periode})] > 0 and id_article=[(#ENV{id_article})] order by [(#GET{periode})] desc })]
125        ]
126        </BOUCLE_visites_jour>
127       
128        [(#REM)
129                <hr>
130                [(#GET{req})]
131                <hr>
132                [(#GET{req_affluents})]
133                <hr>
134        ]
135        <BOUCLE_articles_jour(DATA){source sql,#GET{req}}>
136               
137                #SET{valeurs_actuelles,#GET{articles_lus}|table_valeur{a#ID_ARTICLE}|sinon{#ARRAY}}
138               
139                #SET{nb_visites,#GET{articles_lus}|table_valeur{a#ID_ARTICLE}|table_valeur{visites}|plus{#VISITES}}
140                #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
141               
142                #SET{ajout,#ARRAY{a#ID_ARTICLE,#GET{valeurs_actuelles}}}
143                #SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
144               
145        </BOUCLE_articles_jour>
146       
147        #SET{domaines,#ARRAY}
148        #SET{valeurs_actuelles,#ARRAY}
149        [(#REM) Referers qui ont envoyé des visites dans la période ]
150        <BOUCLE_affluents_jour_(DATA){source sql,#GET{req_affluents}}>
151               
152                #SET{domaine,#REFERER|match{#GET{reg_domaine},"i",3}}
153                #SET{valeurs_actuelles,#GET{sites_affluents}|table_valeur{#GET{domaine}}|sinon{#ARRAY}}
154               
155                #SET{nb_visites,#GET{valeurs_actuelles}|table_valeur{visites}|plus{1}}
156                #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
157               
158                #SET{referers_actuels,#GET{valeurs_actuelles}|table_valeur{referers}|sinon{#ARRAY}}
159                #SET{referers,#GET{referers_actuels}|push{#REFERER}}
160                #SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{referers,#GET{referers}}}}
161               
162                #SET{ajout,#ARRAY{#GET{domaine},#GET{valeurs_actuelles}}}
163               
164                #SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
165               
166        </BOUCLE_affluents_jour_>
167<//B_visites>
168
169[(#ENV{id_article}|oui) #SET{visites,#GET{articles_lus}|table_valeur{a#ENV{id_article}}|table_valeur{visites}} ]
170
171[(#REM)
172        Affichage final des données enregistrées dans les tableaux.
173]
174
175<style type="text/css">
176#data_stats{
177        margin:0 0 40px 0;
178}
179#data_stats li > p{
180        margin-left:10px;
181}
182#data_stats > li {
183        float:left;
184        width:33%;
185        list-style-type:none;
186        text-align:center;
187}
188#data_stats ul{
189        margin:0;
190        padding:0;
191        list-style-type:none;
192}
193.stats_valeur{
194        margin-top: 0.3em;
195        font-size:3.8em;
196        font-weight:bold;
197        line-height: 1em;
198}
199.onglets_simple ul li{
200        display:inline;
201}
202.valeur{
203        max-height:500px;
204        overflow:auto;
205        text-align:left;
206}
207.stats_visites .valeur{
208        max-height:250px;
209}
210.stats_contenu p{
211        margin:0 0 20px 0;
212}
213.queue.leu-leu > div{
214        float:left;
215        margin-right:3em;
216}
217#conteneur_stats{
218        clear: both;
219}
220</style>
221
222[(#REM) Menu date ]
223
224<div class="queue leu-leu">
225        <div>
226                <div class="onglets_simple clearfix">
227                        <ul>
228                                <li>[(#SELF|parametre_url{jour,''}|lien_ou_expose{En ce moment,[(#ENV{jour,''}|non)],ajax})]</li>
229                                <li>[(#SELF|parametre_url{jour,jour}|lien_ou_expose{<:date_aujourdhui|ucfirst:>,#ENV{jour,''}|=={jour},ajax})]</li>
230                                <li>[(#SELF|parametre_url{jour,veille}|lien_ou_expose{<:date_hier|ucfirst:>,#ENV{jour,''}|=={veille},ajax})]</li>
231                        </ul>
232                </div>
233        </div>
234        <div>
235                [<h2><a href="[(#SELF|parametre_url{id_article,''})]" class="ajax">(#GET{date}|affdate)</a><small title="Dernière mise à jour le [(#GET{maj}|affdate)] [ (#GET{maj}|affdate{H\hi s})s]"> — [ (#GET{maj}|affdate{H\hi})</small>]</h2>]
236        </div>
237        <div>
238                <h3><BOUCLE_titre(ARTICLES){id_article=#ENV{id_article}}><a href="#URL_ARTICLE">[(#TITRE|couper{25})]</a></BOUCLE_titre>Tous les articles lus<//B_titre></h3>
239        </div>
240</div>
241
242[(#REM) Afficher les tableaux ]
243
244[(#REM)
245[<pre><code>(#GET{articles_lus}|print_r{1})</code></pre>]
246[<pre style="height:300px;overflow:auto"><code>(#GET{sites_affluents}|print_r{1})</code></pre>]
247]
248
249<div id="conteneur_stats">
250       
251        [(#REM) Afficher les données du tableau ]
252       
253        <ul id="data_stats">
254               
255                #SET{stat,#GET{visites}|number_format{0,""," "}}
256                #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
257                #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
258               
259                [(#GET{milliers}|oui)
260                        #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
261                ]
262                [(#GET{milliers}|non)
263                        #SET{stat_court,#GET{stat}}
264                ]
265                <li>
266                        <div class="stats_contenu" style="padding-right:20px;">
267                                <div class="stats_valeur" title="[(#GET{stat})] visites">[(#GET{stat_court})]</div>
268                                <p><strong>visite[(#GET{stat}|>{1}|?{s})] [(#ENV{jour}|non)<br><small>en&nbsp;cours</small>]</strong></p>
269                        </div>
270                </li>
271               
272                #SET{stat,#GET{articles_lus}|sizeof||number_format{0,""," "}}
273                #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
274                #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
275               
276                [(#GET{milliers}|oui)
277                        #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
278                ]
279               
280                [(#GET{milliers}|non)
281                        #SET{stat_court,#GET{stat}}
282                ]
283               
284                <li>
285                        <BOUCLE_compte_articles(DATA){source table,#GET{articles_lus}} /> #SET{nb_articles_lus,#TOTAL_BOUCLE}<//B_compte_articles>
286                        <div class="stats_contenu" style="padding-right:20px;">
287                                [(#GET{nb_articles_lus}|>{1}|oui)
288                                <div class="stats_valeur" title="[(#GET{stat})] articles lus">[(#GET{stat_court})]</div>
289                                <p style="margin-bottom:40px;"><strong>articles lu[(#GET{stat}|>{1}|?{s})]</strong></p>
290                                ]
291                                <B_articles>
292                                #ANCRE_PAGINATION
293                                <ul class="valeur">
294                                        <BOUCLE_articles(DATA){source table,#GET{articles_lus}}{!par visites}{pagination 50}>
295                                        <li>
296                                        <BOUCLE_article(ARTICLES){id_article=#CLE|replace{^a}}>
297                                                [(#GET{nb_articles_lus}|>{1}|oui)
298                                                <small>
299                                                        <a href="[(#SELF|parametre_url{id_article,#ID_ARTICLE})]" class="ajax">[(#_articles:VISITES|number_format{0,"","&nbsp;"})] visite[(#_articles:VISITES|>{1}|?{s})]</a>
300                                                </small> -
301                                                ]
302                                                <a href="[(#URL_ARTICLE)]">#TITRE</a>
303                                        </BOUCLE_article>
304                                        </li>
305                                        </BOUCLE_articles>
306                                </ul>
307                                <p style="margin:10px">#PAGINATION</p>
308                                </B_articles>
309                        </div>
310                </li>
311               
312                <BOUCLE_total_visites_domaine(DATA){source table,#GET{sites_affluents}}>
313                        #SET{total,#GET{total}|plus{#VISITES}}
314                </BOUCLE_total_visites_domaine>
315               
316                <li>
317                        #SET{stat,#GET{total}|number_format{0,""," "}}
318                        #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
319                        #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
320                        [(#GET{milliers}|oui)
321                                #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
322                        ]
323                        [(#GET{milliers}|non)
324                                #SET{stat_court,#GET{stat}}
325                        ]
326                        <B_affluents>
327                        <div class="stats_contenu">
328                                <div class="stats_valeur" title="[(#GET{stat})] visites">[(#GET{stat_court})]</div>
329                                <p><strong>visite[(#GET{stat}|>{1}|?{s})]<br><small>par&nbsp;[(#GRAND_TOTAL|number_format{0,"","&nbsp;"})]&nbsp;domaine[(#GRAND_TOTAL|>{1}|?{s})] affluent[(#GRAND_TOTAL|>{0}|?{s})]</small></strong></p>
330                                #ANCRE_PAGINATION
331                                <ul class="valeur">
332                                        <BOUCLE_affluents(DATA){source table,#GET{sites_affluents}}{!par visites}{pagination 10}>
333                                        <li style="width:80%">
334                                                <h3>[(#CLE|ucfirst)] <small>([(#VISITES) visite[(#VISITES|>{1}|?{s})]])</small></h3>
335                                               
336                                                <B_referers_>
337                                                <ul style="margin-bottom:10px;height:4em;overflow:auto;">
338                                                <BOUCLE_referers_(DATA){source table, #VALEUR{referers}}{par valeur}>
339                                                        [<li><a href="(#VALEUR)">[(#VALEUR|replace{^https?://}|replace{"\?.*$"}|couper{30})]</a></li>]
340                                                </BOUCLE_referers_>
341                                                </ul>
342                                                </B_referers_>
343                                        </li>
344                                        </BOUCLE_affluents>
345                                </ul>
346                                <p style="margin:10px">#PAGINATION</p>
347                        </div>
348                        </B_affluents>
349                </li>
350        </ul>
351       
352</div>
353<p style="text-align:center;clear:both;">...</p>
Note: See TracBrowser for help on using the repository browser.