Subversion Repositories eFlore/Applications.cel

Rev

Rev 1772 | Rev 1784 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1772 Rev 1780
Line 66... Line 66...
66
			return levenshtein($this->masque_recherche, $a[0]) >= levenshtein($this->masque_recherche, $b[0]);
66
			return levenshtein($this->masque_recherche, $a[0]) >= levenshtein($this->masque_recherche, $b[0]);
67
		}
67
		}
68
	}
68
	}
Line 69... Line 69...
69
	
69
	
70
	public function effectuerRequeteInfosComplementairesEtFormaterNom($numNom) {
-
 
71
		
70
	public function effectuerRequeteInfosComplementairesEtFormaterNom($numNom) {
72
		$resultat_infos_complementaires = (array)$this->effectuerRequeteInfosComplementairesSurNumNom($numNom);
71
		$resultat_infos_complementaires = (array)$this->effectuerRequeteInfosComplementairesSurNumNom($numNom);
73
		$retour_infos_complementaires = array();
72
		$retour_infos_complementaires = array();
74
		if (isset($resultat_infos_complementaires['nom_retenu_complet']) && $resultat_infos_complementaires['nom_retenu_complet'] != '') {
73
		if (isset($resultat_infos_complementaires['nom_retenu_complet']) && $resultat_infos_complementaires['nom_retenu_complet']) {
75
           	$retour_infos_complementaires=array(($this->supprimerBiblio($resultat_infos_complementaires['nom_retenu_complet'])));
74
           	$retour_infos_complementaires=array((self::supprimerBiblio($resultat_infos_complementaires['nom_retenu_complet'])));
Line 76... Line 75...
76
	    }
75
	    }
77
		
76
		
Line 94... Line 93...
94
		return $liste_genre_espece;
93
		return $liste_genre_espece;
95
	}
94
	}
Line 96... Line 95...
96
	
95
	
97
	private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) {
96
	private function effectuerRequeteUrlRecherche($nom_saisi, $stricte = true) {
98
		$url_recherche = $this->getUrlRechercheInfosComplementaires($nom_saisi, $stricte);
97
		$url_recherche = $this->getUrlRechercheInfosComplementaires($nom_saisi, $stricte);
99
		$resultat = @file_get_contents($url_recherche);
-
 
100
		$liste_genre_espece = array();
98
		$res = @json_decode(file_get_contents($url_recherche));
101
		if($resultat != '') {
99
		if(!$res) return NULL;
102
			$liste_genre_espece = $this->parserResultatRechercheTaxon($resultat);
-
 
103
		}
100
		$resultat = (array)$res->resultat;
104
		return $liste_genre_espece;
101
		return array_pop($resultat);
Line 105... Line 102...
105
	}
102
	}
106
	
103
	
107
	private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
104
	private function getUrlRechercheInfosComplementaires($nom_saisi, $stricte = true) {
Line 134... Line 131...
134
	
131
	
135
	private function estUnHybride($nom_saisi) {
132
	private function estUnHybride($nom_saisi) {
136
		return strpos($nom_saisi,'x ') === 0;
133
		return strpos($nom_saisi,'x ') === 0;
Line 137... Line -...
137
	}
-
 
138
	
-
 
139
	private function parserResultatRechercheTaxon($resultat) {
-
 
140
		$liste_genre_espece = array();
-
 
141
		$resultat = json_decode($resultat);
-
 
142
		if(is_object($resultat) && isset($resultat->resultat)) {
-
 
143
			foreach ($resultat->resultat as $id => $res) {
-
 
144
				$nom_complet = $res->{'nom_sci'}.' '.$res->auteur;
-
 
145
				$liste_genre_espece[] = array($id,$nom_complet);
-
 
146
			}
-
 
147
		}
-
 
148
		return $liste_genre_espece;
-
 
149
	}
-
 
150
	
-
 
151
	public function rechercherInformationsComplementairesSurNumNom($num_nom) {
-
 
152
		$infos_formatees = array();
-
 
153
		$infos = $this->effectuerRequeteInfosComplementairesSurNumNom($num_nom);
-
 
154
		if(is_object($infos)) {
-
 
155
			$infos_formatees = $this->formaterInfosComplementairesSurNumNom($infos);
-
 
156
		}
-
 
157
		return $infos_formatees;
-
 
158
	}
134
	}
159
	
-
 
160
	public function effectuerRequeteInfosComplementairesSurNumNom($num_nom) {
135
	
161
		$infos = array();		
-
 
162
		$url = $this->url_service_nom.'/'.$num_nom.'?retour.champs=nom_sci,auteur,id,nom_retenu_complet,nom_retenu.id,num_taxonomique,famille';
-
 
163
		$resultat = @file_get_contents($url);
-
 
164
		if($resultat != '') {
-
 
165
			$infos = json_decode($resultat);
-
 
166
		}
-
 
167
		return $infos;
-
 
168
	}
-
 
169
	
-
 
170
	private function formaterInfosComplementairesSurNumNom($infos) {
-
 
171
		$infos = (array)$infos;
-
 
172
		return $infos_formatees = array(
-
 
173
			'Nom_Retenu' => $this->supprimerBiblio($infos['nom_retenu_complet']),
-
 
174
			'Num_Nom_Retenu' => $infos['nom_retenu.id'],
-
 
175
			'Num_Taxon' => $infos['num_taxonomique'],
-
 
176
			'Famille' => $infos['famille']
-
 
177
		);
136
	public function effectuerRequeteInfosComplementairesSurNumNom($num_nom) {
178
		return $infos_formatees;
137
		return @json_decode(file_get_contents($this->url_service_nom.'/'.$num_nom.'?retour.champs=nom_sci,auteur,id,nom_retenu_complet,nom_retenu.id,num_taxonomique,famille'));
179
	}
138
	}
180
	
139
 
181
	private function supprimerBiblio($nom) {
140
	static function supprimerBiblio($nom) {
Line 182... Line 141...
182
		return preg_replace('/ \[.*\]/','',$nom);
141
		return preg_replace('/ \[.*\]/','',$nom);
183
	}
142
	}
Line 206... Line 165...
206
		}
