Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 522 Rev 891
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
		foreach ($this->valeurs_insertion as $nn => $valeurs){
51
		foreach ($this->valeurs_insertion as $nn => $valeurs){
51
			$requete = "INSERT INTO $table VALUES('',$nn, 'bdtfx', '{$valeurs['ve_lumiere']['min']}', ".
52
			$requete = "INSERT INTO $table VALUES({$i},$nn, 'bdtfx', '{$valeurs['ve_lumiere']['min']}', ".
52
				"'{$valeurs['ve_lumiere']['max']}','{$valeurs['ve_temperature']['min']}',".
53
				"'{$valeurs['ve_lumiere']['max']}','{$valeurs['ve_temperature']['min']}',".
53
				"'{$valeurs['ve_temperature']['max']}','{$valeurs['ve_continentalite']['min']}',".
54
				"'{$valeurs['ve_temperature']['max']}','{$valeurs['ve_continentalite']['min']}',".
54
				"'{$valeurs['ve_continentalite']['max']}','{$valeurs['ve_humidite_atmos']['min']}',".
55
				"'{$valeurs['ve_continentalite']['max']}','{$valeurs['ve_humidite_atmos']['min']}',".
55
				"'{$valeurs['ve_humidite_atmos']['max']}','{$valeurs['ve_humidite_edaph']['min']}',".
56
				"'{$valeurs['ve_humidite_atmos']['max']}','{$valeurs['ve_humidite_edaph']['min']}',".
56
				"'{$valeurs['ve_humidite_edaph']['max']}','{$valeurs['ve_reaction_sol']['min']}',".
57
				"'{$valeurs['ve_humidite_edaph']['max']}','{$valeurs['ve_reaction_sol']['min']}',".
57
				"'{$valeurs['ve_reaction_sol']['max']}','{$valeurs['ve_nutriments_sol']['min']}',".
58
				"'{$valeurs['ve_reaction_sol']['max']}','{$valeurs['ve_nutriments_sol']['min']}',".
58
				"'{$valeurs['ve_nutriments_sol']['max']}','{$valeurs['ve_salinite']['min']}',".
59
				"'{$valeurs['ve_nutriments_sol']['max']}','{$valeurs['ve_salinite']['min']}',".
59
				"'{$valeurs['ve_salinite']['max']}','{$valeurs['ve_texture_sol']['min']}',".
60
				"'{$valeurs['ve_salinite']['max']}','{$valeurs['ve_texture_sol']['min']}',".
60
				"'{$valeurs['ve_texture_sol']['max']}','{$valeurs['ve_mat_org_sol']['min']}',".
61
				"'{$valeurs['ve_texture_sol']['max']}','{$valeurs['ve_mat_org_sol']['min']}',".
61
				"'{$valeurs['ve_mat_org_sol']['max']}');";
62
				"'{$valeurs['ve_mat_org_sol']['max']}');";
62
			$this->Bdd->requeter($requete);
63
			$this->Bdd->requeter($requete);
-
 
64
			$i++;
63
			$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');
64
		}
66
		}
65
	}
67
	}
66
	
68
	
67
 
69
 
68
	
70
	
69
 
71
 
70
	// dans cette solution je parcours les donnees de baseflor
72
	// dans cette solution je parcours les donnees de baseflor
71
	// 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 
72
	// 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
73
	private function recupererValeursInsertion(){
75
	private function recupererValeursInsertion(){
74
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
76
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
75
		$this->valeurs_insertion = array();
77
		$this->valeurs_insertion = array();
76
		if (empty($this->donnees_initiales)) {
78
		if (empty($this->donnees_initiales)) {
77
			throw new Exception("Erreur : pas de données à traiter.");
79
			throw new Exception("Erreur : pas de données à traiter.");
78
		} else {
80
		} else {
79
			foreach  ($this->donnees_initiales as $nn => $ecologie) {
81
			foreach  ($this->donnees_initiales as $nn => $ecologie) {
80
				$this->nn_courant = $nn;
82
				$this->nn_courant = $nn;
81
				$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;
82
				$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 ;		
83
						while ($rang >= 180){
85
						while ($rang >= 180){
84
							if (!isset($donnees_initiales[$this->nn_superieur])) {
86
							if (!isset($donnees_initiales[$this->nn_superieur])) {
85
								foreach ($this->champs_ecologiques as $nom) {
87
								foreach ($this->champs_ecologiques as $nom) {
86
									
88
									
87
									
89
									
88
										$this->testerSiMinMax($nom, $ecologie[$nom]);
90
										$this->testerSiMinMax($nom, $ecologie[$nom]);
89
									
91
									
90
								}
92
								}
91
							}
93
							}
92
							$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;
93
							$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 ;
94
						}
96
						}
95
			}
97
			}
96
		}
98
		}
97
	}
99
	}
