[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / statistiques / inc / statistiques.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2019 *
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 if (!defined("_ECRIRE_INC_VERSION")) {
14 return;
15 }
16
17 /**
18 * Calculer la moyenne glissante sur un nombre d'echantillons donnes
19 *
20 * @param int|bool $valeur
21 * @param int $glisse
22 * @return float
23 */
24 function moyenne_glissante($valeur = false, $glisse = 0) {
25 static $v = array();
26 // pas d'argument, raz de la moyenne
27 if ($valeur === false) {
28 $v = array();
29
30 return 0;
31 }
32
33 // argument, on l'ajoute au tableau...
34 // surplus, on enleve...
35 $v[] = $valeur;
36 if (count($v) > $glisse) {
37 array_shift($v);
38 }
39
40 return round(statistiques_moyenne($v), 2);
41 }
42
43 /**
44 * Calculer la moyenne d'un tableau de valeurs
45 *
46 * https://code.spip.net/@statistiques_moyenne
47 *
48 * @param array $tab
49 * @return float
50 */
51 function statistiques_moyenne($tab) {
52 if (!$tab) {
53 return 0;
54 }
55 $moyenne = 0;
56 foreach ($tab as $v) {
57 $moyenne += $v;
58 }
59
60 return $moyenne / count($tab);
61 }
62
63 /**
64 * Construire un tableau par popularite
65 * classemnt => id_truc
66 *
67 * @param string $type
68 * @param string $serveur
69 * @return array
70 */
71 function classement_populaires($type, $serveur = '') {
72 static $classement = array();
73 if (isset($classement[$type])) {
74 return $classement[$type];
75 }
76 $classement[$type] = sql_allfetsel(id_table_objet($type, $serveur), table_objet_sql($type, $serveur),
77 "statut='publie' AND popularite > 0", "", "popularite DESC", '', '', $serveur);
78 $classement[$type] = array_map('reset', $classement[$type]);
79
80 return $classement[$type];
81 }