Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 435 → Rev 436

/trunk/jrest/services/InventoryMaintenance.php
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&eacute;es </p><br />' ;
print '<p class="resultat">'.$this->nb_fichiers_orphelins.' fichiers orphelins ont &eacute;t&eacute; d&eacute;tect&eacute;s et supprim&eacute;s</p>';
print '<p class="resultat">'.$this->convertir_poid($this->espace_libere).' d\'espace disque ont &eacute;t&eacute; &eacute;conomis&eacute; </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.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image introuvable dans la base de donn&eacute;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];
}
}
?>