| 416 | aurelien | 1 | <?php
 | 
        
           |  |  | 2 | /**
 | 
        
           |  |  | 3 | * PHP Version 5
 | 
        
           |  |  | 4 | *
 | 
        
           |  |  | 5 | * @category  PHP
 | 
        
           |  |  | 6 | * @package   jrest
 | 
        
           |  |  | 7 | * @author    aurelien <aurelien@tela-botanica.org>
 | 
        
           |  |  | 8 | * @copyright 2009 Tela-Botanica
 | 
        
           |  |  | 9 | * @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
 | 
        
           |  |  | 10 | * @version   SVN: <svn_id>
 | 
        
           |  |  | 11 | * @link      /doc/jrest/
 | 
        
           |  |  | 12 | */
 | 
        
           |  |  | 13 |   | 
        
           | 535 | jpm | 14 | class InventoryMaintenance extends Cel {
 | 
        
           | 436 | aurelien | 15 |   | 
        
           |  |  | 16 | 	private $nb_fichiers_orphelins = 0;
 | 
        
           |  |  | 17 | 	private $espace_libere = 0;
 | 
        
           | 416 | aurelien | 18 |   | 
        
           | 535 | jpm | 19 | 	function getElement($uid) {
 | 
        
           |  |  | 20 | 		if ($this->authentifierAdmin()) {
 | 
        
           | 436 | aurelien | 21 | 			if($uid[0] == "dates_images") {
 | 
        
           | 416 | aurelien | 22 | 				$this->reparerDatesImages();
 | 
        
           |  |  | 23 | 			}
 | 
        
           | 436 | aurelien | 24 |   | 
        
           |  |  | 25 | 			if($uid[0] == "suppression_images_orphelines") {
 | 
        
           |  |  | 26 | 				$this->suppressionFichiersImagesOrphelins();
 | 
        
           |  |  | 27 | 			}
 | 
        
           | 416 | aurelien | 28 | 		}
 | 
        
           |  |  | 29 | 	}
 | 
        
           |  |  | 30 |   | 
        
           |  |  | 31 | 	private function reparerDatesImages() {
 | 
        
           | 535 | jpm | 32 | 		$query = 'UPDATE cel_images SET ci_meta_date = ci_meta_date_time ';
 | 
        
           | 416 | aurelien | 33 | 				'WHERE ci_meta_date IS NULL AND ci_meta_date_time IS NOT NULL' ;
 | 
        
           |  |  | 34 |   | 
        
           | 535 | jpm | 35 | 		$DB = $this->connectDB($this->config,'cel_db');
 | 
        
           | 416 | aurelien | 36 | 		$res =& $DB->query($query);
 | 
        
           |  |  | 37 |   | 
        
           |  |  | 38 |         if (PEAR::isError($res)) {
 | 
        
           | 537 | jpm | 39 | 			logger('InventoryMaintenance','Erreur lors de la réparation des dates '.$query);
 | 
        
           | 416 | aurelien | 40 |         	die($res->getMessage());
 | 
        
           |  |  | 41 |         }
 | 
        
           |  |  | 42 |   | 
        
           | 537 | jpm | 43 | 		header('content-type: text/html charset=utf-8');
 | 
        
           |  |  | 44 | 		print "Réparation des dates effectuées";
 | 
        
           | 436 | aurelien | 45 | 		exit() ;
 | 
        
           |  |  | 46 | 	}
 | 
        
           |  |  | 47 |   | 
        
           |  |  | 48 | 	private function suppressionFichiersImagesOrphelins() {
 | 
        
           | 416 | aurelien | 49 | 		header("content-type: text/html") ;
 | 
        
           | 436 | aurelien | 50 | 		$header_html = '
 | 
        
           |  |  | 51 | 		<head>
 | 
        
           |  |  | 52 | 			<title>Maintenance</title>
 | 
        
           |  |  | 53 |   | 
        
           |  |  | 54 | 			<style type="text/css">
 | 
        
           |  |  | 55 |   | 
        
           |  |  | 56 | 				h1 {
 | 
        
           |  |  | 57 | 					color: blue;
 | 
        
           |  |  | 58 | 				}
 | 
        
           |  |  | 59 |   | 
        
           |  |  | 60 | 				h2 {
 | 
        
           |  |  | 61 | 					color: green;
 | 
        
           |  |  | 62 | 				}
 | 
        
           |  |  | 63 |   | 
        
           |  |  | 64 | 				.titre_dossier {
 | 
        
           |  |  | 65 | 					cursor: pointer;
 | 
        
           |  |  | 66 | 				}
 | 
        
           |  |  | 67 |   | 
        
           |  |  | 68 | 				li {
 | 
        
           |  |  | 69 | 					list-style-type: none;
 | 
        
           |  |  | 70 | 				}
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 | 				.liste_profondeur_1 {
 | 
        
           |  |  | 73 | 					border: 1px solid blue;
 | 
        
           |  |  | 74 | 					background-color: #DFDFFF;
 | 
        
           |  |  | 75 | 				}
 | 
        
           |  |  | 76 |   | 
        
           |  |  | 77 | 				.liste_profondeur_2 {
 | 
        
           |  |  | 78 | 					border: 1px solid green;
 | 
        
           |  |  | 79 | 					background-color: #E1FFDF;
 | 
        
           |  |  | 80 | 					width: 1500px;
 | 
        
           |  |  | 81 | 				}
 | 
        
           |  |  | 82 |   | 
        
           |  |  | 83 | 				.liste_profondeur_3 {
 | 
        
           |  |  | 84 | 					border: 1px solid yellow;
 | 
        
           |  |  | 85 | 					background-color: #FFFCDF;
 | 
        
           |  |  | 86 | 					width: 1200px;
 | 
        
           |  |  | 87 | 				}
 | 
        
           |  |  | 88 |   | 
        
           |  |  | 89 | 				.attention {
 | 
        
           |  |  | 90 | 					border: 1px solid red;
 | 
        
           |  |  | 91 | 					background-color: white;
 | 
        
           |  |  | 92 | 					width: 600px;
 | 
        
           |  |  | 93 | 				}
 | 
        
           |  |  | 94 |   | 
        
           |  |  | 95 | 			</style>
 | 
        
           |  |  | 96 |   | 
        
           |  |  | 97 | 			<script src="http://162.38.234.9/cel_consultation/squelettes/js/jquery-1.4.2.min.js" type="text/javascript"></script>
 | 
        
           |  |  | 98 | 			<script type="text/javascript" language="javascript">
 | 
        
           |  |  | 99 | 			//<![CDATA[
 | 
        
           |  |  | 100 |   | 
        
           |  |  | 101 | 				function initialiserElementsPliables() {
 | 
        
           |  |  | 102 | 					$(\'.titre_dossier\').bind(\'click\', function() {
 | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 | 						$(this).siblings(\'li\').toggle();
 | 
        
           |  |  | 105 | 						return false;
 | 
        
           |  |  | 106 | 					});
 | 
        
           |  |  | 107 | 				}
 | 
        
           |  |  | 108 |   | 
        
           |  |  | 109 | 				$(document).ready(function() {
 | 
        
           |  |  | 110 | 					initialiserElementsPliables();
 | 
        
           |  |  | 111 | 				});
 | 
        
           |  |  | 112 | 			//]]>
 | 
        
           |  |  | 113 | 			</script> ';'
 | 
        
           |  |  | 114 |   | 
        
           |  |  | 115 | 		</head>';
 | 
        
           |  |  | 116 |   | 
        
           |  |  | 117 | 		echo $header_html;
 | 
        
           |  |  | 118 |   | 
        
           |  |  | 119 |         $chemin_base_images = $this->config['cel_db']['chemin_images'];
 | 
        
           |  |  | 120 |        	$profondeur = 1;
 | 
        
           |  |  | 121 |   | 
        
           |  |  | 122 |        	echo '<ul id="liste_profondeur_0">';
 | 
        
           |  |  | 123 | 			$this->itererRecursivement($chemin_base_images, $profondeur);
 | 
        
           |  |  | 124 | 		echo '</ul>';
 | 
        
           |  |  | 125 |   | 
        
           |  |  | 126 | 		print '<p class="resultat">Suppression des images orphelines effectuées </p><br />' ;
 | 
        
           |  |  | 127 | 		print '<p class="resultat">'.$this->nb_fichiers_orphelins.' fichiers orphelins ont été détectés et supprimés</p>';
 | 
        
           |  |  | 128 | 		print '<p class="resultat">'.$this->convertir_poid($this->espace_libere).' d\'espace disque ont été économisé </p>';
 | 
        
           | 416 | aurelien | 129 | 		exit() ;
 | 
        
           |  |  | 130 | 	}
 | 
        
           | 436 | aurelien | 131 |   | 
        
           | 537 | jpm | 132 | 	private function itererRecursivement($dossier, $profondeur) {
 | 
        
           | 436 | aurelien | 133 | 		foreach (new DirectoryIterator($dossier) as $fichier_ou_dossier) {
 | 
        
           | 537 | jpm | 134 | 			if ($fichier_ou_dossier->isDot()) {
 | 
        
           | 436 | aurelien | 135 | 				continue;
 | 
        
           |  |  | 136 | 			}
 | 
        
           |  |  | 137 |   | 
        
           |  |  | 138 | 			$dossiers_autorises = array('L','M','S');
 | 
        
           |  |  | 139 |   | 
        
           | 537 | jpm | 140 | 			if ($fichier_ou_dossier->getBasename() == 'export') {
 | 
        
           | 436 | aurelien | 141 | 				continue;
 | 
        
           |  |  | 142 | 			}
 | 
        
           |  |  | 143 |   | 
        
           |  |  | 144 | 			echo '<li>';
 | 
        
           |  |  | 145 |   | 
        
           | 537 | jpm | 146 | 		    if ($fichier_ou_dossier->isDir()) {
 | 
        
           | 436 | aurelien | 147 | 		    	$profondeur_dossier_fils = $profondeur + 1;
 | 
        
           |  |  | 148 | 	    		echo '<ul class="liste_profondeur_'.$profondeur.'"> <h'.$profondeur.' class="titre_dossier"> analyse du dossier '.$fichier_ou_dossier->getPathname().'</h'.$profondeur.'>' ;
 | 
        
           |  |  | 149 | 	    			$this->itererRecursivement($fichier_ou_dossier->getPathname(), $profondeur_dossier_fils);
 | 
        
           |  |  | 150 | 	    		echo '</ul><br /><br />';
 | 
        
           |  |  | 151 | 		    } else {
 | 
        
           |  |  | 152 | 		    	$nom_fichier = $fichier_ou_dossier->getFilename();
 | 
        
           |  |  | 153 | 		    	$this->verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier);
 | 
        
           |  |  | 154 | 		    }
 | 
        
           |  |  | 155 |   | 
        
           |  |  | 156 | 		    echo '</li>';
 | 
        
           |  |  | 157 | 		}
 | 
        
           |  |  | 158 | 	}
 | 
        
           |  |  | 159 |   | 
        
           |  |  | 160 | 	private function verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier) {
 | 
        
           |  |  | 161 | 		$nom_fichier_sans_extension = trim($nom_fichier, '.jpg');
 | 
        
           |  |  | 162 | 		$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_L');
 | 
        
           |  |  | 163 | 		$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_M');
 | 
        
           |  |  | 164 | 		$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_S');
 | 
        
           |  |  | 165 | 		$id_image = str_replace('_', '', $nom_fichier_sans_extension);
 | 
        
           |  |  | 166 |   | 
        
           |  |  | 167 | 		// suppression des 0 devant
 | 
        
           |  |  | 168 | 		$id_image += 0;
 | 
        
           |  |  | 169 |   | 
        
           |  |  | 170 | 		$requete_id_image_existe = 'SELECT COUNT(ci_id_image) as image_existe FROM cel_images WHERE ci_id_image = '.$id_image;
 | 
        
           |  |  | 171 | 		$image_existe = $this->executerRequete($requete_id_image_existe);
 | 
        
           |  |  | 172 |   | 
        
           | 537 | jpm | 173 | 		if ($image_existe[0]['image_existe'] < 1) {
 | 
        
           | 436 | aurelien | 174 | 			echo $nom_fichier.'     Image introuvable dans la base de données';
 | 
        
           |  |  | 175 | 			$this->supprimerImage($id_image);
 | 
        
           |  |  | 176 | 		}
 | 
        
           |  |  | 177 | 	}
 | 
        
           |  |  | 178 |   | 
        
           |  |  | 179 | 	private function supprimerImage($id) {
 | 
        
           | 537 | jpm | 180 | 		$chemin_sur_serveur = $this->config['cel_db']['chemin_images'];
 | 
        
           | 416 | aurelien | 181 |   | 
        
           | 537 | jpm | 182 | 		$id = sprintf('%09s', $id);
 | 
        
           |  |  | 183 | 		$id = wordwrap($id, 3 , '_', true);
 | 
        
           | 436 | aurelien | 184 |   | 
        
           | 537 | jpm | 185 | 		$id_fichier = "$id.jpg";
 | 
        
           | 436 | aurelien | 186 |   | 
        
           | 537 | jpm | 187 | 		$niveauDossier = split('_', $id);
 | 
        
           | 436 | aurelien | 188 |   | 
        
           | 537 | jpm | 189 | 		$dossierNiveau1 = $niveauDossier[0];
 | 
        
           |  |  | 190 | 		$dossierNiveau2 = $niveauDossier[1];
 | 
        
           | 436 | aurelien | 191 |   | 
        
           | 537 | jpm | 192 | 		$fichier_s = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg';
 | 
        
           |  |  | 193 | 		$fichier_m = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M/'.$id.'_M.jpg';
 | 
        
           |  |  | 194 | 		$fichier_l = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L/'.$id.'_L.jpg';
 | 
        
           | 436 | aurelien | 195 |   | 
        
           |  |  | 196 | 		$erreur = false;
 | 
        
           |  |  | 197 |   | 
        
           |  |  | 198 | 		echo '<ul class="liste_suppression">';
 | 
        
           |  |  | 199 |   | 
        
           | 537 | jpm | 200 | 		if(file_exists($fichier_s)) {
 | 
        
           | 436 | aurelien | 201 | 			$this->espace_libere += filesize($fichier_s);
 | 
        
           |  |  | 202 | 			$suppression_s = true;
 | 
        
           |  |  | 203 | 			//$suppression_s = unlink($fichier_s) ;
 | 
        
           |  |  | 204 |   | 
        
           | 537 | jpm | 205 | 			if (!$suppression_s) {
 | 
        
           | 436 | aurelien | 206 | 				$erreur =  '<li> probleme durant la suppression de l\'image '.$fichier_s.' </li>' ;
 | 
        
           |  |  | 207 | 				echo $erreur;
 | 
        
           |  |  | 208 | 			} else {
 | 
        
           | 537 | jpm | 209 | 				//	$this->nb_fichiers_orphelins++;
 | 
        
           | 436 | aurelien | 210 | 			}
 | 
        
           |  |  | 211 | 		} else {
 | 
        
           |  |  | 212 | 			$erreur =  '<li> probleme : l\'image '.$fichier_s.' n\'existe pas </li>' ;
 | 
        
           |  |  | 213 | 			echo $erreur;
 | 
        
           | 537 | jpm | 214 | 		}// Si le fichier existe
 | 
        
           | 436 | aurelien | 215 |   | 
        
           | 537 | jpm | 216 | 		if (file_exists($fichier_m)) {
 | 
        
           | 436 | aurelien | 217 | 			$this->espace_libere += filesize($fichier_m);
 | 
        
           |  |  | 218 | 			$suppression_m = true;
 | 
        
           |  |  | 219 | 			//$suppression_m = unlink($fichier_m) ;
 | 
        
           |  |  | 220 |   | 
        
           | 537 | jpm | 221 | 			if (!$suppression_m) {
 | 
        
           | 436 | aurelien | 222 | 				$erreur =  '<li> probleme durant la suppression de l\'image '.$fichier_m.' </li>' ;
 | 
        
           |  |  | 223 | 				$this->logger('CEL_images_bugs',$erreur);
 | 
        
           |  |  | 224 | 			} else {
 | 
        
           | 537 | jpm | 225 | 				//	$this->nb_fichiers_orphelins++;
 | 
        
           | 436 | aurelien | 226 | 			}
 | 
        
           |  |  | 227 | 		} else {
 | 
        
           |  |  | 228 | 			$erreur =  '<li> probleme : l\'image '.$fichier_m.' n\'existe pas </li>' ;
 | 
        
           |  |  | 229 | 			echo $erreur;
 | 
        
           |  |  | 230 | 		} // Si le fichier existe
 | 
        
           |  |  | 231 |   | 
        
           | 535 | jpm | 232 | 		if (file_exists($fichier_l)) {
 | 
        
           | 436 | aurelien | 233 | 			$this->espace_libere += filesize($fichier_l);
 | 
        
           |  |  | 234 | 			$suppression_l = true;
 | 
        
           |  |  | 235 | 			//$suppression_l = unlink($fichier_l) ;
 | 
        
           |  |  | 236 |   | 
        
           |  |  | 237 | 			if(!$suppression_l) {
 | 
        
           |  |  | 238 | 				$erreur =  '<li> probleme durant la suppression de l\'image '.$fichier_l.' </li>' ;
 | 
        
           |  |  | 239 | 				echo $erreur;
 | 
        
           |  |  | 240 | 			} else {
 | 
        
           | 537 | jpm | 241 | 				//	$this->nb_fichiers_orphelins++;
 | 
        
           | 436 | aurelien | 242 | 			}
 | 
        
           |  |  | 243 | 		} else {
 | 
        
           |  |  | 244 | 			$erreur =  '<li> probleme : l\'image '.$fichier_l.' n\'existe pas </li>' ;
 | 
        
           |  |  | 245 | 			echo $erreur;
 | 
        
           |  |  | 246 | 		} // Si le fichier existe
 | 
        
           |  |  | 247 |   | 
        
           | 535 | jpm | 248 | 		if (!$erreur) {
 | 
        
           | 436 | aurelien | 249 | 			echo '<p class="attention">Suppression dans tous les formats de l\'image '.$id.' effectuee </p>';
 | 
        
           |  |  | 250 | 			$this->nb_fichiers_orphelins++;
 | 
        
           |  |  | 251 | 		}
 | 
        
           |  |  | 252 |   | 
        
           |  |  | 253 | 		echo '</ul>';
 | 
        
           |  |  | 254 | 		echo '<br />';
 | 
        
           |  |  | 255 | 	}
 | 
        
           |  |  | 256 |   | 
        
           |  |  | 257 | 	private function convertir_poid($size) {
 | 
        
           |  |  | 258 | 	    $units = array(' B', ' KB', ' MB', ' GB', ' TB');
 | 
        
           |  |  | 259 | 	    for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024;
 | 
        
           |  |  | 260 | 	    return round($size, 2).$units[$i];
 | 
        
           |  |  | 261 | 	}
 | 
        
           | 416 | aurelien | 262 | }
 | 
        
           |  |  | 263 | ?>
 |