Subversion Repositories Applications.referentiel

Rev

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

Rev 82 Rev 85
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;
-
 
19
	private $num_taxon = array(0=>0,1=>0,2=>0);
18
	
-
 
19
	// Codification de la présence d'un taxon
-
 
20
	private $presence_taxon = array (
-
 
21
		'P' => 'Présent',
-
 
22
		'S' => 'Supposé présent (présence à confirmer)',
-
 
23
		'D' => 'Présence douteuse',
-
 
24
		'E' => 'Éteint',	
-
 
25
		'C' => 'Cité par erreur comme présent',
-
 
26
		'A' => 'Absent',
-
 
27
		'' => 'Pas d\'information',
-
 
28
		'-' => 'Autre statut de présence',	
-
 
29
		'E-W' => 'Disparu',
-
 
30
		'P-B' =>'Présence accidentelle (Taxon « visiteur »)',
-
 
31
		'E-F' => 'Trouvé en fouille', 
-
 
32
		'-C' => 'Cryptogène');
-
 
33
	// Codification du statut d'origine	
-
 
34
	private $statut_origine= array(
-
 
35
		'N' => 'Natif',
-
 
36
		'S' => 'Supposé natif',	
-
 
37
		'D' => 'Origine douteuse',
-
 
38
		'E' => 'Anciennement natif (éteint)',
-
 
39
		'C' => 'Cité par erreur comme natif',	
-
 
40
		'A' => 'Non natif',
-
 
41
		'' => 'Pas d\'information',
-
 
42
		'X' => 'Inapplicable','-' => 'Autre statut d\'origine',
-
 
43
		'N-E' => 'Endémique',
-
 
44
		'N-S' => 'Sub-Endémique',
-
 
45
		'E-Z' => 'Endémique éteinte');
-
 
46
	// Codification du statut d'introduction
-
 
47
	private $statut_introduction = array(
-
 
48
		'I' => 'Introduit',
-
 
49
		'S' => 'Supposé introduit',
-
 
50
		'D' => 'Introduction douteuse',
-
 
51
		'E' => 'Anciennement introduit (éteint)',
-
 
52
		'C' => 'Cité par erreur comme introduit',
-
 
53
		'A' => 'Non introduit',
-
 
54
		'' => 'Pas d\'information',
-
 
55
		'X' => 'Inapplicable',
-
 
56
		'-' => 'Autre notion d\'introduction',
-
 
57
		'I-J' => 'Introduit envahissant',
-
 
58
		'I-M' => 'Domestique / Introduit non établi'	
-
 
59
	);
-
 
60
	// Codification du statut de culture	
-
 
61
	private $statut_culture = array(
-
 
62
		'C' => 'Cultivé en extérieur',
-
 
63
		'I' => 'Cultivé en intérieur', 
-
 
64
		'S' => 'Supposé cultivé', 
-
 
65
		'D' => 'Culture douteuse',
-
 
66
		'E' => 'Anciennement cultivé (éteint)', 
-
 
67
		'C' => 'Cité par erreur comme cultivé',
-
 
68
		'' => 'Pas d\'information',
-
 
69
		'X' => 'Inapplicable',
-
 
70
		'-' => 'Autre notion de culture'
-
 
71
	);
20
	
72
	//+----------------------------------------------------------------------------------------------------------------+
21
	//+----------------------------------------------------------------------------------------------------------------+
73
	// Méthodes
22
	// Méthodes
74
	/**
23
	/**
75
	 * Fonction d'affichage par défaut
24
	 * Fonction d'affichage par défaut
76
	 */
25
	 */
77
	public function executerActionParDefaut() {
26
	public function executerActionParDefaut() {
78
		return $this->afficherTaxon();
27
		return $this->afficherTaxon();
79
	}
28
	}
80
	
29
	
81
	// +---------------------------------------------------------------------------------------------------------------+
30
	// +---------------------------------------------------------------------------------------------------------------+
82
	// FICHE CONSULTATION TAXON
31
	// FICHE CONSULTATION TAXON
