Subversion Repositories eFlore/Applications.cel

Rev

Rev 3985 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3985 Rev 3990
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service affichant les dernières photo publiques du CEL ouvrable sous forme de diaporama.
4
 * Service affichant les dernières photo publiques du CEL ouvrable sous forme de diaporama.
5
 * Encodage en entrée : utf8
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
6
 * Encodage en sortie : utf8
7
 *
7
 *
8
 * Cas d'utilisation et documentation :
8
 * Cas d'utilisation et documentation :
9
 * @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetPhoto
9
 * @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetPhoto
10
 *
10
 *
11
 * Paramètres :
11
 * Paramètres :
12
 * ===> extra = booléen (1 ou 0)  [par défaut : 1]
12
 * ===> extra = booléen (1 ou 0)  [par défaut : 1]
13
 * Affiche / Cache la vignette en taille plus importante au bas du widget.
13
 * Affiche / Cache la vignette en taille plus importante au bas du widget.
14
 * ===> vignette = [0-9]+,[0-9]+  [par défaut : 4,3]
14
 * ===> vignette = [0-9]+,[0-9]+  [par défaut : 4,3]
15
 * Indique le nombre de vignette par ligne et le nombre de ligne.
15
 * Indique le nombre de vignette par ligne et le nombre de ligne.
16
 *
16
 *
17
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
17
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
18
 * @license     GPL v3 <http://www.gnu.org/licenses/gpl.txt>
18
 * @license     GPL v3 <http://www.gnu.org/licenses/gpl.txt>
19
 * @license     CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
19
 * @license     CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
20
 * @version     $Id$
20
 * @version     $Id$
21
 * @copyright   Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
21
 * @copyright   Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
22
 */
22
 */
