11,30 → 11,23 |
* @link /doc/jrest/ |
*/ |
|
Class InventoryMaintenance extends DBAccessor { |
Class InventoryMaintenance extends Cel { |
|
private $nb_fichiers_orphelins = 0; |
private $espace_libere = 0; |
|
function InventoryMaintenance($config) { |
$this->config=$config; |
} |
|
|
// renvoie l'enregistrement correspond � une image |
function getElement($uid) |
{ |
if($this->isAdmin($uid[0])) { |
// uid[0] : utilisateur obligatoire |
// uid[1] : identifiant fonction |
{ |
if ($this->authentifier()) { |
|
// Controle detournement utilisateur |
session_start(); |
$this->controleUtilisateur($uid[0]); |
|
if($uid[1] == "dates_images") { |
if($uid[0] == "dates_images") { |
$this->reparerDatesImages(); |
} |
|
|
if($uid[0] == "suppression_images_orphelines") { |
$this->suppressionFichiersImagesOrphelins(); |
} |
} |
|
} |
|
private function reparerDatesImages() { |
46,14 → 39,237 |
$res =& $DB->query($query); |
|
if (PEAR::isError($res)) { |
logger('InventoryMaintenance','Erreur lors de la réparation des dates '.$query); |
logger('InventoryMaintenance','Erreur lors de la réparation des dates '.$query); |
die($res->getMessage()); |
} |
|
header("content-type: text/html charset=utf-8") ; |
print "Reparation des dates effectuées" ; |
exit() ; |
} |
|
private function suppressionFichiersImagesOrphelins() { |
|
header("content-type: text/html") ; |
print "Reparation des dates effectuées" ; |
$header_html = ' |
<head> |
<title>Maintenance</title> |
|
<style type="text/css"> |
|
h1 { |
color: blue; |
} |
|
h2 { |
color: green; |
} |
|
.titre_dossier { |
cursor: pointer; |
} |
|
li { |
list-style-type: none; |
} |
|
.liste_profondeur_1 { |
border: 1px solid blue; |
background-color: #DFDFFF; |
} |
|
.liste_profondeur_2 { |
border: 1px solid green; |
background-color: #E1FFDF; |
width: 1500px; |
} |
|
.liste_profondeur_3 { |
border: 1px solid yellow; |
background-color: #FFFCDF; |
width: 1200px; |
} |
|
.attention { |
border: 1px solid red; |
background-color: white; |
width: 600px; |
} |
|
</style> |
|
<script src="http://162.38.234.9/cel_consultation/squelettes/js/jquery-1.4.2.min.js" type="text/javascript"></script> |
<script type="text/javascript" language="javascript"> |
//<![CDATA[ |
|
function initialiserElementsPliables() { |
$(\'.titre_dossier\').bind(\'click\', function() { |
|
$(this).siblings(\'li\').toggle(); |
return false; |
}); |
} |
|
$(document).ready(function() { |
initialiserElementsPliables(); |
}); |
//]]> |
</script> ';' |
|
</head>'; |
|
echo $header_html; |
|
$chemin_base_images = $this->config['cel_db']['chemin_images']; |
$profondeur = 1; |
|
echo '<ul id="liste_profondeur_0">'; |
$this->itererRecursivement($chemin_base_images, $profondeur); |
echo '</ul>'; |
|
print '<p class="resultat">Suppression des images orphelines effectuées </p><br />' ; |
print '<p class="resultat">'.$this->nb_fichiers_orphelins.' fichiers orphelins ont été détectés et supprimés</p>'; |
print '<p class="resultat">'.$this->convertir_poid($this->espace_libere).' d\'espace disque ont été économisé </p>'; |
exit() ; |
} |
|
private function itererRecursivement($dossier, $profondeur) { |
|
foreach (new DirectoryIterator($dossier) as $fichier_ou_dossier) { |
|
if($fichier_ou_dossier->isDot()) { |
continue; |
} |
|
$dossiers_autorises = array('L','M','S'); |
|
if($fichier_ou_dossier->getBasename() == 'export') { |
continue; |
} |
|
echo '<li>'; |
|
if($fichier_ou_dossier->isDir()) { |
|
$profondeur_dossier_fils = $profondeur + 1; |
echo '<ul class="liste_profondeur_'.$profondeur.'"> <h'.$profondeur.' class="titre_dossier"> analyse du dossier '.$fichier_ou_dossier->getPathname().'</h'.$profondeur.'>' ; |
$this->itererRecursivement($fichier_ou_dossier->getPathname(), $profondeur_dossier_fils); |
echo '</ul><br /><br />'; |
} else { |
$nom_fichier = $fichier_ou_dossier->getFilename(); |
$this->verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier); |
} |
|
echo '</li>'; |
} |
} |
|
private function verifierImageSurDDExisteDansBaseDeDonnees($nom_fichier) { |
|
$nom_fichier_sans_extension = trim($nom_fichier, '.jpg'); |
$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_L'); |
$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_M'); |
$nom_fichier_sans_extension = trim($nom_fichier_sans_extension, '_S'); |
$id_image = str_replace('_', '', $nom_fichier_sans_extension); |
|
// suppression des 0 devant |
$id_image += 0; |
|
$requete_id_image_existe = 'SELECT COUNT(ci_id_image) as image_existe FROM cel_images WHERE ci_id_image = '.$id_image; |
$image_existe = $this->executerRequete($requete_id_image_existe); |
|
if($image_existe[0]['image_existe'] < 1) { |
echo $nom_fichier.' Image introuvable dans la base de données'; |
$this->supprimerImage($id_image); |
} |
} |
|
private function supprimerImage($id) { |
|
$chemin_sur_serveur = $this->config['cel_db']['chemin_images'] ; |
|
$id = sprintf('%09s', $id) ; |
$id = wordwrap($id, 3 , '_', true) ; |
|
$id_fichier = $id.".jpg" ; |
|
$niveauDossier = split("_", $id) ; |
|
$dossierNiveau1 = $niveauDossier[0] ; |
$dossierNiveau2 = $niveauDossier[1] ; |
|
$fichier_s = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg' ; |
$fichier_m = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M/'.$id.'_M.jpg' ; |
$fichier_l = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L/'.$id.'_L.jpg' ; |
|
$erreur = false; |
|
echo '<ul class="liste_suppression">'; |
|
if(file_exists($fichier_s)) |
{ |
$this->espace_libere += filesize($fichier_s); |
$suppression_s = true; |
//$suppression_s = unlink($fichier_s) ; |
|
if(!$suppression_s) { |
$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_s.' </li>' ; |
echo $erreur; |
} else { |
// $this->nb_fichiers_orphelins++; |
} |
} else { |
$erreur = '<li> probleme : l\'image '.$fichier_s.' n\'existe pas </li>' ; |
echo $erreur; |
} // Si le fichier existe |
|
if(file_exists($fichier_m)) |
{ |
$this->espace_libere += filesize($fichier_m); |
$suppression_m = true; |
//$suppression_m = unlink($fichier_m) ; |
|
if(!$suppression_m) { |
$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_m.' </li>' ; |
$this->logger('CEL_images_bugs',$erreur); |
} else { |
// $this->nb_fichiers_orphelins++; |
} |
} else { |
$erreur = '<li> probleme : l\'image '.$fichier_m.' n\'existe pas </li>' ; |
echo $erreur; |
} // Si le fichier existe |
|
if(file_exists($fichier_l)) |
{ |
$this->espace_libere += filesize($fichier_l); |
$suppression_l = true; |
//$suppression_l = unlink($fichier_l) ; |
|
if(!$suppression_l) { |
$erreur = '<li> probleme durant la suppression de l\'image '.$fichier_l.' </li>' ; |
echo $erreur; |
} else { |
// $this->nb_fichiers_orphelins++; |
} |
} else { |
$erreur = '<li> probleme : l\'image '.$fichier_l.' n\'existe pas </li>' ; |
echo $erreur; |
} // Si le fichier existe |
|
if(!$erreur) { |
echo '<p class="attention">Suppression dans tous les formats de l\'image '.$id.' effectuee </p>'; |
$this->nb_fichiers_orphelins++; |
} |
|
echo '</ul>'; |
echo '<br />'; |
} |
|
private function convertir_poid($size) { |
$units = array(' B', ' KB', ' MB', ' GB', ' TB'); |
for ($i = 0; $size >= 1024 && $i < 4; $i++) $size /= 1024; |
return round($size, 2).$units[$i]; |
} |
} |
?> |