Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 891 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 891 Rev 905
1
<?php
1
<?php
2
/**
2
/**
3
 * 
3
 * 
4
 * 
4
 * 
5
 * @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
5
 * @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>
6
 * 
6
 * 
7
 *
7
 *
8
 */
8
 */
9
class BaseflorRangSupInsertion {
9
class BaseflorRangSupInsertion {
10
	
10
	
11
	private $table = null;
11
	private $table = null;
12
	private $donnees_initiales = array();
12
	private $donnees_initiales = array();
13
	private $valeurs_insertion;
13
	private $valeurs_insertion;
14
	private $infos_taxon = array();
14
	private $infos_taxon = array();
15
	private $conteneur;
15
	private $conteneur;
16
	private $efloreCommun;
16
	private $efloreCommun;
17
	private $message;
17
	private $message;
18
	private $outils;
18
	private $outils;
19
	private $nn_courant;
19
	private $nn_courant;
20
	private $nn_superieur;
20
	private $nn_superieur;
21
	private $champs_ecologiques = array();
21
	private $champs_ecologiques = array();
22
	private $Bdd;
22
	private $Bdd;
23
		
23
		
24
	
24
	
25
	public function __construct(Conteneur $conteneur, Bdd $bdd) {
25
	public function __construct(Conteneur $conteneur, Bdd $bdd) {
26
		$this->conteneur = $conteneur;
26
		$this->conteneur = $conteneur;
27
		$this->Bdd = $bdd;
27
		$this->Bdd = $bdd;
28
		$this->efloreCommun = $conteneur->getEfloreCommun();
28
		$this->efloreCommun = $conteneur->getEfloreCommun();
29
		$this->message = $conteneur->getMessages();
29
		$this->message = $conteneur->getMessages();
30
		$this->outils = $conteneur->getOutils();
30
		$this->outils = $conteneur->getOutils();
31
		$this->dossierBase = dirname(__FILE__).'/';
31
		$this->dossierBase = dirname(__FILE__).'/';
32
	}
32
	}
33
	
33
	
34
	public function insererDonnees(){
34
	public function insererDonnees(){
35
		echo "Chargement de la structure en cours \n" ;
35
		echo "Chargement de la structure en cours \n" ;
36
		$this->efloreCommun->chargerFichierSql('chemins.rang_sup_sql');
36
		$this->efloreCommun->chargerFichierSql('chemins.rang_sup_sql');
37
		echo "Récupération des données de baseflor  en cours \n";
37
		echo "Récupération des données de baseflor  en cours \n";
38
		$this->recupererDonneesInitiales();
38
		$this->recupererDonneesInitiales();
39
		echo "Calcul des valeurs pour les rangs supérieurs  en  cours \n";
39
		echo "Calcul des valeurs pour les rangs supérieurs  en  cours \n";
40
		$this->consulterInfosTaxons();
40
		$this->consulterInfosTaxons();
41
		$this->recupererValeursInsertion();
41
		$this->recupererValeursInsertion();
42
		$this->insererDonneesRangSup();
42
		$this->insererDonneesRangSup();
43
	}
43
	}
44
	
44
	
45
	
45
	
46
	private function insererDonneesRangSup() {
46
	private function insererDonneesRangSup() {
47
		$table = Config::get('tables.rang_sup');
47
		$table = Config::get('tables.rang_sup');
48
		$requete_truncate = 'TRUNCATE TABLE '.$table;
48
		$requete_truncate = 'TRUNCATE TABLE '.$table;
49
		$this->Bdd->requeter($requete_truncate);
49
		$this->Bdd->requeter($requete_truncate);
50
		$i = 0;
50
		$i = 0;
51
		foreach ($this->valeurs_insertion as $nn => $valeurs){
51
		foreach ($this->valeurs_insertion as $nn => $valeurs){
52
			$requete = "INSERT INTO $table VALUES({$i},$nn, 'bdtfx', '{$valeurs['ve_lumiere']['min']}', ".
52
			$requete = "INSERT INTO $table VALUES({$i},$nn, 'bdtfx', '{$valeurs['ve_lumiere']['min']}', ".
53
				"'{$valeurs['ve_lumiere']['max']}','{$valeurs['ve_temperature']['min']}',".
53
				"'{$valeurs['ve_lumiere']['max']}','{$valeurs['ve_temperature']['min']}',".
54
				"'{$valeurs['ve_temperature']['max']}','{$valeurs['ve_continentalite']['min']}',".
54
				"'{$valeurs['ve_temperature']['max']}','{$valeurs['ve_continentalite']['min']}',".
55
				"'{$valeurs['ve_continentalite']['max']}','{$valeurs['ve_humidite_atmos']['min']}',".
55
				"'{$valeurs['ve_continentalite']['max']}','{$valeurs['ve_humidite_atmos']['min']}',".
56
				"'{$valeurs['ve_humidite_atmos']['max']}','{$valeurs['ve_humidite_edaph']['min']}',".
56
				"'{$valeurs['ve_humidite_atmos']['max']}','{$valeurs['ve_humidite_edaph']['min']}',".
57
				"'{$valeurs['ve_humidite_edaph']['max']}','{$valeurs['ve_reaction_sol']['min']}',".
57
				"'{$valeurs['ve_humidite_edaph']['max']}','{$valeurs['ve_reaction_sol']['min']}',".
58
				"'{$valeurs['ve_reaction_sol']['max']}','{$valeurs['ve_nutriments_sol']['min']}',".
58
				"'{$valeurs['ve_reaction_sol']['max']}','{$valeurs['ve_nutriments_sol']['min']}',".
59
				"'{$valeurs['ve_nutriments_sol']['max']}','{$valeurs['ve_salinite']['min']}',".
59
				"'{$valeurs['ve_nutriments_sol']['max']}','{$valeurs['ve_salinite']['min']}',".
60
				"'{$valeurs['ve_salinite']['max']}','{$valeurs['ve_texture_sol']['min']}',".
60
				"'{$valeurs['ve_salinite']['max']}','{$valeurs['ve_texture_sol']['min']}',".
61
				"'{$valeurs['ve_texture_sol']['max']}','{$valeurs['ve_mat_org_sol']['min']}',".
61
				"'{$valeurs['ve_texture_sol']['max']}','{$valeurs['ve_mat_org_sol']['min']}',".
62
				"'{$valeurs['ve_mat_org_sol']['max']}');";
62
				"'{$valeurs['ve_mat_org_sol']['max']}');";
63
			$this->Bdd->requeter($requete);
63
			$this->Bdd->requeter($requete);
64
			$i++;
64
			$i++;
65
			$this->message->afficherAvancement('Insertion des valeurs pour les rangs supérieurs en cours');
65
			$this->message->afficherAvancement('Insertion des valeurs pour les rangs supérieurs en cours');
66
		}
66
		}
67
	}
67
	}
68
	
68
	
69
 
69
 
70
	
70
	
71
 
71
 
72
	// dans cette solution je parcours les donnees de baseflor
72
	// dans cette solution je parcours les donnees de baseflor
73
	// je teste une donnée (si min max)  pour récuperer les valeurs pour chaque rang superieur 
73
	// je teste une donnée (si min max)  pour récuperer les valeurs pour chaque rang superieur 
74
	// jusqu'à famille (180) puis je passe à la suivante jusqu'à avoir parcouru tout baseflor
74
	// jusqu'à famille (180) puis je passe à la suivante jusqu'à avoir parcouru tout baseflor
75
	private function recupererValeursInsertion(){
75
	private function recupererValeursInsertion(){
76
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
76
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
77
		$this->valeurs_insertion = array();
77
		$this->valeurs_insertion = array();
78
		if (empty($this->donnees_initiales)) {
78
		if (empty($this->donnees_initiales)) {
79
			throw new Exception("Erreur : pas de données à traiter.");
79
			throw new Exception("Erreur : pas de données à traiter.");
80
		} else {
80
		} else {
81
			foreach  ($this->donnees_initiales as $nn => $ecologie) {
81
			foreach  ($this->donnees_initiales as $nn => $ecologie) {
82
				$this->nn_courant = $nn;
82
				$this->nn_courant = $nn;
83
				$this->nn_superieur = isset($this->infos_taxon[$this->nn_courant]) ? $this->infos_taxon[$this->nn_courant]['nn_sup'] : null;
83
				$this->nn_superieur = isset($this->infos_taxon[$this->nn_courant]) ? $this->infos_taxon[$this->nn_courant]['nn_sup'] : null;
84
				$rang = isset($this->infos_taxon[$this->nn_superieur]) ? $this->infos_taxon[$this->nn_superieur]['rang'] : 179 ;		
84
				$rang = isset($this->infos_taxon[$this->nn_superieur]) ? $this->infos_taxon[$this->nn_superieur]['rang'] : 179 ;		
85
						while ($rang >= 180){
85
						while ($rang >= 180){
86
							if (!isset($donnees_initiales[$this->nn_superieur])) {
86
							if (!isset($donnees_initiales[$this->nn_superieur])) {
87
								foreach ($this->champs_ecologiques as $nom) {
87
								foreach ($this->champs_ecologiques as $nom) {
88
									
88
									
89
									
89
									
90
										$this->testerSiMinMax($nom, $ecologie[$nom]);
90
										$this->testerSiMinMax($nom, $ecologie[$nom]);
91
									
91
									
92
								}
92
								}
93
							}
93
							}
94
							$this->nn_superieur = isset($this->infos_taxon[$this->nn_superieur]) ? $this->infos_taxon[$this->nn_superieur]['nn_sup'] : null;
94
							$this->nn_superieur = isset($this->infos_taxon[$this->nn_superieur]) ? $this->infos_taxon[$this->nn_superieur]['nn_sup'] : null;
95
							$rang = !empty($this->nn_superieur) ? $this->infos_taxon[$this->nn_superieur]['rang'] : 179 ;
95
							$rang = !empty($this->nn_superieur) ? $this->infos_taxon[$this->nn_superieur]['rang'] : 179 ;
96
						}
96
						}
97
			}
97
			}
98
		}
98
		}
99
	}
99
	}
100
	
100
	
101
	// ici je parcours toutes les données de baseflor et je teste et récupère les valeurs pour le rang superieur
101
	// ici je parcours toutes les données de baseflor et je teste et récupère les valeurs pour le rang superieur
102
	//direct puis je récupère les données obtenues et je recommence jusqu'à que tous les rangs obtenus soient des familles
102
	//direct puis je récupère les données obtenues et je recommence jusqu'à que tous les rangs obtenus soient des familles
103
	private function recupererValeursInsertion2(){
103
	private function recupererValeursInsertion2(){
104
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
104
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
105
		$this->valeurs_insertion = array();
105
		$this->valeurs_insertion = array();
106
		if (empty($this->donnees_initiales)) {
106
		if (empty($this->donnees_initiales)) {
107
			throw new Exception("Erreur : pas de données à traiter.");
107
			throw new Exception("Erreur : pas de données à traiter.");
108
		} else {
108
		} else {
109
			$donnees_traitees = $this->donnees_initiales;
109
			$donnees_traitees = $this->donnees_initiales;
110
			$donnees_deja_traitees = array();
110
			$donnees_deja_traitees = array();
111
			$condition_fin = true;
111
			$condition_fin = true;
112
			$tab_num_nom = array_keys($donnees_traitees);
112
			$tab_num_nom = array_keys($donnees_traitees);
113
			while (!empty($donnees_traitees)) { 
113
			while (!empty($donnees_traitees)) { 
114
				reset($donnees_traitees);
114
				reset($donnees_traitees);
115
				$this->nn_courant = array_shift($tab_num_nom);
115
				$this->nn_courant = array_shift($tab_num_nom);
116
				$data = array_shift($donnees_traitees);
116
				$data = array_shift($donnees_traitees);
117
				if (isset($this->infos_taxon[$this->nn_courant])) {
117
				if (isset($this->infos_taxon[$this->nn_courant])) {
118
					$this->nn_superieur = $this->infos_taxon[$this->nn_courant]['nn_sup'];
118
					$this->nn_superieur = $this->infos_taxon[$this->nn_courant]['nn_sup'];
119
					if (!isset($donnees_deja_traitees[$this->nn_courant])) {
119
					if (!isset($donnees_deja_traitees[$this->nn_courant])) {
120
						if ($this->infos_taxon[$this->nn_superieur]['rang'] >= 180){
120
						if ($this->infos_taxon[$this->nn_superieur]['rang'] >= 180){
121
							$condition_fin = false;
121
							$condition_fin = false;
122
							foreach ($this->champs_ecologiques as $nom) {
122
							foreach ($this->champs_ecologiques as $nom) {
123
								
123
								
124
									$this->testerSiMinMax($nom, $data[$nom]);
124
									$this->testerSiMinMax($nom, $data[$nom]);
125
								
125
								
126
									
126
									
127
							}
127
							}
128
						}
128
						}
129
					}
129
					}
130
					$donnees_deja_traitees[$this->nn_courant] = 1;
130
					$donnees_deja_traitees[$this->nn_courant] = 1;
131
				}
131
				}
132
				if ($condition_fin == false && empty($donnees_traitees)) {
132
				if ($condition_fin == false && empty($donnees_traitees)) {
133
					$donnees_traitees = $this->valeurs_insertion;
133
					$donnees_traitees = $this->valeurs_insertion;
134
					$tab_num_nom = array_keys($donnees_traitees);
134
					$tab_num_nom = array_keys($donnees_traitees);
135
					$condition_fin = true;
135
					$condition_fin = true;
136
				}
136
				}
137
			}
137
			}
138
		}
138
		}
139
	}
139
	}
140
	
140
	
141
	// je stocke des valeurs à insérer sous la forme : $insertion [{nn_tax_sup}][{nom_de_chps}][{max ou min}] = {valeur}
141
	// je stocke des valeurs à insérer sous la forme : $insertion [{nn_tax_sup}][{nom_de_chps}][{max ou min}] = {valeur}
142
	private function testerSiMinMax($nom, $valeur) {
142
	private function testerSiMinMax($nom, $valeur) {
143
		$nn = $this->nn_superieur;
143
		$nn = $this->nn_superieur;
144
		if ( !isset($this->valeurs_insertion[$nn][$nom]['min']) 
144
		if ( !isset($this->valeurs_insertion[$nn][$nom]['min']) 
145
			|| empty($valeur['min']) 
145
			|| empty($valeur['min']) 
146
			|| empty($this->valeurs_insertion[$nn][$nom]['min']) 
146
			|| empty($this->valeurs_insertion[$nn][$nom]['min']) 
147
			|| $this->valeurs_insertion[$nn][$nom]['min'] > $valeur['min'] ){
147
			|| $this->valeurs_insertion[$nn][$nom]['min'] > $valeur['min'] ){
148
				$this->valeurs_insertion[$nn][$nom]['min'] = $valeur['min'];
148
				$this->valeurs_insertion[$nn][$nom]['min'] = $valeur['min'];
149
		
149
		
150
		}
150
		}
151
		
151
		
152
		if ( !isset($this->valeurs_insertion[$nn][$nom]['max'])  
152
		if ( !isset($this->valeurs_insertion[$nn][$nom]['max'])  
153
			|| empty($this->valeurs_insertion[$nn][$nom]['max']) 
153
			|| empty($this->valeurs_insertion[$nn][$nom]['max']) 
154
			|| empty($valeur['max']) 
154
			|| empty($valeur['max']) 
155
			|| $this->valeurs_insertion[$nn][$nom]['max'] < $valeur['max'] ) {
155
			|| $this->valeurs_insertion[$nn][$nom]['max'] < $valeur['max'] ) {
156
				$this->valeurs_insertion[$nn][$nom]['max'] = $valeur['max'];
156
				$this->valeurs_insertion[$nn][$nom]['max'] = $valeur['max'];
157
		}
157
		}
158
	}
158
	}
159
	
159
	
160
	// je stocke les infos taxons sous la forme : $info_taxon[{num_nomem}][{num_nomen_sup ou rang}] = {valeur}
160
	// je stocke les infos taxons sous la forme : $info_taxon[{num_nomem}][{num_nomen_sup ou rang}] = {valeur}
161
	private function consulterInfosTaxons() {
161
	private function consulterInfosTaxons() {
162
		$table = Config::get('tables.taxons');
162
		$table = Config::get('tables.taxons');
163
		$requete = 'SELECT A.num_nom AS nn, B.num_tax_sup AS nn_sup, A.rang '.
163
		$requete = 'SELECT A.num_nom AS nn, B.num_tax_sup AS nn_sup, A.rang '.
164
			"FROM $table A JOIN $table B ON (A.num_nom_retenu = B.num_nom) ".
164
			"FROM $table A JOIN $table B ON (A.num_nom_retenu = B.num_nom) ".
165
			'WHERE B.num_nom = B.num_nom_retenu ';
165
			'WHERE B.num_nom = B.num_nom_retenu ';
166
		$resultat = $this->Bdd->recupererTous($requete);
166
		$resultat = $this->Bdd->recupererTous($requete);
167
		foreach ($resultat as $res) {
167
		foreach ($resultat as $res) {
168
			$this->infos_taxon[$res['nn']] = array('nn_sup' => $res['nn_sup'], 'rang' => $res['rang'] );
168
			$this->infos_taxon[$res['nn']] = array('nn_sup' => $res['nn_sup'], 'rang' => $res['rang'] );
169
		}
169
		}
170
	}
170
	}
171
		
171
		
172
	// je stocke les valeurs initiales sous la forme : $initiales[{nn_nomem}][{champs ecologique}][{'min' ou 'max'}]
172
	// je stocke les valeurs initiales sous la forme : $initiales[{nn_nomem}][{champs ecologique}][{'min' ou 'max'}]
173
	private function recupererDonneesInitiales() {
173
	private function recupererDonneesInitiales() {
174
		$table = Config::get('tables.donnees');
174
		$table = Config::get('tables.donnees');
175
		$requete = "SELECT num_nomen, ve_lumiere, ve_temperature, ve_continentalite, ve_humidite_atmos, ".
175
		$requete = "SELECT num_nomen, ve_lumiere, ve_temperature, ve_continentalite, ve_humidite_atmos, ".
176
			"ve_humidite_edaph, ve_reaction_sol, ve_nutriments_sol, ve_salinite, ve_texture_sol, ve_mat_org_sol ".
176
			"ve_humidite_edaph, ve_reaction_sol, ve_nutriments_sol, ve_salinite, ve_texture_sol, ve_mat_org_sol ".
177
			"FROM $table WHERE BDNT = 'BDTFX' ".
177
			"FROM $table WHERE BDNT = 'BDTFX' ".
178
			"	AND num_nomen != 0 ".
178
			"	AND num_nomen != 0 ".
179
			"	AND (ve_lumiere != '' OR ve_mat_org_sol != '' OR ve_temperature != '' ".
179
			"	AND !(ve_lumiere = '' and ve_mat_org_sol = '' and ve_temperature = '' and ve_continentalite = '' ".
180
			"	OR ve_continentalite != '' OR ve_humidite_atmos != ''  OR ve_humidite_edaph != '' ".
180
			"	and ve_humidite_atmos = ''  and ve_humidite_edaph = '' and ve_nutriments_sol = '' and ve_salinite = ''".
181
			"	OR ve_nutriments_sol != '' OR ve_salinite != '' OR ve_texture_sol != '' OR ve_reaction_sol != '' )";
181
			"	and ve_texture_sol = '' and ve_reaction_sol = '')";
182
		$resultat = $this->Bdd->recupererTous($requete);
182
		$resultat = $this->Bdd->recupererTous($requete);
183
		foreach ($resultat as $res) {
183
		foreach ($resultat as $res) {
184
		 	$this->donnees_initiales[$res['num_nomen']] = array(
184
		 	$this->donnees_initiales[$res['num_nomen']] = array(
185
			 	've_lumiere' => array('min' => $res['ve_lumiere'], 'max' => $res['ve_lumiere']),
185
			 	've_lumiere' => array('min' => $res['ve_lumiere'], 'max' => $res['ve_lumiere']),
186
			 	've_temperature' => array('min' => $res['ve_temperature'], 'max' => $res['ve_temperature']),
186
			 	've_temperature' => array('min' => $res['ve_temperature'], 'max' => $res['ve_temperature']),
187
			 	've_continentalite' => array('min' => $res['ve_continentalite'], 'max' => $res['ve_continentalite']),
187
			 	've_continentalite' => array('min' => $res['ve_continentalite'], 'max' => $res['ve_continentalite']),
188
			 	've_humidite_atmos' => array('min' => $res['ve_humidite_atmos'], 'max' => $res['ve_humidite_atmos']),
188
			 	've_humidite_atmos' => array('min' => $res['ve_humidite_atmos'], 'max' => $res['ve_humidite_atmos']),
189
			 	've_humidite_edaph' => array('min' => $res['ve_humidite_edaph'], 'max' => $res['ve_humidite_edaph']),
189
			 	've_humidite_edaph' => array('min' => $res['ve_humidite_edaph'], 'max' => $res['ve_humidite_edaph']),
190
			 	've_reaction_sol' => array('min' => $res['ve_reaction_sol'], 'max' => $res['ve_reaction_sol']),
190
			 	've_reaction_sol' => array('min' => $res['ve_reaction_sol'], 'max' => $res['ve_reaction_sol']),
191
			 	've_nutriments_sol' => array('min' => $res['ve_nutriments_sol'], 'max' => $res['ve_nutriments_sol']),
191
			 	've_nutriments_sol' => array('min' => $res['ve_nutriments_sol'], 'max' => $res['ve_nutriments_sol']),
192
			 	've_salinite' => array('min' => $res['ve_salinite'], 'max' => $res['ve_salinite']),
192
			 	've_salinite' => array('min' => $res['ve_salinite'], 'max' => $res['ve_salinite']),
193
			 	've_texture_sol' => array('min' => $res['ve_texture_sol'], 'max' => $res['ve_texture_sol']),
193
			 	've_texture_sol' => array('min' => $res['ve_texture_sol'], 'max' => $res['ve_texture_sol']),
194
		 		've_mat_org_sol' => array('min' => $res['ve_mat_org_sol'], 'max' => $res['ve_mat_org_sol']));
194
		 		've_mat_org_sol' => array('min' => $res['ve_mat_org_sol'], 'max' => $res['ve_mat_org_sol']));
195
		 }		 
195
		 }		 
196
	}
196
	}
197
	
197
	
198
	
198
	
199
	// +++ Fonctions de vérification des donnée obtenues ++++//
199
	// +++ Fonctions de vérification des donnée obtenues ++++//
200
	
200
	
201
	public function testAscendantsDeBaseflor(){
201
	public function testAscendantsDeBaseflor(){
202
		$this->recupererDonneesInitiales();
202
		$this->recupererDonneesInitiales();
203
		$this->consulterInfosTaxons();
203
		$this->consulterInfosTaxons();
204
		$fichier = dirname(__FILE__).'/log/verifTaxonsSup.log';
204
		$fichier = dirname(__FILE__).'/log/verifTaxonsSup.log';
205
		$liste = array();
205
		$liste = array();
206
		foreach ($this->donnees_initiales as $nn => $data) {
206
		foreach ($this->donnees_initiales as $nn => $data) {
207
			$nn_sup = isset($this->infos_taxon[$nn]) ? $this->infos_taxon[$nn]['nn_sup'] : '' ;
207
			$nn_sup = isset($this->infos_taxon[$nn]) ? $this->infos_taxon[$nn]['nn_sup'] : '' ;
208
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
208
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
209
				$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
209
				$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
210
				while ($rang >= 180) {
210
				while ($rang >= 180) {
211
					if (!empty($nn_sup)) {
211
					if (!empty($nn_sup)) {
212
						if (isset($liste["$nn_sup($rang)"])){
212
						if (isset($liste["$nn_sup($rang)"])){
213
							$liste["$nn_sup($rang)"] .= ", $nn";
213
							$liste["$nn_sup($rang)"] .= ", $nn";
214
						}else {
214
						}else {
215
							$liste["$nn_sup($rang)"] = "$nn";
215
							$liste["$nn_sup($rang)"] = "$nn";
216
						}
216
						}
217
						$nn_sup = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['nn_sup'] : '' ;
217
						$nn_sup = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['nn_sup'] : '' ;
218
						$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
218
						$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
219
					}else {
219
					}else {
220
						break;
220
						break;
221
					}
221
					}
222
				}
222
				}
223
			}
223
			}
224
		}
224
		}
225
		$log = "un ascendant (pas forcement l'ascendant directement au dessus) : les descendants contenus dans baseflor  \n";
225
		$log = "un ascendant (pas forcement l'ascendant directement au dessus) : les descendants contenus dans baseflor  \n";
226
		foreach ($liste as $cle => $inferieur){
226
		foreach ($liste as $cle => $inferieur){
227
			$log .= "$cle : $inferieur \n";
227
			$log .= "$cle : $inferieur \n";
228
		}
228
		}
229
		file_put_contents($fichier, $log);
229
		file_put_contents($fichier, $log);
230
	}
230
	}