23
class Photo extends WidgetCommun {
23
class Photo extends WidgetCommun {
24
 
24
 
25
	const DS = DIRECTORY_SEPARATOR;
25
	const DS = DIRECTORY_SEPARATOR;
26
	const SERVICE_DEFAUT = 'photo';
26
	const SERVICE_DEFAUT = 'photo';
27
	const VIGNETTE_DEFAULT = '4,3';
27
	const VIGNETTE_DEFAULT = '4,3';
28
	const WS_IMG_LIST = 'celImage';
28
	const WS_IMG_LIST = 'celImage';
29
	const IMAGE_FORMATS = [
29
	const IMAGE_FORMATS = [
30
		'CRX2S' => '63px (Carrée, rognée)',
30
		'CRX2S' => '63px (Carrée, rognée)',
31
		'CRXS'  => '100px (Carrée, rognée)',
31
		'CRXS'  => '100px (Carrée, rognée)',
32
		'CXS'   => '100px (Carrée)',
32
		'CXS'   => '100px (Carrée)',
33
		'CS'    => '300px (Carrée)',
33
		'CS'    => '300px (Carrée)',
34
		'CRS'   => '300px (Carrée, rognée)',
34
		'CRS'   => '300px (Carrée, rognée)',
35
		'XS'    => '150px',
35
		'XS'    => '150px',
36
		'S'     => '400px',
36
		'S'     => '400px',
37
		'M'     => '600px',
37
		'M'     => '600px',
38
		'L'     => '800px',
38
		'L'     => '800px',
39
		'CRL'   => '600px (Carrée, rognée)',
39
		'CRL'   => '600px (Carrée, rognée)',
40
		'XL'    => '1024px',
40
		'XL'    => '1024px',
41
		'X2L'   => '1280px',
41
		'X2L'   => '1280px',
42
		'X3L'   => '1600px',
42
		'X3L'   => '1600px',
43
		'O'     => 'Format original (Taille inconnue)'
43
		'O'     => 'Format original (Taille inconnue)'
44
	];
44
	];
45
	const START_DEFAUT = 0;
45
	const START_DEFAUT = 0;
46
	const LIMIT_DEFAUT = 100;
46
	const LIMIT_DEFAUT = 100;
47
	private $url_widget = null;
47
	private $url_widget = null;
48
	private $eflore_url_tpl = null;
48
	private $eflore_url_tpl = null;
49
	private $service_images_url = null;
49
	private $service_images_url = null;
50
	private $flux_rss_url = null;
50
	private $flux_rss_url = null;
51
 
51
 
52
	// Suffixe de template pour la langue (vide par défaut, correspond à "fr" au français)
52
	// Suffixe de template pour la langue (vide par défaut, correspond à "fr" au français)
53
	private $suffixeLangue = '';
53
	private $suffixeLangue = '';
54
	
54
	
55
	private $user = null;
55
	private $user = null;
56
	
56
	
57
	private $service_del_url = null;
57
	private $service_del_url = null;
58
	/**
58
	/**
59
	 * Méthode appelée par défaut pour charger ce widget.
59
	 * Méthode appelée par défaut pour charger ce widget.
60
	 */
60
	 */
61
	public function executer() {
61
	public function executer() {
62
		$retour = null;
62
		$retour = null;
63
		// Pour la création de l'id du cache nous ne tenons pas compte du paramètre de l'url callback
63
		// Pour la création de l'id du cache nous ne tenons pas compte du paramètre de l'url callback
64
		unset($this->parametres['callback']);
64
		unset($this->parametres['callback']);
65
		extract($this->parametres);
65
		extract($this->parametres);
66
	
66
	
67
		if (!isset($mode)) {
67
		if (!isset($mode)) {
68
			$mode = self::SERVICE_DEFAUT;
68
			$mode = self::SERVICE_DEFAUT;
69
		}
69
		}
70
		$this->url_widget = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'photo');
70
		$this->url_widget = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'photo');
71
		$this->eflore_url_tpl = $this->config['photo']['efloreUrlTpl'];
71
		$this->eflore_url_tpl = $this->config['photo']['efloreUrlTpl'];
72
		$this->service_images_url = $this->config['photo']['celUrlImages'];
72
		$this->service_images_url = $this->config['photo']['celUrlImages'];
73
		$this->flux_rss_url = $this->config['photo']['fluxRssUrl'];
73
		$this->flux_rss_url = $this->config['photo']['fluxRssUrl'];
74
 
74
 
75
		$cache_activation = $this->config['photo.cache']['activation'];
75
		$cache_activation = $this->config['photo.cache']['activation'];
76
		$cache_stockage = $this->config['photo.cache']['stockageDossier'];
76
		$cache_stockage = $this->config['photo.cache']['stockageDossier'];
77
		$ddv = $this->config['photo.cache']['dureeDeVie'];
77
		$ddv = $this->config['photo.cache']['dureeDeVie'];
78
		$cache = new Cache($cache_stockage, $ddv, $cache_activation);
78
		$cache = new Cache($cache_stockage, $ddv, $cache_activation);
79
		$id_cache = 'photo-'.hash('adler32', print_r($this->parametres, true));
79
		$id_cache = 'photo-'.hash('adler32', print_r($this->parametres, true));
80
		$contenu = $cache->charger($id_cache);
80
		$contenu = $cache->charger($id_cache);
81
		
81
		
82
		$this->user = $this->getUserFromCookie();
82
		$this->user = $this->getUserFromCookie();
83
		
83
		
84
		if (!$contenu) {
84
		if (!$contenu) {
85
			$methode = $this->traiterNomMethodeExecuter($mode);
85
			$methode = $this->traiterNomMethodeExecuter($mode);
86
 
86
 
87
			if (method_exists($this, $methode)) {
87
			if (method_exists($this, $methode)) {
88
				$retour = $this->$methode();
88
				$retour = $this->$methode();
89
 
89
 
90
			} else {
90
			} else {
91
				$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
91
				$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
92
 
92
 
93
			}
93
			}
94
			// Suffixe de template pour la langue - fr par défaut @TODO configurer ça un jour
94
			// Suffixe de template pour la langue - fr par défaut @TODO configurer ça un jour
95
			if (isset($this->parametres['lang']) && $this->parametres['lang'] !== 'fr') {
95
			if (isset($this->parametres['lang']) && $this->parametres['lang'] !== 'fr') {
96
				$this->suffixeLangue = '_' . $this->parametres['lang'];
96
				$this->suffixeLangue = '_' . $this->parametres['lang'];
97
 
97
 
98
			}
98
			}
99
 
99
 
100
			$contenu = '';
100
			$contenu = '';
101
 
101
 
102
			if (is_null($retour)) {
102
			if (is_null($retour)) {
103
				$this->messages[] = 'Aucune image';
103
				$this->messages[] = 'Aucune image';
104
 
104
 
105
			} else {
105
			} else {
106
 
106
 
107
				if (isset($retour['donnees'])) {
107
				if (isset($retour['donnees'])) {
108
					$squelette = dirname(__FILE__) .self::DS. 'squelettes' .self::DS. $retour['squelette'].$this->suffixeLangue.'.tpl.html';
108
					$squelette = dirname(__FILE__) .self::DS. 'squelettes' .self::DS. $retour['squelette'].$this->suffixeLangue.'.tpl.html';
109
					$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
109
					$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
110
					$cache->sauver($id_cache, $contenu);
110
					$cache->sauver($id_cache, $contenu);
111
 
111
 
112
				} else {
112
				} else {
113
					$this->messages[] = 'Les données à transmettre au squelette sont nulles.';
113
					$this->messages[] = 'Les données à transmettre au squelette sont nulles.';
114
 
114
 
115
				}
115
				}
116
			}
116
			}
117
		}
117
		}
118
		if (isset($_GET['callback'])) {
118
		if (isset($_GET['callback'])) {
119
			$this->envoyerJsonp(['contenu' => $contenu]);
119
			$this->envoyerJsonp(['contenu' => $contenu]);
120
 
120
 
121
		} else {
121
		} else {
122
			$this->envoyer($contenu);
122
			$this->envoyer($contenu);
123
 
123
 
124
		}
124
		}
125
		
125
		
126
		// POur l'envoi du vote vers PF
126
		// POur l'envoi du vote vers PF
127
		if ($_SERVER['REQUEST_METHOD'] === 'POST') {
127
		if ($_SERVER['REQUEST_METHOD'] === 'POST') {
128
			if (isset($_GET['action']) && $_GET['action'] === 'send_pf_vote') {
128
			if (isset($_GET['action']) && $_GET['action'] === 'send_pf_vote') {
129
				$this->sendVote();
129
				$this->sendVote();
130
			}
130
			}
131
		}
131
		}
132
	}
132
	}
133
 
133
 
134
	// maintenir la retrocompatibilité avec l'ancien mode ajax
134
	// maintenir la retrocompatibilité avec l'ancien mode ajax
135
	private function executerAjax() {
135
	private function executerAjax() {
136
		unset($this->parametres['mode']);
136
		unset($this->parametres['mode']);
137
 
137
 
138
		$chaineRequete = http_build_query($this->parametres);
138
		$chaineRequete = http_build_query($this->parametres);
139
		$chaineRequete = $chaineRequete ? '?'.$chaineRequete : '';
139
		$chaineRequete = $chaineRequete ? '?'.$chaineRequete : '';
140
		$widget['donnees']['url_widget'] = $this->url_widget.$chaineRequete;
140
		$widget['donnees']['url_widget'] = $this->url_widget.$chaineRequete;
141
 
141
 
142
		$id = '-'.(isset($this->parametres['id']) ? $this->parametres['id'] : '1');
142
		$id = '-'.(isset($this->parametres['id']) ? $this->parametres['id'] : '1');
143
		$widget['donnees']['id'] = $id;
143
		$widget['donnees']['id'] = $id;
144
 
144
 
145
		$widget['squelette'] = 'photo_retrocompatibilite_ajax';
145
		$widget['squelette'] = 'photo_retrocompatibilite_ajax';
146
 
146
 
147
		return $widget;
147
		return $widget;
148
	}
148
	}