98
	
100
	
99
	// 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
100
	//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
101
	private function recupererValeursInsertion2(){
103
	private function recupererValeursInsertion2(){
102
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
104
		$this->champs_ecologiques = $this->outils->recupererTableauConfig(Config::get('Parametres.champsEcologiques'));
103
		$this->valeurs_insertion = array();
105
		$this->valeurs_insertion = array();
104
		if (empty($this->donnees_initiales)) {
106
		if (empty($this->donnees_initiales)) {
105
			throw new Exception("Erreur : pas de données à traiter.");
107
			throw new Exception("Erreur : pas de données à traiter.");
106
		} else {
108
		} else {
107
			$donnees_traitees = $this->donnees_initiales;
109
			$donnees_traitees = $this->donnees_initiales;
108
			$donnees_deja_traitees = array();
110
			$donnees_deja_traitees = array();
109
			$condition_fin = true;
111
			$condition_fin = true;
110
			$tab_num_nom = array_keys($donnees_traitees);
112
			$tab_num_nom = array_keys($donnees_traitees);
111
			while (!empty($donnees_traitees)) { 
113
			while (!empty($donnees_traitees)) { 
112
				reset($donnees_traitees);
114
				reset($donnees_traitees);
113
				$this->nn_courant = array_shift($tab_num_nom);
115
				$this->nn_courant = array_shift($tab_num_nom);
114
				$data = array_shift($donnees_traitees);
116
				$data = array_shift($donnees_traitees);
115
				if (isset($this->infos_taxon[$this->nn_courant])) {
117
				if (isset($this->infos_taxon[$this->nn_courant])) {
116
					$this->nn_superieur = $this->infos_taxon[$this->nn_courant]['nn_sup'];
118
					$this->nn_superieur = $this->infos_taxon[$this->nn_courant]['nn_sup'];
117
					if (!isset($donnees_deja_traitees[$this->nn_courant])) {
119
					if (!isset($donnees_deja_traitees[$this->nn_courant])) {
118
						if ($this->infos_taxon[$this->nn_superieur]['rang'] >= 180){
120
						if ($this->infos_taxon[$this->nn_superieur]['rang'] >= 180){
119
							$condition_fin = false;
121
							$condition_fin = false;
120
							foreach ($this->champs_ecologiques as $nom) {
122
							foreach ($this->champs_ecologiques as $nom) {
121
								
123
								
122
									$this->testerSiMinMax($nom, $data[$nom]);
124
									$this->testerSiMinMax($nom, $data[$nom]);
123
								
125
								
124
									
126
									
125
							}
127
							}
126
						}
128
						}
127
					}
129
					}
128
					$donnees_deja_traitees[$this->nn_courant] = 1;
130
					$donnees_deja_traitees[$this->nn_courant] = 1;
129
				}
131
				}
130
				if ($condition_fin == false && empty($donnees_traitees)) {
132
				if ($condition_fin == false && empty($donnees_traitees)) {
131
					$donnees_traitees = $this->valeurs_insertion;
133
					$donnees_traitees = $this->valeurs_insertion;
132
					$tab_num_nom = array_keys($donnees_traitees);
134
					$tab_num_nom = array_keys($donnees_traitees);
133
					$condition_fin = true;
135
					$condition_fin = true;
134
				}
136
				}
135
			}
137
			}
136
		}
138
		}
137
	}
139
	}
138
	
140
	
139
	// 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}
140
	private function testerSiMinMax($nom, $valeur) {
142
	private function testerSiMinMax($nom, $valeur) {
141
		$nn = $this->nn_superieur;
143
		$nn = $this->nn_superieur;
142
		if ( !isset($this->valeurs_insertion[$nn][$nom]['min']) 
144
		if ( !isset($this->valeurs_insertion[$nn][$nom]['min']) 
143
			|| empty($valeur['min']) 
145
			|| empty($valeur['min']) 
144
			|| empty($this->valeurs_insertion[$nn][$nom]['min']) 
146
			|| empty($this->valeurs_insertion[$nn][$nom]['min']) 
145
			|| $this->valeurs_insertion[$nn][$nom]['min'] > $valeur['min'] ){
147
			|| $this->valeurs_insertion[$nn][$nom]['min'] > $valeur['min'] ){
146
				$this->valeurs_insertion[$nn][$nom]['min'] = $valeur['min'];
148
				$this->valeurs_insertion[$nn][$nom]['min'] = $valeur['min'];
147
		
149
		
148
		}
150
		}
149
		
151
		
150
		if ( !isset($this->valeurs_insertion[$nn][$nom]['max'])  
152
		if ( !isset($this->valeurs_insertion[$nn][$nom]['max'])  
151
			|| empty($this->valeurs_insertion[$nn][$nom]['max']) 
153
			|| empty($this->valeurs_insertion[$nn][$nom]['max']) 
152
			|| empty($valeur['max']) 
154
			|| empty($valeur['max']) 
153
			|| $this->valeurs_insertion[$nn][$nom]['max'] < $valeur['max'] ) {
155
			|| $this->valeurs_insertion[$nn][$nom]['max'] < $valeur['max'] ) {
154
				$this->valeurs_insertion[$nn][$nom]['max'] = $valeur['max'];
156
				$this->valeurs_insertion[$nn][$nom]['max'] = $valeur['max'];
155
		}
157
		}
156
	}
158
	}
