New file |
0,0 → 1,263 |
<?php |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package jrest |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2009 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/jrest/ |
*/ |
|
class InventoryMaintenance extends Cel { |
|
private $nb_fichiers_orphelins = 0; |
private $espace_libere = 0; |
|
function getElement($uid) { |
if ($this->authentifierAdmin()) { |
if($uid[0] == "dates_images") { |
$this->reparerDatesImages(); |
} |
|
if($uid[0] == "suppression_images_orphelines") { |
$this->suppressionFichiersImagesOrphelins(); |
} |
} |
} |
|
private function reparerDatesImages() { |
$query = 'UPDATE cel_images SET ci_meta_date = ci_meta_date_time '; |
'WHERE ci_meta_date IS NULL AND ci_meta_date_time IS NOT NULL' ; |
|
$DB = $this->connectDB($this->config,'cel_db'); |
$res =& $DB->query($query); |
|
if (PEAR::isError($res)) { |
logger('InventoryMaintenance','Erreur lors de la réparation des dates '.$query); |
die($res->getMessage()); |
} |
|
header('content-type: text/html charset=utf-8'); |
print "Réparation des dates effectuées"; |
exit() ; |
} |
|
private function suppressionFichiersImagesOrphelins() { |
header("content-type: text/html") ; |
$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]; |
} |
} |
?> |