149
 
149
 
150
	private function executerPopup() {
150
	private function executerPopup() {
151
		session_start();
151
		session_start();
152
 
152
 
153
		$protocoles = $this->getProtocoles();
153
		$protocoles = $this->getProtocoles();
154
		
154
		
155
		$galerie_id = $_GET['galerie_id'];
155
		$galerie_id = $_GET['galerie_id'];
156
		$widget['donnees']['url_image'] = $_GET['url_image'];
156
		$widget['donnees']['url_image'] = $_GET['url_image'];
157
		$widget['donnees']['infos_images'] = $_SESSION[$galerie_id]['infos_images'];
157
		$widget['donnees']['infos_images'] = $_SESSION[$galerie_id]['infos_images'];
158
		$widget['donnees']['url_widget'] = $this->url_widget;
158
		$widget['donnees']['url_widget'] = $this->url_widget;
159
		$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
159
		$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
160
		$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
160
		$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
161
		$widget['donnees']['max_photo'] = $_SESSION[$galerie_id]['max_photo'];
161
		$widget['donnees']['max_photo'] = $_SESSION[$galerie_id]['max_photo'];
162
		$widget['donnees']['start'] = $_SESSION[$galerie_id]['start'];
162
		$widget['donnees']['start'] = $_SESSION[$galerie_id]['start'];
163
		$widget['donnees']['url_ws_regenerer_img'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_IMG_LIST) . '/regenerer-miniatures?ids-img=';
163
		$widget['donnees']['url_ws_regenerer_img'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_IMG_LIST) . '/regenerer-miniatures?ids-img=';
164
		$widget['donnees']['popup_url'] = isset( $_GET['popup_url'] ) ? $_GET['popup_url'] : null;
164
		$widget['donnees']['popup_url'] = isset( $_GET['popup_url'] ) ? $_GET['popup_url'] : null;
165
		$widget['donnees']['url_base_telechargement'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelImageFormat/');
165
		$widget['donnees']['url_base_telechargement'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], 'CelImageFormat/');
166
		$widget['donnees']['formats_description'] = self::IMAGE_FORMATS;
166
		$widget['donnees']['formats_description'] = self::IMAGE_FORMATS;
167
		$widget['donnees']['protocoles'] = $protocoles;
167
		$widget['donnees']['protocoles'] = $protocoles;
168
		$widget['donnees']['del_url'] = sprintf($this->config['chemins']['baseURLServicesDelTpl'], '');
168
		$widget['donnees']['del_url'] = sprintf($this->config['chemins']['baseURLServicesDelTpl'], '');
169
		$widget['donnees']['new_cel_url'] = sprintf($this->config['chemins']['baseURLServicesNewCelTpl'], '');
169
		$widget['donnees']['new_cel_url'] = sprintf($this->config['chemins']['baseURLServicesNewCelTpl'], '');
170
		
170
		
171
		if ($this->user){
171
		if ($this->user){
172
			$widget['donnees']['userId'] = $this->user['id'];
172
			$widget['donnees']['userId'] = $this->user['id'];
173
			$widget['donnees']['token'] = $this->user['token'];
173
			$widget['donnees']['token'] = $this->user['token'];
174
		}
174
		}
175
 
175
 
176
		$widget['squelette'] = 'popup' . $this->suffixeLangue;
176
		$widget['squelette'] = 'popup' . $this->suffixeLangue;
177
		
177
		
178
		return $widget;
178
		return $widget;
179
	}
179
	}
180
 
180
 
181
	private function executerContact() {
181
	private function executerContact() {
182
		session_start();
182
		session_start();
183
 
183
 
184
		$widget['donnees']['url_widget'] = $this->url_widget;
184
		$widget['donnees']['url_widget'] = $this->url_widget;
185
		$widget['donnees']['id_image'] = $_GET['id_image'];
185
		$widget['donnees']['id_image'] = $_GET['id_image'];
186
		$widget['donnees']['nom_sci'] = $_GET['nom_sci'];
186
		$widget['donnees']['nom_sci'] = $_GET['nom_sci'];
187
		$widget['donnees']['nn'] = $_GET['nn'];
187
		$widget['donnees']['nn'] = $_GET['nn'];
188
		$widget['donnees']['date'] = $_GET['date'];
188
		$widget['donnees']['date'] = $_GET['date'];
189
		$widget['donnees']['auteur'] = $_GET['auteur'];
189
		$widget['donnees']['auteur'] = $_GET['auteur'];
190
		$widget['donnees']['popup_url'] = isset( $_GET['popup_url'] ) ? $_GET['popup_url'] : null;
190
		$widget['donnees']['popup_url'] = isset( $_GET['popup_url'] ) ? $_GET['popup_url'] : null;
191
 
191
 
192
		if (isset($_GET['lang']) && 'nl' === $_GET['lang']) {
192
		if (isset($_GET['lang']) && 'nl' === $_GET['lang']) {
193
			$widget['donnees']['sujet'] = "Afbeelding #".$_GET['id_image']." op ".$_GET['nom_sci'];
193
			$widget['donnees']['sujet'] = "Afbeelding #".$_GET['id_image']." op ".$_GET['nom_sci'];
194
			$widget['donnees']['message'] = "\n\n\n\n\n\n\n\n--\nBetreft de foto \"".$_GET['nom_sci'].'" van "'.$_GET['date'];
194
			$widget['donnees']['message'] = "\n\n\n\n\n\n\n\n--\nBetreft de foto \"".$_GET['nom_sci'].'" van "'.$_GET['date'];
195
 
195
 
196
		} else {
196
		} else {
197
			$widget['donnees']['sujet'] = "Image #".$_GET['id_image']." de ".$_GET['nom_sci'];
197
			$widget['donnees']['sujet'] = "Image #".$_GET['id_image']." de ".$_GET['nom_sci'];
198
			$widget['donnees']['message'] = "\n\n\n\n\n\n\n\n--\nConcerne l'image de \"".$_GET['nom_sci'].'" du "'.$_GET['date'];
198
			$widget['donnees']['message'] = "\n\n\n\n\n\n\n\n--\nConcerne l'image de \"".$_GET['nom_sci'].'" du "'.$_GET['date'];
199
 
199
 
200
		}
200
		}
201
 
201
 
202
		$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
202
		$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
203
		$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
203
		$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
204
		$widget['squelette'] = 'contact';
204
		$widget['squelette'] = 'contact';
205
 
205
 
206
		return $widget;
206
		return $widget;
207
	}
207
	}
