X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fclavette_www.git;a=blobdiff_plain;f=www%2Fplugins-dist%2Fstatistiques%2Fgenie%2Fvisites.php;h=36e3471db982b2aa555fc335a56592201ea9b96d;hp=6e8645167ef7048c8c4df966da9c5e8e3f45d256;hb=cc641eb476987612f6d6df1a5417c1c5582a8ab8;hpb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb diff --git a/www/plugins-dist/statistiques/genie/visites.php b/www/plugins-dist/statistiques/genie/visites.php index 6e86451..36e3471 100644 --- a/www/plugins-dist/statistiques/genie/visites.php +++ b/www/plugins-dist/statistiques/genie/visites.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2014 * + * Copyright (c) 2001-2016 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -20,7 +20,7 @@ if (!defined('_CRON_LOT_FICHIERS_VISITE')) define('_CRON_LOT_FICHIERS_VISITE', 1 // // prendre en compte un fichier de visite // -// http://doc.spip.org/@compte_fichier_visite +// http://code.spip.net/@compte_fichier_visite function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$referers_a) { // Noter la visite du site (article 0) @@ -50,7 +50,7 @@ function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$r } -// http://doc.spip.org/@calculer_visites +// http://code.spip.net/@calculer_visites function calculer_visites($t) { include_spip('base/abstract_sql'); @@ -207,10 +207,32 @@ function calculer_visites($t) { } } -// -// Calcule les stats en plusieurs etapes -// -// http://doc.spip.org/@genie_visites_dist +/** + * Nettoyer les IPs des flooders 24H apres leur dernier passage + */ +function visites_nettoyer_flood(){ + if (is_dir($dir=_DIR_TMP.'flood/')){ + include_spip('inc/invalideur'); + if (!defined('_IP_FLOOD_TTL')) define('_IP_FLOOD_TTL',24*3600); // 24H par defaut + $options = array( + 'mtime' => $_SERVER['REQUEST_TIME'] - _IP_FLOOD_TTL, + ); + purger_repertoire($dir,$options); + } +} + + +/** + * Cron de calcul de statistiques des visites + * + * Calcule les stats en plusieurs étapes + * @uses calculer_visites() + * + * @param int $t + * Timestamp de la dernière exécution de cette tâche + * @return int + * Positif si la tâche a été terminée, négatif pour réexécuter cette tâche +**/ function genie_visites_dist($t) { $encore = calculer_visites($t); @@ -219,6 +241,9 @@ function genie_visites_dist($t) { if ($encore) return (0 - $t); + // nettoyer les IP des floodeurs quand on a fini de compter les stats + visites_nettoyer_flood(); + return 1; } ?>