stats_pipelines.php 4.0 KB

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