You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

82 lines
2.1 KiB

<?php
/***************************************************************************\
* SPIP, Système de publication pour l'internet *
* *
* Copyright © avec tendresse depuis 2001 *
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribué sous licence GNU/GPL. *
* Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
/**
* Calculer la moyenne glissante sur un nombre d'echantillons donnes
*
* @param int|bool $valeur
* @param int $glisse
* @return float
*/
function moyenne_glissante($valeur = false, $glisse = 0) {
static $v = array();
// pas d'argument, raz de la moyenne
if ($valeur === false) {
$v = array();
return 0;
}
// argument, on l'ajoute au tableau...
// surplus, on enleve...
$v[] = $valeur;
if (count($v) > $glisse) {
array_shift($v);
}
return round(statistiques_moyenne($v), 2);
}
/**
* Calculer la moyenne d'un tableau de valeurs
*
* https://code.spip.net/@statistiques_moyenne
*
* @param array $tab
* @return float
*/
function statistiques_moyenne($tab) {
if (!$tab) {
return 0;
}
$moyenne = 0;
foreach ($tab as $v) {
$moyenne += $v;
}
return $moyenne / count($tab);
}
/**
* Construire un tableau par popularite
* classemnt => id_truc
*
* @param string $type
* @param string $serveur
* @return array
*/
function classement_populaires($type, $serveur = '') {
static $classement = array();
if (isset($classement[$type])) {
return $classement[$type];
}
$_id = id_table_objet($type, $serveur);
$classement[$type] = sql_allfetsel($_id, table_objet_sql($type, $serveur),
"statut='publie' AND popularite > 0", "", "popularite DESC", '', '', $serveur);
$classement[$type] = array_column($classement[$type], $_id);
return $classement[$type];
}