Rev 537 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHP Version 5** @category PHP* @package jrest* @author aurelien <aurelien@tela-botanica.org>* @copyright 2009 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @version SVN: <svn_id>* @link /doc/jrest/*/class InventoryMaintenance extends Cel {private $nb_fichiers_orphelins = 0;private $espace_libere = 0;function getElement($uid) {if ($this->authentifierAdmin()) {if($uid[0] == "dates_images") {$this->reparerDatesImages();}if($uid[0] == "suppression_images_orphelines") {$this->suppressionFichiersImagesOrphelins();}}}private function reparerDatesImages() {$query = 'UPDATE cel_images SET ci_meta_date = ci_meta_date_time ';'WHERE ci_meta_date IS NULL AND ci_meta_date_time IS NOT NULL' ;$DB = $this->connectDB($this->config,'cel_db');$res =& $DB->query($query);if (PEAR::isError($res)) {logger('InventoryMaintenance','Erreur lors de la réparation des dates '.$query);die($res->getMessage());}header('content-type: text/html charset=utf-8');print "Réparation des dates effectuées";exit() ;}private function suppressionFichiersImagesOrphelins() {header("content-type: text/html") ;$header_html = '<head><title>Maintenance</title><style type="text/css">h1 {color: blue;}h2 {color: green;}.titre_dossier {cursor: pointer;}li {list-style-type: none;}.liste_profondeur_1 {border: 1px solid blue;background-color: #DFDFFF;}.liste_profondeur_2 {border: 1px solid green;background-color: #E1FFDF;width: 1500px;}.liste_profondeur_3 {border: 1px solid yellow;background-color: #FFFCDF;width: 1200px;}.attention {border: 1px solid red;background-color: white;width: 600px;}</style><script src="http://162.38.234.9/cel_consultation/squelettes/js/jquery-1.4.2.min.js" type="text/javascript"></script><script type="text/javascript" language="javascript">//<![CDATA[function initialiserElementsPliables() {$(\'.titre_dossier\').bind(\'click\', function() {$(this).siblings(\'li\').toggle();return false;});}$(document).ready(function() {initialiserElementsPliables();});//]]></script> ';'</head>';echo $header_html;$chemin_base_images = $this->config['cel_db']['chemin_images'];$profondeur = 1;echo '<ul id="liste_profondeur_0">';$this->itererRecursivement($chemin_base_images, $profondeur);echo '</ul>';print '<p class="resultat">Suppression des images orphelines effectuées </p><br />' ;print '<p class="resultat">'.$this->nb_fichiers_orphelins.' fichiers orphelins ont été détectés et supprimés</p>';print '<p class="resultat">'.$this->convertir_poid($this->espace_libere).' d\'espace disque ont été économisé </p>';exit() ;}private function itererRecursivement($dossier, $profondeur) {foreach (new DirectoryIterator($dossier) as $fichier_ou_dossier) {if ($fichier_ou_dossier->isDot()) {continue;}$dossiers_autorises = array('L','M','S');if ($fichier_ou_dossier->getBasename() == 'export') {continue;}echo '<li>';if ($fichier_ou_dossier->isDir()) {$profondeur_dossier_fils = $profondeur + 1;echo '<ul class="liste_profondeur_'.$profondeur.'"> <h'.$profondeur.' class="titre_dossier"> analyse du dossier '.$fichier_ou_dossier->getPathname().'</h'.$profondeur.'>' ;$this->itererRecursivement($fichier_ou_dossier->getPathname(), $profondeur_dossier_fils);echo '</ul><br /><br />';} else {$nom_fichier = $fichier_ou_dossier->getFilename();$this->verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier);}echo '</li>';}}private function verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier) {$nom_fichier_sans_extension = trim($nom_fichier, '.jpg');$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_L');$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_M');$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_S');$id_image = str_replace('_', '', $nom_fichier_sans_extension);// suppression des 0 devant$id_image += 0;$requete_id_image_existe = 'SELECT COUNT(ci_id_image) as image_existe FROM cel_images WHERE ci_id_image = '.$id_image;$image_existe = $this->executerRequete($requete_id_image_existe);if ($image_existe[0]['image_existe'] < 1) {echo $nom_fichier.' Image introuvable dans la base de données';$this->supprimerImage($id_image);}}private function supprimerImage($id) {$chemin_sur_serveur = $this->config['cel_db']['chemin_images'];$id = sprintf('%09s', $id);$id = wordwrap($id, 3 , '_', true);$id_fichier = "$id.jpg";$niveauDossier = split('_', $id);$dossierNiveau1 = $niveauDossier[0];$dossierNiveau2 = $niveauDossier[1];$fichier_s = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg';$fichier_m = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M/'.$id.'_M.jpg';$fichier_l = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L/'.$id.'_L.jpg';$erreur = false;echo '<ul class="liste_suppression">';if(file_exists($fichier_s)) {$this->espace_libere += filesize($fichier_s);$suppression_s = true;//$suppression_s = unlink($fichier_s) ;if (!$suppression_s) {$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_s.' </li>' ;echo $erreur;} else {// $this->nb_fichiers_orphelins++;}} else {$erreur = '<li> probleme : l\'image '.$fichier_s.' n\'existe pas </li>' ;echo $erreur;}// Si le fichier existeif (file_exists($fichier_m)) {$this->espace_libere += filesize($fichier_m);$suppression_m = true;//$suppression_m = unlink($fichier_m) ;if (!$suppression_m) {$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_m.' </li>' ;$this->logger('CEL_images_bugs',$erreur);} else {// $this->nb_fichiers_orphelins++;}} else {$erreur = '<li> probleme : l\'image '.$fichier_m.' n\'existe pas </li>' ;echo $erreur;} // Si le fichier existeif (file_exists($fichier_l)) {$this->espace_libere += filesize($fichier_l);$suppression_l = true;//$suppression_l = unlink($fichier_l) ;if(!$suppression_l) {$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_l.' </li>' ;echo $erreur;} else {// $this->nb_fichiers_orphelins++;}} else {$erreur = '<li> probleme : l\'image '.$fichier_l.' n\'existe pas </li>' ;echo $erreur;} // Si le fichier existeif (!$erreur) {echo '<p class="attention">Suppression dans tous les formats de l\'image '.$id.' effectuee </p>';$this->nb_fichiers_orphelins++;}echo '</ul>';echo '<br />';}private function convertir_poid($size) {$units = array(' B', ' KB', ' MB', ' GB', ' TB');for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;return round($size, 2).$units[$i];}}?>