83
	public function afficherTaxon() {
32
	public function afficherTaxon() {
84
		// Récupération du référentiel
33
		// Récupération du référentiel
85
		if (isset($_GET['ref'])) { 
34
		if (isset($_GET['ref'])) { 
86
			$this->referentiel = strtolower($_GET['ref']);
35
			$this->referentiel = strtolower($_GET['ref']);
87
		}
36
		}
88
		// Gestion des actions par défaut
37
		// Gestion des actions par défaut
89
		$this->taxonDao = new TaxonDao();
38
		$this->taxonDao = new TaxonDao();
90
		$this->definirCommeModulePrincipal(get_class($this));
39
		$this->definirCommeModulePrincipal(get_class($this));
91
		$this->construireMenu($this->referentiel);
40
		$this->construireMenu($this->referentiel);
92
		$this->construireFilAriane($this->referentiel);
41
		$this->construireFilAriane($this->referentiel);
93
		$this->executerActionReferentiel('Recherche', 'chargerMoteurRecherche', $this->referentiel);
42
		$this->executerActionReferentiel('Recherche', 'chargerMoteurRecherche', $this->referentiel);
94
		
43
		
95
		// Gestion des données de la requête
44
		// Gestion des données de la requête
96
		if (!isset($_GET['num_nom'])) {
45
		if (!isset($_GET['num_nom'])) {
97
			
46
			
98
		} else {
47
		} else {
99
			// Récupération des données
48
			// Récupération des données
100
			$this->donnees['referentiel'] = $this->referentiel;
49
			$this->donnees['referentiel'] = $this->referentiel;
101
			$this->donnees['num_nom'] = $_GET['num_nom'];
50
			$this->donnees['num_nom'] = $_GET['num_nom'];
102
			$this->donnees['num_nom_retenu'] = $_GET['num_nom_retenu'];
51
			$this->donnees['num_nom_retenu'] = $_GET['num_nom_retenu'];
103
			$this->donnees['nom'] = $_GET['nom'];
52
			$this->donnees['nom'] = $_GET['nom'];
104
			$this->donnees['info'] = $this->taxonDao->getTaxon($this->referentiel, $this->donnees['num_nom']);
53
			$this->donnees['info'] = $this->taxonDao->getTaxon($this->referentiel, $this->donnees['num_nom']);
105
			
54
			
106
			// Chargement des données des onglets
55
			// Chargement des données des onglets
107
			$this->chargerNomenclature();
56
			$this->chargerNomenclature();
108
			$this->chargerSynonymie();
57
			$this->chargerSynonymie();
109
			//$this->chargerClassification();
58
			$this->chargerClassification();
110
			$this->chargerChorologie();
59
			$this->chargerChorologie();
111
			//$this->chargerComplements();
60
			$this->chargerComplements();
112
			
61
			
113
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
62
			$this->setSortie(self::RENDU_CORPS, $this->getVue('fiche_taxon', $this->donnees));
114
		}
63
		}
115
	}
64
	}
116
	
65
	
117
	private function chargerNomenclature() {
66
	private function chargerNomenclature() {
118
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
67
		$this->donnees['selectionne'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom']);
119
		if (strpos($this->donnees['nom'], ' x ') ) {
68
		if (strpos($this->donnees['nom'], ' x ') ) {
120
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu']) {
69
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
121
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
70
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
122
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom_retenu']);
71
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom_retenu']);
123
			} else {
72
			} else {
124
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
73
				$this->donnees['parents'] = $this->taxonDao->getParentsHybride($this->referentiel, $this->donnees['num_nom']);
125
			}	
74
			}	
126
		} else {
75
		} else {
127
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu']) {
76
			if ($this->donnees['num_nom'] != $this->donnees['num_nom_retenu'] && $this->donnees['num_nom_retenu'] != '') {
128
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
77
				$this->donnees['retenu'] = $this->taxonDao->getNomenclature($this->referentiel, $this->donnees['num_nom_retenu']);
129
			}
78
			}
130
		}
79
		}
131
	}
80
	}
132
	
81
	
133
	// recherche les synonymes (à compléter)
82
	// recherche les synonymes (à compléter)
