Subversion Repositories Applications.referentiel

Rev

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

Rev 168 Rev 204
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe Controleur du module Fiche Taxon.
4
 * Classe Controleur du module Fiche Taxon.
5
 *
5
 *
6
 * @category	Php 5.2
6
 * @category	Php 5.2
7
 * @package		Taxon
7
 * @package		Taxon
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: Fiche.php 96 2010-06-21 16:46:31Z jpm $
12
 * @version		SVN: $Id: Fiche.php 96 2010-06-21 16:46:31Z jpm $
13
 */
13
 */
14
class FicheTaxon extends AppliControleur {
14
class FicheTaxon extends AppliControleur {
15
	
15
	
16
	private $donnees = array();
16
	private $donnees = array();
17
	protected $taxonDao = null;
17
	protected $taxonDao = null;
18
	private $tableau_manuel = null;
18
	private $tableau_manuel = null;
19
	private $num_taxon = array(0=>0,1=>0,2=>0);
19
	private $num_taxon = array(0=>0,1=>0,2=>0);
20
	
20
	
21
	//+----------------------------------------------------------------------------------------------------------------+
21
	//+----------------------------------------------------------------------------------------------------------------+
22
	// Méthodes
22
	// Méthodes
23
	/**
23
	/**
24
	 * Fonction d'affichage par défaut
24
	 * Fonction d'affichage par défaut
25
	 */
25
	 */
26
	public function executerActionParDefaut() {
26
	public function executerActionParDefaut() {
27
		return $this->afficherTaxon();
27
		return $this->afficherTaxon();
28
	}
28
	}
29
	
29
	
30
	// +---------------------------------------------------------------------------------------------------------------+
30
	// +---------------------------------------------------------------------------------------------------------------+
31
	// FICHE CONSULTATION TAXON
31
	// FICHE CONSULTATION TAXON
32
	public function afficherTaxon() {
32
	public function afficherTaxon() {
33
		// Récupération du référentiel
33
		// Récupération du référentiel
34
		if (isset($_GET['ref'])) { 
34
		if (isset($_GET['ref'])) { 
35
			$this->referentiel = strtolower($_GET['ref']);
35
			$this->referentiel = strtolower($_GET['ref']);
36
		}
36
		}
37
		// Gestion des actions par défaut
37
		// Gestion des actions par défaut
38
		$this->taxonDao = new TaxonDao();
38
		$this->taxonDao = new TaxonDao();
39
		$this->definirCommeModulePrincipal(get_class($this));
39
		$this->definirCommeModulePrincipal(get_class($this));
40
		$this->construireMenu($this->referentiel);
40
		$this->construireMenu($this->referentiel);
41
		$this->construireFilAriane($this->referentiel);
41
		$this->construireFilAriane($this->referentiel);
42
		$this->executerActionReferentiel('Recherche', 'chargerMoteurRecherche', $this->referentiel, 10);
42
		$this->executerActionReferentiel('Recherche', 'chargerMoteurRecherche', $this->referentiel, 10);
43
		
43
		
44
		// Gestion des données de la requête
44
		// Gestion des données de la requête
45
		if (!isset($_GET['num_nom'])) {
45
		if (!isset($_GET['num_nom'])) {
46
			
46
			
47
		} else {
47
		} else {
48
			// Récupération des données
48
			// Récupération des données
49
			$this->donnees['referentiel'] = $this->referentiel;
49
			$this->donnees['referentiel'] = $this->referentiel;
50
			$this->donnees['num_nom'] = $_GET['num_nom'];
50
			$this->donnees['num_nom'] = $_GET['num_nom'];
51
			$this->donnees['info'] = $this->taxonDao->getTaxon($this->referentiel, $this->donnees['num_nom']);
51
			$this->donnees['info'] = $this->taxonDao->getTaxon($this->referentiel, $this->donnees['num_nom']);
52
			$this->donnees['num_nom_retenu'] = $this->donnees['info']['num_nom_retenu'];
52
			$this->donnees['num_nom_retenu'] = $this->donnees['info']['num_nom_retenu'];
53
			$this->donnees['nom'] = $this->donnees['info']['nom_sci'];
53
			$this->donnees['nom'] = $this->donnees['info']['nom_sci'];
-
 
54
			$this->donnees['exclu_taxref'] = $this->donnees['info']['exclure_taxref'];
54
			
55
			
55
			if ($this->donnees['info'] != '') {
56
			if ($this->donnees['info'] != '') {
56
				// Chargement des données des onglets
57
				// Chargement des données des onglets
57
				$this->chargerNomenclature();
58
				$this->chargerNomenclature();
58
				$this->chargerSynonymie();
59
				$this->chargerSynonymie();
59
				$this->chargerClassification();
60
				$this->chargerClassification();
60
				$this->chargerChorologie();
61
				$this->chargerChorologie();
61
				$this->chargerComplements();
62
				$this->chargerComplements();
62
			}
63
			}
63
			
64
			
64
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
65
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
65
		}
66
		}
66
	}
67
	}
67
	
68
	
68
	private function chargerNomenclature() {
69
	private function chargerNomenclature() {
69
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
70
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
70
		if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
71
		if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
71
			$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
72
			$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
72
		} 
73
		} 
73
		if ($this->donnees['info']['hybride_parent_01'] != '' && $this->donnees['info']['hybride_parent_02'] != '') {
74
		if ($this->donnees['info']['hybride_parent_01'] != '' && $this->donnees['info']['hybride_parent_02'] != '') {
74
			$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
75
			$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
75
		} elseif ($this->donnees['info']['hybride_parent_01'] != '' || $this->donnees['info']['hybride_parent_02'] != ''){
76
		} elseif ($this->donnees['info']['hybride_parent_01'] != '' || $this->donnees['info']['hybride_parent_02'] != ''){
76
			$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
77
			$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
77
		}
78
		}
78
	}
79
	}
