Subversion Repositories eFlore/Applications.coel-consultation

Rev

Rev 154 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
15 jpm 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Modèle d'accès à la base de données des Collections pour le module Personnes.
5
 *
152 jpm 6
 * @package	Collection
15 jpm 7
 * @category	php 5.2
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	2010 Tela-Botanica
152 jpm 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
12
 * @version	SVN: $Id: PersonneDao.php 154 2010-09-13 12:15:11Z jpm $
15 jpm 13
 *
14
 */
152 jpm 15
class PersonneDao extends Dao {
19 jpm 16
	const SERVICE_PERSONNE = 'CoelPersonne';
55 jpm 17
	const SERVICE_PERSONNE_A_PUBLICATION = 'CoelPublicationAPersonne';
117 jpm 18
	const SERVICE_PERSONNE_A_COLLECTION = 'CoelCollectionAPersonne';
120 jpm 19
	const SERVICE_PERSONNE_A_STRUCTURE = 'CoelStructureAPersonne';
154 jpm 20
 
21
	private $cache = array();
15 jpm 22
 
23
	/**
24
	 * Retourne l'ensemble des information d'une personne.
25
	 *
26
	 * @param integer l'id de la personne.
27
	 * @return array un tableau contenant les informations sur la personne.
28
	 */
29
	public function getPersonne($id) {
62 jpm 30
		$donnees = array();
31
		if (is_numeric($id)) {
32
			$url = $this->url_jrest.self::SERVICE_PERSONNE."/$id";
152 jpm 33
			$json = $this->envoyerRequeteConsultation($url);
62 jpm 34
			$donnees = json_decode($json, true);
35
			if ($donnees['nbElements'] == 1) {
36
				$donnees = $donnees['personnes'][0];
37
			}
55 jpm 38
		}
15 jpm 39
		return $donnees;
40
	}
41
 
55 jpm 42
	/**
43
	 * Retourne l'ensemble des publications liées à une personne.
44
	 *
45
	 * @param integer l'id de la personne.
46
	 * @return array un tableau contenant les informations sur les publications liées à la personne.
47
	 */
152 jpm 48
	public function getPublicationsLiees($id_personne) {
49
		$donnees = $this->getPersonneAPublication($id_personne);
50
		return $donnees['publicationsAPersonne'];
51
	}
52
 
53
	/**
54
	 * Retourne le nombre des publications liées à une personne.
55
	 *
56
	 * @param integer l'id de la personne.
57
	 * @return integer le nombre de publications liées à la personne.
58
	 */
59
	public function getNbrePublicationsLiees($id_personne) {
60
		$donnees = $this->getPersonneAPublication($id_personne);
61
		return $donnees['nbElements'];
62
	}
63
 
64
	private function getPersonneAPublication($id_personne) {
154 jpm 65
		$cache =& $this->cache['PersonneAPublication'];
66
		if (isset($cache[$id_personne])) {
67
			$donnees = $cache[$id_personne];
68
		} else {
69
			$url = $this->url_jrest.self::SERVICE_PERSONNE_A_PUBLICATION."/*/$id_personne/2361,2362,2363";
70
			$json = $this->envoyerRequeteConsultation($url);
71
			$donnees = json_decode($json, true);
72
			$cache[$id_personne] = $donnees;
73
		}
152 jpm 74
		return $donnees;
55 jpm 75
	}
76
 
117 jpm 77
	/**
78
	 * Retourne l'ensemble des collections liées à une personne.
79
	 *
80
	 * @param integer l'id de la personne.
81
	 * @return array un tableau contenant les informations sur les collections liées à la personne.
82
	 */
154 jpm 83
	public function getCollectionsLiees($id_personne) {
84
		$donnees = $this->getPersonneACollection($id_personne);
117 jpm 85
		return $donnees['collectionsAPersonne'];
86
	}
87
 
120 jpm 88
	/**
154 jpm 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
	/**
120 jpm 114
	 * Retourne l'ensemble des structures liées à une personne.
115
	 *
116
	 * @param integer l'id de la personne.
117
	 * @return array un tableau contenant les informations sur les structures liées à la personne.
118
	 */
154 jpm 119
	public function getStructuresLiees($id_personne) {
120
		$donnees = $this->getPersonneAStructure($id_personne);
120 jpm 121
		return $donnees['structuresAPersonne'];
122
	}
123
 
154 jpm 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.
154
	 */
15 jpm 155
	public function getPersonneNomComplet($id) {
55 jpm 156
		$nom_complet = '';
15 jpm 157
		$donnees = $this->getPersonne($id);
55 jpm 158
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
159
			$nom_complet = $donnees['personnes'][0]['cp_fmt_nom_complet'];
160
		} else if (isset($donnees['cp_fmt_nom_complet'])) {
161
			$nom_complet = $donnees['cp_fmt_nom_complet'];
162
		}
15 jpm 163
		return $nom_complet;
164
	}
93 jpm 165
 
154 jpm 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.
171
	 */
93 jpm 172
	public function getPersonneCourriels($id) {
173
		$courriels = '';
174
		$donnees = $this->getPersonne($id);
175
		if (isset($donnees['nbElements']) && $donnees['nbElements'] >= 1) {
176
			$courriels = $donnees['personnes'][0]['cp_truk_courriel'];
177
		} else if (isset($donnees['cp_truk_courriel'])) {
178
			$courriels = $donnees['cp_truk_courriel'];
179
		}
180
		return $courriels;
181
	}
15 jpm 182
}
183
?>