Changeset 97981 in spip-zone


Ignore:
Timestamp:
May 23, 2016, 11:31:06 PM (3 years ago)
Author:
prigent.yohann@…
Message:

Ajout d’une fonction aux statistiques pour désactiver les referers. Des fois, on en a pas besoin, et ça prend de la place (beaucoup !) dans les tables SQL.

Location:
_core_/plugins/statistiques
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/statistiques/formulaires/configurer_compteur.html

    r90229 r97981  
    66        <form action="#ENV{action}#formulaire_configurer_compteur" method="post"><div>
    77                [(#ACTION_FORMULAIRE{#ENV{action}})]
    8                 <div class="editer-groupe">
    9                         <div class='editer configurer_activer_statistiques[ (#ENV**{erreurs}|table_valeur{activer_statistiques}|oui)erreur]'>
     8                <ul>
     9                        <li class='editer configurer_activer_statistiques[ (#ENV**{erreurs}|table_valeur{activer_statistiques}|oui)erreur]'>
    1010                                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{activer_statistiques})</span>]
    1111                                <div class='choix'>
     
    1313                                        <label for="activer_statistiques"><:statistiques:item_gerer_statistiques:></label>
    1414                                </div>
    15                         </div>
    16                         <div class='editer configurer_activer_captures_referers[ (#ENV**{erreurs}|table_valeur{activer_captures_referers}|oui)erreur]'>
     15                        </li>
     16                        <li class='editer configurer_activer_referers[ (#ENV**{erreurs}|table_valeur{activer_referers}|oui)erreur]'>
     17                                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{activer_referers})</span>]
     18                                <div class='choix'>
     19                                        <input class='checkbox' type="checkbox" name="activer_referers" value='oui' [checked="(#ENV{activer_referers, oui}|=={oui}|?{checked})"] id="activer_referers"/>
     20                                        <label for="activer_referers"><:statistiques:info_referer_oui:></label>
     21                                </div>
     22                        </li>
     23                        <li class='editer configurer_activer_captures_referers[ (#ENV**{erreurs}|table_valeur{activer_captures_referers}|oui)erreur]'>
    1724                                <div class='explication'><:statistiques:info_question_vignettes_referer:></div>
    1825                                [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{activer_captures_referers})</span>]
     
    2128                                        <label for="activer_captures_referers"><:statistiques:info_question_vignettes_referer_oui:></label>
    2229                                </div>
    23                         </div>
     30                        </li>
    2431
    25                 </div>
     32                </ul>
    2633                <p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p>
    2734        </div></form>
     
    2936</div>
    3037<script type='text/javascript'>
    31 function actualise_capture_referers(){
    32         if (jQuery('#activer_statistiques').prop('checked'))
     38function actualise_referers(){
     39        if (jQuery('#activer_statistiques').prop('checked')) {
    3340                jQuery('#formulaire_configurer_compteur li.configurer_activer_captures_referers').show();
    34         else
     41                if (jQuery('#activer_referers').prop('checked'))
     42                        jQuery('#formulaire_configurer_compteur li.configurer_activer_referers').show();
     43                else
     44                        jQuery('#formulaire_configurer_compteur li.configurer_activer_captures_referers').hide();
     45        }
     46        else {
    3547                jQuery('#formulaire_configurer_compteur li.configurer_activer_captures_referers').hide();
     48                jQuery('#formulaire_configurer_compteur li.configurer_activer_referers').hide();
     49        }
    3650}
    3751jQuery(document).ready(function(){
    38         jQuery('#activer_statistiques').bind('change',actualise_capture_referers);
    39         actualise_capture_referers();
     52        jQuery('#activer_statistiques, #activer_referers').bind('change', actualise_referers);
     53        actualise_referers();
    4054});
    4155</script>
  • _core_/plugins/statistiques/formulaires/configurer_compteur.php

    r94396 r97981  
    2020
    2121        $valeurs['activer_statistiques'] = $GLOBALS['meta']['activer_statistiques'];
     22        $valeurs['activer_referers'] = $GLOBALS['meta']['activer_referers'];
    2223        $valeurs['activer_captures_referers'] = $GLOBALS['meta']['activer_captures_referers'];
    2324
     
    3031
    3132        // les checkbox
    32         foreach (array('activer_statistiques', 'activer_captures_referers') as $champ) {
     33        foreach (array('activer_statistiques', 'activer_referers', 'activer_captures_referers') as $champ) {
    3334                if (_request($champ) != 'oui') {
    3435                        set_request($champ, 'non');
  • _core_/plugins/statistiques/genie/visites.php

    r94396 r97981  
    211211                                }
    212212                        }
    213                         // 3. Les referers du site
    214                         // insertion pour les nouveaux, au tableau des increments sinon
    215                         if ($referers[$date]) {
    216                                 $ar = array();
    217                                 $trouver_table = charger_fonction('trouver_table', 'base');
    218                                 $desc = $trouver_table('referers');
    219                                 $n = preg_match('/(\d+)/', $desc['field']['referer'], $r);
    220                                 $n = $n ? $r[1] : 255;
    221                                 foreach ($referers[$date] as $referer => $num) {
    222                                         $referer_md5 = sql_hex(substr(md5($referer), 0, 15));
    223                                         $referer = substr($referer, 0, $n);
    224                                         if (!sql_countsel('spip_referers', "referer_md5=$referer_md5")) {
    225                                                 sql_insertq('spip_referers',
    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
    242                                 foreach ($ar as $num => $liste) {
    243                                         sql_update('spip_referers', array('visites' => "visites+$num", 'visites_jour' => "visites_jour+$num"),
    244                                                 sql_in('referer_md5', join(', ', $liste)));
    245                                 }
    246                         }
    247 
    248                         // 4. Les referers d'articles
    249                         if ($referers_a[$date]) {
    250                                 $ar = array();
    251                                 $insert = array();
    252                                 // s'assurer d'un slot pour chacun
    253                                 foreach ($referers_a[$date] as $id_article => $referers) {
    254                                         foreach ($referers as $referer => $num) {
     213                        if ($GLOBALS['meta']["activer_referers"] == "oui") {
     214                                // 3. Les referers du site
     215                                // insertion pour les nouveaux, au tableau des increments sinon
     216                                if ($referers[$date]) {
     217                                        $ar = array();
     218                                        $trouver_table = charger_fonction('trouver_table', 'base');
     219                                        $desc = $trouver_table('referers');
     220                                        $n = preg_match('/(\d+)/', $desc['field']['referer'], $r);
     221                                        $n = $n ? $r[1] : 255;
     222                                        foreach ($referers[$date] as $referer => $num) {
    255223                                                $referer_md5 = sql_hex(substr(md5($referer), 0, 15));
    256                                                 $prim = "(id_article=$id_article AND referer_md5=$referer_md5)";
    257                                                 if (!sql_countsel('spip_referers_articles', $prim)) {
    258                                                         sql_insertq('spip_referers_articles',
     224                                                $referer = substr($referer, 0, $n);
     225                                                if (!sql_countsel('spip_referers', "referer_md5=$referer_md5")) {
     226                                                        sql_insertq('spip_referers',
    259227                                                                array(
    260228                                                                        'visites' => $num,
    261                                                                         'id_article' => $id_article,
     229                                                                        'visites_jour' => $num,
     230                                                                        'visites_veille' => $num,
     231                                                                        'date' => $date,
    262232                                                                        'referer' => $referer,
    263233                                                                        'referer_md5' => $referer_md5
    264234                                                                ));
    265235                                                } else {
    266                                                         $ar[$num][] = $prim;
     236                                                        $ar[$num][] = $referer_md5;
    267237                                                }
    268238                                        }
    269                                 }
    270                                 // ajouter les visites
    271                                 foreach ($ar as $num => $liste) {
    272                                         sql_update('spip_referers_articles', array('visites' => "visites+$num"), join(" OR ", $liste));
    273                                         ## Ajouter un JOIN sur le statut de l'article ?
     239
     240                                        // appliquer les increments sur les anciens
     241                                        // attention on appelle sql_in en mode texte et pas array
     242                                        // pour ne pas passer sql_quote() sur les '0x1234' de referer_md5, cf #849
     243                                        foreach ($ar as $num => $liste) {
     244                                                sql_update('spip_referers', array('visites' => "visites+$num", 'visites_jour' => "visites_jour+$num"),
     245                                                        sql_in('referer_md5', join(', ', $liste)));
     246                                        }
     247                                }
     248
     249                                // 4. Les referers d'articles
     250                                if ($referers_a[$date]) {
     251                                        $ar = array();
     252                                        $insert = array();
     253                                        // s'assurer d'un slot pour chacun
     254                                        foreach ($referers_a[$date] as $id_article => $referers) {
     255                                                foreach ($referers as $referer => $num) {
     256                                                        $referer_md5 = sql_hex(substr(md5($referer), 0, 15));
     257                                                        $prim = "(id_article=$id_article AND referer_md5=$referer_md5)";
     258                                                        if (!sql_countsel('spip_referers_articles', $prim)) {
     259                                                                sql_insertq('spip_referers_articles',
     260                                                                        array(
     261                                                                                'visites' => $num,
     262                                                                                'id_article' => $id_article,
     263                                                                                'referer' => $referer,
     264                                                                                'referer_md5' => $referer_md5
     265                                                                        ));
     266                                                        } else {
     267                                                                $ar[$num][] = $prim;
     268                                                        }
     269                                                }
     270                                        }
     271                                        // ajouter les visites
     272                                        foreach ($ar as $num => $liste) {
     273                                                sql_update('spip_referers_articles', array('visites' => "visites+$num"), join(" OR ", $liste));
     274                                                ## Ajouter un JOIN sur le statut de l'article ?
     275                                        }
    274276                                }
    275277                        }
  • _core_/plugins/statistiques/lang/statistiques_fr.php

    r97172 r97981  
    4545        'info_popularite_5' => 'popularité :',
    4646        'info_previsions' => 'prévisions :',
     47        'info_referer_oui' => 'Activer les referers',
    4748        'info_question_vignettes_referer' => 'Lorsque vous consultez les statistiques, vous pouvez visualiser des aperçus des sites d’origine des visites',
    4849        'info_question_vignettes_referer_oui' => 'Afficher les captures des sites d’origine des visites',
  • _core_/plugins/statistiques/paquet.xml

    r94477 r97981  
    22        prefix="stats"
    33        categorie="statistique"
    4         version="1.0.1"
     4        version="1.0.2"
    55        etat="stable"
    66        compatibilite="[3.1.0;3.1.*]"
    77        logo="prive/themes/spip/images/statistique-32.png"
    8         schema="1.0.0"
     8        schema="1.0.1"
    99>       
    1010
  • _core_/plugins/statistiques/prive/squelettes/contenu/stats_referers.html

    r85790 r97981  
    1 [(#AUTORISER{voirstats}|sinon_interdire_acces)]
     1[(#AUTORISER{voirstats}|et{#CONFIG{activer_referers}|=={oui}}|sinon_interdire_acces)]
    22<BOUCLE_expose(ARTICLES){id_article}{statut==.*}>
    33#BOITE_OUVRIR{'','note'}
  • _core_/plugins/statistiques/prive/squelettes/top/stats_referers.html

    r47947 r97981  
     1[(#CONFIG{activer_referers, oui}|=={oui}|oui)
    12#LARGEUR_ECRAN{pleine_largeur}
    2 [(#VAL{statistiques}|barre_onglets{stats_referers})]
     3[(#VAL{statistiques}|barre_onglets{stats_referers})]]
  • _core_/plugins/statistiques/public/stats.php

    r94396 r97981  
    8686        // Analyse du referer
    8787        $log_referer = '';
    88         if (isset($referer)) {
    89                 $url_site_spip = preg_replace(',/$,', '',
    90                         preg_replace(',^(https?://)?(www\.)?,i', '',
    91                                 url_de_base()));
    92                 if (!(($url_site_spip <> '')
    93                         and strpos('-' . strtolower($referer), strtolower($url_site_spip))
    94                         and strpos($referer, "recherche=") === false)
    95                 ) {
    96                         $log_referer = $referer;
     88        if ($GLOBALS['meta']["activer_referers"] == "oui") {
     89                if (isset($referer)) {
     90                        $url_site_spip = preg_replace(',/$,', '',
     91                                preg_replace(',^(https?://)?(www\.)?,i', '',
     92                                        url_de_base()));
     93                        if (!(($url_site_spip <> '')
     94                                and strpos('-' . strtolower($referer), strtolower($url_site_spip))
     95                                and strpos($referer, "recherche=") === false)
     96                        ) {
     97                                $log_referer = $referer;
     98                        }
    9799                }
    98100        }
  • _core_/plugins/statistiques/stats_administrations.php

    r94396 r97981  
    5252        );
    5353        $maj['1.0.0'] = array();
     54        $maj['1.0.1'] = array(
     55                array('ecrire_meta','activer_referers', 'oui'),
     56        );
     57
    5458
    5559        include_spip('base/upgrade');
  • _core_/plugins/statistiques/stats_autoriser.php

    r93655 r97981  
    4747 */
    4848function autoriser_referers_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
    49         return autoriser('voirstats', $type, $id, $qui, $opt);
     49        return ($GLOBALS['meta']["activer_referers"] == 'oui') && autoriser('voirstats', $type, $id, $qui, $opt);
    5050}
    5151
     
    132132 */
    133133function autoriser_statsreferers_onglet_dist($faire, $type, $id, $qui, $opt) {
    134         return autoriser('voirstats', $type, $id, $qui, $opt);
     134        return ($GLOBALS['meta']["activer_referers"] == 'oui') && autoriser('voirstats', $type, $id, $qui, $opt);
    135135}
  • _core_/plugins/statistiques/stats_pipelines.php

    r93655 r97981  
    186186        $metas['activer_statistiques'] = 'non';
    187187        $metas['activer_captures_referers'] = 'non';
     188        $metas['activer_referers']='oui';
    188189
    189190        return $metas;
Note: See TracChangeset for help on using the changeset viewer.