79
	
80
	
80
	// recherche les synonymes (à compléter)
81
	// recherche les synonymes (à compléter)
81
	private function chargerSynonymie() {
82
	private function chargerSynonymie() {
82
		$rechercheDao = new RechercheDao();
83
		$rechercheDao = new RechercheDao();
83
		// recherche des synonymes nomenclaturaux et taxonomiques
84
		// recherche des synonymes nomenclaturaux et taxonomiques
84
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
85
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
85
		$parametres['ref']= $this->referentiel;
86
		$parametres['ref']= $this->referentiel;
86
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres); 
87
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres); 
87
		if ($synonymes != '') {
88
		if ($synonymes != '') {
88
			foreach ($synonymes as $synonyme) {
89
			foreach ($synonymes as $synonyme) {
89
				$this->trierSynonymesNomenclaturauxTaxonomiques($synonyme);
90
				$this->trierSynonymesNomenclaturauxTaxonomiques($synonyme);
90
				$this->trierSynonymesMalAppliques($synonyme);
91
				$this->trierSynonymesMalAppliques($synonyme);
91
				$this->trierSynonymesOrthographiques($synonyme);
92
				$this->trierSynonymesOrthographiques($synonyme);
92
			}
93
			}
93
		}
94
		}
94
		// synonyme proparte
95
		// synonyme proparte
95
		if ($this->donnees['info']['synonyme_proparte'] != ''){
96
		if ($this->donnees['info']['synonyme_proparte'] != ''){
96
			$propartes = preg_split('/;/', $this->donnees['info']['synonyme_proparte']);
97
			$propartes = preg_split('/;/', $this->donnees['info']['synonyme_proparte']);
97
			foreach ($propartes as $protarte) {
98
			foreach ($propartes as $protarte) {
98
				$this->donnees['pp'] = $this->taxonDao->getTaxonAffichage($this->referentiel, $proparte);
99
				$this->donnees['pp'] = $this->taxonDao->getTaxonAffichage($this->referentiel, $proparte);
99
			}
100
			}
100
		}
101
		}
