Changeset 113659 in spip-zone


Ignore:
Timestamp:
Jan 28, 2019, 2:24:04 PM (3 weeks ago)
Author:
root
Message:

Ajout des stats de plugins par branche SPIP et d'un historique mensuel.
A tester avant mise en production.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/svp_stats/trunk/inc/svp_statistiquer.php

    r113096 r113659  
    1616
    1717function svp_actualiser_stats() {
     18       
     19        // Initialisation du retour
     20        $retour = true;
     21
     22        // Récupération des statistiques globales (toute version SPIP) et mise en base dans la table spip_plugins
    1823        include_spip('inc/distant');
    19 
    2024        $page = recuperer_page(_SVP_SOURCE_STATS);
    2125        $infos = json_decode($page);
     
    2428                // de SVP
    2529                spip_log('MODULE STATS - Réponse du serveur incorrecte ou mal formée. Les statistiques ne seront pas mises à jour', 'svp_actions.' . _LOG_ERREUR);
    26                 return false;
     30                $retour = false;
     31        } else {
     32                foreach ($stats as $_stat) {
     33                        $prefixe = strtoupper($_stat->nom);
     34                        if ($id_plugin = sql_fetsel('id_plugin', 'spip_plugins', array('prefixe='. sql_quote($prefixe)))) {
     35                                // Si le plugin est bien dans la base on peut lui mettre a jour ses statistiques
     36                                sql_updateq('spip_plugins',
     37                                                        array('nbr_sites'=> $_stat->sites, 'popularite'=> floatval(trim($_stat->pourcentage, '%'))),
     38                                                        'id_plugin=' . sql_quote($id_plugin));
     39                        }
     40                }
    2741        }
    2842
    29         foreach ($stats as $_stat) {
    30                 $prefixe = strtoupper($_stat->nom);
    31                 if ($id_plugin = sql_fetsel('id_plugin', 'spip_plugins', array('prefixe='. sql_quote($prefixe)))) {
    32                         // Si le plugin est bien dans la base on peut lui mettre a jour ses statistiques
    33                         sql_updateq('spip_plugins',
    34                                                 array('nbr_sites'=> $_stat->sites, 'popularite'=> floatval(trim($_stat->pourcentage, '%'))),
    35                                                 'id_plugin=' . sql_quote($id_plugin));
     43        // Détermination de la date (mois année) pour l'historique.
     44        $date = date('y-m');
     45
     46        // Récupération des statistiques par branche SPIP et mise en base dans la table spip_plugins_stats.
     47        // La liste des branches en cours est fournie par SVP dans un tableau global.
     48        include_spip('inc/svp_outiller');
     49        foreach (array_keys($GLOBALS['infos_branches_spip']) as $_branche) {
     50                // On charge le JSON des stats pour chaque branche SPIP
     51                $page = recuperer_page(_SVP_SOURCE_STATS . "&v=${_branche}");
     52                $infos = json_decode($page);
     53                if (!$stats = $infos->plugins) {
     54                        // On ne fait que loger l'erreur car celle-ci n'a pas d'incidence sur le comportement
     55                        // de SVP
     56                        spip_log("MODULE STATS - Réponse du serveur incorrecte ou mal formée. Les statistiques de la branche ${_branche} ne seront pas mises à jour", 'svp_actions.' . _LOG_ERREUR);
     57                        retour = false;
     58                } else {
     59                        foreach ($stats as $_stat) {
     60                                $prefixe = strtoupper($_stat->nom);
     61                                $where = array('prefixe='. sql_quote($prefixe), 'branche=' . sql_quote($_branche));
     62                                // Suivant que l'enregistrement du plugin pour la branche donnée existe ou pas, on met à jour ou on insère les statistiques.
     63                                $historique = array();
     64                                if ($historique_existant = getfetsel('historique', 'spip_plugins_stats', $where)) {
     65                                        // Les stats existent déjà, on les met à jour avec l'historique mensuel.
     66                                        $historique = unserialize($historique_existant);
     67                                        $historique[$date] = $_stat->sites;
     68                                        sql_updateq(
     69                                                'spip_plugins_stats',
     70                                                array(
     71                                                        'nbr_sites'=> $_stat->sites,
     72                                                        'popularite'=> floatval(trim($_stat->pourcentage, '%')),
     73                                                        'historique' => serialize($historique)
     74                                                ),
     75                                                $where
     76                                        );
     77                                } else {
     78                                        // Les stats n'existent pas on les insèrent pour la première fois.
     79                                        $historique[$date] = $_stat->sites;
     80                                        sql_insertq(
     81                                                'spip_plugins_stats',
     82                                                array(
     83                                                        'prefixe'  => $prefixe,
     84                                                        'branche' => $_branche,
     85                                                        'nbr_sites'  => $_stat->sites,
     86                                                        'popularite' => floatval(trim($_stat->pourcentage, '%')),
     87                                                        'historique' => serialize($historique)
     88                                                )
     89                                        );
     90                                }
     91                        }
    3692                }
    3793        }
    3894       
    39         return true;
     95        return $retour;
    4096}
    41 
    42 ?>
Note: See TracChangeset for help on using the changeset viewer.