Subversion Repositories eFlore/Applications.cel

Rev

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

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