101
		// homonymie
102
		// homonymie
102
		$nom = $this->encodeChaine($this->donnees['info']['nom_sci']);
103
		$nom = $this->encodeChaine($this->donnees['info']['nom_sci']);
103
		$homonymes = $this->taxonDao->getHomonyme($this->referentiel, $nom);
104
		$homonymes = $this->taxonDao->getHomonyme($this->referentiel, $nom);
104
		if (count($homonymes) > 1) {
105
		if (count($homonymes) > 1) {
105
			foreach ($homonymes as $id => &$homonyme) {
106
			foreach ($homonymes as $id => &$homonyme) {
106
				$homonyme['statut'] = $homonyme['homonyme'];
107
				$homonyme['statut'] = $homonyme['homonyme'];
107
			}
108
			}
108
			
109
			
109
			$this->donnees['h'] = $homonymes;
110
			$this->donnees['h'] = $homonymes;
110
		}
111
		}
111
	}
112
	}
112
	
113
	
113
	private function trierSynonymesNomenclaturauxTaxonomiques($synonyme) {
114
	private function trierSynonymesNomenclaturauxTaxonomiques($synonyme) {
114
		if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
115
		if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
115
			if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == 
116
			if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == 
116
					$this->donnees['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['num_nom'] || 
117
					$this->donnees['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['num_nom'] || 
117
					$this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
118
					$this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
118
				$this->donnees['n'][] = $synonyme;	
119
				$this->donnees['n'][] = $synonyme;	
119
			} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
120
			} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
120
					$this->donnees['info']['basionyme'] != null) {
121
					$this->donnees['info']['basionyme'] != null) {
121
				$this->donnees['t'][] = $synonyme;
122
				$this->donnees['t'][] = $synonyme;
-
 
123
			} else {
-
 
124
				$this->donnees['i'][] = $synonyme;
122
			}	
125
			}
123
		} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
126
		} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
124
			$this->donnees['i'][] = $synonyme;
127
			$this->donnees['i'][] = $synonyme;
125
		}
128
		}
126
	}
129
	}
127
	
130
	
128
	private function trierSynonymesMalAppliques($synonyme) {
131
	private function trierSynonymesMalAppliques($synonyme) {
129
		if ($synonyme['synonyme_mal_applique'] == 1) {
132
		if ($synonyme['synonyme_mal_applique'] == 1) {
130
			if ($synonyme['num_nom'] == $synonyme['num_nom_retenu']) {
133
			if ($synonyme['num_nom'] == $synonyme['num_nom_retenu']) {
131
				$synonyme['statut'] = 'posséde des synonymes mal appliqués';
134
				$synonyme['statut'] = 'posséde des synonymes mal appliqués';
132
			} else {
135
			} else {
133
				$synonyme['statut'] = 'est synonyme mal appliqué du num_nom '.$synonyme['num_nom_retenu'];
136
				$synonyme['statut'] = 'est synonyme mal appliqué du num_nom '.$synonyme['num_nom_retenu'];
134
			}
137
			}
135
			$this->donnees['ma'][] = $synonyme;
138
			$this->donnees['ma'][] = $synonyme;
136
		}
139
		}
137
	}
140
	}
138
	
141
	
