Subversion Repositories Applications.referentiel

Rev

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

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