Changeset 82621 in spip-zone


Ignore:
Timestamp:
May 20, 2014, 1:19:00 PM (5 years ago)
Author:
teddy.spip@…
Message:
  • On va utiliser la globale si on est en SPIP 2.1 et la fonction idoine si on est en SPIP 3. On prendra ainsi que les tables vraiment succeptibles d'avoir un logo. Les tables de liaisons par exemple n'ont pas de logo.
  • Bug sur l'utilisation de glob(). On ne peut pas donner un pattern qui a plus de 260 caractères. Fallait le savoir. :-) Donc on passe par une recherche par type de logo. Un peu plus long mais plus sûr si on a beaucoup d'objets.
  • Petit bug sur la requête sur la table spip_documents. Il arrive parfois que sur certains serveurs, les fichiers puissent avoir des apostrophes dans leur nom. Bizarre mais vrai... :-/
  • On incrémente la version z.
Location:
_plugins_/medias_nettoyage/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/medias_nettoyage/trunk/medias_nettoyage_fonctions.php

    r82296 r82621  
    343343        if (intval(spip_version()) == 2) {
    344344                include_spip('base/connect_sql');
     345                $tables_objets = (isset($GLOBALS['tables_principales'])) ? $GLOBALS['tables_principales'] : array('spip_articles','spip_rubriques','spip_auteurs','spip_breves','spip_documents','spip_syndic','spip_mots','spip_forum','spip_groupes_mots');
    345346        } else if (intval(spip_version()) == 3) {
    346347                include_spip('base/objets');
     348                $tables_objets = array_keys(lister_tables_principales());
    347349        }
    348350
     
    351353        $docs_fichiers_off      = array();
    352354        $logos_objet            = array('art','rub','breve','site','mot','aut');
    353 
    354         // On va chercher toutes les tables connues de SPIP
    355         foreach (sql_alltable() as $table) {
     355        $fichiers                       = array();
     356
     357        // On va chercher toutes les tables principales connues de SPIP
     358        foreach ($tables_objets as $table) {
    356359                // On cherche son type d'objet et on l'ajoute aux logos
    357                 // Il y a aussi dans ces objets la référence à 'article', 'rubrique' et 'auteur'
    358                 // On peut les laisser, ça ne mange pas de pain de prendre en compte les "tordus" ;-)
     360                // Il y a aussi dans ces objets la référence à 'article',
     361                // 'rubrique' et 'auteur'
     362                // On peut les laisser, ça ne mange pas de pain de prendre
     363                // en compte les "tordus" ;-)
    359364                $logos_objet[] = objet_type($table);
    360365        }
     
    364369
    365370        // On va chercher dans IMG/*(on|off)*.*
    366         $fichiers = glob($repertoire_img . "{" . join(",",$logos_objet) ."}{on,off}*.*",GLOB_BRACE); // la regex de GLOB_BRACE est très basique...
     371        // On fait un foreach pour ne pas avoir de
     372        // "Pattern exceeds the maximum allowed length of 260 characters"
     373        // sur glob()
     374        foreach ($logos_objet as $logo_pattern) {
     375                // la regex de GLOB_BRACE est très basique...
     376                $liste = glob($repertoire_img . "{" . $logo_pattern ."}{on,off}*.*",GLOB_BRACE);
     377                $fichiers = array_merge($fichiers, $liste);
     378        }
    367379
    368380        foreach ($fichiers as $fichier) {
     
    628640/**
    629641 * Réparer les documents.
    630  * Il arrive parfois que suite à un problème de droits, les documents ne soient plus rangés correctement dans IMG/ext/fichier.ext
     642 * Il arrive parfois que suite à un problème de droits,
     643 * les documents ne soient plus rangés correctement dans IMG/ext/fichier.ext
    631644 * mais dans un faux sous répertoire IMG/ext_fichier.ext
    632  * Le présent script va recopier les fichiers mal placés, et changer leur référence dans la table spip_documents ;
    633  * il donnera ensuite la liste des fichiers recopiés et des erreurs recontrées dans un fichier de log.
    634  *
    635  * Script repris de ce fichier : http://zone.spip.org/trac/spip-zone/browser/_outils_/repare_doc.html
     645 * Le présent script va recopier les fichiers mal placés,
     646 * et changer leur référence dans la table spip_documents ;
     647 * il donnera ensuite la liste des fichiers recopiés et
     648 * des erreurs recontrées dans un fichier de log.
     649 *
     650 * Script repris de ce fichier :
     651 * http://zone.spip.org/trac/spip-zone/browser/_outils_/repare_doc.html
    636652 *
    637653 * @uses medias_lister_logos_fichiers()
     
    662678
    663679        if (count($docs_fichiers) > 0) {
    664                 $docs_bdd = sql_allfetsel('id_document,fichier,extension', 'spip_documents', "fichier IN ('" . join("','", $docs_fichiers) . "') AND mode IN ('document','image')");
     680                // On va échapper chaque valeur d'url de fichier car
     681                // il peut arriver d'avoir des apostrophes dans le nom de fichier...
     682                // #fail
     683                foreach ($docs_fichiers as $url_fichier) {
     684                        $url_fichiers[] = sql_quote($url_fichier);
     685                }
     686                $docs_bdd = sql_allfetsel('id_document,fichier', 'spip_documents', "fichier IN (" . join(",", $url_fichiers) . ")");
    665687                foreach ($docs_bdd as $document) {
    666688                        $destination = preg_replace(',^([a-z0-3]+)_([^/]+\.(\1))$,i', '$1/$2', $document['fichier']);
  • _plugins_/medias_nettoyage/trunk/paquet.xml

    r82302 r82621  
    22        prefix="medias_nettoyage"
    33        categorie="outil"
    4         version="0.8.6"
     4        version="0.8.7"
    55        etat="stable"
    66        compatibilite="[2.1.0;3.0.*]"
  • _plugins_/medias_nettoyage/trunk/plugin.xml

    r82296 r82621  
    55        <icon>prive/themes/spip/images/medias_nettoyage-64.png</icon>
    66        <prefix>medias_nettoyage</prefix>
    7         <version>0.8.6</version>
     7        <version>0.8.7</version>
    88        <etat>stable</etat>
    99        <categorie>outil</categorie>
Note: See TracChangeset for help on using the changeset viewer.