208
	
208
	
209
	private function executerPhoto() {
209
	private function executerPhoto() {
210
		$widget = null;
210
		$widget = null;
211
 
211
 
212
		$this->parametres['start'] = $this->parametres['start'] ?? self::START_DEFAUT;
212
		$this->parametres['start'] = $this->parametres['start'] ?? self::START_DEFAUT;
213
		$this->parametres['limit'] = $this->parametres['limit'] ?? self::LIMIT_DEFAUT;
213
		$this->parametres['limit'] = $this->parametres['limit'] ?? self::LIMIT_DEFAUT;
214
 
214
 
215
		extract($this->parametres);
215
		extract($this->parametres);
216
		
216
		
217
		$hasTriedValueInConfig = false;
217
		$hasTriedValueInConfig = false;
218
		while (!isset($vignette) || !preg_match('/^[0-9]+,[0-9]+$/', $vignette)) {
218
		while (!isset($vignette) || !preg_match('/^[0-9]+,[0-9]+$/', $vignette)) {
219
			$vignette = (!$hasTriedValueInConfig) ? $this->config['photo']['vignette'] : self::VIGNETTE_DEFAULT;
219
			$vignette = (!$hasTriedValueInConfig) ? $this->config['photo']['vignette'] : self::VIGNETTE_DEFAULT;
220
			$hasTriedValueInConfig = true;
220
			$hasTriedValueInConfig = true;
221
		}
221
		}
222
		
222
		
223
		$id = '-'.(isset($id) ? $id : '1');
223
		$id = '-'.(isset($id) ? $id : '1');
224
		$titre = isset($titre) ? htmlentities(rawurldecode($titre)) : '';
224
		$titre = isset($titre) ? htmlentities(rawurldecode($titre)) : '';
225
 
225
 
226
		$icone_rss = (isset($_GET['rss']) && $_GET['rss'] != 1) ? false : true;
226
		$icone_rss = (isset($_GET['rss']) && $_GET['rss'] != 1) ? false : true;
227
		$utilise_fancybox = (isset($_GET['mode_zoom']) && $_GET['mode_zoom'] != 'fancybox') ? false : true;
227
		$utilise_fancybox = (isset($_GET['mode_zoom']) && $_GET['mode_zoom'] != 'fancybox') ? false : true;
228
		
228
		
229
		$champ_recherche = $champ_recherche ? $this->obtenirBooleen($champ_recherche) : ($this->config['photo']['champRecherche'] ? $this->obtenirBooleen($this->config['photo']['champRecherche']) : false) ;
229
		$champ_recherche = $champ_recherche ? $this->obtenirBooleen($champ_recherche) : ($this->config['photo']['champRecherche'] ? $this->obtenirBooleen($this->config['photo']['champRecherche']) : false) ;
230
		
230
		
231
		// Affichage mode e-flore avec le paramètre mode_eflore
231
		// Affichage mode e-flore avec le paramètre mode_eflore
232
		if ($_GET['mode_eflore']) {
232
		if ($_GET['mode_eflore']) {
233
			$champ_recherche = false;
233
			$champ_recherche = false;
234
			$vignette ='5,2';
234
			$vignette ='5,2';
235
			
235
			
236
			$tags = [
236
			$tags = [
237
				'fleur',
237
				'fleur',
238
				'feuille',
238
				'feuille',
239
				'fruit',
239
				'fruit',
240
				'ecorce',
240
				'ecorce',
241
				'port',
241
				'port',
242
				'rameau',
242
				'rameau',
243
			];
243
			];
244
			foreach ($tags as $tag) {
244
			foreach ($tags as $tag) {
245
				$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,
245
				$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,
246
										   true, $tag, $widget,$champ_recherche);
246
										   true, $tag, $widget,$champ_recherche);
247
				$widget['donnees']['champ_recherche'] = $champ_recherche;
247
				$widget['donnees']['champ_recherche'] = $champ_recherche;
248
			}
248
			}
249
			$widget['donnees']['tagToDisplay'] = 'fleur';
249
			$widget['donnees']['tagToDisplay'] = 'fleur';
250
		} else {
250
		} else {
251
			$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,false, 'non_eflore', $widget,$champ_recherche);
251
			$widget = $this->getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox,false, 'non_eflore', $widget,$champ_recherche);
252
			$widget['donnees']['champ_recherche'] = $champ_recherche;
252
			$widget['donnees']['champ_recherche'] = $champ_recherche;
253
		}
253
		}
254
		
254
		
255
		return $widget;
255
		return $widget;
256
	}
256
	}
257
 
257
 
