Subversion Repositories Applications.annuaire

Rev

Rev 17 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
10 aurelien 1
<?php
2
/**
3
* PHP Version 5
4
*
5
* @category  PHP
6
* @package   annuaire
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2010 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
11
* @link      /doc/annuaire/
12
*/
13
 
14
Class ImageModele extends Modele {
15
 
16
 
17
	// traite l'upload d'une fichier et le deplace en le renommant selon un identifiant donne
18
	function stockerFichier($id_annuaire, $id_utilisateur, $fichier)
19
	{
20
		$droits = 0755;
21
 
22
		$chemin_sur_serveur = Config::get('base_chemin_images') ;
23
 
24
		//echo $chemin_sur_serveur.'/'.$id_annuaire;
25
 
26
		if(!file_exists($chemin_sur_serveur.$id_annuaire.'/')) {
27
			if(mkdir($chemin_sur_serveur.'/'.$id_annuaire, $droits, true)) {
28
				chmod($chemin_sur_serveur.'/'.$id_annuaire,$droits);
29
			}
30
			else
31
			{
32
				trigger_error('ERROR : probleme durant l\'écriture du dossier des images pour l\'annuaire '.$id_annuaire.' \n') ;
33
				return false;
34
			}
35
		}
36
 
37
		$chemin_sur_serveur = $chemin_sur_serveur.$id_annuaire;
38
 
39
		$taille_max = Config::get('taille_max_images');
40
 
41
		$id = sprintf('%09s', $id_utilisateur) ;
42
		$id = wordwrap($id_utilisateur, 3 , '_', true) ;
43
 
44
		$id_fichier = $id.".jpg" ;
45
 
46
		$niveauDossier = split("_", $id) ;
47
 
48
		$dossierNiveau1 = $niveauDossier[0] ;
49
		$dossierNiveau2 = $niveauDossier[1] ;
50
 
51
		if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S'))
52
		{
53
			if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S',$droits, true)) {
54
				chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S',$droits);
55
			}
56
			else
57
			{
58
				trigger_error('ERROR : probleme durant l\'écriture du dossier s \n') ;
59
				return false;
60
			}
61
		}
62
 
63
		if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M'))
64
		{
65
			if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M',$droits, true)) {
66
				chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M',$droits);
67
			}
68
			else
69
			{
70
				trigger_error('ERROR : probleme durant l\'écriture du dossier m \n') ;
71
				return false;
72
			}
73
		}
74
 