139
	private function trierSynonymesOrthographiques($synonyme) {
142
	private function trierSynonymesOrthographiques($synonyme) {
140
		if (isset($synonyme['synonyme_orthographique']) && $synonyme['synonyme_orthographique'] != '') {
143
		if (isset($synonyme['synonyme_orthographique']) && $synonyme['synonyme_orthographique'] != '') {
141
			if ($synonyme['synonyme_orthographique'] == $synonyme['num_nom']) {
144
			if ($synonyme['synonyme_orthographique'] == $synonyme['num_nom']) {
142
				$synonyme['statut'] = 'posséde des synonymes orthographiques';
145
				$synonyme['statut'] = 'posséde des synonymes orthographiques';
143
			} else {
146
			} else {
144
				$synonyme['statut'] = 'est synonyme orthographique du num_nom '.$synonyme['synonyme_orthographique'];
147
				$synonyme['statut'] = 'est synonyme orthographique du num_nom '.$synonyme['synonyme_orthographique'];
145
			}	
148
			}	
146
			$this->donnees['o'][] = $synonyme;
149
			$this->donnees['o'][] = $synonyme;
147
		}
150
		}
148
	}
151
	}
149
	
152
	
150
	private function chargerChorologie() {
153
	private function chargerChorologie() {
151
		$this->chargerTableauManuel('presence');
154
		$this->chargerTableauManuel('presence');
152
		$this->chargerTableauManuel('statuts_origine');
155
		$this->chargerTableauManuel('statuts_origine');
153
		$this->chargerTableauManuel('statuts_introduction');
156
		$this->chargerTableauManuel('statuts_introduction');
154
		$this->chargerTableauManuel('statuts_culture');
157
		$this->chargerTableauManuel('statuts_culture');
155
		foreach ($this->donnees['info'] as $param => $valeur) {
158
		foreach ($this->donnees['info'] as $param => $valeur) {
156
			if ($param == 'presence') {
159
			if ($param == 'presence') {
157
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
160
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
158
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->tableau_manuel['presence'][$valeur];
161
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->tableau_manuel['presence'][$valeur];
159
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
162
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
160
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
163
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
161
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->tableau_manuel['presence'][$valeur];
164
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->tableau_manuel['presence'][$valeur];
162
			} elseif ($param == 'statut_origine') {
165
			} elseif ($param == 'statut_origine') {
163
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
166
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
164
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = 
167
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = 
165
					$this->tableau_manuel['statuts_origine'][$valeur];
168
					$this->tableau_manuel['statuts_origine'][$valeur];
166
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
169
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
167
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
170
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
168
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = 
171
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = 
169
					$this->tableau_manuel['statuts_origine'][$valeur];
172
					$this->tableau_manuel['statuts_origine'][$valeur];
170
			} elseif ($param == 'statut_introduction') {
173
			} elseif ($param == 'statut_introduction') {
171
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
174
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
172
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = 
175
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = 
173
					$this->tableau_manuel['statuts_introduction'][$valeur];
176
					$this->tableau_manuel['statuts_introduction'][$valeur];
174
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
177
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
175
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
178
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
176
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = 
179
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = 
177
					$this->tableau_manuel['statuts_introduction'][$valeur];
180
					$this->tableau_manuel['statuts_introduction'][$valeur];
178
			} elseif ($param == 'statut_culture') {
181
			} elseif ($param == 'statut_culture') {
179
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
182
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
180
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = 
183
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = 
181
					$this->tableau_manuel['statuts_culture'][$valeur];
184
					$this->tableau_manuel['statuts_culture'][$valeur];
182
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
185
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
183
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
186
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
184
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = 
187
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = 
185
					$this->tableau_manuel['statuts_culture'][$valeur];
188
					$this->tableau_manuel['statuts_culture'][$valeur];
186
			}
189
			}
187
		}
190
		}
188
		foreach ($this->donnees['chorologie']['Présence'] as $lieu => $valeur) {
191
		foreach ($this->donnees['chorologie']['Présence'] as $lieu => $valeur) {
189
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
192
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
190
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
193
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
191
			}
194
			}
192
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
195
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
193
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
196
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
194
			}
197
			}
195
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
198
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
196
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
199
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
197
			}
200
			}
198
		}
201
		}
199
	}
202
	}
200
	
203
	
