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

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

on passe par mes_options sinon la surchrage echoue on dirait

File size: 14.7 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}{0,1}>
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.marge{
221        margin:1em 0;
222}
223.domaines.connus{
224        text-align:left;
225}
226.domaines.connus dt{
227        font-weight:bold;
228}
229.domaines.connus dd{
230       
231}
232
233</style>
234
235[(#REM) Menu date ]
236
237<div class="queue leu-leu">
238        <div>
239                <div class="onglets_simple clearfix">
240                        <ul>
241                                <li>[(#SELF|parametre_url{jour,''}|lien_ou_expose{En ce moment,[(#ENV{jour,''}|non)],ajax})]</li>
242                                <li>[(#SELF|parametre_url{jour,jour}|lien_ou_expose{<:date_aujourdhui|ucfirst:>,#ENV{jour,''}|=={jour},ajax})]</li>
243                                <li>[(#SELF|parametre_url{jour,veille}|lien_ou_expose{<:date_hier|ucfirst:>,#ENV{jour,''}|=={veille},ajax})]</li>
244                        </ul>
245                </div>
246        </div>
247        <div>
248                <div class="marge">
249                        [<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}|sinon{/na})</small>]</h2>]
250                </div>
251        </div>
252        <div>
253                <div class="marge">
254                        <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>
255                </div>
256        </div>
257</div>
258
259[(#REM) Afficher les tableaux ]
260
261[(#REM)
262[<pre><code>(#GET{articles_lus}|print_r{1})</code></pre>]
263[<pre style="height:300px;overflow:auto"><code>(#GET{sites_affluents}|print_r{1})</code></pre>]
264]
265
266#SET{reg_moteurs,"Google|Duckduckgo|Yahoo|Baidu|Bing|Yandex"}
267#SET{reg_reseaux_sociaux,"Facebook|^t$"}
268#SET{reg_emails,"outlook"}
269#SET{reg_site,#URL_SITE_SPIP|replace{^https?://}|replace{\..*$}}
270[(#SET{domaines_connus,[(#GET{reg_moteurs})]|[(#GET{reg_reseaux_sociaux})]|[(#GET{reg_site})]})]
271
272<div id="conteneur_stats">
273       
274        [(#REM) Afficher les données du tableau ]
275       
276        <ul id="data_stats">
277               
278                #SET{stat,#GET{visites}|number_format{0,""," "}}
279                #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
280                #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
281               
282                [(#GET{milliers}|oui)
283                        #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
284                ]
285                [(#GET{milliers}|non)
286                        #SET{stat_court,#GET{stat}}
287                ]
288                <li>
289                        <div class="stats_contenu" style="padding-right:20px;">
290                                <div class="stats_valeur" title="[(#GET{stat})] visites">[(#GET{stat_court})]</div>
291                                <p>
292                                        <strong>visite[(#GET{stat}|>{1}|?{s})]</strong>
293                                        <BOUCLE_plus_vielle_visite_en_cours(DATA){si #ENV{jour}|non}{source ls,#CHEMIN{tmp/visites}/*}{par mtime}{0,1}>
294                                                <br><small title="[Visite inactive vue (#VAL{Y-m-d H:i:s}|date{#MTIME}|date_interface)]">en&nbsp;cours</small>
295                                        </BOUCLE_plus_vielle_visite_en_cours>
296                                </p>
297                        </div>
298                       
299                        <div class="domaines connus">
300                                <B_moteurs_recherche>
301                                <h3>Principaux affluents</h3>
302                                <dl>
303                                        <dt>Moteurs de recherche</dt>
304                                        <BOUCLE_moteurs_recherche(DATA){source table,#GET{sites_affluents}}{cle==#GET{reg_moteurs}}{!par visites}>
305                                        <dd>[(#CLE|ucfirst)] <small>([(#VISITES) visite[(#VISITES|>{1}|?{s})]])</small></dd>
306                                        [(#REM)<dd>[(#VALEUR|print_r{1})]</dd>]
307                                        </BOUCLE_moteurs_recherche>
308                                       
309                                        <B_reseaux_sociaux>
310                                        <dt>Réseaux sociaux</dt>
311                                        <BOUCLE_reseaux_sociaux(DATA){source table,#GET{sites_affluents}}{cle==#GET{reg_reseaux_sociaux}}{!par visites}>
312                                        <dd>[(#CLE|replace{^t$,twitter}|ucfirst)] <small>([(#VISITES) visite[(#VISITES|>{1}|?{s})]])</small></dd>
313                                        [(#REM)<dd>[(#VALEUR|print_r{1})]</dd>]
314                                        </BOUCLE_reseaux_sociaux>
315                                       
316                                </dl>
317                                </B_moteurs_recherche>
318                               
319                                #SET{reg_recherche,#URL_PAGE{recherche}|replace{^https?://}|preg_quote|concat{&(amp;)?recherche=}}
320                                <BOUCLE_recherches(DATA){source table,#GET{sites_affluents}}{cle==#GET{reg_site}}{!par visites}>
321                                        <h3>#VISITES terme[(#VISITES|>{1}|?{s})] recherché[(#VISITES|>{1}|?{s})]</h3>
322                                        <ul style="margin-bottom:10px;height:10em;overflow:auto;">
323                                        <BOUCLE_recherche(DATA){source table,#REFERERS|array_unique}{pagination 50}>
324                                                <li>[<a href="#VALEUR">(#VALEUR|replace{^https?://}|replace{#GET{reg_recherche}}|urldecode)]</a></li>
325                                        </BOUCLE_recherche>
326                                        </ul>
327                                        <p>#PAGINATION</p>
328                                        </B_recherche>
329                                </BOUCLE_recherches>
330                               
331                        </div>
332                </li>
333               
334                #SET{stat,#GET{articles_lus}|sizeof||number_format{0,""," "}}
335                #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
336                #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
337               
338                [(#GET{milliers}|oui)
339                        #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
340                ]
341               
342                [(#GET{milliers}|non)
343                        #SET{stat_court,#GET{stat}}
344                ]
345               
346                <li>
347                        <BOUCLE_compte_articles(DATA){source table,#GET{articles_lus}} /> #SET{nb_articles_lus,#TOTAL_BOUCLE}<//B_compte_articles>
348                        <div class="stats_contenu" style="padding-right:20px;">
349                                [(#GET{nb_articles_lus}|>{1}|oui)
350                                <div class="stats_valeur" title="[(#GET{stat})] articles lus">[(#GET{stat_court})]</div>
351                                <p style="margin-bottom:40px;"><strong>articles lu[(#GET{stat}|>{1}|?{s})]</strong></p>
352                                ]
353                                <B_articles>
354                                #ANCRE_PAGINATION
355                                <ul class="valeur">
356                                        <BOUCLE_articles(DATA){source table,#GET{articles_lus}}{!par visites}{pagination 50}>
357                                        <li>
358                                        <BOUCLE_article(ARTICLES){id_article=#CLE|replace{^a}}>
359                                                [(#GET{nb_articles_lus}|>{1}|oui)
360                                                <small>
361                                                        <a href="[(#SELF|parametre_url{id_article,#ID_ARTICLE})]" class="ajax">[(#_articles:VISITES|number_format{0,"","&nbsp;"})] visite[(#_articles:VISITES|>{1}|?{s})]</a>
362                                                </small> -
363                                                ]
364                                                <a href="[(#URL_ARTICLE)]">#TITRE</a>
365                                        </BOUCLE_article>
366                                        </li>
367                                        </BOUCLE_articles>
368                                </ul>
369                                <p style="margin:10px">#PAGINATION</p>
370                                </B_articles>
371                        </div>
372                </li>
373               
374                <BOUCLE_total_visites_domaine(DATA){source table,#GET{sites_affluents}}>
375                        #SET{total,#GET{total}|plus{#VISITES}}
376                </BOUCLE_total_visites_domaine>
377               
378                <li>
379                        #SET{stat,#GET{total}|number_format{0,""," "}}
380                        #SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
381                        #SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
382                        [(#GET{milliers}|oui)
383                                #SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines}&nbsp;K}|replace{",0"}}
384                        ]
385                        [(#GET{milliers}|non)
386                                #SET{stat_court,#GET{stat}}
387                        ]
388                        <B_affluents>
389                        <div class="stats_contenu">
390                                <div class="stats_valeur" title="[(#GET{stat})] visites">[(#GET{stat_court})]</div>
391                                <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>
392                                #ANCRE_PAGINATION
393                                <ul class="valeur">
394                                        <BOUCLE_affluents(DATA){source table,#GET{sites_affluents}}{cle !==#GET{domaines_connus}}{!par visites}{pagination 10}>
395                                        <li style="width:80%">
396                                                <h3>[(#CLE|ucfirst)] <small>([(#VISITES) visite[(#VISITES|>{1}|?{s})]])</small></h3>
397                                               
398                                                <B_referers_>
399                                                <ul style="margin-bottom:10px;height:4em;overflow:auto;">
400                                                <BOUCLE_referers_(DATA){source table, #VALEUR{referers}|array_unique}{par valeur}>
401                                                        [<li><a href="(#VALEUR)">[(#VALEUR|replace{^https?://}|replace{"\?.*$"}|couper{30})]</a></li>]
402                                                </BOUCLE_referers_>
403                                                </ul>
404                                                </B_referers_>
405                                        </li>
406                                        </BOUCLE_affluents>
407                                </ul>
408                                <p style="margin:10px">#PAGINATION</p>
409                        </div>
410                        </B_affluents>
411                </li>
412        </ul>
413       
414</div>
415<p style="text-align:center;clear:both;">...</p>
416Dernière purge : #CONFIG{date_statistiques}
417<?php
418
419if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) == 0) {
420        echo "sqlite" ;
421        //spip_query("UPDATE spip_referers_articles SET visites_veille=visites_jour, visites_jour=0");
422       
423       
424       
425}
426
427?>
Note: See TracBrowser for help on using the repository browser.