Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2459 Rev 2462
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
// declare(encoding='UTF-8');
2
/**
3
/**
3
 * PHP Version 5
4
 * Classe recherchant des infos sur un taxon.
4
 *
5
 *
5
 * @category  PHP
-
 
6
 * @package	  jrest
-
 
7
 * @author	  David Delon <david@tela-botania.org>
-
 
8
 * @author	  Aurélien Peronnet <aurelien@tela-botania.org>
-
 
9
 * @copyright 2010 Tela-Botanica
-
 
10
 * @license	  http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
6
 * Elle appelle les web service d'eflore pour éviter que le code client ne soit dépendant de la BDD d'eFlore.
11
 * @version	  SVN: <svn_id>
-
 
12
 * @link	  /doc/jrest/
-
 
13
 */
-
 
14
 
-
 
15
/**
-
 
16
 *
7
 *
-
 
8
 * @internal   Mininum PHP version : 5.2
-
 
9
 * @category   CEL
-
 
10
 * @package    Services
-
 
11
 * @subpackage Bibliothèques
-
 
12
 * @version    0.1
-
 
13
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
-
 
14
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
15
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
-
 
16
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
17
 * La classe appelle les web service d'eflore pour éviter que le code client
17
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
18
 * ne soit dépendant de la version d'eflore
18
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
19
 */
19
 */
20
class RechercheInfosTaxonBeta extends Cel {
20
class RechercheInfosTaxonBeta extends Cel {
Line 21... Line 21...
21
 
21
 
Line 30... Line 30...
30
 
30
 
31
	// initialisé à TRUE par rechercherInfosSurTexteCodeOuNumTax()
31
	// initialisé à TRUE par rechercherInfosSurTexteCodeOuNumTax()
32
	// si l'espèce passée a le motif <ref>:(nt|nn):<num>, eg: isfan:nt:1591
32
	// si l'espèce passée a le motif <ref>:(nt|nn):<num>, eg: isfan:nt:1591
Line 33... Line 33...
33
	public $is_notation_spe = FALSE;
33
	public $is_notation_spe = FALSE;
34
 
34
 
35
    // un cache utilisé pour les requêtes effectuées sur /service:eflore:0.1/bdtfx/noms?masque=
35
	// un cache utilisé pour les requêtes effectuées sur /service:eflore:0.1/bdtfx/noms?masque=
Line 36... Line 36...
36
    // qui sont lourdes, et parfois identiques (cf cas de l'import XLS)
36
	// qui sont lourdes, et parfois identiques (cf cas de l'import XLS)
37
    static $cache = array();
37
	static $cache = array();
38
 
38
 
39
	public function RechercheInfosTaxonBeta($config, $code_referentiel = 'bdtfx') {
39
	public function RechercheInfosTaxonBeta($config, $code_referentiel = 'bdtfx') {
Line 40... Line 40...
40
		parent::__construct($config);
40
		parent::__construct($config);
41
        $this->setReferentiel($code_referentiel);
41
		$this->setReferentiel($code_referentiel);
42
    }
42
	}
43
 
43
 
Line 44... Line 44...
44
    public function setReferentiel($code_referentiel = 'bdtfx') {
44
	public function setReferentiel($code_referentiel = 'bdtfx') {
Line 117... Line 117...
117
 
117
 
118
		return $liste_genre_espece;
118
		return $liste_genre_espece;
Line 119... Line 119...
119
	}
119
	}
120
 
120
 
121
	private function effectuerRequeteUrlRecherche($nom_saisi, $mode = 'stricte') {
121
	private function effectuerRequeteUrlRecherche($nom_saisi, $mode = 'stricte') {
122
        $url = sprintf(
122
		$url = sprintf(
123
            '%1$s?masque=%2$s&recherche=%3$s&ns.format=txt&retour.champs=%4$s&navigation.limite=1',
123
			'%1$s?masque=%2$s&recherche=%3$s&ns.format=txt&retour.champs=%4$s&navigation.limite=1',
124
            $this->url_service_nom,
124
			$this->url_service_nom,
125
            urlencode($nom_saisi),
125
			urlencode($nom_saisi),
Line 126... Line 126...
126
            $mode,
126
			$mode,
127
            implode(',', array("id","nom_sci","auteur","nom_retenu.id","famille","num_taxonomique","nom_retenu_complet")));
127
			implode(',', array("id","nom_sci","auteur","nom_retenu.id","famille","num_taxonomique","nom_retenu_complet")));
128
 
128
 
129
		if(! array_key_exists($url, self::$cache)) {
129
		if(! array_key_exists($url, self::$cache)) {
130
            if(self::DEBUG) error_log("CEL fetch: " . $url);
130
			if(self::DEBUG) error_log("CEL fetch: " . $url);
131
            $res = @json_decode(file_get_contents($url));
131
			$res = @json_decode(file_get_contents($url));
132
            self::$cache[$url] = $res;
132
			self::$cache[$url] = $res;
133
        } else {
133
		} else {
134
            $res = self::$cache[$url];
134
			$res = self::$cache[$url];
135
        }
135
		}
136
		if(!$res) return NULL;
136
		if(!$res) return NULL;