165
		}
207
		return $presence_taxon;
166
		return $presence_taxon;
208
	}
167
	}
Line 209... Line 168...
209
	
168
	
210
	public function effectuerRequeteInfosComplementairesSurNumTax($numTax) {
-
 
211
		
-
 
212
		$infos = array();
169
	public function effectuerRequeteInfosComplementairesSurNumTax($numTax) {
213
		//TODO: retourner moins de champs grâce au paramètre retour.champs
170
		//TODO: retourner moins de champs grâce au paramètre retour.champs
214
		$url = $this->url_service_taxon."/nt:".$numTax;
-
 
215
		$resultat = @file_get_contents($url);
-
 
216
		if($resultat != '') {
-
 
217
			$infos = json_decode($resultat);
-
 
218
		}
-
 
219
 
-
 
220
		return $infos;
171
		return @json_decode(file_get_contents($this->url_service_taxon."/nt:".$numTax));
221
	}
-
 
222
	
-
 
223
	function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) {
-
 
224
		// texte libre, nom scientifique, 
-
 
225
		// ou code nomenclatural (format BDNFFnn999999) 
-
 
Line 226... Line 172...
226
		// ou code taxonomique (format BDNFFnt999999)
172
	}
-
 
173
 
-
 
174
	/* texte libre, nom scientifique, 
227
 
175
	   ou code nomenclatural (format BDNFFnn999999) 
-
 
176
	   ou code taxonomique (format BDNFFnt999999)
228
		$retour = array();
177
	   TODO: voir ce qu'on fait pour l'import de différent référentiels */
229
		//TODO: voir ce qu'on fait pour l'import de différent référentiels
-
 
230
		preg_match('/BDNFFnn(\d+)/',$identifiant_espece, $elements);
178
	function rechercherInfosSurTexteCodeOuNumTax($identifiant_espece) {
231
		if (isset($elements[1])) {
179
		preg_match('/BDNFFnn(\d+)/',$identifiant_espece, $elements);
232
			// Numero nomenclatural
180
		// Numero nomenclatural
233
			$infos_taxon = $this->rechercherInformationsComplementairesSurNumNom($elements[1]);
181
		if (isset($elements[1]))
234
			$retour = array("nom_sel" => $infos_taxon['Nom_Retenu'], "en_id_nom" => $elements[1]);
182
			return $this->effectuerRequeteInfosComplementairesSurNumNom($elements[1]);
235
		} else { 
183
 
236
			//  Numero taxonomique ou nom scientifique
-
 
237
			preg_match('/BDNFFnt(\d+)/', $identifiant_espece, $elements);
184
		//  Numero taxonomique ou nom scientifique
238
			if (isset($elements[1])) {
-
 
239
				// Numero taxonomique
-
 
240
				$infos_taxon = (array)$this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
-
 
241
				if(isset($infos_taxon['nom_retenu.libelle']) && isset($infos_taxon['id'])) {
-
 
242
					$nom = $infos_taxon['nom_retenu.libelle'];
-
 
243
					$nom .= (isset($infos_taxon['auteur'])) ? ' '.$infos_taxon['auteur'] : '';
-
 
244
					$retour = array("nom_sel" => $nom, 
-
 
245
									"en_id_nom" => $infos_taxon['id']);
-
 
246
				}
185
		preg_match('/BDNFFnt(\d+)/', $identifiant_espece, $elements);
247
			} else { 
186
		// Numero taxonomique
248
				// Nom scientifique
-
 
249
				$id_nom = $this->rechercherInformationsComplementairesSurNom($identifiant_espece);
-
 
250
				// Recherche du nom associe
-
 
251
				$retour = array("nom_sel" => $identifiant_espece);
-
 
252
				if(is_array($id_nom) && count($id_nom) > 0 && isset($id_nom[0][0]) && isset($id_nom[0][1])) {
-
 
253
					$nn = $id_nom[0][0];
-
 
254
					$retour = array("nom_sel" => $id_nom[0][1], "en_id_nom" => $id_nom[0][0]);
-
 
255
				}
-
 
256
			}
187
		if (isset($elements[1]))
257
		}
188
			return $this->effectuerRequeteInfosComplementairesSurNumTax($elements[1]);
258
		
-
 
259
		return $retour;
-
 
260
	}
-
 
261
	
189
 
262
	private function getUrlRechercheSynonymes($num_nom) {
190
		// Nom scientifique
Line 263... Line 191...
263
		return $this->url_service_nom.'/'.$num_nom.'/relations/synonymie/?retour.format=min';
191
		return $this->rechercherInformationsComplementairesSurNom($identifiant_espece);
264
	}
192
	}
265
	
193
	
266
	public function rechercherSynonymesSurNumNom($num_nom) {
194
	public function rechercherSynonymesSurNumNom($num_nom) {
267
		$retour = array();
195
		$retour = array();
268
		$resultat = @file_get_contents($this->getUrlRechercheSynonymes($num_nom));
196
		$resultat = @file_get_contents($this->url_service_nom.'/'.$num_nom.'/relations/synonymie/?retour.format=min');
269
		if($resultat != '') {
197
		if($resultat != '') {
270
			$resultat = json_decode($resultat);
198
			$resultat = json_decode($resultat);