Subversion Repositories Applications.referentiel

Rev

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

Rev 117 Rev 134
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);
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_complet'];
53
			$this->donnees['nom'] = $this->donnees['info']['nom_complet'];
54
			
54
			
55
			if ($this->donnees['info'] != '') {
55
			if ($this->donnees['info'] != '') {
56
				// Chargement des données des onglets
56
				// Chargement des données des onglets
57
				$this->chargerNomenclature();
57
				$this->chargerNomenclature();
58
				$this->chargerSynonymie();
58
				$this->chargerSynonymie();
59
				$this->chargerClassification();
59
				$this->chargerClassification();
60
				$this->chargerChorologie();
60
				$this->chargerChorologie();
61
				$this->chargerComplements();
61
				$this->chargerComplements();
62
			}
62
			}
63
			
63
			
64
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
64
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
65
		}
65
		}
66
	}
66
	}
67
	
67
	
68
	private function chargerNomenclature() {
68
	private function chargerNomenclature() {
69
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
69
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
70
		if (strpos($this->donnees['nom'], ' x ') ) {
70
		if (strpos($this->donnees['nom'], ' x ') ) {
71
			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'] != '') {
72
				$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']);
73
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom_retenu']);
73
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom_retenu']);
74
			} else {
74
			} else {
75
				$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']);
76
			}	
76
			}	
77
		} else {
77
		} else {
78
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
78
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
79
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
79
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
80
			}
80
			}
81
		}
81
		}
82
	}
82
	}
83
	
83
	
84
	// recherche les synonymes (à compléter)
84
	// recherche les synonymes (à compléter)
85
	private function chargerSynonymie() {
85
	private function chargerSynonymie() {
86
		$rechercheDao = new RechercheDao();
86
		$rechercheDao = new RechercheDao();
87
		// recherche des synonymes nomenclaturaux et taxonomiques
87
		// recherche des synonymes nomenclaturaux et taxonomiques
88
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
88
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
89
		$parametres['ref']= $this->referentiel;
89
		$parametres['ref']= $this->referentiel;
90
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres); 
90
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres); 
91
		if ($synonymes != '') {
91
		if ($synonymes != '') {
92
			foreach ($synonymes as $synonyme) {
92
			foreach ($synonymes as $synonyme) {
93
				$this->trierSynonymesNomenclaturauxTaxonomiques($synonyme);
93
				$this->trierSynonymesNomenclaturauxTaxonomiques($synonyme);
94
				$this->trierSynonymesMalAppliques($synonyme);
94
				$this->trierSynonymesMalAppliques($synonyme);
95
				$this->trierSynonymesOrthographiques($synonyme);
95
				$this->trierSynonymesOrthographiques($synonyme);
96
			}
96
			}
97
		}
97
		}
98
		// synonyme proparte
98
		// synonyme proparte
99
		if ($this->donnees['info']['synonyme_proparte'] != ''){
99
		if ($this->donnees['info']['synonyme_proparte'] != ''){
100
			$propartes = preg_split('/;/', $this->donnees['info']['synonyme_proparte']);
100
			$propartes = preg_split('/;/', $this->donnees['info']['synonyme_proparte']);
101
			foreach ($propartes as $protarte) {
101
			foreach ($propartes as $protarte) {
102
				$this->donnees['pp'] = $this->taxonDao->getTaxonAffichage($this->referentiel, $proparte);
102
				$this->donnees['pp'] = $this->taxonDao->getTaxonAffichage($this->referentiel, $proparte);
103
			}
103
			}
104
		}
104
		}
105
		// homonymie
105
		// homonymie
106
		$nom = $this->encodeChaine($this->donnees['info']['nom_complet']);
106
		$nom = $this->encodeChaine($this->donnees['info']['nom_complet']);
107
		$homonymes = $this->taxonDao->getHomonyme($this->referentiel, $nom);
107
		$homonymes = $this->taxonDao->getHomonyme($this->referentiel, $nom);
