Changeset 113537 in spip-zone


Ignore:
Timestamp:
Jan 20, 2019, 11:37:05 PM (3 months ago)
Author:
marcimat@…
Message:

Afin d’éliminer (plus tard) les doublons de sites des statistiques, on ajoute un champ "url_clean" qui nettoie les urls des sites,
notamment en enlevant le protocole, ainsi qu’un éventuel 'www.'.
Lors de l’ajout d’un site, on compare notre base sur cette 'url_clean' pour vérifier que le site n’existe pas déjà.

Il y a actuellement ~1500 doublons dans la base.

Requete :
`
SELECT (SUM(nb)-count(*)) AS doublons FROM(
SELECT count(url_clean) AS nb, url_clean FROM spip_websites WHERE statut='publie' AND status= GROUP BY url_clean HAVING nb > 1
) as websites;
`

Location:
_dev_/univers_spip
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _dev_/univers_spip/base/univers.php

    r112586 r113537  
    3333                'plugins' => 'bigint(21) default NULL',
    3434                'pays' => "char(3) default '' NOT NULL",
     35                'url_clean' => "varchar(255) default '' NOT NULL",
    3536
    3637                'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
     
    142143                        ecrire_meta($nom_meta_base_version, $current_version = '0.1.9', 'non');
    143144                }
     145                if (version_compare($current_version, '0.1.10', '<')) {
     146                        include_spip('base/serial');
     147                        include_spip('base/auxiliaires');
     148                        include_spip('base/create');
     149                        // ajout du champ url_clean
     150                        spip_timer('up');
     151                        maj_tables(array('spip_websites'));
     152                        sql_update( 'spip_websites', array(
     153                                'url_clean' =>
     154                                        "TRIM(LEADING 'www.' FROM " .
     155                                        "TRIM(LEADING 'https://' FROM " .
     156                                        "TRIM(LEADING 'http://' FROM " .
     157                                        "TRIM(TRAILING '/' FROM " .
     158                                        "TRIM(TRAILING 'spip.php' FROM url" .
     159                                        ")))))"
     160                        ));
     161                        echo "Urls cleans calculées en " . spip_timer('up');
     162                        #ecrire_meta($nom_meta_base_version, $current_version = '0.1.10', 'non');
     163                }
    144164        }
    145165}
  • _dev_/univers_spip/inc/univers.php

    r112587 r113537  
    3434        $base = univers_nettoyer_url($base);
    3535        $base = preg_replace(',(spip[.]php3?).*$,i', '\\1', $base);
    36         $base_short = preg_replace(',spip[.]php.*$,i', '', $base);
    37 
    38         if ($id_website = sql_getfetsel('id_website', 'spip_websites', 'url='.sql_quote($base)) or
    39                 ($base_short!==$base and
    40                         $id_website = sql_getfetsel('id_website', 'spip_websites', 'url='.sql_quote($base_short))
    41                 )
     36        $url_clean = univers_url_clean($base);
     37
     38        if (
     39                $id_website = sql_getfetsel('id_website', 'spip_websites', 'url='.sql_quote($base)) or
     40                $id_website = sql_getfetsel('id_website', 'spip_websites', 'url_clean='.sql_quote($url_clean), '', 'date DESC', '0,1')
    4241        ) {
    4342                return $id_website;
     
    4645        $id_website = sql_insertq(
    4746                'spip_websites',
    48                 array('url' => $base, 'descriptif' => '', 'date' => date('Y-m-d H:i:s'))
     47                array(
     48                        'url' => $base,
     49                        'url_clean' => $url_clean,
     50                        'descriptif' => '',
     51                        'date' => date('Y-m-d H:i:s')
     52                )
    4953        );
    5054
     
    7276        $url = preg_replace(',(index|spip|forum|article)[.]php3/.+,i', '', $url);
    7377        $url = preg_replace(',/(plugins|ecrire|IMG|local|squelettes)/.+[.]php,i', '', $url);
    74 
     78        return $url;
     79}
     80
     81/**
     82 * Calculer une url nettoyée du protocole, /, spip.php
     83 * qui permet de mieux gérer les doublons
     84 */
     85function univers_url_clean($url) {
     86        $url = preg_replace('#^https?://#i', '', $url);
     87        $url = preg_replace('#^www[.]#i', '', $url);
     88        $url = preg_replace('#spip[.]php$#i', '', $url);
     89        $url = rtrim($url, '/');
    7590        return $url;
    7691}
  • _dev_/univers_spip/plugin.xml

    r112578 r113537  
    44        <licence>GPL</licence>
    55        <etat>test</etat>
    6         <version>0.2.28</version>
    7         <version_base>0.1.9</version_base>
     6        <version>0.2.29</version>
     7        <version_base>0.1.10</version_base>
    88        <categorie>statistique</categorie>
    99        <install>base/univers.php</install>
Note: See TracChangeset for help on using the changeset viewer.