Subversion Repositories Applications.referentiel

Rev

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

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