108
		if (count($homonymes) > 1) {
108
		if (count($homonymes) > 1) {
109
			foreach ($homonymes as $id => &$homonyme) {
109
			foreach ($homonymes as $id => &$homonyme) {
110
				$homonyme['statut'] = $homonyme['homonyme'];
110
				$homonyme['statut'] = $homonyme['homonyme'];
111
			}
111
			}
112
			
112
			
113
			$this->donnees['h'] = $homonymes;
113
			$this->donnees['h'] = $homonymes;
114
		}
114
		}
115
		// Même basionyme
115
		// Même basionyme
116
		if ($this->donnees['info']['basionyme'] != '') {
116
		if ($this->donnees['info']['basionyme'] != '') {
117
			$basionyme_commun = $this->taxonDao->getNomsBasionymeCommun($this->referentiel, $this->donnees['info']['basionyme']);
117
			$basionyme_commun = $this->taxonDao->getNomsBasionymeCommun($this->referentiel, $this->donnees['info']['basionyme']);
118
			foreach ($basionyme_commun as $nom) {
118
			foreach ($basionyme_commun as $nom) {
119
				if ($nom['num_nom_retenu'] != $this->donnees['num_nom_retenu']) {
119
				if ($nom['num_nom_retenu'] != $this->donnees['num_nom_retenu']) {
120
					$this->donnees['b'][] = $nom;
120
					$this->donnees['b'][] = $nom;
121
				}
121
				}
122
			}
122
			}
123
		}
123
		}
124
	}
124
	}
125
	
125
	
126
	private function trierSynonymesNomenclaturauxTaxonomiques($synonyme) {
126
	private function trierSynonymesNomenclaturauxTaxonomiques($synonyme) {
127
		if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
127
		if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
128
			if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == 
128
			if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == 
129
					$this->donnees['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['num_nom'] || 
129
					$this->donnees['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['num_nom'] || 
130
					$this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
130
					$this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
131
				$this->donnees['n'][] = $synonyme;	
131
				$this->donnees['n'][] = $synonyme;	
132
			} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
132
			} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
133
					$this->donnees['info']['basionyme'] != null) {
133
					$this->donnees['info']['basionyme'] != null) {
134
				$this->donnees['t'][] = $synonyme;
134
				$this->donnees['t'][] = $synonyme;
135
			}	
135
			}	
136
		} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
136
		} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
137
			$this->donnees['i'][] = $synonyme;
137
			$this->donnees['i'][] = $synonyme;
138
		}
138
		}
139
	}
139
	}
140
	
140
	
141
	private function trierSynonymesMalAppliques($synonyme) {
141
	private function trierSynonymesMalAppliques($synonyme) {
142
		if ($synonyme['synonyme_mal_applique'] == 1) {
142
		if ($synonyme['synonyme_mal_applique'] == 1) {
143
			if ($synonyme['num_nom'] == $synonyme['num_nom_retenu']) {
143
			if ($synonyme['num_nom'] == $synonyme['num_nom_retenu']) {
144
				$synonyme['statut'] = 'posséde des synonymes mal appliqués';
144
				$synonyme['statut'] = 'posséde des synonymes mal appliqués';
145
			} else {
145
			} else {
146
				$synonyme['statut'] = 'est synonyme mal appliqué du num_nom '.$synonyme['num_nom_retenu'];
146
				$synonyme['statut'] = 'est synonyme mal appliqué du num_nom '.$synonyme['num_nom_retenu'];
147
			}
147
			}
148
			$this->donnees['ma'][] = $synonyme;
148
			$this->donnees['ma'][] = $synonyme;
149
		}
149
		}
150
	}
150
	}
151
	
151
	
