Changeset 112278 in spip-zone


Ignore:
Timestamp:
Nov 2, 2018, 7:04:07 PM (2 years ago)
Author:
marcimat@…
Message:

Proposons de nettoyer par défaut les URLs des objets qui n’existent pas/plus sur le site.
Y a t’il des raisons de les conserver ?

On ne supprime cependant que les urls dont l’objet éditorial est encore activé sur le site (testé avec lister_tables_objets_sql ; donc uniquement des plugins actifs), mais peut être est-ce une précaution de trop ?
Les fonctions de suppression des plugins s’occupent rarement de purger la table des urls… du coup… je ne sais pas trop.

Location:
_core_/plugins/urls_etendues
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/urls_etendues/paquet.xml

    r111741 r112278  
    22        prefix="urls"
    33        categorie="statistique"
    4         version="2.2.2"
     4        version="2.3.0"
    55        etat="stable"
    66        compatibilite="[3.3.0-dev;3.3.*]"
     
    1919        <pipeline nom="declarer_tables_auxiliaires" inclure="base/urls.php" />
    2020        <pipeline nom="declarer_tables_interfaces" inclure="base/urls.php" />
     21        <pipeline nom="optimiser_base_disparus" inclure="urls_pipeline.php" />
    2122        <pipeline nom="arbo_creer_chaine_url" action="arbo_creer_chaine_url" inclure="urls/arbo.php" />
    2223        <pipeline nom="propres_creer_chaine_url" action="propres_creer_chaine_url" inclure="urls/propres.php" />
  • _core_/plugins/urls_etendues/urls_pipeline.php

    r110577 r112278  
    3333        return $flux;
    3434}
     35
     36
     37/**
     38 * Optimiser la base de donnée en supprimant les urls orphelines
     39 *
     40 * @param array $flux
     41 * @return array
     42 */
     43function urls_optimiser_base_disparus($flux) {
     44        $n = &$flux['data'];
     45        # les urls lies a un id_objet inexistant
     46        $types = sql_allfetsel("DISTINCT type", 'spip_urls');
     47        $types = array_column($types, 'type');
     48        $types = array_filter($types);
     49        foreach ($types as $type) {
     50                $table = table_objet_sql($type);
     51                $primary = id_table_objet($type);
     52                if (lister_tables_objets_sql($table)) {
     53                        $n += $i = sql_delete('spip_urls', [
     54                                'type=' . sql_quote($type),
     55                                sql_in('id_objet', sql_get_select($primary, $table), 'NOT')
     56                        ]);
     57                        if ($i) {
     58                                spip_log("Suppression de $i urls $type inexistants", "urls." . _LOG_INFO_IMPORTANTE);
     59                        }
     60                }
     61        }
     62        return $flux;
     63}
Note: See TracChangeset for help on using the changeset viewer.