Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1977 Rev 2157
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Permet d'ajouter un commentaire.
4
 * Permet d'ajouter un commentaire.
5
 *
5
 *
6
 * @category   DEL
6
 * @category   DEL
7
 * @package    Services
7
 * @package    Services
8
 * @subpackage Commentaires
8
 * @subpackage Commentaires
9
 * @version    0.1
9
 * @version    0.1
10
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
10
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
12
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
15
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
16
 */
16
 */
17
 
17
 
18
class AjouterCommentaire {
18
class AjouterCommentaire {
19
 
19
 
20
	private $conteneur;
20
	private $conteneur;
21
	private $navigation;
21
	private $navigation;
22
	private $bdd;
22
	private $bdd;
23
	private $parametres = array();
23
	private $parametres = array();
24
 
24
 
25
	private $mapping = array();
25
	private $mapping = array();
26
	private $erreurs = array();
26
	private $erreurs = array();
27
 
27
 
28
	public function __construct(Conteneur $conteneur) {
28
	public function __construct(Conteneur $conteneur) {
29
		$this->conteneur = $conteneur;
29
		$this->conteneur = $conteneur;
30
		$this->navigation =  $this->conteneur->getNavigation();
30
		$this->navigation =  $this->conteneur->getNavigation();
31
		$this->bdd = $this->conteneur->getBdd();
31
		$this->bdd = $this->conteneur->getBdd();
32
 
32
 
33
		$this->mapping = $this->conteneur->getParametreTableau('commentaires.mapping');
33
		$this->mapping = $this->conteneur->getParametreTableau('commentaires.mapping');
34
	}
34
	}
35
 
35
 
36
	public function ajouter($parametres) {
36
	public function ajouter($parametres) {
37
		$this->parametres = $parametres;
37
		$this->parametres = $parametres;
38
		$this->verifierParametres();
38
		$this->verifierParametres();
39
 
39
 
40
		$this->completerParametresUtilisateur();
40
		$this->completerParametresUtilisateur();
41
		$this->gererPropositionInitiale();
41
		$this->gererPropositionInitiale();
42
		// Dernière chance de rattachement au référentiel d'un nom 
42
		// Dernière chance de rattachement au référentiel d'un nom 
43
		// sans nn (cas du copier-coller ou bien de l'appli tierce
43
		// sans nn (cas du copier-coller ou bien de l'appli tierce
44
		// qui envoie des infos incomplètes)
44
		// qui envoie des infos incomplètes)
45
		$this->tenterEnrichissementTaxonomique();
45
		$this->tenterEnrichissementTaxonomique();
46
		$idCommentaireAjoute = $this->insererCommentaire();
46
		$idCommentaireAjoute = $this->insererCommentaire();
47
 
47
 
48
		// Mettre en forme le résultat et l'envoyer pour affichage
48
		// Mettre en forme le résultat et l'envoyer pour affichage
49
		$resultat = new ResultatService();
49
		$resultat = new ResultatService();
50
		$resultat->corps = array('id_commentaire' => $idCommentaireAjoute);
50
		$resultat->corps = array('id_commentaire' => $idCommentaireAjoute);
51
 
51
 
52
		return $resultat;
52
		return $resultat;
53
	}
53
	}
-
 
54
 
-
 
55
	/**
-
 
56
	 * Vérifie notamment que l'auteur du vote est désigné soit par un ID, soit
-
 
57
	 * par un triplet (nom, prénom, adresse courriel)
54
 
58
	 */
55
	private function verifierParametres() {
59
	private function verifierParametres() {
56
		if (!isset($this->parametres['observation'])) {
60
		if (!isset($this->parametres['observation'])) {
57
			$this->erreurs[] = "Impossible d'ajouter un commentaire sans identifiant d'observation (paramètre 'observation').";
61
			$this->erreurs[] = "Impossible d'ajouter un commentaire sans identifiant d'observation (paramètre 'observation').";
58
		}
62
		}
59
 
63
 
60
		if (!isset($this->parametres['auteur.id'])) {
64
		if (!isset($this->parametres['auteur.id'])) {
61
			$this->verifierParamsAuteurAnonyme();
65
			$this->verifierParamsAuteurAnonyme();
62
		}
66
		}
63
 
67
 
64
		$this->verifierParamsNonVide();
68
		$this->verifierParamsNonVide();
65
 
69
 
66
		if (isset($this->parametres['nom_sel_nn']) && !isset($this->parametres['nom_referentiel'])) {
70
		if (isset($this->parametres['nom_sel_nn']) && !isset($this->parametres['nom_referentiel'])) {
67
			$this->erreurs[] = "Si le paramètre «nom_sel_nn» est présent, le paramètre «nom_referentiel» doit l'être aussi.";
71
			$this->erreurs[] = "Si le paramètre «nom_sel_nn» est présent, le paramètre «nom_referentiel» doit l'être aussi.";
68
		}
72
		}
69
 
73
 
70
		if (!empty($this->erreurs)) {
74
		if (!empty($this->erreurs)) {
71
			$msg = "Erreur de configuration :\n".implode("\n\n", $this->erreurs);
75
			$msg = "Erreur de configuration :\n".implode("\n\n", $this->erreurs);
72
			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
76
			throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
73
		}
77
		}
74
	}
78
	}
75
 
79
 
76
	private function verifierParamsAuteurAnonyme() {
80
	private function verifierParamsAuteurAnonyme() {
77
		$paramsAuteur = array('auteur.nom', 'auteur.prenom', 'auteur.courriel');
81
		$paramsAuteur = array('auteur.nom', 'auteur.prenom', 'auteur.courriel');
78
		$paramsAuteurManquant = array();
82
		$paramsAuteurManquant = array();
79
		foreach ($paramsAuteur as $param) {
83
		foreach ($paramsAuteur as $param) {
80
			if (!isset($this->parametres[$param])) {
84
			if (!isset($this->parametres[$param])) {
81
				$paramsAuteurManquant[] = $param;
85
				$paramsAuteurManquant[] = $param;
82
			}
86
			}
83
		}
87
		}
84
 
88
 
85
		if (!empty($paramsAuteurManquant)) {
89
		if (!empty($paramsAuteurManquant)) {
86
			$msgAuteurTpl = "Si le parametre 'auteur.id' n'est pas utilisé, il est nécessaire d'indiquer les ".
90
			$msgAuteurTpl = "Si le parametre 'auteur.id' n'est pas utilisé, il est nécessaire d'indiquer les ".
87
			"nom (paramètre 'auteur.nom'), prénom (paramètre 'auteur.prenom') et courriel ".
91
			"nom (paramètre 'auteur.nom'), prénom (paramètre 'auteur.prenom') et courriel ".
88
			"(paramètre 'auteur.courriel') de l'auteur.\nLes paramètres suivant sont abscents : %s\n";
92
			"(paramètre 'auteur.courriel') de l'auteur.\nLes paramètres suivant sont abscents : %s\n";
89
			$this->erreurs[] = sprintf($msgAuteurTpl, implode(', ', $paramsAuteurManquant));
93
			$this->erreurs[] = sprintf($msgAuteurTpl, implode(', ', $paramsAuteurManquant));
90
		}
94
		}
91
	}
95
	}
92
 
96
 
93
	private function verifierParamsNonVide() {
97
	private function verifierParamsNonVide() {
94
		$paramsNonVide = array('nom_sel', 'nom_referentiel', 'nom_sel_nn');
98
		$paramsNonVide = array('nom_sel', 'nom_referentiel', 'nom_sel_nn');
95
		foreach ($paramsNonVide as $param) {
99
		foreach ($paramsNonVide as $param) {
96
			if (isset($this->parametres[$param]) && trim($this->parametres[$param]) == '' ) {
100
			if (isset($this->parametres[$param]) && trim($this->parametres[$param]) == '' ) {
97
				$this->erreurs[] = "S'il est présent le paramètre «$param» ne peut pas être vide.";
101
				$this->erreurs[] = "S'il est présent le paramètre «$param» ne peut pas être vide.";
98
			}
102
			}
99
		}
103
		}
100
	}
104
	}
-
 
105
 
-
 
106
	/**
-
 
107
	 * Si l'auteur du vote est désigné par un ID, va chercher ses nom, prénom, courriel;
-
 
108
	 * s'il est désigné par un triplet (nom, prénom, adresse courriel), va chercher son ID
101
 
109
	 */
102
	private function completerParametresUtilisateur() {
110
	private function completerParametresUtilisateur() {
103
		$utilisateur =  (isset($this->parametres['auteur.id'])) ? $this->obtenirUtilisateurAvecId() : $this->obtenirUtilisateurSansId();
111
		$utilisateur =  (isset($this->parametres['auteur.id'])) ? $this->obtenirUtilisateurAvecId() : $this->obtenirUtilisateurSansId();
104
		if ($utilisateur !== false) {
112
		if ($utilisateur != false) {
105
			foreach ($utilisateur as $param => $valeur) {
113
			foreach ($utilisateur as $param => $valeur) {
106
				$this->parametres[$param] = $valeur;
114
				$this->parametres[$param] = $valeur;
107
			}
115
			}
108
		}
116
		}
109
	}
117
	}
-
 
118
 
-
 
119
	/**
-
 
120
	 * On suppose que si l'utilisateur envoie sa proposition avec un ID, c'est
-
 
121
	 * qu'il est connu d'IP, donc qu'on trouvera ses coordonnées dans
-
 
122
	 * del_utilisateur_infos
-
 
123
	 * 
-
 
124
	 * @TODO valider cette hypothèse
110
 
125
	 */
111
	private function obtenirUtilisateurAvecId() {
126
	private function obtenirUtilisateurAvecId() {
112
		$auteurIdP = $this->bdd->proteger($this->parametres['auteur.id']);
127
		$auteurIdP = $this->bdd->proteger($this->parametres['auteur.id']);
113
		$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', courriel AS 'auteur.courriel' ".
128
		$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', courriel AS 'auteur.courriel' ".
114
			'FROM del_utilisateur '.
129
			'FROM del_utilisateur_infos '.
115
			"WHERE id_utilisateur = $auteurIdP ".
130
			"WHERE id_utilisateur = $auteurIdP ".
116
			' -- '.__FILE__.' : '.__LINE__;
131
			' -- '.__FILE__.' : '.__LINE__;
117
		$utilisateur = $this->bdd->recuperer($requete);
132
		$utilisateur = $this->bdd->recuperer($requete);
118
		return $utilisateur;
133
		return $utilisateur;
119
	}
134
	}
-
 
135
 
-
 
136
	/**
-
 
137
	 * Pour un utilisateur désigné par un triplet (nom, prenom, adresse courriel), demande
-
 
138
	 * son ID à l'annuaire - vue la base de données (2017-03-24), aucun tuple ne contient
-
 
139
	 * une adresse courriel sans contenir d'ID, mais beaucoup ne contiennent ni l'un ni
-
 
140
	 * l'autre (code stupide, tentative de correction ajd)
120
 
141
	 */
121
	private function obtenirUtilisateurSansId() {
142
	private function obtenirUtilisateurSansId() {
122
		$nomP = $this->bdd->proteger($this->parametres['auteur.nom']);
143
		$nomP = $this->bdd->proteger($this->parametres['auteur.nom']);
123
		$prenomP = $this->bdd->proteger($this->parametres['auteur.prenom']);
144
		$prenomP = $this->bdd->proteger($this->parametres['auteur.prenom']);
124
		$courrielP = $this->bdd->proteger($this->parametres['auteur.courriel']);
145
		$courrielP = $this->bdd->proteger($this->parametres['auteur.courriel']);
-
 
146
 
-
 
147
		// Si l'utilisateur s'est déjà connecté à DeL au moins une fois, on récupère ses
125
 
148
		// nom et prénom connus dans la base; on lui interdit d'usurper sa propre identité
126
		$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', ".
149
		$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', ".
127
			"courriel AS 'auteur.courriel' ".
150
			"courriel AS 'auteur.courriel' ".
128
			'FROM del_utilisateur '.
151
			'FROM del_utilisateur_infos '.
129
			"WHERE courriel = $courrielP AND nom = $nomP AND prenom = $prenomP ".
152
			"WHERE courriel = $courrielP ".
130
			' -- '.__FILE__.' : '.__LINE__;
153
			' -- '.__FILE__.' : '.__LINE__;
-
 
154
		$utilisateur = $this->bdd->recuperer($requete);
-
 
155
 
-
 
156
		// si l'utilisateur n'a pas été trouvé, on devrait aller le chercher dans
-
 
157
		// l'annuaire, au cas où il soit inscrit à TB mais ne se soit pas connecté
-
 
158
		// @TODO faire un appel au service annuaire/identite-par-courriel
131
		$utilisateur = $this->bdd->recuperer($requete);
159
 
132
		return $utilisateur;
160
		return $utilisateur;
133
	}
161
	}
134
 
162
 
135
	private function gererPropositionInitiale() {
163
	private function gererPropositionInitiale() {
136
		if ($this->verifierExistencePropositionInitiale() === false) {
164
		if ($this->verifierExistencePropositionInitiale() === false) {
137
			$this->creerPropositionInitiale();
165
			$this->creerPropositionInitiale();
138
			// TODO : en cas d'échec de la création de la proposition ajouter un log...
166
			// TODO : en cas d'échec de la création de la proposition ajouter un log...
139
		}
167
		}
140
	}
168
	}
141
 
169
 
142
	private function verifierExistencePropositionInitiale() {
170
	private function verifierExistencePropositionInitiale() {
143
		$idObsP =  $this->bdd->proteger($this->parametres['observation']);
171
		$idObsP =  $this->bdd->proteger($this->parametres['observation']);
144
		$requete = 'SELECT COUNT(*) >= 1 AS existe '.
172
		$requete = 'SELECT COUNT(*) >= 1 AS existe '.
145
			'FROM del_commentaire '.
173
			'FROM del_commentaire '.
146
			"WHERE ce_observation = $idObsP ".
174
			"WHERE ce_observation = $idObsP ".
147
			'	AND proposition_initiale = 1 '.
175
			'	AND proposition_initiale = 1 '.
148
			' -- '.__FILE__.' : '.__LINE__;
176
			' -- '.__FILE__.' : '.__LINE__;
149
		$resultat = $this->bdd->recuperer($requete);
177
		$resultat = $this->bdd->recuperer($requete);
150
		return $resultat['existe'] == 1;
178
		return $resultat['existe'] == 1;
151
	}
179
	}
152
 
180
 
153
	private function creerPropositionInitiale() {
181
	private function creerPropositionInitiale() {
154
		$idObsP =  $this->bdd->proteger($this->parametres['observation']);
182
		$idObsP =  $this->bdd->proteger($this->parametres['observation']);
-
 
183
 
155
		$requete = 'INSERT IGNORE INTO del_commentaire '.
184
		$requete = 'INSERT IGNORE INTO del_commentaire '.
156
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
185
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
157
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
186
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
158
			'SELECT id_observation, ce_utilisateur, prenom, nom, courriel, nom_sel, '.
187
			'SELECT id_observation, ce_utilisateur, prenom_utilisateur, nom_utilisateur, courriel_utilisateur, nom_sel, '.
159
			"IF(nom_sel_nn = 0, NULL, nom_sel_nn), IF(nom_ret = '', NULL, nom_ret), IF(nom_ret_nn = 0, NULL, nom_ret_nn), ".
188
			"IF(nom_sel_nn = 0, NULL, nom_sel_nn), IF(nom_ret = '', NULL, nom_ret), IF(nom_ret_nn = 0, NULL, nom_ret_nn), ".
160
			"IF(nt = 0, NULL, nt), IF(famille = '', NULL, famille), IF(nom_sel_nn = 0, NULL, nom_referentiel), NOW(), '1' ".
189
			"IF(nt = 0, NULL, nt), IF(famille = '', NULL, famille), IF(nom_sel_nn = 0, NULL, nom_referentiel), NOW(), '1' ".
161
			'FROM del_observation AS do '.
190
			'FROM del_observation AS do '.
162
			'	LEFT JOIN del_utilisateur AS du '.
-
 
163
			'		ON do.ce_utilisateur = du.id_utilisateur '.
-
 
164
			"WHERE id_observation = $idObsP ".
191
			"WHERE id_observation = $idObsP ".
165
			' -- '.__FILE__.' : '.__LINE__;
192
			' -- '.__FILE__.' : '.__LINE__;
-
 
193
 
166
		$resultat = $this->bdd->executer($requete);
194
		$resultat = $this->bdd->executer($requete);
-
 
195
 
167
		return $resultat;
196
		return $resultat;
168
	}
197
	}
169
 
198
 
170
	private function insererCommentaire() {
199
	private function insererCommentaire() {
171
		$champs = $this->creerEnteteChamps();
200
		$champs = $this->creerEnteteChamps();
172
		$values = $this->creerClauseValues();
201
		$values = $this->creerClauseValues();
173
		$requete = "INSERT INTO del_commentaire (date, $champs) VALUES (NOW(), $values) ".
202
		$requete = "INSERT INTO del_commentaire (date, $champs) VALUES (NOW(), $values) ".
174
			' -- '.__FILE__.' : '.__LINE__;
203
			' -- '.__FILE__.' : '.__LINE__;
175
 
204
 
176
		$retour = $this->bdd->executer($requete);
205
		$retour = $this->bdd->executer($requete);
177
		if ($retour == null) {
206
		if ($retour == null) {
178
			$msgTpl = "Erreur inopinée lors de l'insertion du commentaire lié à l'observation «%s».";
207
			$msgTpl = "Erreur inopinée lors de l'insertion du commentaire lié à l'observation «%s».";
179
			$msg = sprintf($msgTpl, $this->parametres['observation']);
208
			$msg = sprintf($msgTpl, $this->parametres['observation']);
180
			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
209
			throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
181
		}
210
		}
182
 
211
 
183
		$idCommentaire = $this->bdd->recupererIdDernierAjout();
212
		$idCommentaire = $this->bdd->recupererIdDernierAjout();
184
		return $idCommentaire;
213
		return $idCommentaire;
185
	}
214
	}
186
 
215
 
187
	private function creerEnteteChamps() {
216
	private function creerEnteteChamps() {
188
		return $this->creerSuiteChampsOuValeurs('champs');
217
		return $this->creerSuiteChampsOuValeurs('champs');
189
	}
218
	}
190
 
219
 
191
	private function creerClauseValues() {
220
	private function creerClauseValues() {
192
		return $this->creerSuiteChampsOuValeurs('valeurs');
221
		return $this->creerSuiteChampsOuValeurs('valeurs');
193
	}
222
	}
194
 
223
 
195
	private function creerSuiteChampsOuValeurs($mode) {
224
	private function creerSuiteChampsOuValeurs($mode) {
196
		$suite = array();
225
		$suite = array();
197
		foreach ($this->mapping as $nomChampBdd => $nomAttributSortie) {
226
		foreach ($this->mapping as $nomChampBdd => $nomAttributSortie) {
198
			if (isset($this->parametres[$nomAttributSortie]) && $this->parametres[$nomAttributSortie] != null) {
227
			if (isset($this->parametres[$nomAttributSortie]) && $this->parametres[$nomAttributSortie] != null) {
199
				if ($mode == 'valeurs') {
228
				if ($mode == 'valeurs') {
200
					$suite[] = $this->bdd->proteger($this->parametres[$nomAttributSortie]);
229
					$suite[] = $this->bdd->proteger($this->parametres[$nomAttributSortie]);
201
				} else if ($mode == 'champs') {
230
				} else if ($mode == 'champs') {
202
					$suite[] = $nomChampBdd;
231
					$suite[] = $nomChampBdd;
203
				} else {
232
				} else {
204
					$msg = "Erreur interne : mauvais paramètre passé à la méthode 'creerSuiteChampsOuValeurs'";
233
					$msg = "Erreur interne : mauvais paramètre passé à la méthode 'creerSuiteChampsOuValeurs'";
205
					throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
234
					throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
206
				}
235
				}
207
			}
236
			}
208
		}
237
		}
209
		return implode(', ', $suite);
238
		return implode(', ', $suite);
210
	}
239
	}
211
	
240
	
212
	private function tenterEnrichissementTaxonomique() {
241
	private function tenterEnrichissementTaxonomique() {
213
		if($this->commentaireEstPropositionSansNn()) {
242
		if($this->commentaireEstPropositionSansNn()) {
214
			// TODO: utiliser le référentiel de l'obs si celui-ci 
243
			// TODO: utiliser le référentiel de l'obs si celui-ci 
215
			// n'est pas fourni dans le commentaire et prendre le résultat
244
			// n'est pas fourni dans le commentaire et prendre le résultat
216
			// si celui-ci est unique
245
			// si celui-ci est unique
217
			$referentiel = $this->parametres['nom_referentiel'];
246
			$referentiel = $this->parametres['nom_referentiel'];
218
			$requete = urlencode($this->parametres['nom_sel']);
247
			$requete = urlencode($this->parametres['nom_sel']);
219
			
248
			
220
			$url = sprintf($this->conteneur->getParametre('nomstaxons.url_autocompletion_tpl'), $referentiel, $requete);
249
			$url = sprintf($this->conteneur->getParametre('nomstaxons.url_autocompletion_tpl'), $referentiel, $requete);
221
			$restClient = $this->conteneur->getRestClient();
250
			$restClient = $this->conteneur->getRestClient();
222
			// Un retour vide est possible (un cas normal où il n'y a pas de résultat)
251
			// Un retour vide est possible (un cas normal où il n'y a pas de résultat)
223
			// mais il fait planter le retour du service si on active l'affichage des erreurs
252
			// mais il fait planter le retour du service si on active l'affichage des erreurs
224
			// donc on passe sciemment les erreurs sous silence (car cette erreur n'en est pas une)
253
			// donc on passe sciemment les erreurs sous silence (car cette erreur n'en est pas une)
225
			$resultatJson = @$restClient->consulter($url);
254
			$resultatJson = @$restClient->consulter($url);
226
			$resultats = json_decode($resultatJson, true);
255
			$resultats = json_decode($resultatJson, true);
227
 
256
 
228
			// On ne fait l'affectation que si l'on est sur (donc si un seul résultat)
257
			// On ne fait l'affectation que si l'on est sur (donc si un seul résultat)
229
			if (isset($resultats['resultat']) && count($resultats['resultat']) == 1) {
258
			if (isset($resultats['resultat']) && count($resultats['resultat']) == 1) {
230
				$info = array_pop($resultats['resultat']);
259
				$info = array_pop($resultats['resultat']);
231
				$this->parametres['nom_sel_nn'] = $info['num_nom'];
260
				$this->parametres['nom_sel_nn'] = $info['num_nom'];
232
			}
261
			}
233
		}
262
		}
234
	}
263
	}
235
	
264
	
236
	private function commentaireEstPropositionSansNn() {
265
	private function commentaireEstPropositionSansNn() {
237
		// Pas besoin de tester si c'est vide, normalement verifierParametres 
266
		// Pas besoin de tester si c'est vide, normalement verifierParametres 
238
		// l'a déjà fait au-dessus
267
		// l'a déjà fait au-dessus
239
		return isset($this->parametres['nom_sel']) 
268
		return isset($this->parametres['nom_sel']) 
240
				&& isset($this->parametres['nom_referentiel']) 
269
				&& isset($this->parametres['nom_referentiel']) 
241
						&& !isset($this->parametres['nom_sel_nn']);
270
						&& !isset($this->parametres['nom_sel_nn']);
242
	}
271
	}
243
}
272
}