Subversion Repositories eFlore/Applications.cel

Rev

Rev 537 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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