75
		if(!file_exists($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L'))
76
		{
77
			if(mkdir($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L',$droits, true)) {
78
				chmod($chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L',$droits);
79
			}
80
			else
81
			{
82
				trigger_error('ERROR : probleme durant l\'écriture du dossier l \n') ;
83
				return false;
84
			}
85
		}
86
 
87
		$chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
88
 
89
		$chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id.".jpg" ;
90
 
91
		if(move_uploaded_file($fichier['tmp_name'],$chemin_fichier))
92
		{
93
			// on redimensionne
94
			list($width, $height) = getimagesize($chemin_fichier);
95
 
96
			$small_height = 100;
97
			if($height > $small_height) {
98
				$small_height = 100;
99
				$ratio = $height/$small_height;
100
				$small_width = $width/$ratio;
101
			} else {
102
				$small_height = $height;
103
				$small_width = $width;
104
			}
105
 
106
			$medium_height = 300;
107
			if($height > $medium_height) {
108
				$ratio = $height/$medium_height;
109
				$medium_width = $width/$ratio;
110
			} else {
111
				$medium_height = $height;
112
				$medium_width = $width;
113
			}
114
 
115
			// on reechantillonne
116
			$image_p = imagecreatetruecolor($small_width, $small_height);
117
			$image_m = imagecreatetruecolor($medium_width, $medium_height);
118
			$image_l = imagecreatetruecolor($width, $height);
119
 
120
			$image = imagecreatefromjpeg($chemin_fichier);
121
 
122
	        $ratio_compression = 100 ;
123
 
124
	        if(filesize($chemin_fichier) >= $taille_max) {
125
	            $ratio_compression = 85 ;
126
	        }
127
 
128
			if($image == null)
129
			{
130
				trigger_error('Probleme durant la création des images resamplées \n') ;
131
				return false ;
132
			}
133
 
134
			// et on copie les nouvelles images (pour la galerie et la liste)
135
			imagecopyresampled($image_p, $image, 0, 0, 0, 0, $small_width, $small_height, $width, $height);
136
			imagecopyresampled($image_m, $image, 0, 0, 0, 0, $medium_width, $medium_height, $width, $height);
137
			imagecopyresampled($image_l, $image, 0, 0, 0, 0, $width, $height, $width, $height);
138
 
139
			imagejpeg($image_p, $chemin_sur_serveur_final.'/S/'.$id.'_S.jpg', 85);
140
			chmod($chemin_sur_serveur_final.'/S/'.$id.'_S.jpg',$droits);
141
 
142
			imagejpeg($image_m,$chemin_sur_serveur_final.'/M/'.$id.'_M.jpg', 85);
143
			chmod($chemin_sur_serveur_final.'/M/'.$id.'_M.jpg',$droits);
144
 
145
			imagejpeg($image_l,$chemin_sur_serveur_final.'/L/'.$id.'_L.jpg', $ratio_compression);
146
			chmod($chemin_sur_serveur_final.'/L/'.$id.'_L.jpg',$droits);
147
 
148
			unlink($chemin_fichier) ;
149
 
150
	  		return $id_utilisateur;
151
	  	}
152
	  	else
153
	  	{
154
			trigger_error('Probleme durant le déplacement du fichier temporaire \n') ;
155
			return false ;
156
	  	}
157
	}
158
 
159
	static function obtenirEmplacementFichierParId($id_utilisateur, $id_annuaire, $taille = 'M') {
160
 
161
		$id = sprintf('%09s', $id_utilisateur) ;
162
		$id = wordwrap($id_utilisateur, 3 , '_', true) ;
163
 
164
		$id_fichier = $id.".jpg" ;
165
 
166
		$niveauDossier = split("_", $id) ;
167
 
168
		$dossierNiveau1 = $niveauDossier[0] ;
169
		$dossierNiveau2 = $niveauDossier[1] ;
170
 
171
		$base_url = '/Documents/annuaire/images/'.$id_annuaire;
172
 
173
		if($taille == 'A') {
174
			$url = array('S' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg',
175
							'M' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg',
176
								'L' => $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg');
177
		} else {
178
			$url = $base_url.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/'.$taille.'/'.$id.'_'.$taille.'.jpg';
179
		}
180
		return $url;
181
	}
182
 
183
	function supprimerFichier($id)
184
	{
185
		$chemin_sur_serveur = Config::get('base_chemin_images') ;
186
 
187
		$id = sprintf('%09s', $id) ;
188
		$id = wordwrap($id, 3 , '_', true) ;
189
 
190
		$id_fichier = $id.".jpg" ;
191
 
192
		$niveauDossier = split("_", $id) ;
193
 
194
		$dossierNiveau1 = $niveauDossier[0] ;
195
		$dossierNiveau2 = $niveauDossier[1] ;
196
 
197
		$fichier_s = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/S/'.$id.'_S.jpg' ;
198
		$fichier_m = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/M/'.$id.'_M.jpg' ;
199
		$fichier_l = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2.'/L/'.$id.'_L.jpg' ;
200
 
201
		if(file_exists($fichier_s))
202
		{
203
			unlink($fichier_s) ;
204
		} // Si le fichier existe
205
 
206
		if(file_exists($fichier_m))
207
		{
208
			unlink($fichier_m) ;
209
		} // Si le fichier existe
210
 
211
		if(file_exists($fichier_l))
212
		{
213
			unlink($fichier_l) ;
214
		} // Si le fichier existe
215
 
216
	}
217
}
218
?>