157
	
159
	
158
	// 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}
159
	private function consulterInfosTaxons() {
161
	private function consulterInfosTaxons() {
160
		$table = Config::get('tables.taxons');
162
		$table = Config::get('tables.taxons');
161
		$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 '.
162
			"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) ".
163
			'WHERE B.num_nom = B.num_nom_retenu ';
165
			'WHERE B.num_nom = B.num_nom_retenu ';
164
		$resultat = $this->Bdd->recupererTous($requete);
166
		$resultat = $this->Bdd->recupererTous($requete);
165
		foreach ($resultat as $res) {
167
		foreach ($resultat as $res) {
166
			$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'] );
167
		}
169
		}
168
	}
170
	}
169
		
171
		
170
	// 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'}]
171
	private function recupererDonneesInitiales() {
173
	private function recupererDonneesInitiales() {
172
		$table = Config::get('tables.donnees');
174
		$table = Config::get('tables.donnees');
173
		$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, ".
174
			"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 ".
175
			"FROM $table WHERE BDNT = 'BDTFX' ".
177
			"FROM $table WHERE BDNT = 'BDTFX' ".
176
			"	AND num_nomen != 0 ".
178
			"	AND num_nomen != 0 ".
177
			"	AND (ve_lumiere != '' OR ve_mat_org_sol != '' OR ve_temperature != '' ".
179
			"	AND (ve_lumiere != '' OR ve_mat_org_sol != '' OR ve_temperature != '' ".
178
			"	OR ve_continentalite != '' OR ve_humidite_atmos != ''  OR ve_humidite_edaph != '' ".
180
			"	OR ve_continentalite != '' OR ve_humidite_atmos != ''  OR ve_humidite_edaph != '' ".
179
			"	OR ve_nutriments_sol != '' OR ve_salinite != '' OR ve_texture_sol != '' OR ve_reaction_sol != '' )";
181
			"	OR ve_nutriments_sol != '' OR ve_salinite != '' OR ve_texture_sol != '' OR ve_reaction_sol != '' )";
180
		$resultat = $this->Bdd->recupererTous($requete);
182
		$resultat = $this->Bdd->recupererTous($requete);
181
		foreach ($resultat as $res) {
183
		foreach ($resultat as $res) {
182
		 	$this->donnees_initiales[$res['num_nomen']] = array(
184
		 	$this->donnees_initiales[$res['num_nomen']] = array(
183
			 	've_lumiere' => array('min' => $res['ve_lumiere'], 'max' => $res['ve_lumiere']),
185
			 	've_lumiere' => array('min' => $res['ve_lumiere'], 'max' => $res['ve_lumiere']),
184
			 	've_temperature' => array('min' => $res['ve_temperature'], 'max' => $res['ve_temperature']),
186
			 	've_temperature' => array('min' => $res['ve_temperature'], 'max' => $res['ve_temperature']),
185
			 	've_continentalite' => array('min' => $res['ve_continentalite'], 'max' => $res['ve_continentalite']),
187
			 	've_continentalite' => array('min' => $res['ve_continentalite'], 'max' => $res['ve_continentalite']),
186
			 	'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']),
187
			 	'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']),
188
			 	'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']),
189
			 	'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']),
190
			 	've_salinite' => array('min' => $res['ve_salinite'], 'max' => $res['ve_salinite']),
192
			 	've_salinite' => array('min' => $res['ve_salinite'], 'max' => $res['ve_salinite']),
191
			 	'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']),
192
		 		'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']));
193
		 }		 
195
		 }		 
194
	}
196
	}
195
	
197
	
196
	
198
	
197
	// +++ Fonctions de vérification des donnée obtenues ++++//
199
	// +++ Fonctions de vérification des donnée obtenues ++++//
198
	
200
	
