Subversion Repositories Applications.annuaire

Rev

Rev 17 | Rev 97 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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