Subversion Repositories eFlore/Applications.coel-consultation

Rev

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

Rev 154 Rev 215
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 le module Personnes.
4
 * Modèle d'accès à la base de données des Collections pour le module Personnes.
5
 *
5
 *
6
 * @package	Collection
6
 * @package	Collection
7
 * @category	php 5.2
7
 * @category	php 5.2
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	2010 Tela-Botanica
9
 * @copyright	2010 Tela-Botanica
10
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
11
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version	SVN: $Id: PersonneDao.php 154 2010-09-13 12:15:11Z jpm $
12
 * @version	SVN: $Id: PersonneDao.php 215 2014-05-14 07:57:28Z aurelien $
13
 *
13
 *
14
 */
14
 */
15
class PersonneDao extends Dao {
15
class PersonneDao extends Dao {
16
	const SERVICE_PERSONNE = 'CoelPersonne';
16
	const SERVICE_PERSONNE = 'CoelPersonne';
17
	const SERVICE_PERSONNE_A_PUBLICATION = 'CoelPublicationAPersonne';
17
	const SERVICE_PERSONNE_A_PUBLICATION = 'CoelPublicationAPersonne';
18
	const SERVICE_PERSONNE_A_COLLECTION = 'CoelCollectionAPersonne';
18
	const SERVICE_PERSONNE_A_COLLECTION = 'CoelCollectionAPersonne';
19
	const SERVICE_PERSONNE_A_STRUCTURE = 'CoelStructureAPersonne';
19
	const SERVICE_PERSONNE_A_STRUCTURE = 'CoelStructureAPersonne';
20
	
20
	
21
	private $cache = array();
21
	private $cache = array();
22
 
22
 
23
	/**
23
	/**
24
	 * Retourne l'ensemble des information d'une personne.
24
	 * Retourne l'ensemble des information d'une personne.
25
	 * 
25
	 * 
26
	 * @param integer l'id de la personne.
26
	 * @param integer l'id de la personne.
27
	 * @return array un tableau contenant les informations sur la personne.
27
	 * @return array un tableau contenant les informations sur la personne.
28
	 */
28
	 */
29
	public function getPersonne($id) {
29
	public function getPersonne($id) {
30
		$donnees = array();
30
		$donnees = array();
31
		if (is_numeric($id)) {
31
		if (is_numeric($id)) {
32
			$url = $this->url_jrest.self::SERVICE_PERSONNE."/$id";
32
			$url = $this->url_jrest.self::SERVICE_PERSONNE."/$id";
33
			$json = $this->envoyerRequeteConsultation($url);
33
			$json = $this->envoyerRequeteConsultation($url);
34
			$donnees = json_decode($json, true);
34
			$donnees = json_decode($json, true);
35
			if ($donnees['nbElements'] == 1) {
35
			if ($donnees['nbElements'] == 1) {
36
				$donnees = $donnees['personnes'][0];
36
				$donnees = $donnees['personnes'][0];
37
			}
37
			}
38
		}
38
		}
39
		return $donnees;
39
		return $donnees;
40
	}
40
	}
41
	
41
	
42
	/**
42
	/**
43
	 * Retourne l'ensemble des publications liées à une personne.
43
	 * Retourne l'ensemble des publications liées à une personne.
44
	 * 
44
	 * 
45
	 * @param integer l'id de la personne.
45
	 * @param integer l'id de la personne.
46
	 * @return array un tableau contenant les informations sur les publications liées à la personne.
46
	 * @return array un tableau contenant les informations sur les publications liées à la personne.
47
	 */
47
	 */
48
	public function getPublicationsLiees($id_personne) {
48
	public function getPublicationsLiees($id_personne) {
49
		$donnees = $this->getPersonneAPublication($id_personne);
49
		$donnees = $this->getPersonneAPublication($id_personne);
50
		return $donnees['publicationsAPersonne'];
50
		return $donnees['publicationsAPersonne'];
51
	}
51
	}
52
	
52
	
53
	/**
53
	/**
54
	 * Retourne le nombre des publications liées à une personne.
54
	 * Retourne le nombre des publications liées à une personne.
55
	 * 
55
	 * 
56
	 * @param integer l'id de la personne.
56
	 * @param integer l'id de la personne.
57
	 * @return integer le nombre de publications liées à la personne.
57
	 * @return integer le nombre de publications liées à la personne.
58
	 */
58
	 */
59
	public function getNbrePublicationsLiees($id_personne) {
59
	public function getNbrePublicationsLiees($id_personne) {
60
		$donnees = $this->getPersonneAPublication($id_personne);
60
		$donnees = $this->getPersonneAPublication($id_personne);
61
		return $donnees['nbElements'];
61
		return $donnees['nbElements'];
62
	}
62
	}
63
	
63
	
64
	private function getPersonneAPublication($id_personne) {
64
	private function getPersonneAPublication($id_personne) {
65
		$cache =& $this->cache['PersonneAPublication'];
65
		$cache =& $this->cache['PersonneAPublication'];
66
		if (isset($cache[$id_personne])) {
66
		if (isset($cache[$id_personne])) {
67
			$donnees = $cache[$id_personne];
67
			$donnees = $cache[$id_personne];
68
		} else {
68
		} else {
69
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_PUBLICATION."/*/$id_personne/2361,2362,2363";
69
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_PUBLICATION."/*/$id_personne/";
70
			$json = $this->envoyerRequeteConsultation($url);
70
			$json = $this->envoyerRequeteConsultation($url);
71
			$donnees = json_decode($json, true);
71
			$donnees = json_decode($json, true);
72
			$cache[$id_personne] = $donnees;
72
			$cache[$id_personne] = $donnees;
73
		}
73
		}
74
		return $donnees;
74
		return $donnees;
75
	}
75
	}
76
	
76
	
77
	/**
77
	/**
78
	 * Retourne l'ensemble des collections liées à une personne.
78
	 * Retourne l'ensemble des collections liées à une personne.
79
	 * 
79
	 * 
80
	 * @param integer l'id de la personne.
80
	 * @param integer l'id de la personne.
81
	 * @return array un tableau contenant les informations sur les collections liées à la personne.
81
	 * @return array un tableau contenant les informations sur les collections liées à la personne.
82
	 */
82
	 */
83
	public function getCollectionsLiees($id_personne) {
83
	public function getCollectionsLiees($id_personne) {
84
		$donnees = $this->getPersonneACollection($id_personne);
84
		$donnees = $this->getPersonneACollection($id_personne);
85
		return $donnees['collectionsAPersonne'];
85
		return $donnees['collectionsAPersonne'];
86
	}
86
	}
87
	
87
	
88
	/**
88
	/**
89
	 * Retourne le nombre de collections liées à une personne.
89
	 * Retourne le nombre de collections liées à une personne.
90
	 * 
90
	 * 
91
	 * @param integer l'id de la personne.
91
	 * @param integer l'id de la personne.
92
	 * @return integer le nombre de collections liées à la personne.
92
	 * @return integer le nombre de collections liées à la personne.
93
	 */
93
	 */
94
	public function getNbreCollectionsLiees($id_personne) {
94
	public function getNbreCollectionsLiees($id_personne) {
95
		$donnees = $this->getPersonneACollection($id_personne);
95
		$donnees = $this->getPersonneACollection($id_personne);
96
		return $donnees['nbElements'];
96
		return $donnees['nbElements'];
97
	}
97
	}
98
	
98
	
99
	private function getPersonneACollection($id_personne) {
99
	private function getPersonneACollection($id_personne) {
100
		$cache =& $this->cache['PersonneACollection'];
100
		$cache =& $this->cache['PersonneACollection'];
101
		if (isset($cache[$id_personne])) {
101
		if (isset($cache[$id_personne])) {
102
			$donnees = $cache[$id_personne];
102
			$donnees = $cache[$id_personne];
103
		} else {
103
		} else {
104
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_COLLECTION."/*/*/$id_personne";
104
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_COLLECTION."/*/*/$id_personne";
105
			$this->addOrdre('cc_nom', self::ORDRE_ASCENDANT);
105
			$this->addOrdre('cc_nom', self::ORDRE_ASCENDANT);
106
			$json = $this->envoyerRequeteConsultation($url);
106
			$json = $this->envoyerRequeteConsultation($url);
107
			$donnees = json_decode($json, true);
107
			$donnees = json_decode($json, true);
108
			$cache[$id_personne] = $donnees;
108
			$cache[$id_personne] = $donnees;
109
		}
109
		}
110
		return $donnees;
110
		return $donnees;
111
	}
111
	}
112
	
112
	
113
	/**
113
	/**
114
	 * Retourne l'ensemble des structures liées à une personne.
114
	 * Retourne l'ensemble des structures liées à une personne.
115
	 * 
115
	 * 
116
	 * @param integer l'id de la personne.
116
	 * @param integer l'id de la personne.
117
	 * @return array un tableau contenant les informations sur les structures liées à la personne.
117
	 * @return array un tableau contenant les informations sur les structures liées à la personne.
118
	 */
118
	 */
119
	public function getStructuresLiees($id_personne) {
119
	public function getStructuresLiees($id_personne) {
120
		$donnees = $this->getPersonneAStructure($id_personne);
120
		$donnees = $this->getPersonneAStructure($id_personne);
121
		return $donnees['structuresAPersonne'];
121
		return $donnees['structuresAPersonne'];
122
	}
122
	}
123
	
123
	
124
	/**
124
	/**
125
	 * Retourne le nombre de structures liées à une personne.
125
	 * Retourne le nombre de structures liées à une personne.
126
	 * 
126
	 * 
127
	 * @param integer l'id de la personne.
127
	 * @param integer l'id de la personne.
128
	 * @return integer le nombre de structures liées à la personne.
128
	 * @return integer le nombre de structures liées à la personne.
129
	 */
129
	 */
130
	public function getNbreStructuresLiees($id_personne) {
130
	public function getNbreStructuresLiees($id_personne) {
131
		$donnees = $this->getPersonneAStructure($id_personne);
131
		$donnees = $this->getPersonneAStructure($id_personne);
132
		return $donnees['nbElements'];
132
		return $donnees['nbElements'];
133
	}
133
	}
134
	
134
	
135
	private function getPersonneAStructure($id_personne) {
135
	private function getPersonneAStructure($id_personne) {
136
		$cache =& $this->cache['PersonneAStructure'];
136
		$cache =& $this->cache['PersonneAStructure'];
137
		if (isset($cache[$id_personne])) {
137
		if (isset($cache[$id_personne])) {
138
			$donnees = $cache[$id_personne];
138
			$donnees = $cache[$id_personne];
139
		} else {
139
		} else {
140
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_STRUCTURE."/*/*/$id_personne";
140
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_STRUCTURE."/*/*/$id_personne";
141
			$this->addOrdre('cp_nom', self::ORDRE_ASCENDANT);
141
			$this->addOrdre('cp_nom', self::ORDRE_ASCENDANT);
142
			$json = $this->envoyerRequeteConsultation($url);
142
			$json = $this->envoyerRequeteConsultation($url);
143
			$donnees = json_decode($json, true);
143
			$donnees = json_decode($json, true);
144
			$cache[$id_personne] = $donnees;
144
			$cache[$id_personne] = $donnees;
145
		}
145
		}
146
		return $donnees;
146
		return $donnees;
147
	}
147
	}
148
	
148
	
149
	/**
149
	/**
150
	 * Retourne le nom complet d'une personne.
150
	 * Retourne le nom complet d'une personne.
151
	 * 
151
	 * 
152
	 * @param integer l'id de la personne.
152
	 * @param integer l'id de la personne.
153
	 * @return string le nom complet de la personne.
153
	 * @return string le nom complet de la personne.
154
	 */
154
	 */
155
	public function getPersonneNomComplet($id) {
155
	public function getPersonneNomComplet($id) {
156
		$nom_complet = '';
156
		$nom_complet = '';
157
		$donnees = $this->getPersonne($id);
157
		$donnees = $this->getPersonne($id);
158
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
158
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
159
			$nom_complet = $donnees['personnes'][0]['cp_fmt_nom_complet'];
159
			$nom_complet = $donnees['personnes'][0]['cp_fmt_nom_complet'];
160
		} else if (isset($donnees['cp_fmt_nom_complet'])) {
160
		} else if (isset($donnees['cp_fmt_nom_complet'])) {
161
			$nom_complet = $donnees['cp_fmt_nom_complet'];
161
			$nom_complet = $donnees['cp_fmt_nom_complet'];
162
		}
162
		}
163
		return $nom_complet;
163
		return $nom_complet;
164
	}
164
	}