134
	private function chargerSynonymie() {
83
	private function chargerSynonymie() {
135
		$rechercheDao = new RechercheDao();
84
		$rechercheDao = new RechercheDao();
136
		// recherche des synonymes nomenclaturaux et taxonomiques
85
		// recherche des synonymes nomenclaturaux et taxonomiques
137
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
86
		$parametres = $this->parserChaineDeRecherche('nn:'.$this->donnees['num_nom'].' tax:1');
138
		$parametres['ref']= $this->referentiel;
87
		$parametres['ref']= $this->referentiel;
139
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres);
88
		$synonymes = $rechercheDao->chercher('ParTaxon', $parametres); 
-
 
89
		if ($synonymes != '') {
140
		foreach ($synonymes as $synonyme) {
90
			foreach ($synonymes as $synonyme) {
141
			if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
91
				if ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null) {
142
				if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == $this->donnees['num_nom'] || 
92
					if (($this->donnees['num_nom'] != $synonyme['num_nom']) && ($synonyme['basionyme'] == $this->donnees['num_nom'] || 
143
						$this->donnees['info']['basionyme'] == $synonyme['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
93
							$this->donnees['info']['basionyme'] == $synonyme['num_nom'] || $this->donnees['info']['basionyme'] == $synonyme['basionyme'])) {
144
					$this->donnees['fiche_synonymie']['nomenclaturale'][] = $synonyme;	
94
						$this->donnees['fiche_synonymie']['nomenclaturale'][] = $synonyme;	
145
				} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
95
					} elseif ($this->donnees['num_nom'] != $synonyme['num_nom'] && $synonyme['basionyme'] != null && 
146
					$this->donnees['info']['basionyme'] != null) {
96
						$this->donnees['info']['basionyme'] != null) {
147
					$this->donnees['fiche_synonymie']['taxonomique'][] = $synonyme;
97
						$this->donnees['fiche_synonymie']['taxonomique'][] = $synonyme;
148
				}	
98
					}	
149
			} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
99
				} elseif ($this->donnees['num_nom'] != $synonyme['num_nom']) {
150
				///nom est synonyme mal applique de num_nom_retenu
100
					///nom est synonyme mal applique de num_nom_retenu
151
				if ($synonyme['synonyme_mal_applique'] == 1) {
101
					if ($synonyme['synonyme_mal_applique'] == 1) {
152
					$this->donnees['fiche_synonymie']['mal appliquée'][] = $synonyme;
102
						$this->donnees['fiche_synonymie']['mal appliquée'][] = $synonyme;
153
				} else {
103
					} else {
154
					$this->donnees['fiche_synonymie']['indéterminée (pas de basionyme)'][] = $synonyme;
104
						$this->donnees['fiche_synonymie']['indéterminée (pas de basionyme)'][] = $synonyme;
-
 
105
					}
155
				}
106
				}
156
			}
107
			}
157
		}
-
 
158
		// recherche synonyme proparte
108
			// recherche synonyme proparte
159
		if ($this->donnees['info']['synonyme_proparte'] != ''){
109
			if ($this->donnees['info']['synonyme_proparte'] != ''){
160
			$this->donnees['fiche_synonymie']['pro parte']['num_nom'] = $this->donnees['info']['synonyme_proparte'];
110
				$this->donnees['fiche_synonymie']['pro parte']['num_nom'] = $this->donnees['info']['synonyme_proparte'];
-
 
111
				/* à modifier qd base corrigée ajouter split ";" 
-
 
112
			 	 * 	si 1	fusion de ce nom pour donner synonyme proparte
-
 
113
			 	 * 	sinon   division
-
 
114
				 */
161
		}
115
			}
162
		// recherche si taxon est un synonyme douteux
116
			// recherche si taxon est un synonyme douteux
163
		if ($this->donnees['info']['synonyme_douteux'] == 1) {
117
			if ($this->donnees['info']['synonyme_douteux'] == 1) {
164
			$this->donnees['fiche_synonymie']['douteux']['num_nom'] = $this->donnees['info'];
118
				$this->donnees['fiche_synonymie']['douteux']['num_nom'] = $this->donnees['info'];
165
		}
119
			}
-
 
