Subversion Repositories eFlore/Applications.cel

Rev

Rev 537 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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&eacute;es </p><br />' ;
127
		print '<p class="resultat">'.$this->nb_fichiers_orphelins.' fichiers orphelins ont &eacute;t&eacute; d&eacute;tect&eacute;s et supprim&eacute;s</p>';
128
		print '<p class="resultat">'.$this->convertir_poid($this->espace_libere).' d\'espace disque ont &eacute;t&eacute; &eacute;conomis&eacute; </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.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image introuvable dans la base de donn&eacute;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
?>