Changeset 82881 in spip-zone


Ignore:
Timestamp:
Jun 6, 2014, 2:14:15 PM (5 years ago)
Author:
teddy.spip@…
Message:

On met des sécus avant le foreach pour éviter de gros warnnings php. cf. http://contrib.spip.net/Nettoyer-la-mediatheque#forum475697
Ajout de chaîne de langue.
Petit up de z

Location:
_plugins_/medias_nettoyage/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/medias_nettoyage/trunk/lang/medias_nettoyage_fr.php

    r82719 r82881  
    88
    99    // A
    10     'aucun_document_orphelin' => 'Il n\'y a aucun document orphelin',
    11     'aucun_logo' => 'Il n\'y a aucun logo',
     10    'aucun_document_orphelin' => 'Il n\'y a aucun document orphelin.',
     11    'aucun_logo' => 'Il n\'y a aucun logo.',
     12    'aucun_repertoire' => 'Il n\'y a aucun répertoire.',
    1213
    1314    'cfg_titre_parametrages' => 'Paramétrages',
  • _plugins_/medias_nettoyage/trunk/medias_nettoyage_fonctions.php

    r82724 r82881  
    2727    $extensions = array();
    2828    $extensions_cibles = sql_allfetsel('DISTINCT extension', 'spip_documents');
    29     foreach ($extensions_cibles as $extension) {
    30         $extensions[] = $extension['extension'];
     29    // On vérifie bien qu'on reçoit un tableau.
     30    if (is_array($extensions_cibles) and count($extensions_cibles) > 0) {
     31        foreach ($extensions_cibles as $extension) {
     32            $extensions[] = $extension['extension'];
     33        }
    3134    }
    3235    // On rajoute le répertoire "vignettes"
     
    5053    $extensions = medias_lister_extensions_documents();
    5154
    52     foreach ($extensions as $extension) {
    53         if (!is_dir($repertoire_img . $extension)) {
    54             @mkdir($repertoire_img . $extension, _SPIP_CHMOD);
     55    if (is_array($extensions) and count($extensions) > 0) {
     56        foreach ($extensions as $extension) {
     57            if (!is_dir($repertoire_img . $extension)) {
     58                @mkdir($repertoire_img . $extension, _SPIP_CHMOD);
     59            }
    5560        }
    5661    }
     
    8893    // cf. ../IMG/orphelins qui ne serait pas encore créé.
    8994    if (is_dir($repertoire_img)) {
     95        // Avec la fonction scandir, on liste le contenu (existant) du répertoire cible.
    9096        $rep_img = array_diff(scandir($repertoire_img), array('..','.','.svn')); // On ne liste pas le répertoire .svn
    9197        foreach ($rep_img as $repertoire) {
     98            // On vérifie que c'est un répertoire et non un fichier.
    9299            if (is_dir($repertoire_img . $repertoire)) {
    93100                $repertoires[] = $repertoire_img . $repertoire;
     
    112119
    113120    $docs_bdd = sql_allfetsel('fichier', 'spip_documents', "distant='non' AND fichier!=''");
    114     foreach ($docs_bdd as $doc) {
    115         /**
    116          * On formate par rapport au répertoire ../IMG/
    117          * On évite les doubles // qu'il peut y avoir
    118          */
    119         $docs_fichiers[] = preg_replace("/\/\//", "/", get_spip_doc($doc['fichier']));
    120     }
    121     // on enlève les url vides issues de la base :
    122     $docs_fichiers = array_filter($docs_fichiers);
     121    // On vérifie que nous avons au moins un élément dans le tableau
     122    if (count($docs_bdd) > 0) {
     123        foreach ($docs_bdd as $doc) {
     124            /**
     125             * On formate par rapport au répertoire ../IMG/
     126             * On évite les doubles // qu'il peut y avoir
     127             */
     128            $docs_fichiers[] = preg_replace("/\/\//", "/", get_spip_doc($doc['fichier']));
     129        }
     130        // on enlève les url vides issues de la base :
     131        $docs_fichiers = array_filter($docs_fichiers);
     132    }
    123133
    124134    // On trie dans l'ordre alphabétique :
     
    187197function medias_lister_documents_bdd_orphelins_taille()
    188198{
    189     $documents_orphelins    = medias_lister_documents_bdd_orphelins();
     199    $docs_orphelins    = medias_lister_documents_bdd_orphelins();
    190200    $taille         = 0;
    191201    $pattern_img        = "/" . preg_replace("/\//", "\/", _DIR_IMG) . "/";
    192202
    193     if (count($documents_orphelins) > 0) {
    194         $documents_bdd = sql_allfetsel(
     203    if (count($docs_orphelins) > 0) {
     204        $docs_bdd = sql_allfetsel(
    195205            'fichier,taille',
    196206            'spip_documents',
    197207            "fichier IN ('"
    198             . join("','", preg_replace($pattern_img, '', $documents_orphelins)) . "')"
     208            . join("','", preg_replace($pattern_img, '', $docs_orphelins)) . "')"
    199209        );
    200         foreach ($documents_bdd as $document_bdd) {
    201             if (!file_exists(get_spip_doc($document_bdd['fichier']))) {
    202                 $taille = $taille + ($document_bdd['taille']/1000);
    203                 // On divise par 1000 pour éviter la limite de l'integer php.
     210        if (is_array($docs_bdd) and count($docs_bdd) > 0) {
     211            foreach ($docs_bdd as $document_bdd) {
     212                if (!file_exists(get_spip_doc($document_bdd['fichier']))) {
     213                    $taille = $taille + ($document_bdd['taille']/1000);
     214                    // On divise par 1000 pour éviter la limite de l'integer php.
     215                }
    204216            }
    205217        }
     
    224236
    225237    foreach (medias_lister_extensions_documents() as $extension) {
    226         // On va chercher dans IMG/$extension/*.*
    227         $fichiers = glob($repertoire_img . "$extension/*.*");
    228         foreach ($fichiers as $fichier) {
    229             $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     238        // Par sécurité, on vérifie que l'extension a bel
     239        // et bien un répertoire physique
     240        if (is_dir($repertoire_img . $extension)) {
     241            // On va chercher dans IMG/$extension/*.*
     242            $fichiers = glob($repertoire_img . "$extension/*.*");
     243            if (is_array($fichiers) and count($fichiers) > 0) {
     244                foreach ($fichiers as $fichier) {
     245                    $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     246                }
     247            }
    230248        }
    231249    }
    232250    // On va chercher dans IMG/*.*
    233251    $fichiers = glob($repertoire_img . "*.*");
    234     foreach ($fichiers as $fichier) {
    235         $docs_fichiers[] = $fichier;
     252    // On vérifie que c'est bien un tableau, avec au moins un élément.
     253    if (is_array($fichiers) and count($fichiers) > 0) {
     254        foreach ($fichiers as $fichier) {
     255            $docs_fichiers[] = $fichier;
     256        }
    236257    }
    237258    $docs_fichiers = array_unique(
     
    305326        // Exemple : IMG/distant/jpg/nom_fichier.jpg
    306327    $fichiers = glob($repertoire_img . "*/*/*.*");
    307     foreach ($fichiers as $fichier) {
    308         $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
    309         // On évite les doubles slashs '//' qui pourrait arriver comme un cheveu sur la soupe.
     328    if (is_array($fichiers) and count($fichiers) > 0) {
     329        foreach ($fichiers as $fichier) {
     330            $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     331            // On évite les doubles slashs '//' qui pourrait arriver comme un cheveu sur la soupe.
     332        }
    310333    }
    311334
     
    313336        // Exemple : IMG/pdf/nom_fichier.pdf
    314337    $fichiers = glob($repertoire_img . "*/*.*");
    315     foreach ($fichiers as $fichier) {
    316         $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     338    if (is_array($fichiers) and count($fichiers) > 0) {
     339        foreach ($fichiers as $fichier) {
     340            $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     341        }
    317342    }
    318343
     
    320345        // Exemple : IMG/arton4.png
    321346    $fichiers = glob($repertoire_img . "*.*");
    322     foreach ($fichiers as $fichier) {
    323         $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     347    if (is_array($fichiers) and count($fichiers) > 0) {
     348        foreach ($fichiers as $fichier) {
     349            $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
     350        }
    324351    }
    325352
     
    412439    // On force la recherche sur cet élément même si la recherche "classique"
    413440    // devrait gérer cela initialement…
    414     if ($logo_site = glob($repertoire_img . "site{on|off}0.*", GLOB_BRACE)
    415         and count($logo_site) > 0) {
     441    $logo_site = glob($repertoire_img . "site{on|off}0.*", GLOB_BRACE);
     442    // On évite d'utiliser la fonction glob() directement dans le if car ça peut créer un bug pour PHP <5.4
     443    // cf. http://contrib.spip.net/Nettoyer-la-mediatheque#forum475712
     444    if (count($logo_site) > 0) {
    416445        $fichiers = array_merge($fichiers, $logo_site);
    417446    }
     
    424453        // la regex de GLOB_BRACE est très basique...
    425454        $liste = glob($repertoire_img . "{" . $logo_pattern ."}{on,off}*.*", GLOB_BRACE);
    426         $fichiers = array_merge($fichiers, $liste);
    427     }
    428 
    429     foreach ($fichiers as $fichier) {
    430         // ... Donc on fait une regex plus poussée avec un preg_match
    431         if (preg_match("/(" . join("|", $logos_objet) .")on\d+.(" . join("|", $formats_logos) .")$/", $fichier)) {
    432             $docs_fichiers_on[] = preg_replace("/\/\//", "/", $fichier);
    433         }
    434         if (preg_match("/(" . join("|", $logos_objet) .")off\d+.(" . join("|", $formats_logos) .")$/", $fichier)) {
    435             $docs_fichiers_off[] = preg_replace("/\/\//", "/", $fichier);
     455        if (is_array($liste) and count($liste) > 0) {
     456            $fichiers = array_merge($fichiers, $liste);
     457        }
     458    }
     459
     460    // il faut avoir au moins un élément dans le tableau de fichiers.
     461    if (count($fichiers) > 0) {
     462        foreach ($fichiers as $fichier) {
     463            // ... Donc on fait une regex plus poussée avec un preg_match
     464            if (preg_match("/(" . join("|", $logos_objet) .")on\d+.(" . join("|", $formats_logos) .")$/", $fichier)) {
     465                $docs_fichiers_on[] = preg_replace("/\/\//", "/", $fichier);
     466            }
     467            if (preg_match("/(" . join("|", $logos_objet) .")off\d+.(" . join("|", $formats_logos) .")$/", $fichier)) {
     468                $docs_fichiers_off[] = preg_replace("/\/\//", "/", $fichier);
     469            }
    436470        }
    437471    }
     
    610644    foreach ($pattern_obsoletes as $pattern) {
    611645        $repertoires = glob($repertoire_img . $pattern . "*");
    612         $repertoires_obsoletes = array_merge($repertoires_obsoletes, $repertoires);
     646        if (is_array($repertoires) and count($repertoires) > 0) {
     647            $repertoires_obsoletes = array_merge($repertoires_obsoletes, $repertoires);
     648        }
    613649    }
    614650    // on fusionne avec les fichiers obsolètes
     
    777813    // On va chercher dans IMG/*.*
    778814    $fichiers = glob($repertoire_img . "*.*");
    779     foreach ($fichiers as $fichier) {
    780         $docs_fichiers[] = $fichier;
    781     }
    782     $docs_fichiers = array_filter(
    783         array_diff(
    784             $docs_fichiers,
    785             medias_lister_logos_fichiers()
    786         )
    787     ); // a voir si on n'a pas de logos ce que ça donne comme ça…
     815    if (is_array($fichiers) and count($fichiers) > 0) {
     816        foreach ($fichiers as $fichier) {
     817            $docs_fichiers[] = $fichier;
     818        }
     819        $docs_fichiers = array_filter(
     820            array_diff(
     821                $docs_fichiers,
     822                medias_lister_logos_fichiers()
     823            )
     824        ); // a voir si on n'a pas de logos ce que ça donne comme ça…
     825    }
    788826    $docs_fichiers = preg_replace($pattern_img, '', $docs_fichiers);
    789827
     
    802840            . ")"
    803841        );
    804         foreach ($docs_bdd as $document) {
    805             $destination = preg_replace(',^([a-z0-3]+)_([^/]+\.(\1))$,i', '$1/$2', $document['fichier']);
    806             // On va vérifier si on est bien sous la forme ../IMG/ext/nom_fichier.ext
    807             // Sinon, on le construit manuellement.
    808             // (ne pas oublier d'enlever '../IMG/' à notre variable de test
    809             // car cette variable sera enresgitrée en BDD)
    810             $destination_test = preg_replace($pattern_img, '', $destination);
    811             if (count(explode("/", $destination_test)) == 1) {
    812                 $destination = $document['extension'] . '/' . $destination_test ;
    813             }
    814             if ($document['fichier'] != $destination
    815                 and rename($repertoire_img . $document['fichier'], $repertoire_img . $destination)) {
    816                 sql_updateq(
    817                     'spip_documents',
    818                     array('fichier' => $destination),
    819                     'id_document=' . $document['id_document']
    820                 );
    821                 $message_log[] = date_format(date_create(), 'Y-m-d H:i:s')
    822                 . ' : le fichier '
    823                 . $repertoire_img
    824                 . $document['fichier']
    825                 . ' a été déplacé vers '
    826                 . $repertoire_img
    827                 . $destination
    828                 .'.';
    829             } else {
    830                 $message_log[] = date_format(date_create(), 'Y-m-d H:i:s')
    831                 . ' : le fichier '
    832                 . $repertoire_img
    833                 . $document['fichier']
    834                 . ' n\'a pu être déplacé vers '
    835                 . $repertoire_img
    836                 . $destination
    837                 . '.';
     842
     843        if (is_array($docs_bdd) and count($docs_bdd) > 0) {
     844            foreach ($docs_bdd as $document) {
     845                $destination = preg_replace(',^([a-z0-3]+)_([^/]+\.(\1))$,i', '$1/$2', $document['fichier']);
     846                // On va vérifier si on est bien sous la forme ../IMG/ext/nom_fichier.ext
     847                // Sinon, on le construit manuellement.
     848                // (ne pas oublier d'enlever '../IMG/' à notre variable de test
     849                // car cette variable sera enresgitrée en BDD)
     850                $destination_test = preg_replace($pattern_img, '', $destination);
     851                if (count(explode("/", $destination_test)) == 1) {
     852                    $destination = $document['extension'] . '/' . $destination_test ;
     853                }
     854                if ($document['fichier'] != $destination
     855                    and rename($repertoire_img . $document['fichier'], $repertoire_img . $destination)) {
     856                    sql_updateq(
     857                        'spip_documents',
     858                        array('fichier' => $destination),
     859                        'id_document=' . $document['id_document']
     860                    );
     861                    $message_log[] = date_format(date_create(), 'Y-m-d H:i:s')
     862                    . ' : le fichier '
     863                    . $repertoire_img
     864                    . $document['fichier']
     865                    . ' a été déplacé vers '
     866                    . $repertoire_img
     867                    . $destination
     868                    .'.';
     869                } else {
     870                    $message_log[] = date_format(date_create(), 'Y-m-d H:i:s')
     871                    . ' : le fichier '
     872                    . $repertoire_img
     873                    . $document['fichier']
     874                    . ' n\'a pu être déplacé vers '
     875                    . $repertoire_img
     876                    . $destination
     877                    . '.';
     878                }
    838879            }
    839880        }
  • _plugins_/medias_nettoyage/trunk/paquet.xml

    r82737 r82881  
    22        prefix="medias_nettoyage"
    33        categorie="outil"
    4         version="0.9.3"
     4        version="0.9.4"
    55        etat="stable"
    66        compatibilite="[2.1.0;3.0.*]"
  • _plugins_/medias_nettoyage/trunk/plugin.xml

    r82737 r82881  
    55        <icon>prive/themes/spip/images/medias_nettoyage-64.png</icon>
    66        <prefix>medias_nettoyage</prefix>
    7         <version>0.9.3</version>
     7        <version>0.9.4</version>
    88        <etat>stable</etat>
    99        <categorie>outil</categorie>
  • _plugins_/medias_nettoyage/trunk/prive/squelettes/contenu/medias_rep_img.html

    r82717 r82881  
    22<div class="nettoyeur"></div>
    33
    4 <INCLURE{fond=prive/objets/liste/repertoires,repertoires=#EVAL{medias_lister_repertoires()},env,ajax} />
     4<INCLURE{fond=prive/objets/liste/repertoires,repertoires=#EVAL{medias_lister_repertoires()},sinon=<:medias_nettoyage:aucun_repertoire:>,env,ajax} />
    55<div class="nettoyeur"></div>
Note: See TracChangeset for help on using the changeset viewer.