258
	private function traiterParametres() {
258
	private function traiterParametres() {
259
		$parametres_flux = '?';
259
		$parametres_flux = '?';
260
		$criteres = [
260
		$criteres = [
261
			'taxon',
261
			'taxon',
262
			'referentiel',
262
			'referentiel',
263
			'date_deb',
263
			'date_deb',
264
			'date_fin',
264
			'date_fin',
265
			'commune',
265
			'commune',
266
			'dept',
266
			'dept',
267
			'pays',
267
			'pays',
268
			'auteur',
268
			'auteur',
269
			'programme',
269
			'programme',
270
			'tag',
270
			'tag',
271
			'standard',
271
			'standard',
272
			'recherche',
272
			'recherche',
273
			'date',
273
			'date',
274
			'motcle',
274
			'motcle',
275
			'projet',
275
			'projet',
276
			'num_taxon',
276
			'num_taxon',
277
			'num_nom',
277
			'num_nom',
278
			'start',
278
			'start',
279
			'limit',
279
			'limit',
280
			'mode_eflore',
280
			'mode_eflore',
281
			'famille'
281
			'famille'
282
		];
282
		];
283
 
283
 
284
		foreach($this->parametres as $nom_critere => $valeur_critere) {
284
		foreach($this->parametres as $nom_critere => $valeur_critere) {
285
			if (in_array($nom_critere, $criteres)) {
285
			if (in_array($nom_critere, $criteres)) {
286
				$valeur_critere = str_replace(' ', '%20', $valeur_critere);
286
				$valeur_critere = str_replace(' ', '%20', $valeur_critere);
287
				$parametres_flux .= $nom_critere.'='.$valeur_critere.'&';
287
				$parametres_flux .= $nom_critere.'='.$valeur_critere.'&';
288
 
288
 
289
			}
289
			}
290
		}
290
		}
291
		if ($parametres_flux === '?') {
291
		if ($parametres_flux === '?') {
292
			$parametres_flux = '';
292
			$parametres_flux = '';
293
 
293
 
294
		} else {
294
		} else {
295
			$parametres_flux = rtrim($parametres_flux, '&');
295
			$parametres_flux = rtrim($parametres_flux, '&');
296
 
296
 
297
		}
297
		}
298
 
298
 
299
		return $parametres_flux;
299
		return $parametres_flux;
300
	}
300
	}
301
 
301
 
302
	private function obtenirBooleen($var) {
302
	private function obtenirBooleen($var) {
303
		switch ($var) {
303
		switch ($var) {
304
			case 'false' :
304
			case 'false' :
305
			case 'null' :
305
			case 'null' :
306
			case 'non' :
306
			case 'non' :
307
			case 'no' :
307
			case 'no' :
308
				return false;
308
				return false;
309
			default:
309
			default:
310
				return boolval($var);
310
				return boolval($var);
311
		}
311
		}
312
	}
312
	}
313
	
313
	
314
	private function getProtocoles(){
314
	private function getProtocoles(){
315
		$protocoles = [];
315
		$protocoles = [];
316
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
316
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
317
		$url = sprintf($this->service_del_url, 'protocoles');
317
		$url = sprintf($this->service_del_url, 'protocoles');
318
		$json = $this->getDao()->consulter($url);
318
		$json = $this->getDao()->consulter($url);
319
		
319
		
320
		if (empty($json)) {
320
		if (empty($json)) {
321
			$this->messages[] = "L'URI suivante est invalide : $url";
321
			$this->messages[] = "L'URI suivante est invalide : $url";
322
		} else {
322
		} else {
323
			$protocoles= json_decode($json, true);
323
			$protocoles= json_decode($json, true);
324
		}
324
		}
325
		
325
		
326
		return $protocoles['resultats'];
326
		return $protocoles['resultats'];
327
	}
327
	}
328
	
328
	
329
	private function getVotes($image){
329
	private function getVotes($image){
330
		$votes = [];
330
		$votes = [];
331
		
331
		
332
		$id = $image['id_photo'];
332
		$id = $image['id_photo'];
333
		
333
		
334
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
334
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
335
		$url = sprintf($this->service_del_url, 'images/'.$id.'/votes');
335
		$url = sprintf($this->service_del_url, 'images/'.$id.'/votes');
336
		
336
		
337
		$json = $this->getDao()->consulter($url);
337
		$json = $this->getDao()->consulter($url);
338
		
338
		
339
		if (empty($json)) {
339
		if (empty($json)) {
340
			$this->messages[] = "L'URI suivante est invalide : $url";
340
			$this->messages[] = "L'URI suivante est invalide : $url";
341
		} else {
341
		} else {
342
			foreach (json_decode($json, true)['resultats'] as $vote){
342
			foreach (json_decode($json, true)['resultats'] as $vote){
343
				$votes[] = $vote;
343
				$votes[] = $vote;
344
			}
344
			}
345
		}
345
		}
346
		
346
		
347
		return $votes;
347
		return $votes;
348
	}
348
	}
349
 
349
 
350
	public function sendVote(){
350
	public function sendVote(){
351
		$data = json_decode(file_get_contents('php://input'), true);
351
		$data = json_decode(file_get_contents('php://input'), true);
352
		
352
		
353
		$id = $data['idImage'];
353
		$id = $data['idImage'];
354
		$mode = $data['mode'];
354
		$mode = $data['mode'];
355
		$contenu = [
355
		$contenu = [
356
			'utilisateur' => $data['user'],
356
			'utilisateur' => $data['user'],
357
			'protocole' => $data['protocole'],
357
			'protocole' => $data['protocole'],
358
			'valeur' => $data['vote']
358
			'valeur' => $data['vote']
359
		];
359
		];
360
		
360
		
361
		switch ($mode){
361
		switch ($mode){
362
			case 'PUT':
362
			case 'PUT':
363
			case 'POST':
363
			case 'POST':
364
				$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
364
				$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
365
				$url = sprintf($this->service_del_url, 'images/'.$id.'/votes/');
365
				$url = sprintf($this->service_del_url, 'images/'.$id.'/votes/');
366
				$this->send($url, $mode, $contenu);
366
				$this->send($url, $mode, $contenu);
367
				break;
367
				break;
368
			case 'DELETE':
368
			case 'DELETE':
369
				$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
369
				$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
370
				$url = sprintf($this->service_del_url, 'images/'.$id.'/votes/'.$data['voteId']);
370
				$url = sprintf($this->service_del_url, 'images/'.$id.'/votes/'.$data['voteId']);
371
				$this->send($url, $mode, $contenu);
371
				$this->send($url, $mode, $contenu);
372
				break;
372
				break;
373
		}
373
		}
374
	}
374
	}
