New file |
0,0 → 1,218 |
<?php |
/** |
* PHP Version 5 |
* |
* @category PHP |
* @package annuaire |
* @author aurelien <aurelien@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @version SVN: <svn_id> |
* @link /doc/annuaire/ |
*/ |
|
Class ImageModele extends Modele { |
|
|
// traite l'upload d'une fichier et le deplace en le renommant selon un identifiant donne |
function stockerFichier($id_annuaire, $id_utilisateur, $fichier) |
{ |
$droits = 0755; |
|
$chemin_sur_serveur = Config::get('base_chemin_images') ; |
|
//echo $chemin_sur_serveur.'/'.$id_annuaire; |
|
if(!file_exists($chemin_sur_serveur.$id_annuaire.'/')) { |
if(mkdir($chemin_sur_serveur.'/'.$id_annuaire, $droits, true)) { |
chmod($chemin_sur_serveur.'/'.$id_annuaire,$droits); |
} |
else |
{ |
trigger_error('ERROR : probleme durant l\'écriture du dossier des images pour l\'annuaire '.$id_annuaire.' \n') ; |
return false; |
} |
} |
|
$chemin_sur_serveur = $chemin_sur_serveur.$id_annuaire; |
|
$taille_max = Config::get('taille_max_images'); |
|
$id = sprintf('%09s', $id_utilisateur) ; |
$id = wordwrap($id_utilisateur, 3 , '_', true) ; |
|
$id_fichier = $id.".jpg" ; |
|
$niveauDossier = split("_", $id) ; |
|
$dossierNiveau1 = $niveauDossier[0] ; |
$dossierNiveau2 = $niveauDossier[1] ; |
|
if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S')) |
{ |
if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S',$droits, true)) { |
chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S',$droits); |
} |
else |
{ |
trigger_error('ERROR : probleme durant l\'écriture du dossier s \n') ; |
return false; |
} |
} |
|
if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M')) |
{ |
if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M',$droits, true)) { |
chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M',$droits); |
} |
else |
{ |
trigger_error('ERROR : probleme durant l\'écriture du dossier m \n') ; |
return false; |
} |
} |
|
if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L')) |
{ |
if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L',$droits, true)) { |
chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L',$droits); |
} |
else |
{ |
trigger_error('ERROR : probleme durant l\'écriture du dossier l \n') ; |
return false; |
} |
} |
|
$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ; |
|
$chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id.".jpg" ; |
|
if(move_uploaded_file($fichier['tmp_name'],$chemin_fichier)) |
{ |
// on redimensionne |
list($width, $height) = getimagesize($chemin_fichier); |
|
$small_height = 100; |
if($height > $small_height) { |
$small_height = 100; |
$ratio = $height/$small_height; |
$small_width = $width/$ratio; |
} else { |
$small_height = $height; |
$small_width = $width; |
} |
|
$medium_height = 300; |
if($height > $medium_height) { |
$ratio = $height/$medium_height; |
$medium_width = $width/$ratio; |
} else { |
$medium_height = $height; |
$medium_width = $width; |
} |
|
// on reechantillonne |
$image_p = imagecreatetruecolor($small_width, $small_height); |
$image_m = imagecreatetruecolor($medium_width, $medium_height); |
$image_l = imagecreatetruecolor($width, $height); |
|
$image = imagecreatefromjpeg($chemin_fichier); |
|
$ratio_compression = 100 ; |
|
if(filesize($chemin_fichier) >= $taille_max) { |
$ratio_compression = 85 ; |
} |
|
if($image == null) |
{ |
trigger_error('Probleme durant la création des images resamplées \n') ; |
return false ; |
} |
|
// et on copie les nouvelles images (pour la galerie et la liste) |
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $small_width, $small_height, $width, $height); |
imagecopyresampled($image_m, $image, 0, 0, 0, 0, $medium_width, $medium_height, $width, $height); |
imagecopyresampled($image_l, $image, 0, 0, 0, 0, $width, $height, $width, $height); |
|
imagejpeg($image_p, $chemin_sur_serveur_final.'/S/'.$id.'_S.jpg', 85); |
chmod($chemin_sur_serveur_final.'/S/'.$id.'_S.jpg',$droits); |
|
imagejpeg($image_m,$chemin_sur_serveur_final.'/M/'.$id.'_M.jpg', 85); |
chmod($chemin_sur_serveur_final.'/M/'.$id.'_M.jpg',$droits); |
|
imagejpeg($image_l,$chemin_sur_serveur_final.'/L/'.$id.'_L.jpg', $ratio_compression); |
chmod($chemin_sur_serveur_final.'/L/'.$id.'_L.jpg',$droits); |
|
unlink($chemin_fichier) ; |
|
return $id_utilisateur; |
} |
else |
{ |
trigger_error('Probleme durant le déplacement du fichier temporaire \n') ; |
return false ; |
} |
} |
|
static function obtenirEmplacementFichierParId($id_utilisateur, $id_annuaire, $taille = 'M') { |
|
$id = sprintf('%09s', $id_utilisateur) ; |
$id = wordwrap($id_utilisateur, 3 , '_', true) ; |
|
$id_fichier = $id.".jpg" ; |
|
$niveauDossier = split("_", $id) ; |
|
$dossierNiveau1 = $niveauDossier[0] ; |
$dossierNiveau2 = $niveauDossier[1] ; |
|
$base_url = '/Documents/annuaire/images/'.$id_annuaire; |
|
if($taille == 'A') { |
$url = array('S' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg', |
'M' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg', |
'L' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg'); |
} else { |
$url = $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/'.$taille.'/'.$id.'_'.$taille.'.jpg'; |
} |
return $url; |
} |
|
function supprimerFichier($id) |
{ |
$chemin_sur_serveur = Config::get('base_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' ; |
|
if(file_exists($fichier_s)) |
{ |
unlink($fichier_s) ; |
} // Si le fichier existe |
|
if(file_exists($fichier_m)) |
{ |
unlink($fichier_m) ; |
} // Si le fichier existe |
|
if(file_exists($fichier_l)) |
{ |
unlink($fichier_l) ; |
} // Si le fichier existe |
|
} |
} |
?> |