Subversion Repositories eFlore/Applications.cel

Rev

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

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