375
	
375
	
376
	public function send($url, $mode, Array $donnees = array()){
376
	public function send($url, $mode, Array $donnees = array()){
377
		$contenu = false;
377
		$contenu = false;
378
		$this->user = $this->getUserFromCookie();
378
		$this->user = $this->getUserFromCookie();
379
		$authorizationToken = $this->user['token'];
379
		$authorizationToken = $this->user['token'];
380
 
380
 
381
		$json = json_encode($donnees);
381
		$json = json_encode($donnees);
382
		$contexte = stream_context_create([
382
		$contexte = stream_context_create([
383
			  'http' => [
383
			  'http' => [
384
				  'method' => $mode,
384
				  'method' => $mode,
385
				  'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
385
				  'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
386
					  "Authorization: $authorizationToken\r\n",
386
					  "Authorization: $authorizationToken\r\n",
387
				  'content' => http_build_query($donnees, null, '&')]
387
				  'content' => http_build_query($donnees, null, '&')]
388
										  ]);
388
										  ]);
389
		$flux = fopen($url, 'r', false, $contexte);
389
		$flux = fopen($url, 'r', false, $contexte);
390
		if (!$flux) {
390
		if (!$flux) {
391
			$e = "L'ouverture de l'url '{$url}' par la méthode HTTP {$mode} a échoué! avec les données {$json} et le token {$authorizationToken}";
391
			$e = "L'ouverture de l'url '{$url}' par la méthode HTTP {$mode} a échoué! avec les données {$json} et le token {$authorizationToken}";
392
			trigger_error($e, E_USER_WARNING);
392
			trigger_error($e, E_USER_WARNING);
393
		} else {
393
		} else {
394
			// Contenu actuel de $url
394
			// Contenu actuel de $url
395
			$contenu = stream_get_contents($flux);
395
			$contenu = stream_get_contents($flux);
396
			
396
			
397
			fclose($flux);
397
			fclose($flux);
398
		}
398
		}
399
		return $contenu;
399
		return $contenu;
400
	}
400
	}
401
	
401
	
402
	public function formaterDate($item, $image){
402
	public function formaterDate($item, $image){
403
		$item['date_photo'] = $image['date_photo'] ?? $image['obs']['date_obs'];
403
		$item['date_photo'] = $image['date_photo'] ?? $image['obs']['date_obs'];
404
		$item['date_redige'] = strftime('%A %d %B %Y', strtotime($item['date_photo']));
404
		$item['date_redige'] = strftime('%A %d %B %Y', strtotime($item['date_photo']));
405
		$item['date'] = date_format(date_create($item['date_photo']),"d/m/Y");
405
		$item['date'] = date_format(date_create($item['date_photo']),"d/m/Y");
406
		$item['lien'] = sprintf($this->eflore_url_tpl, $image['obs']['nom_referentiel'], $image['obs']['nom_sel_nn']);
406
		$item['lien'] = sprintf($this->eflore_url_tpl, $image['obs']['nom_referentiel'], $image['obs']['nom_sel_nn']);
407
		$image['url_photo'] = preg_replace('/,/', "", $image['url_photo']);
407
		$image['url_photo'] = preg_replace('/,/', "", $image['url_photo']);
408
		$item['url_tpl'] = preg_replace('/(O|XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)$/', '%s.jpg',$image['url_photo']);
408
		$item['url_tpl'] = preg_replace('/(O|XS|[SML]|X(?:[23]|)L|CR(?:|X2)S|C(?:|X)S)$/', '%s.jpg',$image['url_photo']);
409
		return $item;
409
		return $item;
410
	}
410
	}
411
	
411
	
412
	public function formaterTitre($item, $image, $auteur){
412
	public function formaterTitre($item, $image, $auteur){
413
		$item['titre'] = $image['obs']['nom_sel'].' [nn'.$image['obs']['nom_sel_nn'].'] par '.$auteur.' le '
413
		$item['titre'] = $image['obs']['nom_sel'].' [nn'.$image['obs']['nom_sel_nn'].'] par '.$auteur.' le '
414
			.date_format(date_create($image['obs']['date_obs']),"d/m/Y").' - '.$image['obs']['localisation'];
414
			.date_format(date_create($image['obs']['date_obs']),"d/m/Y").' - '.$image['obs']['localisation'];
415
		
415
		
416
		$item['id_photo_formate'] = sprintf('%09d', $image['id_photo']);
416
		$item['id_photo_formate'] = sprintf('%09d', $image['id_photo']);
417
		$item['urlProfil'] = sprintf($this->config['photo']['tbProfilUrlTpl'], $image['utilisateur']['id_utilisateur'] );
417
		$item['urlProfil'] = sprintf($this->config['photo']['tbProfilUrlTpl'], $image['utilisateur']['id_utilisateur'] );
418
		return $item;
418
		return $item;
419
	}
419
	}
420
	
420
	
421
	private function getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox, $fromEflore,
421
	private function getImages($vignette, $extra, $limit, $id, $titre, $icone_rss, $utilise_fancybox, $fromEflore,
422
	$tag, $widget, $champ_recherche){
422
	$tag, $widget, $champ_recherche){
423
		if ($fromEflore){
423
		if ($fromEflore){
424
			$this->parametres['tag'] = $tag;
424
			$this->parametres['tag'] = $tag;
425
		}
425
		}
426
		list($colonne, $ligne) = explode(',', $vignette);
426
		list($colonne, $ligne) = explode(',', $vignette);
427
		$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true));
427
		$extra = (isset($extra) && $extra == 0) ? false : (!$this->config['photo']['extraActif'] ? false : ($colonne == 1 || $ligne == 1 ? false : true));
