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