165
	
165
	
166
	/**
166
	/**
167
	 * Retourne la chaine "truk" des courriels d'une personne.
167
	 * Retourne la chaine "truk" des courriels d'une personne.
168
	 * 
168
	 * 
169
	 * @param integer l'id de la personne.
169
	 * @param integer l'id de la personne.
170
	 * @return string la chaine "truk" des courriels de la personne.
170
	 * @return string la chaine "truk" des courriels de la personne.
171
	 */
171
	 */
172
	public function getPersonneCourriels($id) {
172
	public function getPersonneCourriels($id) {
173
		$courriels = '';
173
		$courriels = '';
174
		$donnees = $this->getPersonne($id);
174
		$donnees = $this->getPersonne($id);
175
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
175
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
176
			$courriels = $donnees['personnes'][0]['cp_truk_courriel'];
176
			$courriels = $donnees['personnes'][0]['cp_truk_courriel'];
177
		} else if (isset($donnees['cp_truk_courriel'])) {
177
		} else if (isset($donnees['cp_truk_courriel'])) {
178
			$courriels = $donnees['cp_truk_courriel'];
178
			$courriels = $donnees['cp_truk_courriel'];
179
		}
179
		}
180
		return $courriels;
180
		return $courriels;
181
	}
181
	}
182
}
182
}
183
?>
183
?>