152
	private function trierSynonymesOrthographiques($synonyme) {
152
	private function trierSynonymesOrthographiques($synonyme) {
153
		if (isset($synonyme['synonyme_orthographique']) && $synonyme['synonyme_orthographique'] != '') {
153
		if (isset($synonyme['synonyme_orthographique']) && $synonyme['synonyme_orthographique'] != '') {
154
			if ($synonyme['synonyme_orthographique'] == $synonyme['num_nom']) {
154
			if ($synonyme['synonyme_orthographique'] == $synonyme['num_nom']) {
155
				$synonyme['statut'] = 'posséde des synonymes orthographiques';
155
				$synonyme['statut'] = 'posséde des synonymes orthographiques';
156
			} else {
156
			} else {
157
				$synonyme['statut'] = 'est synonyme orthographique du num_nom '.$synonyme['synonyme_orthographique'];
157
				$synonyme['statut'] = 'est synonyme orthographique du num_nom '.$synonyme['synonyme_orthographique'];
158
			}	
158
			}	
159
			$this->donnees['o'][] = $synonyme;
159
			$this->donnees['o'][] = $synonyme;
160
		}
160
		}
161
	}
161
	}
162
	
162
	
163
	private function chargerChorologie() {
163
	private function chargerChorologie() {
164
		$this->chargerTableauManuel('presence');
164
		$this->chargerTableauManuel('presence');
165
		$this->chargerTableauManuel('statuts_origine');
165
		$this->chargerTableauManuel('statuts_origine');
166
		$this->chargerTableauManuel('statuts_introduction');
166
		$this->chargerTableauManuel('statuts_introduction');
167
		$this->chargerTableauManuel('statuts_culture');
167
		$this->chargerTableauManuel('statuts_culture');
168
		foreach ($this->donnees['info'] as $param => $valeur) {
168
		foreach ($this->donnees['info'] as $param => $valeur) {
169
			if ($param == 'presence') {
169
			if ($param == 'presence') {
170
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
170
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
171
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->tableau_manuel['presence'][$valeur];
171
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->tableau_manuel['presence'][$valeur];
172
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
172
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
173
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
173
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
174
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->tableau_manuel['presence'][$valeur];
174
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->tableau_manuel['presence'][$valeur];
175
			} elseif ($param == 'statut_origine') {
175
			} elseif ($param == 'statut_origine') {
176
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
176
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
177
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = 
177
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = 
178
					$this->tableau_manuel['statuts_origine'][$valeur];
178
					$this->tableau_manuel['statuts_origine'][$valeur];
179
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
179
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
180
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
180
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
181
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = 
181
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = 
182
					$this->tableau_manuel['statuts_origine'][$valeur];
182
					$this->tableau_manuel['statuts_origine'][$valeur];
183
			} elseif ($param == 'statut_introduction') {
183
			} elseif ($param == 'statut_introduction') {
184
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
184
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
185
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = 
185
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = 
186
					$this->tableau_manuel['statuts_introduction'][$valeur];
186
					$this->tableau_manuel['statuts_introduction'][$valeur];
187
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
187
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
188
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
188
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
189
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = 
189
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = 
190
					$this->tableau_manuel['statuts_introduction'][$valeur];
190
					$this->tableau_manuel['statuts_introduction'][$valeur];
191
			} elseif ($param == 'statut_culture') {
191
			} elseif ($param == 'statut_culture') {
192
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
192
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
193
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = 
193
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = 
194
					$this->tableau_manuel['statuts_culture'][$valeur];
194
					$this->tableau_manuel['statuts_culture'][$valeur];
195
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
195
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
196
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
196
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
197
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = 
197
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = 
198
					$this->tableau_manuel['statuts_culture'][$valeur];
198
					$this->tableau_manuel['statuts_culture'][$valeur];
199
			}
199
			}
200
		}
200
		}
201
		foreach ($this->donnees['chorologie']['Présence'] as $lieu => $valeur) {
201
		foreach ($this->donnees['chorologie']['Présence'] as $lieu => $valeur) {
202
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
202
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
203
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
203
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
204
			}
204
			}
205
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
205
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
206
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
206
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
207
			}
207
			}
208
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
208
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
209
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
209
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
210
			}