120
			/* si $this->donnees['info']['synonyme_mal_applique'] == 1 et $this->donnees['num_nom'] == $this->donnees['num_nom_retenu']
-
 
121
			 * 		nom possede des synonymes mal appliquees
-
 
122
			 * 		sinon si $this->donnees['info']['synonyme_mal_applique'] == 1 et $this->donnees['num_nom'] != $this->donnees['num_nom_retenu']
-
 
123
			 * 			nom est synonyme mal applique de num_nom_retenu
-
 
124
			 * si $this->donnees['info']['synonyme_orthographique'] == $this->donnees['num_nom']
-
 
125
			 * 		nom possede des synonymes orthographiques
-
 
126
			 * 		sinon $this->donnees['info']['synonyme_orthographique'] != ''
-
 
127
			 * 			nom est synonyme mal applique de $this->donnees['info']['synonyme_orthographique']
-
 
128
			 * si $this->donnees['info']['synonyme_proparte'] != ''
-
 
129
			 * 		
-
 
130
			 * si $this->donnees['info']['homonyme'] == 1 recherche sur nom
-
 
131
			*/
166
	
132
		}	
167
	}
133
	}
168
	
134
	
169
	private function chargerChorologie() {
135
	private function chargerChorologie() {
-
 
136
		$this->chargerTableauManuel('presence');
-
 
137
		$this->chargerTableauManuel('statuts_origine');
-
 
138
		$this->chargerTableauManuel('statuts_introduction');
-
 
139
		$this->chargerTableauManuel('statuts_culture');
170
		foreach ($this->donnees['info'] as $param => $valeur) {
140
		foreach ($this->donnees['info'] as $param => $valeur) {
171
			if ($param == 'presence') {
141
			if ($param == 'presence') {
172
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
142
				$this->donnees['chorologie']['Présence']['France']['code'] = $valeur;
173
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->presence_taxon[$valeur];
143
				$this->donnees['chorologie']['Présence']['France']['valeur'] = $this->tableau_manuel['presence'][$valeur];
174
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
144
			} elseif (preg_match('/presence_(.*)/', $param, $lieu)) {
175
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
145
				$this->donnees['chorologie']['Présence'][$lieu['1']]['code'] = $valeur;
176
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->presence_taxon[$valeur];
146
				$this->donnees['chorologie']['Présence'][$lieu['1']]['valeur'] = $this->tableau_manuel['presence'][$valeur];
177
			} elseif ($param == 'statut_origine') {
147
			} elseif ($param == 'statut_origine') {
178
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
148
				$this->donnees['chorologie']['Statut d\'origine']['France']['code'] = $valeur;
179
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = $this->statut_origine[$valeur];
149
				$this->donnees['chorologie']['Statut d\'origine']['France']['valeur'] = 
-
 
150
					$this->tableau_manuel['statuts_origine'][$valeur];
180
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
151
			} elseif (preg_match('/statut_origine_(.*)/', $param, $lieu)) {
181
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
152
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['code'] = $valeur;
182
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = $this->statut_origine[$valeur];
153
				$this->donnees['chorologie']['Statut d\'origine'][$lieu['1']]['valeur'] = 
-
 
154
					$this->tableau_manuel['statuts_origine'][$valeur];
183
			} elseif ($param == 'statut_introduction') {
155
			} elseif ($param == 'statut_introduction') {
184
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
156
				$this->donnees['chorologie']['Statut d\'introduction']['France']['code'] = $valeur;
185
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = $this->statut_introduction[$valeur];
157
				$this->donnees['chorologie']['Statut d\'introduction']['France']['valeur'] = 
-
 
158
					$this->tableau_manuel['statuts_introduction'][$valeur];
186
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
159
			} elseif (preg_match('/statut_introduction_(.*)/', $param, $lieu)) {
187
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
160
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['code'] = $valeur;
188
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = $this->statut_introduction[$valeur];
161
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu['1']]['valeur'] = 
-
 
162
					$this->tableau_manuel['statuts_introduction'][$valeur];
189
			} elseif ($param == 'statut_culture') {
163
			} elseif ($param == 'statut_culture') {
190
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
164
				$this->donnees['chorologie']['Statut de culture']['France']['code'] = $valeur;
191
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = $this->statut_culture[$valeur];
165
				$this->donnees['chorologie']['Statut de culture']['France']['valeur'] = 
-
 
166
					$this->tableau_manuel['statuts_culture'][$valeur];
192
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
167
			} elseif (preg_match('/statut_culture_(.*)/', $param, $lieu)) {
193
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
168
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['code'] = $valeur;
194
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = $this->statut_culture[$valeur];
169
				$this->donnees['chorologie']['Statut de culture'][$lieu['1']]['valeur'] = 
-
 
170
					$this->tableau_manuel['statuts_culture'][$valeur];
195
			}
171
			}
196
		}
172
		}
197
		foreach ($this->donnees['chorologie']['Présence'] as $lieu=>$valeur) {
173
		foreach ($this->donnees['chorologie']['Présence'] as $lieu=>$valeur) {
198
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
174
			if (!isset($this->donnees['chorologie']['Statut d\'origine'][$lieu])) {
199
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
175
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['code'] = '';
200
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['valeur'] = $this->statut_origine[''];
176
				$this->donnees['chorologie']['Statut d\'origine'][$lieu]['valeur'] = 
-
 
177
					$this->tableau_manuel['statuts_origine'][''];
201
			}
178
			}
202
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
179
			if (!isset($this->donnees['chorologie']['Statut d\'introduction'][$lieu])) {
203
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
180
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['code'] = '';
204
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['valeur'] = $this->statut_introduction[''];
181
				$this->donnees['chorologie']['Statut d\'introduction'][$lieu]['valeur'] = 
-
 
182
					$this->tableau_manuel['statuts_introduction'][''];
205
			}
183
			}
206
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
184
			if (!isset($this->donnees['chorologie']['Statut de culture'][$lieu])) {
207
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
185
				$this->donnees['chorologie']['Statut de culture'][$lieu]['code'] = '';
208
				$this->donnees['chorologie']['Statut de culture'][$lieu]['valeur'] = $this->statut_culture[''];
186
				$this->donnees['chorologie']['Statut de culture'][$lieu]['valeur'] = 
-
 
187
					$this->tableau_manuel['statuts_culture'][''];
-
 
188
			}
-
 
189
		}
