#CACHE{0}
[(#REM)
Afficher des stats dans l'admin avec des boucles data :
- Le nombre de visites sur la période (en ce moment | aujourd'hui | hier )
- Les articles lus sur la période, ordonnés par nombre de visites
- Les domaines affulents sur la période (éventuellement par article), ordonnés par nombre de visites
Array
a2192 => Array
visites => 1557
a58360 => Array
visites => 787
- Les domaines affluents (éventuellement d'un article) et leurs liens entrant, ordonnés par leur nombre de visites.
Array
monsite => Array
visites => 1
sites_affluents => Array
0 => http://www.monsite.net/Organisations.html
]
[(#ENV{objet,''}|=={article}|oui)
[(#ENV{id_objet}|setenv{id_article})]
]
[(#REM) types de sites affluents) ]
[(#SET{reg_moteurs,^([(#VAL|regexp_moteurs)])$})]
#SET{reg_reseaux_sociaux,"Facebook|^t$|Mamot|Twitter"}
#SET{reg_emails,"outlook"}
[(#REM) Régler la date (actuellement, aujourd'hui, hier) ]
[(#REM) Aujourd'hui : date du jour ]
#SET{date,#DATE|affdate{Y-m-d}}
[(#REM) Actuellement : date du fichier de visite le plus recemment modifié ]
#SET{date,#VAL{Y-m-d H:i:s}|date{#MTIME}}
#SET{maj,#GET{date}}
[(#REM) Hier : date de la veille ]
[(#ENV{jour}|=={veille}|oui) #SET{date,#VAL{Y-m-d}|date{#VAL{-1 day}|strtotime} ]
[(#REM) Peupler les tableaux de stats (articles, domaines affluents) ]
#SET{articles_lus,#ARRAY}
#SET{sites_affluents,#ARRAY}
#SET{referers_articles,#ARRAY}
#SET{reg_domaine,"^[a-zA-Z_-]+://([a-zA-Z]+\.)?([a-zA-Z]+\.)?([a-zA-Z0-9-_]+)\.((?:com|co)\.)?([a-zA-Z]{2,3})"}
[(#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) ]
[(#REM)
#FILE
] [(#REM) #CLE -> [(#VALEUR|print)]
]
#SET{type,#CLE|explode{" "}|table_valeur{0}}
#SET{id,#CLE|explode{" "}|table_valeur{1}}
#SET{referrer,#CLE|explode{" "}|table_valeur{2}}
[(#REM)
Récupérer les articles lus ordonnés par nombre de visites
]
[(#GET{type}|=={article}|oui)
#SET{valeurs_actuelles,#GET{articles_lus}|table_valeur{a#GET{id}}|sinon{#ARRAY}}
#SET{nb_visites,#GET{articles_lus}|table_valeur{a#GET{id}}|table_valeur{visites}|plus{1}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
#SET{ajout,#ARRAY{a#GET{id},#GET{valeurs_actuelles}}}
[(#ENV{id_article}|non)
#SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
]
[(#ENV{id_article}|oui)
[(#ENV{id_article}|=={#GET{id}}|oui)
#SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
]
]
]
[(#REM)
Récupérer les sites affluents ordonnés par leur nombre de visites, et garder les referrers.
]
[(#GET{referrer}|oui)
#SET{domaine,#GET{referrer}|url2domaine}
#SET{valeurs_actuelles,#GET{sites_affluents}|table_valeur{#GET{domaine}}|sinon{#ARRAY}}
#SET{nb_visites,#GET{valeurs_actuelles}|table_valeur{visites}|plus{1}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
#SET{referers_actuels,#GET{valeurs_actuelles}|table_valeur{referers}|sinon{#ARRAY}}
#SET{referers,#GET{referers_actuels}|push{#GET{referrer}}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{referers,#GET{referers}}}}
#SET{ajout,#ARRAY{#GET{domaine},#GET{valeurs_actuelles}}}
[(#ENV{id_article}|non)
#SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
]
[(#ENV{id_article}|=={#GET{id}}|oui)
#SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
]
]
#SET{visites,#TOTAL_BOUCLE}
[(#REM)
Cas alternatif avec période précisée : on regarde non pas dans les fichiers de session mais dans la BDD.
A refaire avec la boucle date stats_referers_to_array du plugin statistiques ?
]
[(#REM) Aujourd'hui / hier = boucle data sql pour obtenir les infos à la date demandée. ]
#SET{reqd,#VAL{"select * from spip_visites where date='LADATE' order by maj desc limit 0,1"}|replace{LADATE,#GET{date}}}
#SET{visites,#VISITES}
#SET{maj,#MAJ}
[(#SET{req,select * from spip_visites_articles where date=[(#DATE|affdate{Y-m-d}|_q)] order by visites desc})]
#SET{demain,#VAL{Y-m-d}|date{#VAL{+1 day}|strtotime{#DATE|strtotime}}
[(#SET{select,[(#VAL{"select visites_JOUR visites, referer"}|replace{JOUR,[(#ENV{jour})]})]})]
[(#SET{periode,[(#VAL{"visites_JOUR"}|replace{JOUR,[(#ENV{jour})]})]})]
[(#SET{req_affluents,[(#GET{select})] from spip_referers where [(#GET{periode})] > 0 order by [(#GET{periode})] desc })]
[(#REM) si article dans le contexte on précise ]
#SET{lendemain,#VAL{Y-m-d}|date{#VAL{+1 day}|strtotime{#GET{date}|strtotime}}}
[(#ENV{id_article}|oui)
[(#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})]
[(#SET{req_affluents,[(#GET{select})] from spip_referers_articles where [(#GET{periode})] > 0 and id_article=[(#ENV{id_article})] order by [(#GET{periode})] desc })]
]
[(#REM)
[(#GET{req})]
[(#GET{req_affluents})]
]
#SET{valeurs_actuelles,#GET{articles_lus}|table_valeur{a#ID_ARTICLE}|sinon{#ARRAY}}
#SET{nb_visites,#GET{articles_lus}|table_valeur{a#ID_ARTICLE}|table_valeur{visites}|plus{#VISITES}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
#SET{ajout,#ARRAY{a#ID_ARTICLE,#GET{valeurs_actuelles}}}
#SET{articles_lus,#GET{articles_lus}|array_merge{#GET{ajout}}}
#SET{domaines,#ARRAY}
#SET{valeurs_actuelles,#ARRAY}
[(#REM) Referers qui ont envoyé des visites dans la période ]
#SET{domaine,#REFERER|url2domaine}
#SET{valeurs_actuelles,#GET{sites_affluents}|table_valeur{#GET{domaine}}|sinon{#ARRAY}}
#SET{nb_visites,#GET{valeurs_actuelles}|table_valeur{visites}|plus{#VISITES}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{visites,#GET{nb_visites}}}}
#SET{referers_actuels,#GET{valeurs_actuelles}|table_valeur{referers}|sinon{#ARRAY}}
#SET{referers,#GET{referers_actuels}|push{#REFERER}}
#SET{valeurs_actuelles,#GET{valeurs_actuelles}|array_merge{#ARRAY{referers,#GET{referers}}}}
#SET{ajout,#ARRAY{#GET{domaine},#GET{valeurs_actuelles}}}
#SET{sites_affluents,#GET{sites_affluents}|array_merge{#GET{ajout}}}
/B_visites>
[(#ENV{id_article}|oui) #SET{visites,#GET{articles_lus}|table_valeur{a#ENV{id_article}}|table_valeur{visites}} ]
[(#REM)
Affichage final des données enregistrées dans les tableaux.
]
[(#REM) Menu date ]
- [(#SELF|parametre_url{jour,''}|lien_ou_expose{En ce moment,[(#ENV{jour,''}|non)],ajax})]
- [(#SELF|parametre_url{jour,jour}|lien_ou_expose{<:date_aujourdhui|ucfirst:>,#ENV{jour,''}|=={jour},ajax})]
- [(#SELF|parametre_url{jour,veille}|lien_ou_expose{<:date_hier|ucfirst:>,#ENV{jour,''}|=={veille},ajax})]
[(#REM) Afficher les tableaux ]
[(#REM)
[(#GET{articles_lus}|print_r{1})
]
[(#GET{reg_moteurs})
]
[(#GET{sites_affluents}|print_r{1})
]
]
#SET{reg_site,#URL_SITE_SPIP|match{#GET{reg_domaine},"i",3}}
[(#SET{reg_domaines_connus,[(#GET{reg_moteurs})]|[(#GET{reg_reseaux_sociaux})]|[(#GET{reg_site})]})]
#SET{total,#GET{total}|plus{#VISITES}}
[(#CLE|match{#GET{reg_moteurs},"i"}|oui) #SET{total_moteurs,#GET{total_moteurs}|plus{#VISITES}} ]
[(#CLE|match{#GET{reg_reseaux_sociaux}}|oui) #SET{total_reseaux_sociaux,#GET{total_reseaux_sociaux}|plus{#VISITES}} ]
[(#CLE|match{#GET{reg_domaines_connus}}|non) #SET{total_autres_affluents,#GET{total_autres_affluents}|plus{#VISITES}} ]
#SET{domaines_connus,#ARRAY{Moteurs de recherche,#GET{total_moteurs},Réseaux sociaux,#GET{total_reseaux_sociaux},Autres affluents,#GET{total_autres_affluents}}}
[(#REM) Afficher les données du tableau ]
#SET{stat,#GET{visites}|number_format{0,""," "}}
#SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
#SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
[(#GET{milliers}|oui)
#SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines} K}|replace{",0"}}
]
[(#GET{milliers}|non)
#SET{stat_court,#GET{stat}}
]
-
[(#GET{stat_court})]
visite[(#GET{stat}|>{1}|?{s})]
en cours
Origine des visites
- #CLE : [(#VALEUR|number_format{0,""," "})] visite[(#VALEUR|>{1}|?{s})] ([(#VALEUR|div{#GET{visites}}|mult{100}|floor)%])
#SET{reg_recherche,^.*recherche=}
#ANCRE_PAGINATION
[(#VISITES|number_format{0,""," "})] terme[(#VISITES|>{1}|?{s})] recherché[(#VISITES|>{1}|?{s})]
[]
#SET{stat,#GET{articles_lus}|sizeof||number_format{0,""," "}}
#SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
#SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
[(#GET{milliers}|oui)
#SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines} K}|replace{",0"}}
]
[(#GET{milliers}|non)
#SET{stat_court,#GET{stat}}
]
-
#SET{nb_articles_lus,#TOTAL_BOUCLE}/B_compte_articles>
[(#GET{nb_articles_lus}|>{1}|oui)
[(#GET{stat_court})]
articles lu[(#GET{stat}|>{1}|?{s})]
]
#ANCRE_PAGINATION
[]
-
#SET{stat,#GET{total}|number_format{0,""," "}}
#SET{milliers,#GET{stat}|match{(\d+ )(\d)\d\d,u,1}}
#SET{centaines,#GET{stat}|match{(\d+) (\d)\d\d,u,2}}
[(#GET{milliers}|oui)
#SET{stat_court,#GET{milliers}|trim|concat{","}|concat{#GET{centaines} K}|replace{",0"}}
]
[(#GET{milliers}|non)
#SET{stat_court,#GET{stat}}
]
[(#GET{stat_court})]
visite[(#GET{stat}|>{1}|?{s})]
par [(#GRAND_TOTAL|number_format{0,""," "})] domaine[(#GRAND_TOTAL|>{1}|?{s})] affluent[(#GRAND_TOTAL|>{0}|?{s})]
Moteurs de recherche
- [(#CLE|ucfirst)] ([(#VISITES|number_format{0,""," "}) visite[(#VISITES|>{1}|?{s})]])
-
Réseaux sociaux
- [(#CLE|replace{^t$,twitter}|ucfirst)] ([(#VISITES|number_format{0,""," "}) visite[(#VISITES|>{1}|?{s})]])
-
#ANCRE_PAGINATION
Autres affluents
- [(#CLE|ucfirst)] ([(#VISITES|number_format{0,""," "}) visite[(#VISITES|>{1}|?{s})]])
-
#PAGINATION
...
stats_data version #PLUGIN{stats_data, version}.