Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

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