Subversion Repositories eFlore/Applications.coel-consultation

Rev

Rev 152 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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