source: spip-zone/_core_/plugins/statistiques/inc/stats_referers_to_array.php @ 93626

Last change on this file since 93626 was 93626, checked in by cedric@…, 5 years ago

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File size: 3.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2014                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13
14if (!defined('_ECRIRE_INC_VERSION')) {
15        return;
16}
17
18include_spip('inc/statistiques');
19// moyenne glissante sur 30 jours
20define('MOYENNE_GLISSANTE_JOUR', 30);
21// moyenne glissante sur 12 mois
22define('MOYENNE_GLISSANTE_MOIS', 12);
23include_spip('inc/referenceurs');
24
25function inc_stats_referers_to_array_dist($limit, $jour, $id_article, $options = array()) {
26
27        $visites = 'visites';
28        $table = "spip_referers";
29        $where = array();
30        $serveur = '';
31
32        if (in_array($jour, array('jour', 'veille'))) {
33                $visites .= "_$jour";
34                $where[] = "$visites>0";
35        }
36        //$res = $referenceurs (0, "SUM(visites_$jour)", 'spip_referers', "visites_$jour>0", "referer", $limit);
37
38        if ($id_article) {
39                $table = "spip_referers_articles";
40                $where[] = "id_article=" . intval($id_article);
41        }
42
43        $where = implode(" AND ", $where);
44        $limit = $limit ? "0," . intval($limit) : '';
45
46        $result = sql_select("referer_md5, referer, $visites AS vis", $table, $where, '', "maj DESC", $limit, '', $serveur);
47
48        $referers = array();
49        $trivisites = array(); // pour le tri
50        while ($row = sql_fetch($result, $serveur)) {
51                $referer = interdire_scripts($row['referer']);
52                $buff = stats_show_keywords($referer, $referer);
53
54                if ($buff["host"]) {
55                        $refhost = $buff["hostname"];
56                        $visites = $row['vis'];
57                        $host = $buff["scheme"] . "://" . $buff["host"];
58
59                        $referers[$refhost]['referer_md5'] = $row['referer_md5'];
60
61                        if (!isset($referers[$refhost]['liens'][$referer])) {
62                                $referers[$refhost]['liens'][$referer] = 0;
63                        }
64                        if (!isset($referers[$refhost]['hosts'][$host])) {
65                                $referers[$refhost]['hosts'][$host] = 0;
66                        }
67
68                        if (!isset($referers[$refhost]['visites'])) {
69                                $referers[$refhost]['visites'] = 0;
70                        }
71                        if (!isset($referers[$refhost]['visites_racine'])) {
72                                $referers[$refhost]['visites_racine'] = 0;
73                        }
74                        if (!isset($referers[$refhost]['referers'])) {
75                                $referers[$refhost]['referers'] = array();
76                        }
77
78                        $referers[$refhost]['hosts'][$host]++;
79                        $referers[$refhost]['liens'][$referer]++;
80                        $referers[$refhost]['visites'] += $visites;
81                        $trivisites[$refhost] = $referers[$refhost]['visites'];
82
83                        $tmp = "";
84                        $set = array(
85                                'referer' => $referer,
86                                'visites' => $visites,
87                                'referes' => $id_article ? '' : referes($row['referer_md5'])
88                        );
89                        if (isset($buff["keywords"])
90                                AND $c = $buff["keywords"]
91                        ) {
92                                if (!isset($referers[$refhost]['keywords'][$c])) {
93                                        $referers[$refhost]['keywords'][$c] = true;
94                                        $set['keywords'] = $c;
95                                }
96                        } else {
97                                $tmp = $buff["path"];
98                                if ($buff["query"]) {
99                                        $tmp .= "?" . $buff['query'];
100                                }
101                                if (strlen($tmp)) {
102                                        $set['path'] = "/$tmp";
103                                }
104                        }
105                        if (isset($set['path']) OR isset($set['keywords'])) {
106                                $referers[$refhost]['referers'][] = $set;
107                        } else {
108                                $referers[$refhost]['visites_racine'] += $visites;
109                        }
110                }
111        }
112
113        // trier les liens pour trouver le principal
114        foreach ($referers as $k => $r) {
115                arsort($referers[$k]['liens']);
116                $referers[$k]['liens'] = array_keys($referers[$k]['liens']);
117                arsort($referers[$k]['hosts']);
118                $referers[$k]['hosts'] = array_keys($referers[$k]['hosts']);
119                $referers[$k]['url'] = reset($referers[$k]['hosts']);
120        }
121
122        if (count($trivisites)) {
123                array_multisort($trivisites, SORT_DESC, $referers);
124        }
125
126        return $referers;
127}
128
129
130?>
Note: See TracBrowser for help on using the repository browser.