201
	private function chargerClassification() {
204
	private function chargerClassification() {
202
		$this->chargerTableauManuel('signification_rang');
205
		$this->chargerTableauManuel('signification_rang');
203
		$this->donnees['valeur_rang'] = $this->tableau_manuel['signification_rang'];
206
		$this->donnees['valeur_rang'] = $this->tableau_manuel['signification_rang'];
204
		if ($this->donnees['info']['num_tax_sup'] != '' && $this->donnees['info']['num_tax_sup'] !== "0") {
207
		if ($this->donnees['info']['num_tax_sup'] != '' && $this->donnees['info']['num_tax_sup'] !== "0") {
205
			$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
208
			$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
206
				('Superieur', $this->referentiel, $this->donnees['info']['num_tax_sup']));
209
				('Superieur', $this->referentiel, $this->donnees['info']['num_tax_sup']));
207
		} elseif (isset($this->donnees['retenu']['num_tax_sup']) && ($this->donnees['retenu']['num_tax_sup'] != '')) {
210
		} elseif (isset($this->donnees['retenu']['num_tax_sup']) && ($this->donnees['retenu']['num_tax_sup'] != '')) {
208
			$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
211
			$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
209
				('Superieur', $this->referentiel, $this->donnees['retenu']['num_tax_sup']));
212
				('Superieur', $this->referentiel, $this->donnees['retenu']['num_tax_sup']));
210
		}	
213
		}	
211
		if ($this->donnees['num_nom_retenu'] != '') {
214
		if ($this->donnees['num_nom_retenu'] != '') {
212
			$class_inf = $this->taxonDao->getClassification
215
			$class_inf = $this->taxonDao->getClassification
213
				('Inferieur', $this->referentiel, $this->donnees['num_nom_retenu']);
216
				('Inferieur', $this->referentiel, $this->donnees['num_nom_retenu']);
214
			if ($class_inf != '') {
217
			if ($class_inf != '') {
215
				$this->donnees['classification']['inférieurs'] = $class_inf['inf'];	
218
				$this->donnees['classification']['inférieurs'] = $class_inf['inf'];	
216
				$this->donnees['niveau'] = $class_inf['niveau'];
219
				$this->donnees['niveau'] = $class_inf['niveau'];
217
			}	
220
			}	
218
		}	
221
		}	
219
	}
222
	}
220
	
223
	
221
	private function chargerComplements() {
224
	private function chargerComplements() {
222
		$champs_manuel_technique = explode(',', $this->manuel['champs']);
225
		$champs_manuel_technique = explode(',', $this->manuel['champs']);
223
		$champs_base_donnees = key($this->donnees['info']);
226
		$champs_base_donnees = key($this->donnees['info']);
224
		$champs_supp_base = array_diff_key($this->donnees['info'], array_flip($champs_manuel_technique));
227
		$champs_supp_base = array_diff_key($this->donnees['info'], array_flip($champs_manuel_technique));
225
		foreach ($champs_supp_base as $champ=>$valeur) {
228
		foreach ($champs_supp_base as $champ=>$valeur) {
226
			if (!(preg_match('/presence_(.*)/',$champ) || preg_match('/statut_origine_(.*)/', $champ) || 
229
			if (!(preg_match('/presence_(.*)/',$champ) || preg_match('/statut_origine_(.*)/', $champ) || 
227
				 preg_match('/statut_introduction_(.*)/', $champ) || preg_match('/statut_culture_(.*)/', $champ))) {
230
				 preg_match('/statut_introduction_(.*)/', $champ) || preg_match('/statut_culture_(.*)/', $champ))) {
228
				$this->donnees['complement'][$champ] = $valeur;
231
				$this->donnees['complement'][$champ] = $valeur;
229
			}
232
			}
230
		}
233
		}
231
	}
234
	}
232
	
235
	
