Changeset 90807 in spip-zone


Ignore:
Timestamp:
Jul 12, 2015, 12:18:21 PM (4 years ago)
Author:
teddy.spip@…
Message:
  • On simplifie les preg_replace pour les appliquer sur le tableau alimenté de toutes les valeurs nécessaires. Ainsi, on élimine dans la mesure du possible les foreach pour gagner un peu en performance.
  • On ajoute des array_filter en fin de fonction pour enlever les éventuelles valeurs vides.
  • Ce n'est pas 'black_list' mais 'white_list' car ces fichiers ne sont pas 'interdits' mais 'autorisés'.
  • Avec cette 'white_list', on passe à la version 0.11.0 du plugin.

TODO : alimenter par un pipeline la white_list où on indiquera le nom de fichiers à ignorer. Dans le cas actuel, on aurait un tableau avec pour valeur 'index.html' et 'robots.txt'

Location:
_plugins_/medias_nettoyage/trunk
Files:
3 edited

Legend:

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

    r90805 r90807  
    11<?php
    2 /**
    3  * Fonctions utilitaires du plugin "Nettoyer la médiathèque"
     2
     3/**
     4 * Fonctions utilitaires du plugin "Nettoyer la médiathèque".
    45 *
    56 * @plugin     Nettoyer la médiathèque
     7 *
    68 * @copyright  2014
    79 * @author     Teddy Payet
    810 * @licence    GNU/GPL
    9  * @package    SPIP\Medias_nettoyage\Fonctions
    10  */
    11 
     11 */
    1212if (!defined('_ECRIRE_INC_VERSION')) {
    1313    return;
     
    2323 *         Tableau des extensions uniques
    2424 */
    25 function medias_lister_extensions_documents ()
     25function medias_lister_extensions_documents()
    2626{
    2727    $extensions = array();
     
    3535    // On rajoute le répertoire "vignettes"
    3636    $extensions[] = 'vignettes';
    37     return $extensions ;
     37    // Sécurité, on enlève les valeurs vides du tableau d'extensions.
     38    $extensions = array_filter($extensions);
     39
     40    return $extensions;
    3841}
    3942
     
    4750 *         Par défaut, on prend _DIR_IMG en référence.
    4851 *         On peut l'utiliser aussi pour le répertoire IMG/orphelins
    49  * @return void
    50  */
    51 function medias_creer_extensions_repertoires ($repertoire_img = _DIR_IMG)
     52 */
     53function medias_creer_extensions_repertoires($repertoire_img = _DIR_IMG)
    5254{
    5355    $extensions = medias_lister_extensions_documents();
     
    5557    if (is_array($extensions) and count($extensions) > 0) {
    5658        foreach ($extensions as $extension) {
    57             if (!is_dir($repertoire_img . $extension)) {
    58                 @mkdir($repertoire_img . $extension, _SPIP_CHMOD);
    59             }
    60         }
    61     }
     59            if (!is_dir($repertoire_img.$extension)) {
     60                @mkdir($repertoire_img.$extension, _SPIP_CHMOD);
     61            }
     62        }
     63    }
     64
    6265    return;
    6366}
     
    6871 *
    6972 * @uses _MEDIAS_NETTOYAGE_REP_ORPHELINS
    70  *
    71  * @return void
    72  */
    73 function medias_creer_repertoires_orphelins ()
     73 */
     74function medias_creer_repertoires_orphelins()
    7475{
    7576    if (!is_dir(_MEDIAS_NETTOYAGE_REP_ORPHELINS)) {
    7677        @mkdir(_MEDIAS_NETTOYAGE_REP_ORPHELINS, _SPIP_CHMOD);
    7778    }
     79
    7880    return;
    7981}
     
    8587 *         Par défaut, on prend _DIR_IMG en référence.
    8688 *         On peut l'utiliser aussi pour le répertoire IMG/orphelins ou tout autre nom de répertoire.
    87  * @return array
    88  */
    89 function medias_lister_repertoires ($repertoire_img = _DIR_IMG)
     89 *
     90 * @return array
     91 */
     92function medias_lister_repertoires($repertoire_img = _DIR_IMG)
    9093{
    9194    $repertoires = array();
     
    9497    if (is_dir($repertoire_img)) {
    9598        // Avec la fonction scandir, on liste le contenu (existant) du répertoire cible.
    96         $rep_img = array_diff(scandir($repertoire_img), array('..','.','.svn')); // On ne liste pas le répertoire .svn
     99        $rep_img = array_diff(scandir($repertoire_img), array('..', '.', '.svn')); // On ne liste pas le répertoire .svn
    97100        foreach ($rep_img as $repertoire) {
    98101            // On vérifie que c'est un répertoire et non un fichier.
    99             if (is_dir($repertoire_img . $repertoire)) {
    100                 $repertoires[] = $repertoire_img . $repertoire;
    101             }
    102         }
    103     }
     102            if (is_dir($repertoire_img.$repertoire)) {
     103                $repertoires[] = $repertoire_img.$repertoire;
     104            }
     105        }
     106    }
     107    // Sécurité, on enlève les éventuelles valeurs vides du tableau
     108    $repertoires = array_filter($repertoires);
    104109
    105110    return (array) $repertoires;
     
    107112
    108113/**
    109  * Lister tous les fichiers non distants enregistrés en BDD
     114 * Lister tous les fichiers non distants enregistrés en BDD.
    110115 *
    111116 * @uses get_spip_doc()
     
    114119 *         Tableau contenant les urls des fichiers
    115120 */
    116 function medias_lister_documents_bdd ()
     121function medias_lister_documents_bdd()
    117122{
    118123    $docs_fichiers = array();
     
    122127    if (count($docs_bdd) > 0) {
    123128        foreach ($docs_bdd as $doc) {
    124             /**
     129            /*
    125130             * On formate par rapport au répertoire ../IMG/
    126131             * On évite les doubles // qu'il peut y avoir
    127132             */
    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     }
    133 
     133            $docs_fichiers[] = get_spip_doc($doc['fichier']);
     134        }
     135    }
     136
     137    // On enlève les éventuels doubles slash dans les valeurs du tableau.
     138    $docs_fichiers[] = preg_replace("/\/\//", '/', $docs_fichiers);
     139    // Sécurité, on enlève les valeurs vides du tableau
     140    $docs_fichiers = array_filter($docs_fichiers);
    134141    // On trie dans l'ordre alphabétique :
    135142    sort($docs_fichiers);
     
    139146
    140147/**
    141  * Donner la taille en octets des documents non-distants enregistrés en BDD
    142  *
    143  * @return integer
     148 * Donner la taille en octets des documents non-distants enregistrés en BDD.
     149 *
     150 * @return int
    144151 */
    145152function medias_lister_documents_bdd_taille()
    146153{
    147154    $docs_bdd = sql_fetsel('SUM(taille) AS taille_totale', 'spip_documents', "distant='non' AND fichier!=''");
     155
    148156    return $docs_bdd['taille_totale'];
    149157}
    150158
    151159/**
    152  * Afficher le nombre de documents enregistrés en BDD
    153  *
    154  * @return integer|string
    155  */
    156 function medias_lister_documents_bdd_complet_compteur ()
     160 * Afficher le nombre de documents enregistrés en BDD.
     161 *
     162 * @return int|string
     163 */
     164function medias_lister_documents_bdd_complet_compteur()
    157165{
    158166    return sql_countsel('spip_documents');
     
    160168
    161169/**
    162  * Donner la taille en octets de tous les documents enregistrés en BDD
    163  *
    164  * @return integer|string
     170 * Donner la taille en octets de tous les documents enregistrés en BDD.
     171 *
     172 * @return int|string
    165173 */
    166174function medias_lister_documents_bdd_complet_taille()
    167175{
    168     $docs_bdd = sql_fetsel('SUM(taille) AS taille_totale', 'spip_documents', "id_document > 0");
     176    $docs_bdd = sql_fetsel('SUM(taille) AS taille_totale', 'spip_documents', 'id_document > 0');
     177
    169178    return $docs_bdd['taille_totale'];
    170179}
     
    172181/**
    173182 * Lister les documents enregistrés en BDD
    174  * mais n'ayant plus de fichiers physiques dans IMG/
     183 * mais n'ayant plus de fichiers physiques dans IMG/.
    175184 *
    176185 * @uses medias_lister_documents_bdd()
     
    183192    $docs_bdd = array_unique(array_diff(medias_lister_documents_bdd(), medias_lister_documents_repertoire()));
    184193    sort($docs_bdd);
     194
    185195    return (array) $docs_bdd;
    186196}
    187197
    188198/**
    189  * Donner la taille en octets des documents enregistrés en BDD
     199 * Donner la taille en octets des documents enregistrés en BDD.
    190200 *
    191201 * @uses medias_lister_documents_bdd_orphelins()
     
    193203 * @uses get_spip_doc()
    194204 *
    195  * @return integer
     205 * @return int
    196206 */
    197207function medias_lister_documents_bdd_orphelins_taille()
    198208{
    199     $docs_orphelins    = medias_lister_documents_bdd_orphelins();
    200     $taille         = 0;
    201     $pattern_img        = "/" . preg_replace("/\//", "\/", _DIR_IMG) . "/";
     209    $docs_orphelins = medias_lister_documents_bdd_orphelins();
     210    $taille = 0;
     211    $pattern_img = '/'.preg_replace("/\//", "\/", _DIR_IMG).'/';
    202212
    203213    if (count($docs_orphelins) > 0) {
     
    206216            'spip_documents',
    207217            "fichier IN ('"
    208             . join("','", preg_replace($pattern_img, '', $docs_orphelins)) . "')"
     218            .implode("','", preg_replace($pattern_img, '', $docs_orphelins))."')"
    209219        );
    210220        if (is_array($docs_bdd) and count($docs_bdd) > 0) {
    211221            foreach ($docs_bdd as $document_bdd) {
    212222                if (!file_exists(get_spip_doc($document_bdd['fichier']))) {
    213                     $taille = $taille + ($document_bdd['taille']/1000);
     223                    $taille = $taille + ($document_bdd['taille'] / 1000);
    214224                    // On divise par 1000 pour éviter la limite de l'integer php.
    215225                }
     
    217227        }
    218228    }
     229
    219230    return $taille * 1000;
    220231}
     
    222233/**
    223234 * Lister les documents présents dans le répertoire des extensions de IMG/
    224 * Ne pas prendre en compte les fichiers 'index.html' et 'robots.txt' qui peuvent être présent
     235 * Ne pas prendre en compte les fichiers 'index.html' et 'robots.txt' qui peuvent être présent.
    225236 *
    226237 * @uses medias_lister_extensions_documents()
     
    230241 *        On peut passer un nom de répertoire/chemin en paramètre.
    231242 *        Par défaut, on prend le répertoire IMG/
    232  * @return array
    233  */
    234 function medias_lister_documents_repertoire ($repertoire_img = _DIR_IMG)
     243 *
     244 * @return array
     245 */
     246function medias_lister_documents_repertoire($repertoire_img = _DIR_IMG)
    235247{
    236248    $docs_fichiers = array();
    237     $black_list = array(0 => $repertoire_img.'index.html', 1 => $repertoire_img.'robots.txt');
    238 
     249    // On exclu certains fichiers du traitement
     250    $white_list = array($repertoire_img.'index.html', $repertoire_img.'robots.txt');
     251
     252    // On va parcourir chaque répertoire d'extension de IMG/
    239253    foreach (medias_lister_extensions_documents() as $extension) {
    240254        // Par sécurité, on vérifie que l'extension a bel
    241255        // et bien un répertoire physique
    242         if (is_dir($repertoire_img . $extension)) {
     256        if (is_dir($repertoire_img.$extension)) {
    243257            // On va chercher dans IMG/$extension/*.*
    244             $fichiers = glob($repertoire_img . "$extension/*.*");
    245             $black_list[] = $repertoire_img . "$extension/index.html";
    246             $black_list[] = $repertoire_img . "$extension/robots.txt";
     258            $fichiers = glob($repertoire_img."$extension/*.*");
     259            // On exclu certains fichiers du répertoire $extension du traitement
     260            $white_list[] = $repertoire_img."$extension/index.html";
     261            $white_list[] = $repertoire_img."$extension/robots.txt";
     262            // On vérifie que c'est bien un tableau, avec au moins un élément.
    247263            if (is_array($fichiers) and count($fichiers) > 0) {
    248                 foreach ($fichiers as $fichier) {
    249                     $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
    250                 }
     264                // On ajoute ce qui a été trouvé au tableau $docs_fichiers
     265                $docs_fichiers = array_merge($docs_fichiers, $fichiers);
    251266            }
    252267        }
    253268    }
    254269    // On va chercher dans IMG/*.*
    255     $fichiers = glob($repertoire_img . "*.*");
     270    $fichiers = glob($repertoire_img.'*.*');
    256271    // On vérifie que c'est bien un tableau, avec au moins un élément.
    257272    if (is_array($fichiers) and count($fichiers) > 0) {
    258         foreach ($fichiers as $fichier) {
    259             $docs_fichiers[] = $fichier;
    260         }
    261     }
     273        // On ajoute ce qui a été trouvé au tableau $docs_fichiers
     274        $docs_fichiers = array_merge($docs_fichiers, $fichiers);
     275    }
     276    // La fonction preg_replace peut s'appliquer à un tableau.
     277    // Il retournera le tableau nettoyé.
     278    $docs_fichiers = preg_replace("/\/\//", '/', $docs_fichiers);
    262279    $docs_fichiers = array_unique(
    263280        array_diff(
     
    266283        )
    267284    );
    268     $docs_fichiers = array_diff($docs_fichiers, $black_list);
     285    // On sort du tableau les fichiers qui n'ont pas à être contrôlés.
     286    $docs_fichiers = array_diff($docs_fichiers, $white_list);
     287    // Sécurité, on enlève les valeurs vides du tableau
     288    $docs_fichiers = array_filter($docs_fichiers);
    269289    sort($docs_fichiers);
    270290
     
    274294/**
    275295 * Retourner la taille en octets des fichiers physiques présents
    276  * dans les répertoires d'extensions de IMG
     296 * dans les répertoires d'extensions de IMG.
    277297 *
    278298 * @uses medias_lister_documents_repertoire()
    279299 * @uses medias_calculer_taille_fichiers()
    280300 *
    281  * @return integer
    282  */
    283 function medias_lister_documents_repertoire_taille ()
     301 * @return int
     302 */
     303function medias_lister_documents_repertoire_taille()
    284304{
    285305    return medias_calculer_taille_fichiers(medias_lister_documents_repertoire());
     
    294314 * @return array
    295315 */
    296 function medias_lister_documents_repertoire_orphelins ()
     316function medias_lister_documents_repertoire_orphelins()
    297317{
    298318    $docs_fichiers = array_unique(array_diff(medias_lister_documents_repertoire(), medias_lister_documents_bdd()));
    299319    sort($docs_fichiers);
     320
    300321    return (array) $docs_fichiers;
    301322}
     
    303324/**
    304325 * Retourner la taille en octets des fichiers physiques orphelins
    305  * présents dans les répertoires d'extensions de IMG
     326 * présents dans les répertoires d'extensions de IMG.
    306327 *
    307328 * @uses medias_lister_documents_repertoire_orphelins()
    308329 * @uses medias_calculer_taille_fichiers()
    309330 *
    310  * @return integer
    311  */
    312 function medias_lister_documents_repertoire_orphelins_taille ()
     331 * @return int
     332 */
     333function medias_lister_documents_repertoire_orphelins_taille()
    313334{
    314335    return medias_calculer_taille_fichiers(medias_lister_documents_repertoire_orphelins());
     
    322343 *        On peut passer un nom de répertoire/chemin en paramètre.
    323344 *        Par défaut, on prend le répertoire IMG/
    324  * @return array
    325  */
    326 function medias_lister_documents_repertoire_complet ($repertoire_img = _DIR_IMG)
     345 *
     346 * @return array
     347 */
     348function medias_lister_documents_repertoire_complet($repertoire_img = _DIR_IMG)
    327349{
    328350    $docs_fichiers = array();
    329351
    330352    // On va chercher dans IMG/distant/*/*.*
    331         // Exemple : IMG/distant/jpg/nom_fichier.jpg
    332     $fichiers = glob($repertoire_img . "*/*/*.*");
     353    // Exemple : IMG/distant/jpg/nom_fichier.jpg
     354    $fichiers = glob($repertoire_img.'*/*/*.*');
    333355    if (is_array($fichiers) and count($fichiers) > 0) {
    334         foreach ($fichiers as $fichier) {
    335             $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
    336             // On évite les doubles slashs '//' qui pourrait arriver comme un cheveu sur la soupe.
    337         }
     356        // On ajoute ce qui a été trouvé au tableau $docs_fichiers
     357        $docs_fichiers = array_merge($docs_fichiers, $fichiers);
    338358    }
    339359
    340360    // On va chercher dans IMG/*/*.*
    341         // Exemple : IMG/pdf/nom_fichier.pdf
    342     $fichiers = glob($repertoire_img . "*/*.*");
     361    // Exemple : IMG/pdf/nom_fichier.pdf
     362    $fichiers = glob($repertoire_img.'*/*.*');
    343363    if (is_array($fichiers) and count($fichiers) > 0) {
    344         foreach ($fichiers as $fichier) {
    345             $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
    346         }
     364        $docs_fichiers = array_merge($docs_fichiers, $fichiers);
    347365    }
    348366
    349367    // On va chercher dans IMG/*.*
    350         // Exemple : IMG/arton4.png
    351     $fichiers = glob($repertoire_img . "*.*");
     368    // Exemple : IMG/arton4.png
     369    $fichiers = glob($repertoire_img.'*.*');
    352370    if (is_array($fichiers) and count($fichiers) > 0) {
    353         foreach ($fichiers as $fichier) {
    354             $docs_fichiers[] = preg_replace("/\/\//", "/", $fichier);
    355         }
    356     }
    357 
     371        $docs_fichiers = array_merge($docs_fichiers, $fichiers);
     372    }
     373
     374    // La fonction preg_replace peut s'appliquer à un tableau.
     375    // Il retournera le tableau nettoyé.
     376    $docs_fichiers = preg_replace("/\/\//", '/', $docs_fichiers);
    358377    $docs_fichiers = array_unique($docs_fichiers);
    359378    sort($docs_fichiers);
     
    364383/**
    365384 * Retourner la taille en octets des fichiers physiques présents
    366  * dans IMG/
     385 * dans IMG/.
    367386 *
    368387 * @uses medias_lister_documents_repertoire_complet()
     
    372391 *        On peut passer un nom de répertoire/chemin en paramètre.
    373392 *        Par défaut, on prend le répertoire IMG/
    374  * @return integer
    375  */
    376 function medias_lister_documents_repertoire_complet_taille ($repertoire_img = _DIR_IMG)
     393 *
     394 * @return int
     395 */
     396function medias_lister_documents_repertoire_complet_taille($repertoire_img = _DIR_IMG)
    377397{
    378398    return medias_calculer_taille_fichiers(medias_lister_documents_repertoire_complet($repertoire_img));
     
    385405 * - rubriques (rub)
    386406 * - sites syndiqués (site)
    387  * - auteurs (aut)
     407 * - auteurs (aut).
    388408 *
    389409 * @uses lister_tables_principales()
     
    402422 *        On peut passer un nom de répertoire/chemin en paramètre.
    403423 *        Par défaut, on prend le répertoire IMG/
    404  * @return array
    405  */
    406 function medias_lister_logos_fichiers ($mode = null, $repertoire_img = _DIR_IMG)
    407 {
    408 
     424 *
     425 * @return array
     426 */
     427function medias_lister_logos_fichiers($mode = null, $repertoire_img = _DIR_IMG)
     428{
    409429    include_spip('inc/chercher_logo');
    410430    include_spip('base/abstract_sql');
     
    422442            'spip_mots',
    423443            'spip_forum',
    424             'spip_groupes_mots');
     444            'spip_groupes_mots', );
    425445    } elseif (intval(spip_version()) == 3) {
    426446        include_spip('base/objets');
     
    430450
    431451    global $formats_logos;
    432     $docs_fichiers_on   = array();
    433     $docs_fichiers_off  = array();
     452    $docs_fichiers_on = array();
     453    $docs_fichiers_off = array();
    434454
    435455    // On va chercher toutes les tables principales connues de SPIP
     
    446466        // "Pattern exceeds the maximum allowed length of 260 characters"
    447467        // sur glob()
    448         $liste = glob($repertoire_img . "{" . $type_du_logo ."}{on,off}*.*", GLOB_BRACE);
     468        $liste = glob($repertoire_img.'{'.$type_du_logo.'}{on,off}*.*', GLOB_BRACE);
    449469
    450470        // Il faut avoir au moins un élément dans le tableau de fichiers.
     
    452472            foreach ($liste as $fichier) {
    453473                // ... Donc on fait une regex plus poussée avec un preg_match
    454                 if (
    455                     preg_match(
    456                         "/("
    457                         . $type_du_logo
    458                         .")on(\d+).("
    459                         . join("|", $formats_logos)
    460                         .")$/",
    461                         $fichier,
    462                         $r
    463                     )
    464                 ) {
     474                if (preg_match(
     475                    '/('
     476                    .$type_du_logo
     477                    .")on(\d+).("
     478                    .implode('|', $formats_logos)
     479                    .')$/',
     480                    $fichier,
     481                    $r
     482                )) {
    465483                    // On fait une requête sql pour savoir si ce logo a toujours un objet référencé en bdd.
    466                     $requete = sql_fetsel('*', $table, id_table_objet($table) . "=" . $r[2]);
     484                    $requete = sql_fetsel('*', $table, id_table_objet($table).'='.$r[2]);
    467485                    if ($requete) {
    468                         $docs_fichiers_on[] = preg_replace("/\/\//", "/", $fichier);
     486                        $docs_fichiers_on[] = preg_replace("/\/\//", '/', $fichier);
    469487                    }
    470488                }
    471                 if (
    472                     preg_match(
    473                         "/("
    474                         . $type_du_logo
    475                         .")off(\d+).("
    476                         . join("|", $formats_logos)
    477                         .")$/",
    478                         $fichier,
    479                         $r
    480                     )
    481                 ) {
    482                     $requete = sql_fetsel('*', $table, id_table_objet($table) . "=" . $r[2]);
     489                if (preg_match(
     490                    '/('
     491                    .$type_du_logo
     492                    .")off(\d+).("
     493                    .implode('|', $formats_logos)
     494                    .')$/',
     495                    $fichier,
     496                    $r
     497                )) {
     498                    $requete = sql_fetsel('*', $table, id_table_objet($table).'='.$r[2]);
    483499                    if ($requete) {
    484                         $docs_fichiers_off[] = preg_replace("/\/\//", "/", $fichier);
     500                        $docs_fichiers_off[] = preg_replace("/\/\//", '/', $fichier);
    485501                    }
    486502                }
     
    492508    // On force la recherche sur cet élément même si la recherche "classique"
    493509    // devrait gérer cela initialement…
    494     $logos_site = glob($repertoire_img . "{site}{on,off}0.*", GLOB_BRACE);
     510    $logos_site = glob($repertoire_img.'{site}{on,off}0.*', GLOB_BRACE);
    495511    // On évite d'utiliser la fonction `glob()` directement dans le `if` car ça peut créer un bug pour PHP <5.4
    496512    // S'il n'y a pas de siteon0.ext, `glob()` va retourner un `false`. Donc, on regarde si c'est bien un tableau.
     
    498514    if (is_array($logos_site) and count($logos_site) > 0) {
    499515        foreach ($logos_site as $logo_site) {
    500             if (
    501                 preg_match(
    502                     "/(siteon)(\d).("
    503                     . join("|", $formats_logos)
    504                     .")$/",
    505                     $logo_site
    506                 )
    507             ) {
    508                 $docs_fichiers_on[] = preg_replace("/\/\//", "/", $logo_site);
    509             }
    510             if (
    511                 preg_match(
    512                     "/(siteoff)(\d).("
    513                     . join("|", $formats_logos)
    514                     .")$/",
    515                     $logo_site
    516                 )
    517             ) {
    518                 $docs_fichiers_off[] = preg_replace("/\/\//", "/", $logo_site);
     516            if (preg_match(
     517                "/(siteon)(\d).("
     518                .implode('|', $formats_logos)
     519                .')$/',
     520                $logo_site
     521            )) {
     522                $docs_fichiers_on[] = preg_replace("/\/\//", '/', $logo_site);
     523            }
     524            if (preg_match(
     525                "/(siteoff)(\d).("
     526                .implode('|', $formats_logos)
     527                .')$/',
     528                $logo_site
     529            )) {
     530                $docs_fichiers_off[] = preg_replace("/\/\//", '/', $logo_site);
    519531            }
    520532        }
     
    523535    // On va lister le logo standard des rubriques : rubon0.ext et ruboff0.ext
    524536    // cf. http://contrib.spip.net/Nettoyer-la-mediatheque#forum475870
    525     $logos_rub_racine = glob($repertoire_img . "{rub}{on,off}0.*", GLOB_BRACE);
     537    $logos_rub_racine = glob($repertoire_img.'{rub}{on,off}0.*', GLOB_BRACE);
    526538    if (is_array($logos_rub_racine) and count($logos_rub_racine) > 0) {
    527539        foreach ($logos_rub_racine as $logo_rub_racine) {
    528             if (
    529                 preg_match(
    530                     "/(rubon)(\d).("
    531                     . join("|", $formats_logos)
    532                     .")$/",
    533                     $logo_rub_racine
    534                 )
    535             ) {
    536                 $docs_fichiers_on[] = preg_replace("/\/\//", "/", $logo_rub_racine);
    537             }
    538             if (
    539                 preg_match(
    540                     "/(ruboff)(\d).("
    541                     . join("|", $formats_logos)
    542                     .")$/",
    543                     $logo_rub_racine
    544                 )
    545             ) {
    546                 $docs_fichiers_off[] = preg_replace("/\/\//", "/", $logo_rub_racine);
    547             }
    548         }
    549     }
     540            if (preg_match(
     541                "/(rubon)(\d).("
     542                .implode('|', $formats_logos)
     543                .')$/',
     544                $logo_rub_racine
     545            )) {
     546                $docs_fichiers_on[] = preg_replace("/\/\//", '/', $logo_rub_racine);
     547            }
     548            if (preg_match(
     549                "/(ruboff)(\d).("
     550                .implode('|', $formats_logos)
     551                .')$/',
     552                $logo_rub_racine
     553            )) {
     554                $docs_fichiers_off[] = preg_replace("/\/\//", '/', $logo_rub_racine);
     555            }
     556        }
     557    }
     558    // Sécurité, on enlève les valeurs vides du tableau
     559    $docs_fichiers_on = array_filter($docs_fichiers_on);
     560    $docs_fichiers_off = array_filter($docs_fichiers_off);
    550561
    551562    switch ($mode) {
     
    568579            break;
    569580    }
    570 
    571581}
    572582
    573583/**
    574584 * Retourner la taille en octets des logos présents
    575  * dans IMG/
     585 * dans IMG/.
    576586 *
    577587 * @uses medias_lister_logos_fichiers()
     
    583593 *        + `on` : calculera le poids de tous les logos du mode "on"
    584594 *        + `off` : calculera le poids de tous les logos du mode "off"
    585  * @return integer|string
    586  */
    587 function medias_lister_logos_fichiers_taille ($mode = null)
     595 *
     596 * @return int|string
     597 */
     598function medias_lister_logos_fichiers_taille($mode = null)
    588599{
    589600    return medias_calculer_taille_fichiers(medias_lister_logos_fichiers($mode));
     
    593604 * Fonction qui retourne l'id_objet et l'objet à partir du nom du fichier de logo.
    594605 * C'est un peu le chemin inverse de quete_logo().
     606 *
    595607 * @example
    596608 *         - logo_vers_objet('arton51.png')
    597609 *         - [(#LOGO_OBJET|basename|logo_vers_objet)]
     610 *
    598611 * @param  string $fichier
    599612 *         Nom du fichier du logo sans chemin.
     613 *
    600614 * @return mixed
    601615 *         - void : s'il n'y a pas de fichier, on ne renvoie rien
     
    604618 *         - array : si $info == null
    605619 */
    606 function logo_vers_objet ($fichier = null, $info = null)
     620function logo_vers_objet($fichier = null, $info = null)
    607621{
    608622    $logo_type_raccourcis = array(
     
    610624        'rub' => 'rubrique',
    611625        'aut' => 'auteur',
    612         'groupe' => 'groupe'
     626        'groupe' => 'groupe',
    613627    );
    614628    global $formats_logos;
     
    618632    }
    619633
    620     if (preg_match("/(\w+)(on|off)(\d+).(" . join("|", $formats_logos) . ")$/", $fichier, $res)) {
     634    if (preg_match("/(\w+)(on|off)(\d+).(".implode('|', $formats_logos).')$/', $fichier, $res)) {
    621635        $id_objet = $res[3];
    622636        if (array_key_exists($res[1], $logo_type_raccourcis)) {
     
    639653                break;
    640654        }
    641 
    642655    } else {
    643656        return;
     
    650663 *
    651664 * @param  null|string  $fichier
    652  * @param  integer $longueur
     665 * @param  int $longueur
    653666 * @param  null|string  $connect
     667 *
    654668 * @return string
    655669 */
    656 function logo_generer_url_ecrire_objet_titre ($fichier = null, $longueur = 80, $connect = null)
     670function logo_generer_url_ecrire_objet_titre($fichier = null, $longueur = 80, $connect = null)
    657671{
    658672    if (is_null($fichier)) {
     
    693707    }
    694708
    695     return "<a href='$url' class='$type'>" . couper($titre, $longueur) . "</a>";
    696 }
    697 
    698 /**
    699  * Générer l'url de vue d'un objet à partir de son fichier de logo
     709    return "<a href='$url' class='$type'>".couper($titre, $longueur).'</a>';
     710}
     711
     712/**
     713 * Générer l'url de vue d'un objet à partir de son fichier de logo.
    700714 *
    701715 * @param  string $fichier
    702716 *         Nom du fichier du logo sans chemin.
     717 *
    703718 * @return string
    704719 */
    705 function logo_generer_url_ecrire_objet ($fichier = null)
     720function logo_generer_url_ecrire_objet($fichier = null)
    706721{
    707722    if (is_null($fichier)) {
     
    728743            case 'rubrique':
    729744                $exec = ($version_spip == 2) ? 'naviguer' : 'rubriques';
     745
    730746                return generer_url_ecrire($exec);
    731747                break;
    732748            case 'site':
    733749                $exec = ($version_spip == 2) ? 'configuration' : 'configurer_identite';
     750
    734751                return generer_url_ecrire($exec);
    735752                break;
     
    739756            $info_objet['objet'],
    740757            id_table_objet($info_objet['objet'])
    741             . '='
    742             . intval($info_objet['id_objet'])
     758            .'='
     759            .intval($info_objet['id_objet'])
    743760        );
    744761    }
    745 
    746 }
    747 
    748 /**
    749  * Fonction générique pour calculer la taille des fichiers passés en paramètre
     762}
     763
     764/**
     765 * Fonction générique pour calculer la taille des fichiers passés en paramètre.
    750766 *
    751767 * @param  array  $fichiers
    752768 *         Tableau contenant l'url des fichiers physiques
    753  * @return integer
     769 *
     770 * @return int
    754771 *         On multiplie par 1000 la variable $taille pour avoir le chiffre réel
    755772 *         C'est un hack pour contourner la limite d'integer (4 bytes => 0xefffffff).
     
    757774 *         // a vérifier tout de même selon l'OS 32bit ou 64bit.
    758775 */
    759 function medias_calculer_taille_fichiers ($fichiers = array())
     776function medias_calculer_taille_fichiers($fichiers = array())
    760777{
    761778    $taille = 0;
     
    763780        foreach ($fichiers as $fichier) {
    764781            if (file_exists($fichier)) {
    765                 $taille += filesize($fichier) /1000;
     782                $taille += filesize($fichier) / 1000;
    766783            }
    767784        }
    768785        if (is_float($taille) or $taille > 0) {
    769             return $taille *1000;
     786            return $taille * 1000;
    770787        } else {
    771788            return $taille;
     
    786803 * @return array
    787804 */
    788 function medias_lister_repertoires_orphelins ()
     805function medias_lister_repertoires_orphelins()
    789806{
    790807    if (is_dir(_MEDIAS_NETTOYAGE_REP_ORPHELINS)) {
     
    796813
    797814/**
    798  * Lister le contenu du répertoire IMG/orphelins
     815 * Lister le contenu du répertoire IMG/orphelins.
    799816 *
    800817 * @uses medias_lister_documents_repertoire_complet()
     
    803820 * @return array
    804821 */
    805 function medias_lister_repertoires_orphelins_fichiers ()
    806 {
    807     $repertoire_orphelins   = _MEDIAS_NETTOYAGE_REP_ORPHELINS;
    808     $docs_fichiers      = array();
     822function medias_lister_repertoires_orphelins_fichiers()
     823{
     824    $repertoire_orphelins = _MEDIAS_NETTOYAGE_REP_ORPHELINS;
     825    $docs_fichiers = array();
    809826
    810827    if (is_dir($repertoire_orphelins)) {
    811828        $docs_fichiers = medias_lister_documents_repertoire_complet($repertoire_orphelins);
    812829    }
     830
    813831    return (array) $docs_fichiers;
    814832}
    815833
    816834/**
    817  * Lister le contenu du répertoire IMG/orphelins
     835 * Lister le contenu du répertoire IMG/orphelins.
    818836 *
    819837 * @uses medias_calculer_taille_fichiers()
     
    821839 * @uses _MEDIAS_NETTOYAGE_REP_ORPHELINS
    822840 *
    823  * @return integer
    824  */
    825 function medias_lister_repertoires_orphelins_fichiers_taille ()
    826 {
    827     $repertoire_orphelins   = _MEDIAS_NETTOYAGE_REP_ORPHELINS;
    828     $taille         = 0;
     841 * @return int
     842 */
     843function medias_lister_repertoires_orphelins_fichiers_taille()
     844{
     845    $repertoire_orphelins = _MEDIAS_NETTOYAGE_REP_ORPHELINS;
     846    $taille = 0;
    829847
    830848    if (is_dir($repertoire_orphelins)) {
     
    836854
    837855/**
    838  * Fonction 'bidon' pour tester une fonction rapidement sur la page ?exec=test_medias
    839  *
    840  * @return array
    841  */
    842 function test_medias ()
     856 * Fonction 'bidon' pour tester une fonction rapidement sur la page ?exec=test_medias.
     857 *
     858 * @return array
     859 */
     860function test_medias()
    843861{
    844862    $test = array();
    845     $test = medias_deplacer_documents_repertoire_orphelins();
     863    $test = medias_lister_repertoires();
     864
    846865    return $test;
    847866}
     
    850869 * Cette fonction vérifie si le fichier est une image ou pas.
    851870 * On fait un test selon l'existence des fonctions PHP qui peuvent nous aider.
    852  * On évite ainsi une alerte PHP
     871 * On évite ainsi une alerte PHP.
     872 *
    853873 * @param  string $fichier
    854874 *         url relative du fichier.
     875 *
    855876 * @return bool
    856877 */
    857 function medias_est_image ($fichier)
     878function medias_est_image($fichier)
    858879{
    859880    $image = false;
     
    867888        }
    868889    }
     890
    869891    return $image;
    870892}
    871 ?>
  • _plugins_/medias_nettoyage/trunk/paquet.xml

    r90805 r90807  
    22        prefix="medias_nettoyage"
    33        categorie="outil"
    4         version="0.10.5"
     4        version="0.11.0"
    55        etat="stable"
    66        compatibilite="[2.1.0;3.1.*]"
  • _plugins_/medias_nettoyage/trunk/plugin.xml

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