Changeset 82258 in spip-zone


Ignore:
Timestamp:
May 7, 2014, 1:14:19 PM (5 years ago)
Author:
teddy.spip@…
Message:
  • On met une sécu sur le listing des répertoires. Si la variable n'est pas un répertoire, pas la peine d'essayer de lister son contenu.
  • On type les retours de fonctions
  • On met une sécu sur la réparation des liens de documents. Il peut arriver qu'on ne soit pas sous la forme IMG/ext_bom_du_fichier.ext mais sur un IMG/nom_du_fichier.ext
  • On précise un peu ce qui était attendu dans le log.
Location:
_plugins_/medias_nettoyage/trunk
Files:
3 edited

Legend:

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

    r81922 r82258  
    5959/**
    6060 * Lister les répertoires présents dans IMG/ sans les sous-répertoires.
    61  *
     61 * @param  string $repertoire_img
     62 *         Par défaut, on prend _DIR_IMG en référence.
     63 *         On peut l'utiliser aussi pour le répertoire IMG/orphelins ou tout autre nom de répertoire.
    6264 * @return array
    6365 */
    6466function medias_lister_repertoires ($repertoire_img = _DIR_IMG) {
    6567        $repertoires = array();
    66 
    67         $rep_img = array_diff(scandir($repertoire_img), array('..','.','.svn')); // On ne liste pas le répertoire .svn
    68         foreach ($rep_img as $repertoire) {
    69                 if (is_dir($repertoire_img . $repertoire)) {
    70                         $repertoires[] = $repertoire_img . $repertoire;
    71                 }
    72         }
    73         return $repertoires;
     68        // On vérifie que $repertoire_img passé en paramètre est bien un répertoire existant.
     69        // cf. ../IMG/orphelins qui ne serait pas encore créé.
     70        if (is_dir($repertoire_img)) {
     71                $rep_img = array_diff(scandir($repertoire_img), array('..','.','.svn')); // On ne liste pas le répertoire .svn
     72                foreach ($rep_img as $repertoire) {
     73                        if (is_dir($repertoire_img . $repertoire)) {
     74                                $repertoires[] = $repertoire_img . $repertoire;
     75                        }
     76                }
     77        }
     78
     79        return (array) $repertoires;
    7480}
    7581
     
    97103        sort($docs_fichiers);
    98104
    99         return $docs_fichiers;
     105        return (array) $docs_fichiers;
    100106}
    101107
     
    141147        $docs_bdd = array_unique(array_diff(medias_lister_documents_bdd(), medias_lister_documents_repertoire()));
    142148        sort($docs_bdd);
    143         return $docs_bdd;
     149        return (array) $docs_bdd;
    144150}
    145151
     
    193199        sort($docs_fichiers);
    194200
    195         return $docs_fichiers;
     201        return (array) $docs_fichiers;
    196202}
    197203
     
    220226        $docs_fichiers = array_unique(array_diff(medias_lister_documents_repertoire(), medias_lister_documents_bdd()));
    221227        sort($docs_fichiers);
    222         return $docs_fichiers;
     228        return (array) $docs_fichiers;
    223229}
    224230
     
    250256        $fichiers = glob($repertoire_img . "*/*/*.*");
    251257        foreach ($fichiers as $fichier) {
    252                 $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier); // On évite les doubles slashs '//' qui pourrait arriver comme un cheveu sur la soupe. 
     258                $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier); // On évite les doubles slashs '//' qui pourrait arriver comme un cheveu sur la soupe.
    253259        }
    254260
     
    268274        sort($docs_fichiers);
    269275
    270         return $docs_fichiers;
     276        return (array) $docs_fichiers;
    271277}
    272278
     
    397403 *
    398404 * @uses medias_lister_repertoires()
    399  * 
     405 *
    400406 * @return array
    401407 */
     
    422428                $docs_fichiers = medias_lister_documents_repertoire_complet($repertoire_orphelins);
    423429        }
    424         return $docs_fichiers;
     430        return (array) $docs_fichiers;
    425431}
    426432
     
    576582 * Il arrive parfois que suite à un problème de droits, les documents ne soient plus rangés correctement dans IMG/ext/fichier.ext
    577583 * mais dans un faux sous répertoire IMG/ext_fichier.ext
    578  * Le présent script va recopier les fichiers mal placés, et changer leur référence dans la table spip_documents ; 
     584 * Le présent script va recopier les fichiers mal placés, et changer leur référence dans la table spip_documents ;
    579585 * il donnera ensuite la liste des fichiers recopiés et des erreurs recontrées dans un fichier de log.
    580586 *
     
    582588 *
    583589 * @uses medias_lister_logos_fichiers()
    584  * 
     590 *
    585591 * @return bool
    586592 */
     
    607613
    608614        if (count($docs_fichiers) > 0) {
    609                 $docs_bdd = sql_allfetsel('id_document,fichier', 'spip_documents', "fichier IN ('" . join("','", $docs_fichiers) . "')");
     615                $docs_bdd = sql_allfetsel('id_document,fichier,extension', 'spip_documents', "fichier IN ('" . join("','", $docs_fichiers) . "') AND mode IN ('document','image')");
    610616                foreach ($docs_bdd as $document) {
    611617                        $destination = preg_replace(',^([a-z0-3]+)_([^/]+\.(\1))$,i', '$1/$2', $document['fichier']);
     618                        // On va vérifier si on est bien sous la forme ../IMG/ext/nom_fichier.ext
     619                        // Sinon, on le construit manuellement.
     620                        // (ne pas oublier d'enlever '../IMG/' à notre variable de test
     621                        // car cette variable sera enresgitrée en BDD)
     622                        $destination_test = preg_replace($pattern_img, '', $destination);
     623                        if (count(explode("/", $destination_test)) == 1) {
     624                                $destination = $document['extension'] . '/' . $destination_test ;
     625                        }
    612626                        if ($document['fichier'] != $destination AND rename($repertoire_img . $document['fichier'],$repertoire_img . $destination)) {
    613627                                sql_updateq('spip_documents', array('fichier' => $destination), 'id_document=' . $document['id_document']);
    614628                                $message_log[] = date_format(date_create(), 'Y-m-d H:i:s') . ' : le fichier ' . $repertoire_img . $document['fichier'] . ' a été déplacé vers ' . $repertoire_img . $destination .'.';
    615629                        } else {
    616                                 $message_log[] = date_format(date_create(), 'Y-m-d H:i:s') . ' : le fichier ' . $repertoire_img . $document['fichier'] . ' n\'a pu être déplacé.';
     630                                $message_log[] = date_format(date_create(), 'Y-m-d H:i:s') . ' : le fichier ' . $repertoire_img . $document['fichier'] . ' n\'a pu être déplacé vers ' . $repertoire_img . $destination . '.';
    617631                        }
    618632                }
  • _plugins_/medias_nettoyage/trunk/paquet.xml

    r81922 r82258  
    22        prefix="medias_nettoyage"
    33        categorie="outil"
    4         version="0.8.4"
     4        version="0.8.5"
    55        etat="dev"
    66        compatibilite="[2.1.0;3.0.99]"
  • _plugins_/medias_nettoyage/trunk/plugin.xml

    r81922 r82258  
    55        <icon>prive/themes/spip/images/medias_nettoyage-64.png</icon>
    66        <prefix>medias_nettoyage</prefix>
    7         <version>0.8.4</version>
     7        <version>0.8.5</version>
    88        <etat>dev</etat>
    99        <categorie>outil</categorie>
Note: See TracChangeset for help on using the changeset viewer.