Browse Source

Un peu de phpdoc sur les statistiques encore

(et correction d'un @uses)
svn/root/tags/plugins/statistiques/0.6.12
marcimat@rezo.net 7 years ago
parent
commit
d7f7c4d66b
  1. 37
      genie/popularites.php
  2. 2
      genie/visites.php
  3. 28
      public/stats.php
  4. 98
      stats_pipelines.php

37
genie/popularites.php

@ -10,11 +10,29 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Gestion du calcul des popularités (cron)
*
* @plugin Statistiques pour SPIP
* @license GNU/GPL
* @package SPIP\Statistiques\Genie
**/
if (!defined("_ECRIRE_INC_VERSION")) return;
//
// Popularite, modele logarithmique
//
/**
* Calcule des coefficients de popularité en fonction de l'intervalle
* écoulé depuis le précédent calcul
*
* Popularite, modele logarithmique
*
* @param int $duree Intervalle écoulé depuis le précédent calcul
* @return array {
* @type float $a Coefficient d'amortissement
* @type float $b Constante multiplicative
* }
**/
function genie_popularite_constantes($duree){
// duree de demi-vie d'une visite dans le calcul de la popularite (en jours)
$demivie = 0.5;
@ -32,7 +50,16 @@ function genie_popularite_constantes($duree){
return array($a,$b);
}
// http://code.spip.net/@genie_popularites_dist
/**
* Cron de calcul des popularités des articles
*
* @uses genie_popularite_constantes()
*
* @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_popularites_dist($t) {
// Si c'est le premier appel, ne pas calculer
@ -82,4 +109,4 @@ function genie_popularites_dist($t) {
}
?>
?>

2
genie/visites.php

@ -14,7 +14,7 @@
* Gestion du compage des statistiques de visites (cron)
*
* @plugin Statistiques pour SPIP
* @license GPL
* @license GNU/GPL
* @package SPIP\Statistiques\Genie
**/

28
public/stats.php

@ -10,9 +10,35 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Loguer une visite
*
* @plugin Statistiques pour SPIP
* @license GNU/GPL
* @package SPIP\Stats\Public
**/
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://code.spip.net/@public_stats_dist
/**
* Logue une visite sur une page
*
* Enregistre le passage d'un visiteur sur la page demandée
* dans `tmp/visites/` qui seront ensuite traitées par une tache cron.
*
* Ne tient pas compte
* - des visites de robots,
* - des 404,
* - des forum
*
* @see genie_visites_dist() Pour la tache cron qui traite les logs.
*
* @param array|null $contexte
* Contexte d'appel de la page ; retrouvé automatiquement sinon.
* @param string|null $referer
* Referer de provenance ; retrouvé automatiquement sinon.
* @return null|void
**/
function public_stats_dist($contexte = null, $referer = null) {
if (!is_array($contexte)){
$contexte = $GLOBALS['contexte'];

98
stats_pipelines.php

@ -10,8 +10,21 @@
if (!defined('_ECRIRE_INC_VERSION')) return;
// sur les envois html,
// compter les visites.
/**
* Compter les visites sur les pages HTML
*
* Uniquement si les statistiques sont activées dans la configuration :
* - permet de compter par défaut toutes les pages de type HTML
* - sauf si on explicite, pour une page donnée, l'entête
* header `X-Spip-Visites` à `oui` ou `non`.
* Indiquer `oui` pour forcer le comptage de la page, ou `non` pour au contraire l'éviter
*
* @uses public_stats_dist() si la page doit être comptée.
* @pipeline affichage_entetes_final
* @param array $entetes liste des entêtes de la page
* @return array
**/
function stats_affichage_entetes_final($entetes){
if ($GLOBALS['meta']["activer_statistiques"] != "non") {
$html = preg_match(',^\s*text/html,', $entetes['Content-Type']);
@ -25,9 +38,8 @@ function stats_affichage_entetes_final($entetes){
:$spip_compter_visites;
unset($entetes['X-Spip-Visites']);
}
// Gestion des statistiques du site public
if ($spip_compter_visites!='non') {
$stats = charger_fonction('stats', 'public');
$stats();
@ -37,24 +49,38 @@ function stats_affichage_entetes_final($entetes){
}
// contenus des pages exec
/**
* Compléter des pages de l'espace privé
*
* - Ajoute les formulaire de configuration des statistiques dans les configurations avancées
* - Ajoute les formulaire de suppression des statistiques dans la maintenance technique
*
* @pipeline affiche_milieu
* @param array $flux Données du pipeline
* @return array Données du pipeline
**/
function stats_affiche_milieu($flux){
// afficher le formulaire de configuration (activer ou desactiver les statistiques).
if ($flux['args']['exec'] == 'configurer_avancees')
if ($flux['args']['exec'] == 'configurer_avancees') {
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_compteur'));
}
// afficher le formulaire de suppression des visites (configuration > maintenance du site).
if ($flux['args']['exec'] == 'admin_tech') {
$flux['data'] .= recuperer_fond('prive/squelettes/inclure/admin_effacer_stats',array());
}
return $flux;
}
// les boutons d'administration : ajouter les popularites et visites
/**
* Ajoute les boutons d'administration indiquant la popularité et les visites d'un objet
*
* @uses admin_stats()
* @pipeline formulaire_admin
* @param array $flux Données du pipeline
* @return array Données du pipeline
**/
function stats_formulaire_admin($flux) {
if (
isset($flux['args']['contexte']['objet'])
@ -74,10 +100,21 @@ function stats_formulaire_admin($flux) {
return $flux;
}
// calculer les visites et popularite d'un objet/id_objet
// (uniquement valable pour les articles) ...
// http://code.spip.net/@admin_stats
function admin_stats($objet, $id_objet, $var_preview)
/**
* Calcule les visites et popularite d'un objet éditorial
*
* @note
* Actuellement uniquement valable pour les articles.
*
* @param string $objet
* @param int $id_objet
* @param string $var_preview
* Indique si on est en prévisualisation : pas de statistiques dans ce cas.
* @return false|array
* - false : pas de statistiques disponibles
* - array : Tableau les stats `[visites, popularité, url]`
**/
function admin_stats($objet, $id_objet, $var_preview = "")
{
if ($GLOBALS['meta']["activer_statistiques"] != "non"
AND $objet == 'article'
@ -95,14 +132,27 @@ function admin_stats($objet, $id_objet, $var_preview)
return false;
}
// http://code.spip.net/@generer_url_ecrire_statistiques
/**
* Génère URL de la page dans l'espace privé permettant de visualiser les statistiques d'un article
*
* @param int $id_article
* @return string URL
**/
function generer_url_ecrire_statistiques($id_article) {
return generer_url_ecrire('stats_visites', "id_article=$id_article");
}
// les taches crons
/**
* Ajoute le cron de traitement des statistiques et calcul des popularités
*
* @pipeline taches_generales_cron
* @param array $taches_generales
* Tableau `[nom de la tache => intervalle en secondes]`
* @return array
* Tableau `[nom de la tache => intervalle en secondes]`
**/
function stats_taches_generales_cron($taches_generales){
// stats : toutes les 5 minutes on peut vider un panier de visites
@ -116,12 +166,28 @@ function stats_taches_generales_cron($taches_generales){
return $taches_generales;
}
/**
* Lister les metas de statistiques et leurs valeurs par défaut
*
* @pipeline configurer_liste_metas
* @param array $metas
* Couples nom de la méta => valeur par défaut
* @return array
* Couples nom de la méta => valeur par défaut
*/
function stats_configurer_liste_metas($metas){
$metas['activer_statistiques']='non';
$metas['activer_captures_referers']='non';
return $metas;
}
/**
* Afficher le lien vers la page de statistique sur la vue d'un article dans l'espace privé
*
* @pipeline boite_infos
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function stats_boite_infos($flux){
if ($GLOBALS['meta']["activer_statistiques"] == "oui") {
if ($flux['args']['type']=='article'

Loading…
Cancel
Save