233
	private function parserChaineDeRecherche($chaine) {		
236
	private function parserChaineDeRecherche($chaine) {		
234
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
237
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
235
		$parametres = array('mots' => '');
238
		$parametres = array('mots' => '');
236
		$cle_precedente = null;
239
		$cle_precedente = null;
237
		foreach ($mots as $mot) {
240
		foreach ($mots as $mot) {
238
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
241
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
239
				$cle = $match[1];
242
				$cle = $match[1];
240
				$cle_precedente = $cle;
243
				$cle_precedente = $cle;
241
				$valeur = $match[2];
244
				$valeur = $match[2];
242
				$parametres[$cle] = $valeur;
245
				$parametres[$cle] = $valeur;
243
			} else if (!is_null($cle_precedente)) {
246
			} else if (!is_null($cle_precedente)) {
244
				$parametres[$cle_precedente] .= ' '.$mot;
247
				$parametres[$cle_precedente] .= ' '.$mot;
245
			} else if (is_null($cle_precedente)) {
248
			} else if (is_null($cle_precedente)) {
246
				if (empty($parametres['mots'])) {
249
				if (empty($parametres['mots'])) {
247
					$parametres['mots'] = $mot;
250
					$parametres['mots'] = $mot;
248
				} else {
251
				} else {
249
					$parametres['mots'] .= ' '.$mot;
252
					$parametres['mots'] .= ' '.$mot;
250
				}
253
				}
251
			}
254
			}
252
		}		
255
		}		
253
		return $parametres;
256
		return $parametres;
254
	}
257
	}
255
	
258
	
256
	public function encodeChaine($chaine) {
259
	public function encodeChaine($chaine) {
257
		if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
260
		if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
258
			$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
261
			$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
259
		}
262
		}
260
		$chaine = urlencode($chaine);
263
		$chaine = urlencode($chaine);
261
		return $chaine;
264
		return $chaine;
262
	}
265
	}
263
	
266
	
264
	// retourne l'url de la fiche taxon pour les liens 
267
	// retourne l'url de la fiche taxon pour les liens 
265
	public static function getUrlFicheTaxon($params, $type) {
268
	public static function getUrlFicheTaxon($params, $type) {
266
		$taxon = null;
269
		$taxon = null;
267
		switch ($type) {
270
		switch ($type) {
268
			case 'bas' : 
271
			case 'bas' : 
269
				$taxon['num_nom'] = $params['bas_num'];
272
				$taxon['num_nom'] = $params['bas_num'];
270
				break;
273
				break;
271
			case 'p1' :
274
			case 'p1' :
272
				$taxon['num_nom'] = $params['p1_num'];
275
				$taxon['num_nom'] = $params['p1_num'];
273
				break;
276
				break;
274
			case 'p2' : 
277
			case 'p2' : 
275
				$taxon['num_nom'] = $params['p2_num'];
278
				$taxon['num_nom'] = $params['p2_num'];
276
				break;
279
				break;
277
			default : 
280
			default : 
278
				break;
281
				break;
279
		}
282
		}
280
		return Recherche::getUrlFicheTaxon($taxon);
283
		return Recherche::getUrlFicheTaxon($taxon);
281
	}
284
	}
282
	
285
	
283
	// charger tableau de $this->manuel
286
	// charger tableau de $this->manuel
284
	private function chargerTableauManuel($titreTableau) {
287
	private function chargerTableauManuel($titreTableau) {
285
		$champs = explode(',', $this->manuel[$titreTableau]);
288
		$champs = explode(',', $this->manuel[$titreTableau]);
286
		foreach ($champs as $champ) {
289
		foreach ($champs as $champ) {
287
			list($champ_nom, $type) = explode('=', trim($champ));
290
			list($champ_nom, $type) = explode('=', trim($champ));
288
			$this->tableau_manuel[$titreTableau][$champ_nom] = $type;
291
			$this->tableau_manuel[$titreTableau][$champ_nom] = $type;
289
		}
292
		}
290
	}
293
	}
291
	
294
	
292
 
295
 
293
}
296
}