-
 
190
	}
-
 
191
	
-
 
192
	private function chargerClassification() {
-
 
193
		if ($this->donnees['info']['num_tax_sup'] != '' || isset($this->donnees['retenu']['num_tax_sup'])) {
-
 
194
			if ($this->donnees['num_nom'] == $this->donnees['num_nom_retenu']) {
-
 
195
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
-
 
196
					('Superieur', $this->referentiel, $this->donnees['info']['num_tax_sup']));
-
 
197
			} else {
-
 
198
				$this->donnees['classification']['supérieurs'] = array_reverse($this->taxonDao->getClassification
-
 
199
				('Superieur', $this->referentiel, $this->donnees['retenu']['num_tax_sup']));
-
 
200
			}		
-
 
201
		}	
-
 
202
		if ($this->donnees['num_nom_retenu'] != '') {
-
 
203
			$class_inf = $this->taxonDao->getClassification
-
 
204
				('Inferieur', $this->referentiel, $this->donnees['num_nom_retenu']);
-
 
205
			$this->donnees['classification']['inférieurs'] = $class_inf['inf'];	
-
 
206
			$this->donnees['niveau'] = $class_inf['niveau'];
-
 
207
		}	
-
 
208
	}
-
 
209
	
-
 
210
	public function chargerComplements() {
-
 
211
		$champs_manuel_technique = explode(',', $this->manuel['champs']);
-
 
212
		$champs_base_donnees = key($this->donnees['info']);
-
 
213
		$champs_supp_base = array_diff_key($this->donnees['info'], array_flip($champs_manuel_technique));
-
 
214
		foreach ($champs_supp_base as $champ=>$valeur) {
-
 
215
			if (!(preg_match('/presence_(.*)/',$champ) || preg_match('/statut_origine_(.*)/', $champ) || 
-
 
216
				 preg_match('/statut_introduction_(.*)/', $champ) || preg_match('/statut_culture_(.*)/', $champ))) {
-
 
217
				$this->donnees['complement'][$champ] = $valeur;
209
			}
218
			}
210
		}
219
		}
211
	}
220
	}
212
	
221
	