428
		
428
		
429
		$max_photo = $colonne * $ligne;
429
		$max_photo = $colonne * $ligne;
430
		if ( $extra && 2 == $colonne ) {
430
		if ( $extra && 2 == $colonne ) {
431
			$max_photo = $max_photo - 1;
431
			$max_photo = $max_photo - 1;
432
		} elseif (  $extra && 2 < $colonne ) {
432
		} elseif (  $extra && 2 < $colonne ) {
433
			$max_photo = $max_photo - 3;
433
			$max_photo = $max_photo - 3;
434
		}
434
		}
435
		
435
		
436
		$limit = $limit < $max_photo ? $limit : $max_photo;
436
		$limit = $limit < $max_photo ? $limit : $max_photo;
437
		$this->parametres['limit'] = $limit;
437
		$this->parametres['limit'] = $limit;
438
		$parametresTraites = $this->traiterParametres();
438
		$parametresTraites = $this->traiterParametres();
439
		$this->flux_rss_url .= $parametresTraites;
439
		$this->flux_rss_url .= $parametresTraites;
440
		$url = $this->service_images_url.(!empty($parametresTraites) ? $parametresTraites.'&' : '?');
440
		$url = $this->service_images_url.(!empty($parametresTraites) ? $parametresTraites.'&' : '?');
441
		$json = $this->getDao()->consulter($url);
441
		$json = $this->getDao()->consulter($url);
442
		if ($fromEflore) {
442
		if ($fromEflore) {
443
			unset($this->parametres['tag']);
443
			unset($this->parametres['tag']);
444
		}
444
		}
445
		if (empty($json) || !strpos($json,'images') ) {
445
		if (empty($json) || !strpos($json,'images') ) {
446
			$this->messages[] = "L'URI suivante est invalide : $this->service_images_url.\n".
446
			$this->messages[] = "L'URI suivante est invalide : $this->service_images_url.\n".
447
				"Veuillez vérifier les paramêtres indiqués et la présence d'images associées.";
447
				"Veuillez vérifier les paramêtres indiqués et la présence d'images associées.";
448
			
448
			
449
		} else {
449
		} else {
450
			$tableau = json_decode($json, true);
450
			$tableau = json_decode($json, true);
451
//			print_r($tableau);
-
 
-
 
451
 
452
			if (empty($tableau['total']) || empty($tableau['images'])) {
452
			if (empty($tableau['total']) || empty($tableau['images'])) {
453
				$this->messages[] = 'Aucune photo ne correspond à vos critères';
453
				$this->messages[] = 'Aucune photo ne correspond à vos critères';
454
			} else {
454
			} else {
455
 
455
 
456
				$parametres_photo_suivante = $parametres_photo_precedente = $this->parametres;
456
				$parametres_photo_suivante = $parametres_photo_precedente = $this->parametres;
457
				$start = $this->parametres['start'] ? : 0;
457
				$start = $this->parametres['start'] ? : 0;
458
				$parametres_photo_suivante['start'] = $start + $limit;
458
				$parametres_photo_suivante['start'] = $start + $limit;
459
				$parametres_photo_precedente['start'] = 0 < $start - $limit ? $start - $limit : 0;
459
				$parametres_photo_precedente['start'] = 0 < $start - $limit ? $start - $limit : 0;
460
				
460
				
461
				$widget['donnees']['total'] = $tableau['total'];
461
				$widget['donnees']['total'] = $tableau['total'];
462
				$widget['donnees']['id'] = $id;
462
				$widget['donnees']['id'] = $id;
463
				$widget['donnees']['titre'] = $titre;
463
				$widget['donnees']['titre'] = $titre;
464
				$widget['donnees']['flux_rss_url'] = $this->flux_rss_url;
464
				$widget['donnees']['flux_rss_url'] = $this->flux_rss_url;
465
				$widget['donnees']['url_widget'] = $this->url_widget;
465
				$widget['donnees']['url_widget'] = $this->url_widget;
466
				$widget['donnees']['url_widget_photos_suivantes'] = $this->url_widget.'?'.http_build_query($parametres_photo_suivante);
466
				$widget['donnees']['url_widget_photos_suivantes'] = $this->url_widget.'?'.http_build_query($parametres_photo_suivante);
467
				$widget['donnees']['url_widget_photos_precedente'] = $this->url_widget.'?'.http_build_query($parametres_photo_precedente);
467
				$widget['donnees']['url_widget_photos_precedente'] = $this->url_widget.'?'.http_build_query($parametres_photo_precedente);
468
				$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
468
				$widget['donnees']['url_css'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/css/');
469
				$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
469
				$widget['donnees']['url_js'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], 'modules/photo/squelettes/js/');
470
				$widget['donnees']['colonne'] = $colonne;
470
				$widget['donnees']['colonne'] = $colonne;
471
				$widget['donnees']['ligne'] = $ligne;
471
				$widget['donnees']['ligne'] = $ligne;
472
				$widget['donnees']['extra_actif'] = $extra;
472
				$widget['donnees']['extra_actif'] = $extra;
473
				$widget['donnees']['icone_rss'] = $icone_rss;
473
				$widget['donnees']['icone_rss'] = $icone_rss;
474
				$widget['donnees']['champ_recherche'] = $champ_recherche;
474
				$widget['donnees']['champ_recherche'] = $champ_recherche;
475
				$widget['donnees']['start'] = $start;
475
				$widget['donnees']['start'] = $start;
476
				$widget['donnees']['limit'] = $limit;
476
				$widget['donnees']['limit'] = $limit;
477
				$widget['donnees']['utilise_fancybox'] = $utilise_fancybox;
477
				$widget['donnees']['utilise_fancybox'] = $utilise_fancybox;
478
				$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod');
478
				$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] === 'prod');
479
				$widget['donnees']['filtres'] = $this->parametres;
479
				$widget['donnees']['filtres'] = $this->parametres;
480
				
480
				
481
				$num = 0;
481
				$num = 0;
482
				$galerie_id = md5(http_build_query($_GET));
482
				$galerie_id = md5(http_build_query($_GET));
483
				$widget['donnees']['galerie_id'] = $galerie_id;
483
				$widget['donnees']['galerie_id'] = $galerie_id;
484
				
484
				
485
				session_start();
485
				session_start();
486
				$_SESSION[$galerie_id]['max_photo'] = $max_photo;
486
				$_SESSION[$galerie_id]['max_photo'] = $max_photo;
487
				$_SESSION[$galerie_id]['start'] = $start;
487
				$_SESSION[$galerie_id]['start'] = $start;
488
				
488
				
489
				foreach ($tableau['images'] as $key => $image) {
489
				foreach ($tableau['images'] as $key => $image) {
490
					if ($key == $max_photo) {
490
					if ($key == $max_photo) {
491
						break;
491
						break;
492
					}
492
					}
-
 
493
					// On vérifie si l'auteur de la photo est un utilisateur tela
-
 
494
					$courriel = [$image['utilisateur']['mail_utilisateur']];
-
 
495
					$auteurId = $this->recupererUtilisateursIdentite($courriel)[$courriel[0]]['id'];
-
 
496
					$auteurId ? $isTelaUser = true : $isTelaUser = false;
493
					$auteurTruncatedEmail = $this->tronquerCourriel($image['utilisateur']['mail_utilisateur']);
497
					$auteurTruncatedEmail = $this->tronquerCourriel($image['utilisateur']['mail_utilisateur']);
-
 
498
 
494
					$auteur = trim($image['utilisateur']['nom_utilisateur']) ? $image['utilisateur']['nom_utilisateur'] : $auteurTruncatedEmail;
499
					$auteur = trim($image['utilisateur']['nom_utilisateur']) ? $image['utilisateur']['nom_utilisateur'] : $auteurTruncatedEmail;
495
					
500
					
496
					$item = $image;
501
					$item = $image;
497
					
502
					
498
					$item = $this->formaterDate($item, $image);
503
					$item = $this->formaterDate($item, $image);
499
				
504
				
500
					$item = $this->formaterTitre($item, $image, $auteur);
505
					$item = $this->formaterTitre($item, $image, $auteur);
501
					
506
					
502
					$item['tag_eflore'] = $tag;
507
					$item['tag_eflore'] = $tag;
-
 
508
 
503
					
509
					$item['is_auteur_tela'] = $isTelaUser;
504
					// Ajout aux items et si première photo à extra
510
					// Ajout aux items et si première photo à extra
505
					if ($key == 0) {
511
					if ($key == 0) {
506
						$widget['donnees']['extra'] =  $item;
512
						$widget['donnees']['extra'] =  $item;
507
					}
513
					}
508
					
514
					
509
					$widget['donnees']['items'][$tag][$num++] =  $item;
515
					$widget['donnees']['items'][$tag][$num++] =  $item;
510
					$url_galerie_popup = sprintf($item['url_tpl'],'O');
516
					$url_galerie_popup = sprintf($item['url_tpl'],'O');
511
					$image_size = getimagesize($url_galerie_popup);
517
					$image_size = getimagesize($url_galerie_popup);
512
					$item['width'] = $image_size[0];
518
					$item['width'] = $image_size[0];
513
					$item['height'] = $image_size[1];
519
					$item['height'] = $image_size[1];
514
					
520
 
515
					// Récupération des votes pictoflora
521
					// Récupération des votes pictoflora
516
					$item['votes'] = $this->getVotes($item);
522
					$item['votes'] = $this->getVotes($item);
517
					
523
					
518
					// Récupération des tags pictoflora
524
					// Récupération des tags pictoflora
519
					$item['tags_pf'] = $this->getPfTags($item);
525
					$item['tags_pf'] = $this->getPfTags($item);
520
					
526
					
521
					$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = $item;
527
					$_SESSION[$galerie_id]['infos_images'][$url_galerie_popup] = $item;
522
				}
528
				}
523
				
529
				
524
				$widget['squelette'] = 'photo';
530
				$widget['squelette'] = 'photo';
525
			}
531
			}