231
	
231
	
232
	public function testEcologieAscendantsDeBaseflor(){
232
	public function testEcologieAscendantsDeBaseflor(){
233
		$this->recupererDonneesInitiales();
233
		$this->recupererDonneesInitiales();
234
		$this->consulterInfosTaxons();
234
		$this->consulterInfosTaxons();
235
		$fichier = dirname(__FILE__).'/log/verifTaxonsSupEcolo.log';
235
		$fichier = dirname(__FILE__).'/log/verifTaxonsSupEcolo.log';
236
		$liste = array();
236
		$liste = array();
237
		foreach ($this->donnees_initiales as $nn => $data) {
237
		foreach ($this->donnees_initiales as $nn => $data) {
238
			$nn_sup = isset($this->infos_taxon[$nn]) ? $this->infos_taxon[$nn]['nn_sup'] : '' ;
238
			$nn_sup = isset($this->infos_taxon[$nn]) ? $this->infos_taxon[$nn]['nn_sup'] : '' ;
239
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
239
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
240
				$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
240
				$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
241
				while ($rang >= 180) {
241
				while ($rang >= 180) {
242
					if (!empty($nn_sup)) {
242
					if (!empty($nn_sup)) {
243
						$ecolo = array_values($data);
243
						$ecolo = array_values($data);
244
						list($l,$t,$c,$ha,$he,$r,$n,$s,$tx,$mo) = $ecolo;
244
						list($l,$t,$c,$ha,$he,$r,$n,$s,$tx,$mo) = $ecolo;
245
						if (isset($liste["$nn_sup($rang)"])){
245
						if (isset($liste["$nn_sup($rang)"])){
246
							$liste["$nn_sup($rang)"] .= ",[{$l['min']}, {$t['min']}, {$c['min']},"
246
							$liste["$nn_sup($rang)"] .= ",[{$l['min']}, {$t['min']}, {$c['min']},"
247
							."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
247
							."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
248
							."{$tx['min']}, {$mo['min']}]";
248
							."{$tx['min']}, {$mo['min']}]";
249
						}else {
249
						}else {
250
						$liste["$nn_sup($rang)"] = "[{$l['min']}, {$t['min']}, {$c['min']},"
250
						$liste["$nn_sup($rang)"] = "[{$l['min']}, {$t['min']}, {$c['min']},"
251
						."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
251
						."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
252
									."{$tx['min']}, {$mo['min']}]";
252
									."{$tx['min']}, {$mo['min']}]";
253
							}
253
							}
254
						$nn_sup = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['nn_sup'] : '' ;
254
						$nn_sup = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['nn_sup'] : '' ;
255
							$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
255
							$rang = isset($this->infos_taxon[$nn_sup]) ? $this->infos_taxon[$nn_sup]['rang'] : 179 ;
256
					}else {
256
					}else {
257
						break;
257
						break;
258
						}
258
						}
259
						}
259
						}
260
						}
260
						}
261
				}
261
				}
262
				$log = "nn ascendant (pas forcement l'ascendant directement au dessus) :"
262
				$log = "nn ascendant (pas forcement l'ascendant directement au dessus) :"
263
				   ." valeurs descendants contenus dans baseflor  \n"
263
				   ." valeurs descendants contenus dans baseflor  \n"
264
					."Pour le calcul des valeurs min et max de gauche, les valeurs de droite sont utilisées. \n";
264
					."Pour le calcul des valeurs min et max de gauche, les valeurs de droite sont utilisées. \n";
265
			foreach ($liste as $cle => $inferieurs){
265
			foreach ($liste as $cle => $inferieurs){
266
				$log .= "$cle : $inferieurs \n";
266
				$log .= "$cle : $inferieurs \n";
267
			}
267
			}
268
				file_put_contents($fichier, $log);
268
				file_put_contents($fichier, $log);
269
	}
269
	}
270
	
270
	
271
 
271
 
272
}
272
}