213
	private function parserChaineDeRecherche($chaine) {		
222
	private function parserChaineDeRecherche($chaine) {		
214
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
223
		$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
215
		$parametres = array('mots' => '');
224
		$parametres = array('mots' => '');
216
		$cle_precedente = null;
225
		$cle_precedente = null;
217
		foreach ($mots as $mot) {
226
		foreach ($mots as $mot) {
218
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
227
			if (preg_match('/^(sg|gen|sp|ssp|au|an|nn|bib|nr|tax):(.*)$/', $mot, $match)) {
219
				$cle = $match[1];
228
				$cle = $match[1];
220
				$cle_precedente = $cle;
229
				$cle_precedente = $cle;
221
				$valeur = $match[2];
230
				$valeur = $match[2];
222
				$parametres[$cle] = $valeur;
231
				$parametres[$cle] = $valeur;
223
			} else if (!is_null($cle_precedente)) {
232
			} else if (!is_null($cle_precedente)) {
224
				$parametres[$cle_precedente] .= ' '.$mot;
233
				$parametres[$cle_precedente] .= ' '.$mot;
225
			} else if (is_null($cle_precedente)) {
234
			} else if (is_null($cle_precedente)) {
226
				if (empty($parametres['mots'])) {
235
				if (empty($parametres['mots'])) {
227
					$parametres['mots'] = $mot;
236
					$parametres['mots'] = $mot;
228
				} else {
237
				} else {
229
					$parametres['mots'] .= ' '.$mot;
238
					$parametres['mots'] .= ' '.$mot;
230
				}
239
				}
231
			}
240
			}
232
		}		
241
		}		
233
		return $parametres;
242
		return $parametres;
234
	}
243
	}
235
	
244
	
236
	// retourne l'url de la fiche taxon pour les liens 
245
	// retourne l'url de la fiche taxon pour les liens 
237
	public static function getUrlFicheTaxon($params, $type) {
246
	public static function getUrlFicheTaxon($params, $type) {
238
		$taxon = null;
247
		$taxon = null;
239
		switch ($type) {
248
		switch ($type) {
240
			case 'bas' : 
249
			case 'bas' : 
241
				$taxon['num_nom'] = $params['bas_num'];
250
				$taxon['num_nom'] = $params['bas_num'];
242
				$taxon['num_nom_retenu'] = $params['bas_num_retenu'];
251
				$taxon['num_nom_retenu'] = $params['bas_num_retenu'];
243
				$taxon['nom_complet'] = $params['bas_nom'];
252
				$taxon['nom_complet'] = $params['bas_nom'];
244
				break;
253
				break;
245
			case 'p1' :
254
			case 'p1' :
246
				$taxon['num_nom'] = $params['p1_num'];
255
				$taxon['num_nom'] = $params['p1_num'];
247
				$taxon['num_nom_retenu'] = $params['p1_num'];
256
				$taxon['num_nom_retenu'] = $params['p1_num'];
248
				$taxon['nom_complet'] = $params['p1_nom'];
257
				$taxon['nom_complet'] = $params['p1_nom'];
249
				break;
258
				break;
250
			case 'p2' : 
259
			case 'p2' : 
251
				$taxon['num_nom'] = $params['p2_num'];
260
				$taxon['num_nom'] = $params['p2_num'];
252
				$taxon['num_nom_retenu'] = $params['p2_num'];
261
				$taxon['num_nom_retenu'] = $params['p2_num'];
253
				$taxon['nom_complet'] = $params['p2_nom'];	
262
				$taxon['nom_complet'] = $params['p2_nom'];	
254
				break;
263
				break;
255
			default : break;
264
			default : break;
256
		}
265
		}
257
		return Recherche::getUrlFicheTaxon($taxon);
266
		return Recherche::getUrlFicheTaxon($taxon);
258
	}
267
	}
-
 
268
	
-
 
269
	// charger tableau de $this->manuel
-
 
270
	private function chargerTableauManuel($titreTableau) {
-
 
271
		$champs = explode(',', $this->manuel[$titreTableau]);
-
 
272
		foreach ($champs as $champ) {
-
 
273
			list($champ_nom, $type) = explode('=', trim($champ));
-
 
274
			$this->tableau_manuel[$titreTableau][$champ_nom] = $type;
-
 
275
		}
-
 
276
	}
259
	
277
	
260
 
278
 
261
}
279
}