Subversion Repositories eFlore/Applications.coel-consultation

Rev

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

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