210
			}
211
		}
211
		}
212
	}
212
	}
213
	
213
	
214
	private function chargerClassification() {
214
	private function chargerClassification() {
215
		$this->chargerTableauManuel('signification_rang');
215
		$this->chargerTableauManuel('signification_rang');
216
		$this->donnees['valeur_rang'] = $this->tableau_manuel['signification_rang'];
216
		$this->donnees['valeur_rang'] = $this->tableau_manuel['signification_rang'];
217
		if ($this->donnees['info']['num_tax_sup'] != '' || isset($this->donnees['retenu']['num_tax_sup'])) {
217
		if ($this->donnees['info']['num_tax_sup'] != '' || isset($this->donnees['retenu']['num_tax_sup'])) {
218
			if ($this->donnees['num_nom'] == $this->donnees['num_nom_retenu']) {
218
			if ($this->donnees['num_nom'] == $this->donnees['num_nom_retenu']) {
219
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
219
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
220
					('Superieur', $this->referentiel, $this->donnees['info']['num_tax_sup']));
220
					('Superieur', $this->referentiel, $this->donnees['info']['num_tax_sup']));
221
			} else {
221
			} else {
222
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
222
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
223
				('Superieur', $this->referentiel, $this->donnees['retenu']['num_tax_sup']));
223
				('Superieur', $this->referentiel, $this->donnees['retenu']['num_tax_sup']));
224
			}		
224
			}		
225
		}	
225
		}	
226
		if ($this->donnees['num_nom_retenu'] != '') {
226
		if ($this->donnees['num_nom_retenu'] != '') {
227
			$class_inf = $this->taxonDao->getClassification
227
			$class_inf = $this->taxonDao->getClassification
228
				('Inferieur', $this->referentiel, $this->donnees['num_nom_retenu']);
228
				('Inferieur', $this->referentiel, $this->donnees['num_nom_retenu']);
229
			if ($class_inf != '') {	
229
			if ($class_inf != '') {	
230
				$this->donnees['classification']['inférieurs'] = $class_inf['inf'];	
230
				$this->donnees['classification']['inférieurs'] = $class_inf['inf'];	
231
				$this->donnees['niveau'] = $class_inf['niveau'];
231
				$this->donnees['niveau'] = $class_inf['niveau'];
232
			}	
232
			}	
233
		}	
233
		}	
234
	}
234
	}
235
	
235
	
236
	private function chargerComplements() {
236
	private function chargerComplements() {
237
		$champs_manuel_technique = explode(',', $this->manuel['champs']);
237
		$champs_manuel_technique = explode(',', $this->manuel['champs']);
238
		$champs_base_donnees = key($this->donnees['info']);
238
		$champs_base_donnees = key($this->donnees['info']);
239
		$champs_supp_base = array_diff_key($this->donnees['info'], array_flip($champs_manuel_technique));
239
		$champs_supp_base = array_diff_key($this->donnees['info'], array_flip($champs_manuel_technique));
240
		foreach ($champs_supp_base as $champ=>$valeur) {
240
		foreach ($champs_supp_base as $champ=>$valeur) {
241
			if (!(preg_match('/presence_(.*)/',$champ) || preg_match('/statut_origine_(.*)/', $champ) || 
241
			if (!(preg_match('/presence_(.*)/',$champ) || preg_match('/statut_origine_(.*)/', $champ) || 
242
				 preg_match('/statut_introduction_(.*)/', $champ) || preg_match('/statut_culture_(.*)/', $champ))) {
242
				 preg_match('/statut_introduction_(.*)/', $champ) || preg_match('/statut_culture_(.*)/', $champ))) {
243
				$this->donnees['complement'][$champ] = $valeur;
243
				$this->donnees['complement'][$champ] = $valeur;
244
			}
244
			}
245
		}
245
		}
246
	}
246
	}
247
	
247
	
