Subversion Repositories eFlore/Applications.coel-consultation

Rev

Rev 195 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Modèle d'accès à la base de données des Collections pour la Recherche
5
 *
6
 * @package		Collection
7
 * @category	php5
8
 * @author		aurelien <aurelien@tela-botanica.org>
180 mathias 9
 * @author		mathias <mathias@tela-botanica.org>
7 jpm 10
 * @copyright	2010 Tela-Botanica
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version		SVN: $Id: RechercheDao.php 195 2014-01-22 13:29:20Z aurelien $
14
 *
15
 */
147 jpm 16
class RechercheDao extends Dao {
19 jpm 17
	const SERVICE = 'CoelRecherche';
180 mathias 18
 
19
	/** @deprecated retro-compatibilité */
20
	public function chercherStructureNbre($parametres) {
21
		return $this->chercherCollectionsNbre($parametres);
22
	}
23
	/** @deprecated retro-compatibilité */
24
	public function chercher($parametres) {
25
   		return $this->chercherCollections($parametres);
26
	}
27
 
28
	// recherche du nombre de collections : nouveau
29
	public function chercherCollectionsNbre($parametres) {
30
		$url = $this->construireUrlRechercheCollections('NombreCollections', $parametres, false);
31
   		$json = $this->envoyerRequeteConsultation($url);
32
   		$donnees = json_decode($json, true);
33
 
19 jpm 34
		return $donnees;
7 jpm 35
	}
180 mathias 36
 
37
	// recherche du nombre de personnes : nouveau
38
	public function chercherPersonnesNbre($parametres) {
39
		$url = $this->construireUrlRecherchePersonnes('NombrePersonnes', $parametres, false);
147 jpm 40
   		$json = $this->envoyerRequeteConsultation($url);
41
   		$donnees = json_decode($json, true);
180 mathias 42
 
7 jpm 43
		return $donnees;
180 mathias 44
	}
45
 
46
	// recherche de collections : nouveau
47
	public function chercherCollections($parametres) {
48
		$url = $this->construireUrlRechercheCollections('Collections', $parametres);
49
   		$json = $this->envoyerRequeteConsultation($url);
50
   		$donnees = json_decode($json, true);
51
 
52
		return $donnees;
53
	}
54
 
55
	// recherche de personnes : nouveau
56
	public function chercherPersonnes($parametres) {
57
		$url = $this->construireUrlRecherchePersonnes('Personnes', $parametres);
58
   		$json = $this->envoyerRequeteConsultation($url);
59
   		$donnees = json_decode($json, true);
60
 
61
		return $donnees;
62
	}
63
 
64
	// construit l'URL du service CoelRecherche pour obtenir des collections
65
	// Attention au nombre et à l'ordre des paramètres !
66
	private function construireUrlRechercheCollections($type, $parametres, $limitation = true) {
67
		return $this->construireUrlRecherche(
68
			$type,
69
			$parametres,
70
			$limitation,
195 aurelien 71
			array('mots', 'sci', 'bot', 'lieu-stockage', 'zg', 'p', 'pr', 'str-d', 'veg')
180 mathias 72
		);
73
	}
74
 
75
	// construit l'URL du service CoelRecherche pour obtenir des personnes
76
	// Attention au nombre et à l'ordre des paramètres !
77
	private function construireUrlRecherchePersonnes($type, $parametres, $limitation = true) {
78
		return $this->construireUrlRecherche(
79
			$type,
80
			$parametres,
81
			$limitation,
82
			array('nom-famille', 'adresse', 'date-vivant')
83
		);
84
	}
85
 
86
	// fabrique une URL pour le service CoelRecherche en collant les paramètres fournis (sinon "*")
87
	// dans l'ordre attendu par le service demandé ($type)
88
	private function construireUrlRecherche($type, $parametres, $limitation, $paramsAPasser) {
89
 
90
		$url = $this->url_jrest . self::SERVICE . '/' . $type;
91
 
92
		foreach ($paramsAPasser as $param_cle) {
20 jpm 93
			if (isset($parametres[$param_cle]) && $parametres[$param_cle] != '') {
193 mathias 94
				$valeur = rawurlencode(trim($parametres[$param_cle]));
20 jpm 95
				$url .= '/'.$valeur;
96
			} else {
97
				$url .= '/*';
98
			}
99
		}
100
		return $url;
101
   }
7 jpm 102
}
103
?>