[SPIP] ~maj SPIP v3.0.17 --> v3.0.19
[lhc/web/clavette_www.git] / www / plugins-dist / statistiques / stats_pipelines.php
1 <?php
2
3 if (!defined('_ECRIRE_INC_VERSION')) return;
4
5 // sur les envois html,
6 // compter les visites.
7 function stats_affichage_entetes_final($entetes){
8 if ($GLOBALS['meta']["activer_statistiques"] != "non") {
9 $html = preg_match(',^\s*text/html,', $entetes['Content-Type']);
10
11 // decomptage des visites, on peut forcer a oui ou non avec le header X-Spip-Visites
12 // par defaut on ne compte que les pages en html (ce qui exclue les js,css et flux rss)
13 $spip_compter_visites = $html?'oui':'non';
14 if (isset($entetes['X-Spip-Visites'])){
15 $spip_compter_visites = in_array($entetes['X-Spip-Visites'],array('oui','non'))
16 ?$entetes['X-Spip-Visites']
17 :$spip_compter_visites;
18 unset($entetes['X-Spip-Visites']);
19 }
20
21 // Gestion des statistiques du site public
22
23 if ($spip_compter_visites!='non') {
24 $stats = charger_fonction('stats', 'public');
25 $stats();
26 }
27 }
28 return $entetes;
29 }
30
31
32 // contenus des pages exec
33 function stats_affiche_milieu($flux){
34 // afficher le formulaire de configuration (activer ou desactiver les statistiques).
35 if ($flux['args']['exec'] == 'configurer_avancees')
36 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_compteur'));
37
38
39 // afficher le formulaire de suppression des visites (configuration > maintenance du site).
40 if ($flux['args']['exec'] == 'admin_tech') {
41
42 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/admin_effacer_stats',array());
43
44 }
45 return $flux;
46 }
47
48
49 // les boutons d'administration : ajouter les popularites et visites
50 function stats_formulaire_admin($flux) {
51 if (
52 isset($flux['args']['contexte']['objet'])
53 AND $objet = $flux['args']['contexte']['objet']
54 AND isset($flux['args']['contexte']['id_objet'])
55 AND $id_objet = $flux['args']['contexte']['id_objet']
56 ) {
57 if ($l = admin_stats($objet, $id_objet, defined('_VAR_PREVIEW') ? _VAR_PREVIEW : '')) {
58 $btn = recuperer_fond('prive/bouton/statistiques', array(
59 'visites' => $l[0],
60 'popularite' => $l[1],
61 'statistiques' => $l[2],
62 ));
63 $flux['data'] = preg_replace('%(<!--extra-->)%is', $btn.'$1', $flux['data']);
64 }
65 }
66 return $flux;
67 }
68
69 // calculer les visites et popularite d'un objet/id_objet
70 // (uniquement valable pour les articles) ...
71 // http://code.spip.net/@admin_stats
72 function admin_stats($objet, $id_objet, $var_preview)
73 {
74 if ($GLOBALS['meta']["activer_statistiques"] != "non"
75 AND $objet == 'article'
76 AND !$var_preview
77 AND autoriser('voirstats')
78 ) {
79 $row = sql_fetsel("visites, popularite", "spip_articles", "id_article=$id_objet AND statut='publie'");
80
81 if ($row) {
82 return array(intval($row['visites']),
83 ceil($row['popularite']),
84 str_replace('&amp;', '&', generer_url_ecrire_statistiques($id_objet)));
85 }
86 }
87 return false;
88 }
89
90 // http://code.spip.net/@generer_url_ecrire_statistiques
91 function generer_url_ecrire_statistiques($id_article) {
92 return generer_url_ecrire('stats_visites', "id_article=$id_article");
93 }
94
95
96
97 // les taches crons
98 function stats_taches_generales_cron($taches_generales){
99
100 // stats : toutes les 5 minutes on peut vider un panier de visites
101 if ($GLOBALS['meta']["activer_statistiques"] == "oui") {
102 $taches_generales['visites'] = 300;
103 $taches_generales['popularites'] = 7200; # calcul lourd
104 }
105
106 return $taches_generales;
107 }
108
109 function stats_configurer_liste_metas($metas){
110 $metas['activer_statistiques']='non';
111 $metas['activer_captures_referers']='non';
112 return $metas;
113 }
114
115 function stats_boite_infos($flux){
116 if ($GLOBALS['meta']["activer_statistiques"] == "oui") {
117 if ($flux['args']['type']=='article'
118 AND $id_article=$flux['args']['id']
119 AND autoriser('voirstats','article',$id_article)){
120 $visites = sql_getfetsel('visites','spip_articles','id_article='.intval($id_article));
121 if ($visites>0){
122 $icone_horizontale=chercher_filtre('icone_horizontale');
123 $flux['data'].=$icone_horizontale(generer_url_ecrire("stats_visites","id_article=$id_article"),_T('statistiques:icone_evolution_visites', array('visites' => $visites)),"statistique-24.png");
124 }
125 }
126 }
127 return $flux;
128 }
129
130 ?>