248
	private function parserChaineDeRecherche($chaine) {		
248
	private function parserChaineDeRecherche($chaine) {		
249
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
249
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
250
		$parametres = array('mots' => '');
250
		$parametres = array('mots' => '');
251
		$cle_precedente = null;
251
		$cle_precedente = null;
252
		foreach ($mots as $mot) {
252
		foreach ($mots as $mot) {
253
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
253
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
254
				$cle = $match[1];
254
				$cle = $match[1];
255
				$cle_precedente = $cle;
255
				$cle_precedente = $cle;
256
				$valeur = $match[2];
256
				$valeur = $match[2];
257
				$parametres[$cle] = $valeur;
257
				$parametres[$cle] = $valeur;
258
			} else if (!is_null($cle_precedente)) {
258
			} else if (!is_null($cle_precedente)) {
259
				$parametres[$cle_precedente] .= ' '.$mot;
259
				$parametres[$cle_precedente] .= ' '.$mot;
260
			} else if (is_null($cle_precedente)) {
260
			} else if (is_null($cle_precedente)) {
261
				if (empty($parametres['mots'])) {
261
				if (empty($parametres['mots'])) {
262
					$parametres['mots'] = $mot;
262
					$parametres['mots'] = $mot;
263
				} else {
263
				} else {
264
					$parametres['mots'] .= ' '.$mot;
264
					$parametres['mots'] .= ' '.$mot;
265
				}
265
				}
266
			}
266
			}
267
		}		
267
		}		
268
		return $parametres;
268
		return $parametres;
269
	}
269
	}
270
	
270
	
271
	public function encodeChaine($chaine) {
271
	public function encodeChaine($chaine) {
272
		if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
272
		if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
273
			$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
273
			$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
274
		}
274
		}
275
		$chaine = urlencode($chaine);
275
		$chaine = urlencode($chaine);
276
		return $chaine;
276
		return $chaine;
277
	}
277
	}
278
	
278
	
279
	// retourne l'url de la fiche taxon pour les liens 
279
	// retourne l'url de la fiche taxon pour les liens 
280
	public static function getUrlFicheTaxon($params, $type) {
280
	public static function getUrlFicheTaxon($params, $type) {
281
		$taxon = null;
281
		$taxon = null;
282
		switch ($type) {
282
		switch ($type) {
283
			case 'bas' : 
283
			case 'bas' : 
284
				$taxon['num_nom'] = $params['bas_num'];
284
				$taxon['num_nom'] = $params['bas_num'];
285
				break;
285
				break;
286
			case 'p1' :
286
			case 'p1' :
287
				$taxon['num_nom'] = $params['p1_num'];
287
				$taxon['num_nom'] = $params['p1_num'];
288
				break;
288
				break;
289
			case 'p2' : 
289
			case 'p2' : 
290
				$taxon['num_nom'] = $params['p2_num'];
290
				$taxon['num_nom'] = $params['p2_num'];
291
				break;
291
				break;
292
			default : 
292
			default : 
293
				break;
293
				break;
294
		}
294
		}
295
		return Recherche::getUrlFicheTaxon($taxon);
295
		return Recherche::getUrlFicheTaxon($taxon);
296
	}
296
	}
297
	
297
	
298
	// charger tableau de $this->manuel
298
	// charger tableau de $this->manuel
299
	private function chargerTableauManuel($titreTableau) {
299
	private function chargerTableauManuel($titreTableau) {
300
		$champs = explode(',', $this->manuel[$titreTableau]);
300
		$champs = explode(',', $this->manuel[$titreTableau]);
301
		foreach ($champs as $champ) {
301
		foreach ($champs as $champ) {
302
			list($champ_nom, $type) = explode('=', trim($champ));
302
			list($champ_nom, $type) = explode('=', trim($champ));
303
			$this->tableau_manuel[$titreTableau][$champ_nom] = $type;
303
			$this->tableau_manuel[$titreTableau][$champ_nom] = $type;
304
		}
304
		}
305
	}
305
	}
306
	
306
	
307
 
307
 
308
}
308
}