Ignore:
Timestamp:
Dec 13, 2015, 11:56:49 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/statistiques/genie/visites.php

    r92685 r93626  
    1313/**
    1414 * Gestion du compage des statistiques de visites (cron)
    15  * 
     15 *
    1616 * @plugin Statistiques pour SPIP
    1717 * @license GNU/GPL
    1818 * @package SPIP\Statistiques\Genie
    19 **/
    20 
    21 if (!defined("_ECRIRE_INC_VERSION")) return;
    22 if (!defined('_CRON_LOT_FICHIERS_VISITE')) define('_CRON_LOT_FICHIERS_VISITE', 100);
     19 **/
     20
     21if (!defined("_ECRIRE_INC_VERSION")) {
     22        return;
     23}
     24if (!defined('_CRON_LOT_FICHIERS_VISITE')) {
     25        define('_CRON_LOT_FICHIERS_VISITE', 100);
     26}
    2327
    2428### Pour se debarrasser du md5, comment faire ? Un index sur 'referer' ?
     
    4044 *     Couples id_article => array (url_referer => nombre) : comptage par article puis url de referer
    4145 * @return void
    42 **/
     46 **/
    4347function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$referers_a) {
    4448
    4549        // Noter la visite du site (article 0)
    46         $visites ++;
     50        $visites++;
    4751
    4852        $content = array();
    49         if (lire_fichier($fichier, $content))
     53        if (lire_fichier($fichier, $content)) {
    5054                $content = @unserialize($content);
    51         if (!is_array($content)) return;
     55        }
     56        if (!is_array($content)) {
     57                return;
     58        }
    5259
    5360        foreach ($content as $source => $num) {
    5461                list($log_type, $log_id_num, $log_referer)
    5562                        = preg_split(",\t,", $source, 3);
    56                
     63
    5764                // Noter le referer
    5865                if ($log_referer) {
     
    6572                // S'il s'agit d'un article, noter ses visites
    6673                if ($log_type == 'article'
    67                 AND $id_article = intval($log_id_num)) {
     74                        AND $id_article = intval($log_id_num)
     75                ) {
    6876                        if (!isset($visites_a[$id_article])) {
    6977                                $visites_a[$id_article] = 0;
    7078                        }
    71                         $visites_a[$id_article] ++;
     79                        $visites_a[$id_article]++;
    7280                        if ($log_referer) {
    7381                                if (!isset($referers_a[$id_article][$log_referer])) {
     
    8694 * @uses compte_fichier_visite()
    8795 * @uses genie_popularite_constantes()
    88  * 
     96 *
    8997 * @param int $t
    9098 *     Timestamp de la dernière exécution de cette tâche
     
    92100 *     - null si aucune visite à prendre en compte ou si tous les fichiers de visite sont traités,
    93101 *     - entier négatif s'il reste encore des fichiers à traiter
    94 **/
     102 **/
    95103function calculer_visites($t) {
    96104        include_spip('base/abstract_sql');
     
    111119        $date_init = time()-30*60;
    112120        foreach ($sessions as $item) {
    113                 if (($d=@filemtime($item)) < $date_init) {
    114                         if (!$d) $d = $date_init; // si le fs ne donne pas de date, on prend celle du traitement, mais tout cela risque d'etre bien douteux
    115                         $d = date("Y-m-d",$d);
     121                if (($d = @filemtime($item)) < $date_init) {
     122                        if (!$d) {
     123                                $d = $date_init;
     124                        } // si le fs ne donne pas de date, on prend celle du traitement, mais tout cela risque d'etre bien douteux
     125                        $d = date("Y-m-d", $d);
    116126                        spip_log("traite la session $item");
    117127                        compte_fichier_visite($item,
    118128                                $visites[$d], $visites_a[$d], $referers[$d], $referers_a[$d]);
    119129                        spip_unlink($item);
    120                         if (--$compteur <= 0)
     130                        if (--$compteur <= 0) {
    121131                                break;
     132                        }
    122133                }
    123134                #else spip_log("$item pas vieux");
    124135        }
    125         if (!count($visites))
     136        if (!count($visites)) {
    126137                return;
     138        }
    127139
    128140        include_spip('genie/popularites');
    129         list($a,$b) = genie_popularite_constantes(24*3600);
     141        list($a, $b) = genie_popularite_constantes(24*3600);
    130142
    131143        // Maintenant on dispose de plusieurs tableaux qu'il faut ventiler dans
     
    133145        // et spip_referers_articles ; attention a affecter tout ca a la bonne
    134146        // date (celle de la visite, pas celle du traitement)
    135         foreach(array_keys($visites) as $date)
     147        foreach (array_keys($visites) as $date) {
    136148                if ($visites[$date]) {
    137149
    138150                        // 1. les visites du site (facile)
    139                         if (!sql_countsel('spip_visites', "date='$date'"))
     151                        if (!sql_countsel('spip_visites', "date='$date'")) {
    140152                                sql_insertq('spip_visites',
    141153                                        array('date' => $date, 'visites' => $visites[$date]));
    142                         else
    143                                 sql_update('spip_visites', array('visites' => "visites+".intval($visites[$date])), "date='$date'");
    144                
     154                        } else {
     155                                sql_update('spip_visites', array('visites' => "visites+" . intval($visites[$date])), "date='$date'");
     156                        }
     157
    145158                        // 2. les visites des articles
    146159                        if ($visites_a[$date]) {
    147                                 $ar = array();  # tableau num -> liste des articles ayant num visites
    148                                 foreach($visites_a[$date] as $id_article => $n) {
     160                                $ar = array();  # tableau num -> liste des articles ayant num visites
     161                                foreach ($visites_a[$date] as $id_article => $n) {
    149162                                        if (!sql_countsel('spip_visites_articles',
    150                                                  "id_article=$id_article AND date='$date'")){
     163                                                "id_article=$id_article AND date='$date'")
     164                                        ) {
    151165                                                sql_insertq('spip_visites_articles',
    152                                                                 array('id_article' => $id_article,
    153                                                                       'visites' => 0,
    154                                                                       'date' => $date));
     166                                                        array(
     167                                                                'id_article' => $id_article,
     168                                                                'visites' => 0,
     169                                                                'date' => $date
     170                                                        ));
    155171                                        }
    156172                                        $ar[$n][] = $id_article;
     
    160176                                        sql_update('spip_visites_articles',
    161177                                                array('visites' => "visites+$n"),
    162                                                    "date='$date' AND $tous");
    163                
     178                                                "date='$date' AND $tous");
     179
    164180                                        $ref = $noref = array();
    165                                         foreach($liste as $id) {
    166                                                 if (isset($referers_a[$id]))
    167                                                         $ref[]= $id ;
    168                                                 else $noref[]=$id;
     181                                        foreach ($liste as $id) {
     182                                                if (isset($referers_a[$id])) {
     183                                                        $ref[] = $id;
     184                                                } else {
     185                                                        $noref[] = $id;
     186                                                }
    169187                                        }
    170188                                        // il faudrait ponderer la popularite ajoutee ($n) par son anciennete eventuelle
    171189                                        // sur le modele de ce que fait genie/popularites
    172                                         if (count($noref))
     190                                        if (count($noref)) {
    173191                                                sql_update('spip_articles',
    174                                                         array('visites' => "visites+$n",
    175                                                          'popularite' => "popularite+".number_format(round($n*$b,2), 2, '.', ''),
    176                                                          'maj' => 'maj'),
    177                                                         sql_in('id_article',$noref));
    178                                                            
    179                                         if (count($ref))
     192                                                        array(
     193                                                                'visites' => "visites+$n",
     194                                                                'popularite' => "popularite+" . number_format(round($n*$b, 2), 2, '.', ''),
     195                                                                'maj' => 'maj'
     196                                                        ),
     197                                                        sql_in('id_article', $noref));
     198                                        }
     199
     200                                        if (count($ref)) {
    180201                                                sql_update('spip_articles',
    181                                                            array('visites' => "visites+".($n+1),
    182                                                          'popularite' => "popularite+".number_format(round($n*$b,2), 2, '.', ''),
    183                                                          'maj' => 'maj'),
    184                                                         sql_in('id_article',$ref));
    185                                                            
     202                                                        array(
     203                                                                'visites' => "visites+" . ($n+1),
     204                                                                'popularite' => "popularite+" . number_format(round($n*$b, 2), 2, '.', ''),
     205                                                                'maj' => 'maj'
     206                                                        ),
     207                                                        sql_in('id_article', $ref));
     208                                        }
     209
    186210                                        ## Ajouter un JOIN sur le statut de l'article ?
    187211                                }
     
    193217                                $trouver_table = charger_fonction('trouver_table', 'base');
    194218                                $desc = $trouver_table('referers');
    195                                 $n = preg_match('/(\d+)/',$desc['field']['referer'], $r);
     219                                $n = preg_match('/(\d+)/', $desc['field']['referer'], $r);
    196220                                $n = $n ? $r[1] : 255;
    197221                                foreach ($referers[$date] as $referer => $num) {
    198222                                        $referer_md5 = sql_hex(substr(md5($referer), 0, 15));
    199                                         $referer = substr($referer,0,$n);
    200                                         if (!sql_countsel('spip_referers', "referer_md5=$referer_md5"))
     223                                        $referer = substr($referer, 0, $n);
     224                                        if (!sql_countsel('spip_referers', "referer_md5=$referer_md5")) {
    201225                                                sql_insertq('spip_referers',
    202                                                         array('visites' => $num,
    203                                                               'visites_jour' => $num,
    204                                                               'visites_veille' => $num,
    205                                                               'date' => $date,
    206                                                               'referer' => $referer,
    207                                                               'referer_md5' => $referer_md5));
    208                                         else $ar[$num][] = $referer_md5;
    209                                 }
    210                
    211                         // appliquer les increments sur les anciens
    212                         // attention on appelle sql_in en mode texte et pas array
    213                         // pour ne pas passer sql_quote() sur les '0x1234' de referer_md5, cf #849
     226                                                        array(
     227                                                                'visites' => $num,
     228                                                                'visites_jour' => $num,
     229                                                                'visites_veille' => $num,
     230                                                                'date' => $date,
     231                                                                'referer' => $referer,
     232                                                                'referer_md5' => $referer_md5
     233                                                        ));
     234                                        } else {
     235                                                $ar[$num][] = $referer_md5;
     236                                        }
     237                                }
     238
     239                                // appliquer les increments sur les anciens
     240                                // attention on appelle sql_in en mode texte et pas array
     241                                // pour ne pas passer sql_quote() sur les '0x1234' de referer_md5, cf #849
    214242                                foreach ($ar as $num => $liste) {
    215                                         sql_update('spip_referers', array('visites' => "visites+$num", 'visites_jour' => "visites_jour+$num"), sql_in('referer_md5',join(', ', $liste)));
    216                                 }
    217                         }
    218                        
     243                                        sql_update('spip_referers', array('visites' => "visites+$num", 'visites_jour' => "visites_jour+$num"),
     244                                                sql_in('referer_md5', join(', ', $liste)));
     245                                }
     246                        }
     247
    219248                        // 4. Les referers d'articles
    220249                        if ($referers_a[$date]) {
     
    222251                                $insert = array();
    223252                                // s'assurer d'un slot pour chacun
    224                                 foreach ($referers_a[$date] as $id_article => $referers)
     253                                foreach ($referers_a[$date] as $id_article => $referers) {
    225254                                        foreach ($referers as $referer => $num) {
    226255                                                $referer_md5 = sql_hex(substr(md5($referer), 0, 15));
    227256                                                $prim = "(id_article=$id_article AND referer_md5=$referer_md5)";
    228                                                 if (!sql_countsel('spip_referers_articles', $prim))
     257                                                if (!sql_countsel('spip_referers_articles', $prim)) {
    229258                                                        sql_insertq('spip_referers_articles',
    230                                                              array('visites' => $num,
    231                                                                    'id_article' => $id_article,
    232                                                                    'referer' => $referer,
    233                                                                    'referer_md5' => $referer_md5));
    234                                                 else $ar[$num][] = $prim;
    235                                         }
     259                                                                array(
     260                                                                        'visites' => $num,
     261                                                                        'id_article' => $id_article,
     262                                                                        'referer' => $referer,
     263                                                                        'referer_md5' => $referer_md5
     264                                                                ));
     265                                                } else {
     266                                                        $ar[$num][] = $prim;
     267                                                }
     268                                        }
     269                                }
    236270                                // ajouter les visites
    237271                                foreach ($ar as $num => $liste) {
     
    241275                        }
    242276                }
     277        }
    243278
    244279        // S'il reste des fichiers a manger, le signaler pour reexecution rapide
    245         if ($compteur==0) {
     280        if ($compteur == 0) {
    246281                spip_log("il reste des visites a traiter...");
     282
    247283                return -$t;
    248284        }
     
    252288 * Nettoyer les IPs des flooders 24H apres leur dernier passage
    253289 */
    254 function visites_nettoyer_flood(){
    255         if (is_dir($dir=_DIR_TMP.'flood/')){
     290function visites_nettoyer_flood() {
     291        if (is_dir($dir = _DIR_TMP . 'flood/')) {
    256292                include_spip('inc/invalideur');
    257                 if (!defined('_IP_FLOOD_TTL')) define('_IP_FLOOD_TTL',24*3600); // 24H par defaut
     293                if (!defined('_IP_FLOOD_TTL')) {
     294                        define('_IP_FLOOD_TTL', 24*3600);
     295                } // 24H par defaut
    258296                $options = array(
    259                         'mtime' => $_SERVER['REQUEST_TIME'] - _IP_FLOOD_TTL,
     297                        'mtime' => $_SERVER['REQUEST_TIME']-_IP_FLOOD_TTL,
    260298                );
    261                 purger_repertoire($dir,$options);
     299                purger_repertoire($dir, $options);
    262300        }
    263301}
     
    266304/**
    267305 * Cron de calcul de statistiques des visites
    268  * 
     306 *
    269307 * Calcule les stats en plusieurs étapes
     308 *
    270309 * @uses calculer_visites()
    271  * 
     310 *
    272311 * @param int $t
    273312 *     Timestamp de la dernière exécution de cette tâche
    274313 * @return int
    275314 *     Positif si la tâche a été terminée, négatif pour réexécuter cette tâche
    276 **/
     315 **/
    277316function genie_visites_dist($t) {
    278317        $encore = calculer_visites($t);
     
    280319        // Si ce n'est pas fini on redonne la meme date au fichier .lock
    281320        // pour etre prioritaire lors du cron suivant
    282         if ($encore)
    283                 return (0 - $t);
     321        if ($encore) {
     322                return (0-$t);
     323        }
    284324
    285325        // nettoyer les IP des floodeurs quand on a fini de compter les stats
     
    288328        return 1;
    289329}
     330
    290331?>
Note: See TracChangeset for help on using the changeset viewer.