Changeset 82881 in spip-zone
- Timestamp:
- Jun 6, 2014, 2:14:15 PM (7 years ago)
- Location:
- _plugins_/medias_nettoyage/trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/medias_nettoyage/trunk/lang/medias_nettoyage_fr.php
r82719 r82881 8 8 9 9 // 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.', 12 13 13 14 'cfg_titre_parametrages' => 'Paramétrages', -
_plugins_/medias_nettoyage/trunk/medias_nettoyage_fonctions.php
r82724 r82881 27 27 $extensions = array(); 28 28 $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 } 31 34 } 32 35 // On rajoute le répertoire "vignettes" … … 50 53 $extensions = medias_lister_extensions_documents(); 51 54 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 } 55 60 } 56 61 } … … 88 93 // cf. ../IMG/orphelins qui ne serait pas encore créé. 89 94 if (is_dir($repertoire_img)) { 95 // Avec la fonction scandir, on liste le contenu (existant) du répertoire cible. 90 96 $rep_img = array_diff(scandir($repertoire_img), array('..','.','.svn')); // On ne liste pas le répertoire .svn 91 97 foreach ($rep_img as $repertoire) { 98 // On vérifie que c'est un répertoire et non un fichier. 92 99 if (is_dir($repertoire_img . $repertoire)) { 93 100 $repertoires[] = $repertoire_img . $repertoire; … … 112 119 113 120 $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 } 123 133 124 134 // On trie dans l'ordre alphabétique : … … 187 197 function medias_lister_documents_bdd_orphelins_taille() 188 198 { 189 $doc uments_orphelins = medias_lister_documents_bdd_orphelins();199 $docs_orphelins = medias_lister_documents_bdd_orphelins(); 190 200 $taille = 0; 191 201 $pattern_img = "/" . preg_replace("/\//", "\/", _DIR_IMG) . "/"; 192 202 193 if (count($doc uments_orphelins) > 0) {194 $doc uments_bdd = sql_allfetsel(203 if (count($docs_orphelins) > 0) { 204 $docs_bdd = sql_allfetsel( 195 205 'fichier,taille', 196 206 'spip_documents', 197 207 "fichier IN ('" 198 . join("','", preg_replace($pattern_img, '', $doc uments_orphelins)) . "')"208 . join("','", preg_replace($pattern_img, '', $docs_orphelins)) . "')" 199 209 ); 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 } 204 216 } 205 217 } … … 224 236 225 237 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 } 230 248 } 231 249 } 232 250 // On va chercher dans IMG/*.* 233 251 $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 } 236 257 } 237 258 $docs_fichiers = array_unique( … … 305 326 // Exemple : IMG/distant/jpg/nom_fichier.jpg 306 327 $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 } 310 333 } 311 334 … … 313 336 // Exemple : IMG/pdf/nom_fichier.pdf 314 337 $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 } 317 342 } 318 343 … … 320 345 // Exemple : IMG/arton4.png 321 346 $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 } 324 351 } 325 352 … … 412 439 // On force la recherche sur cet élément même si la recherche "classique" 413 440 // 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) { 416 445 $fichiers = array_merge($fichiers, $logo_site); 417 446 } … … 424 453 // la regex de GLOB_BRACE est très basique... 425 454 $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 } 436 470 } 437 471 } … … 610 644 foreach ($pattern_obsoletes as $pattern) { 611 645 $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 } 613 649 } 614 650 // on fusionne avec les fichiers obsolètes … … 777 813 // On va chercher dans IMG/*.* 778 814 $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 } 788 826 $docs_fichiers = preg_replace($pattern_img, '', $docs_fichiers); 789 827 … … 802 840 . ")" 803 841 ); 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 } 838 879 } 839 880 } -
_plugins_/medias_nettoyage/trunk/paquet.xml
r82737 r82881 2 2 prefix="medias_nettoyage" 3 3 categorie="outil" 4 version="0.9. 3"4 version="0.9.4" 5 5 etat="stable" 6 6 compatibilite="[2.1.0;3.0.*]" -
_plugins_/medias_nettoyage/trunk/plugin.xml
r82737 r82881 5 5 <icon>prive/themes/spip/images/medias_nettoyage-64.png</icon> 6 6 <prefix>medias_nettoyage</prefix> 7 <version>0.9. 3</version>7 <version>0.9.4</version> 8 8 <etat>stable</etat> 9 9 <categorie>outil</categorie> -
_plugins_/medias_nettoyage/trunk/prive/squelettes/contenu/medias_rep_img.html
r82717 r82881 2 2 <div class="nettoyeur"></div> 3 3 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} /> 5 5 <div class="nettoyeur"></div>
Note: See TracChangeset
for help on using the changeset viewer.