526
		}
532
		}
527
		
533
		
528
		return $widget;
534
		return $widget;
529
	}
535
	}
530
	
536
	
531
	private function getPfTags($image){
537
	private function getPfTags($image){
532
		$tags = [];
538
		$tags = [];
533
		
539
		
534
		$id = $image['id_photo'];
540
		$id = $image['id_photo'];
535
		
541
		
536
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
542
		$this->service_del_url = $this->config['chemins']['baseURLServicesDelTpl'];
537
		$url = sprintf($this->service_del_url, 'mots-cles?image='.$id);
543
		$url = sprintf($this->service_del_url, 'mots-cles?image='.$id);
538
		
544
		
539
		$json = $this->getDao()->consulter($url);
545
		$json = $this->getDao()->consulter($url);
540
		
546
		
541
		if (empty($json)) {
547
		if (empty($json)) {
542
			$this->messages[] = "L'URI suivante est invalide : $url";
548
			$this->messages[] = "L'URI suivante est invalide : $url";
543
		} else {
549
		} else {
544
			foreach (json_decode($json, true)['resultats'] as $tag){
550
			foreach (json_decode($json, true)['resultats'] as $tag){
545
				$tags[] = [
551
				$tags[] = [
546
					'id_mot_cle' => $tag['id_mot_cle'],
552
					'id_mot_cle' => $tag['id_mot_cle'],
547
					'mot_cle' => $tag['mot_cle']
553
					'mot_cle' => $tag['mot_cle']
548
				];
554
				];
549
			}
555
			}
550
		}
556
		}
551
		
557
		
552
		return $tags;
558
		return $tags;
553
	}
559
	}
554
}
560
}
555
?>
561
?>