199
	public function testAscendantsDeBaseflor(){
201
	public function testAscendantsDeBaseflor(){
200
		$this->recupererDonneesInitiales();
202
		$this->recupererDonneesInitiales();
201
		$this->consulterInfosTaxons();
203
		$this->consulterInfosTaxons();
202
		$fichier = dirname(__FILE__).'/log/verifTaxonsSup.log';
204
		$fichier = dirname(__FILE__).'/log/verifTaxonsSup.log';
203
		$liste = array();
205
		$liste = array();
204
		foreach ($this->donnees_initiales as $nn => $data) {
206
		foreach ($this->donnees_initiales as $nn => $data) {
205
			$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'] : '' ;
206
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
208
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
207
				$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 ;
208
				while ($rang >= 180) {
210
				while ($rang >= 180) {
209
					if (!empty($nn_sup)) {
211
					if (!empty($nn_sup)) {
210
						if (isset($liste["$nn_sup($rang)"])){
212
						if (isset($liste["$nn_sup($rang)"])){
211
							$liste["$nn_sup($rang)"] .= ", $nn";
213
							$liste["$nn_sup($rang)"] .= ", $nn";
212
						}else {
214
						}else {
213
							$liste["$nn_sup($rang)"] = "$nn";
215
							$liste["$nn_sup($rang)"] = "$nn";
214
						}
216
						}
215
						$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'] : '' ;
216
						$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 ;
217
					}else {
219
					}else {
218
						break;
220
						break;
219
					}
221
					}
220
				}
222
				}
221
			}
223
			}
222
		}
224
		}
223
		$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";
224
		foreach ($liste as $cle => $inferieur){
226
		foreach ($liste as $cle => $inferieur){
225
			$log .= "$cle : $inferieur \n";
227
			$log .= "$cle : $inferieur \n";
226
		}
228
		}
227
		file_put_contents($fichier, $log);
229
		file_put_contents($fichier, $log);
228
	}
230
	}
229
	
231
	
230
	public function testEcologieAscendantsDeBaseflor(){
232
	public function testEcologieAscendantsDeBaseflor(){
231
		$this->recupererDonneesInitiales();
233
		$this->recupererDonneesInitiales();
232
		$this->consulterInfosTaxons();
234
		$this->consulterInfosTaxons();
233
		$fichier = dirname(__FILE__).'/log/verifTaxonsSupEcolo.log';
235
		$fichier = dirname(__FILE__).'/log/verifTaxonsSupEcolo.log';
234
		$liste = array();
236
		$liste = array();
235
		foreach ($this->donnees_initiales as $nn => $data) {
237
		foreach ($this->donnees_initiales as $nn => $data) {
236
			$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'] : '' ;
237
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
239
			if (!empty($nn_sup) && !isset($donnees_initiales[$nn_sup])){
238
				$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 ;
239
				while ($rang >= 180) {
241
				while ($rang >= 180) {
240
					if (!empty($nn_sup)) {
242
					if (!empty($nn_sup)) {
241
						$ecolo = array_values($data);
243
						$ecolo = array_values($data);
242
						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;
243
						if (isset($liste["$nn_sup($rang)"])){
245
						if (isset($liste["$nn_sup($rang)"])){
244
							$liste["$nn_sup($rang)"] .= ",[{$l['min']}, {$t['min']}, {$c['min']},"
246
							$liste["$nn_sup($rang)"] .= ",[{$l['min']}, {$t['min']}, {$c['min']},"
245
							."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
247
							."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
246
							."{$tx['min']}, {$mo['min']}]";
248
							."{$tx['min']}, {$mo['min']}]";
247
						}else {
249
						}else {
248
						$liste["$nn_sup($rang)"] = "[{$l['min']}, {$t['min']}, {$c['min']},"
250
						$liste["$nn_sup($rang)"] = "[{$l['min']}, {$t['min']}, {$c['min']},"
249
						."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
251
						."{$ha['min']}, {$he['min']}, {$r['min']}, {$n['min']}, {$s['min']},"
250
									."{$tx['min']}, {$mo['min']}]";
252
									."{$tx['min']}, {$mo['min']}]";
251
							}
253
							}
252
						$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'] : '' ;
253
							$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 ;
254
					}else {
256
					}else {
255
						break;
257
						break;
256
						}
258
						}
257
						}
259
						}
258
						}
260
						}
259
				}
261
				}
260
				$log = "nn ascendant (pas forcement l'ascendant directement au dessus) :"
262
				$log = "nn ascendant (pas forcement l'ascendant directement au dessus) :"
261
				   ." valeurs descendants contenus dans baseflor  \n"
263
				   ." valeurs descendants contenus dans baseflor  \n"
262
					."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";
263
			foreach ($liste as $cle => $inferieurs){
265
			foreach ($liste as $cle => $inferieurs){
264
				$log .= "$cle : $inferieurs \n";
266
				$log .= "$cle : $inferieurs \n";
265
			}
267
			}
266
				file_put_contents($fichier, $log);
268
				file_put_contents($fichier, $log);
267
	}
269
	}
268
	
270
	
269
 
271
 
270
}
272
}