Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1921 Rev 1925
1
<?php
1
<?php
2
 
2
 
3
/**
3
/**
4
 * Exemple lancement:
4
 * Exemple lancement:
5
 * /opt/lampp/bin/php -d memory_limit=3500M cli.php desontologisation -a unitebase
5
 * /opt/lampp/bin/php -d memory_limit=3500M cli.php desontologisation -a unitebase
6
 */
6
 */
7
 
7
 
8
class Desontologisation extends Script {
8
class Desontologisation extends Script {
9
 
9
 
10
	private $bdd = null;
10
	private $bdd = null;
11
	private $structures = array();
11
	private $structures = array();
12
	private $communes = array();
12
	private $communes = array();
13
	private $nonTrouvees = array();
13
	private $nonTrouvees = array();
14
 
14
 
15
	public function __construct($script_nom, $parametres) {
15
	public function __construct($script_nom, $parametres) {
16
		parent::__construct($script_nom, $parametres);
16
		parent::__construct($script_nom, $parametres);
17
		$this->bdd = new Bdd();
17
		$this->bdd = new Bdd();
18
	}
18
	}
19
 
19
 
20
	public function executer() {
20
	public function executer() {
21
		try {
21
		try {
22
			$cmd = $this->getParametre('a');
22
			$cmd = $this->getParametre('a');
23
			switch ($cmd) {
23
			switch ($cmd) {
-
 
24
				case "sauvegarder" :
-
 
25
					$this->sauvegarder(); break;
24
				case "unitebase" :
26
				case "unitebase" :
25
					$this->desontologiserUniteBase(); break;
27
					$this->desontologiserUniteBase(); break;
26
				case "uniterangement" :
28
				case "uniterangement" :
27
					$this->desontologiserUniteRangement(); break;
29
					$this->desontologiserUniteRangement(); break;
28
				case "inventaire" :
30
				case "inventaire" :
29
					$this->desontologiserInventaire(); break;
31
					$this->desontologiserInventaire(); break;
30
				case "etat" :
32
				case "etat" :
31
					$this->desontologiserEtat(); break;
33
					$this->desontologiserEtat(); break;
-
 
34
				case "periode" :
-
 
35
					$this->desontologiserPeriode(); break;
32
				default :
36
				default :
33
					$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
37
					$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
34
			}
38
			}
35
		} catch (Exception $erreur) {
39
		} catch (Exception $erreur) {
36
			$this->traiterErreur($erreur->getMessage());
40
			$this->traiterErreur($erreur->getMessage());
37
		}
41
		}
38
	}
42
	}
-
 
43
	
-
 
44
	private function sauvegarder() {
-
 
45
		$requete = "CREATE TABLE coel_collection_sauv SELECT * FROM coel_collection; CREATE TABLE coel_collection_botanique_sauv SELECT * FROM coel_collection_botanique;";
-
 
46
		$infos_truk = $this->bdd->requeter($requete);
-
 
47
	}
39
	
48
	
40
	private function desontologiserInventaire() {
49
	private function desontologiserInventaire() {
41
		$requete_table = "ALTER TABLE coel_collection_botanique ".
50
		$requete_table = "ALTER TABLE coel_collection_botanique ".
42
			"CHANGE `ccb_ce_inventaire` `ccb_ce_inventaire` VARCHAR(20) NULL DEFAULT NULL COMMENT 'Existe-t-il un inventaire de cette collection?', ".
51
			"CHANGE `ccb_ce_inventaire` `ccb_ce_inventaire` VARCHAR(20) NULL DEFAULT NULL COMMENT 'Existe-t-il un inventaire de cette collection?', ".
43
			"CHANGE `ccb_ce_inventaire_auteur` `ccb_ce_inventaire_auteur` VARCHAR(20) NULL DEFAULT NULL COMMENT 'L''auteur de la collection a-t-il participé à cet inventaire?';";
52
			"CHANGE `ccb_ce_inventaire_auteur` `ccb_ce_inventaire_auteur` VARCHAR(20) NULL DEFAULT NULL COMMENT 'L''auteur de la collection a-t-il participé à cet inventaire?', ".
-
 
53
			"CHANGE `ccb_ce_traitement` `ccb_ce_traitement` VARCHAR(20) NULL DEFAULT NULL COMMENT 'L''auteur de la collection a-t-il participé à cet inventaire?';";
44
		
54
		
45
		$infos_truk = $this->bdd->requeter($requete_table);
55
		$infos_truk = $this->bdd->requeter($requete_table);
46
		
56
		
47
		$requete = "SELECT ccb_id_collection, ccb_ce_inventaire, ccb_ce_inventaire_auteur ".
57
		$requete = "SELECT ccb_id_collection, ccb_ce_inventaire, ccb_ce_inventaire_auteur, ccb_ce_traitement ".
48
				"FROM coel_collection_botanique ".
58
				"FROM coel_collection_botanique ".
49
				"WHERE (ccb_ce_inventaire IS NOT NULL AND ccb_ce_inventaire != '') OR (ccb_ce_inventaire_auteur IS NOT NULL AND ccb_ce_inventaire_auteur != '')";
59
				"WHERE (ccb_ce_inventaire IS NOT NULL AND ccb_ce_inventaire != '') OR (ccb_ce_inventaire_auteur IS NOT NULL AND ccb_ce_inventaire_auteur != '')";
50
		
60
		
51
		$infos_truk = $this->bdd->recupererTous($requete);
61
		$infos_truk = $this->bdd->recupererTous($requete);
52
		
62
		
53
		foreach ($infos_truk as $truk) {
63
		foreach ($infos_truk as $truk) {
54
			$id_collection = $truk['ccb_id_collection'];
64
			$id_collection = $truk['ccb_id_collection'];
55
			$inventaire = $this->transformerouinon($truk["ccb_ce_inventaire"]);
65
			$inventaire = $this->transformerouinon($truk["ccb_ce_inventaire"]);
56
			$inventaire_auteur = $this->transformerouinon($truk["ccb_ce_inventaire_auteur"]);
66
			$inventaire_auteur = $this->transformerouinon($truk["ccb_ce_inventaire_auteur"]);
-
 
67
			$traitement = $this->transformerouinon($truk["ccb_ce_traitement"]);
57
			$update = 'UPDATE coel_collection_botanique '.
68
			$update = 'UPDATE coel_collection_botanique '.
58
					'SET '.
69
					'SET '.
59
					'ccb_ce_inventaire = "'.$inventaire.'", '.
70
					'ccb_ce_inventaire = "'.$inventaire.'", '.
60
					'ccb_ce_inventaire_auteur = "'.$inventaire_auteur.'" '.
71
					'ccb_ce_inventaire_auteur = "'.$inventaire_auteur.'" '.
-
 
72
					'ccb_ce_traitement = "'.$traitement.'" '.
61
					'WHERE ccb_id_collection = "'.$id_collection.'"';
73
					'WHERE ccb_id_collection = "'.$id_collection.'"';
62
				
74
				
63
			$this->bdd->executer($update);
75
			$this->bdd->executer($update);
64
		}
76
		}
65
	}
77
	}
66
	
78
	
67
	private function desontologiserEtat() {
79
	private function desontologiserEtat() {
68
		$requete_table = "ALTER TABLE coel_collection_botanique ".
80
		$requete_table = "ALTER TABLE coel_collection_botanique ".
69
				"CHANGE `ccb_ce_unite_rangement_etat` `ccb_ce_unite_rangement_etat` VARCHAR(20) NULL DEFAULT NULL, ".
81
				"CHANGE `ccb_ce_unite_rangement_etat` `ccb_ce_unite_rangement_etat` int(1) NULL DEFAULT NULL COMMENT 'liste de 1 à 5 correspondant à une liste déroulante entre très mauvais et très bon', ".
70
				"CHANGE `ccb_ce_etat_general` `ccb_ce_etat_general` VARCHAR(20) NULL DEFAULT NULL;";
82
				"CHANGE `ccb_ce_etat_general` `ccb_ce_etat_general` int(1) NULL DEFAULT NULL COMMENT 'liste de 1 à 5 correspondant à une liste déroulante entre très mauvais et très bon';";
71
	
83
	
72
		$infos_truk = $this->bdd->requeter($requete_table);
84
		$infos_truk = $this->bdd->requeter($requete_table);
73
	
85
	
74
		$requete = "SELECT ccb_id_collection, ccb_ce_unite_rangement_etat, ccb_ce_etat_general ".
86
		$requete = "SELECT ccb_id_collection, ccb_ce_unite_rangement_etat, ccb_ce_etat_general ".
75
				"FROM coel_collection_botanique ".
87
				"FROM coel_collection_botanique ".
76
				"WHERE (ccb_ce_unite_rangement_etat IS NOT NULL AND ccb_ce_unite_rangement_etat != '') OR (ccb_ce_etat_general IS NOT NULL AND ccb_ce_etat_general != '')";
88
				"WHERE (ccb_ce_unite_rangement_etat IS NOT NULL AND ccb_ce_unite_rangement_etat != '') OR (ccb_ce_etat_general IS NOT NULL AND ccb_ce_etat_general != '')";
77
	
89
	
78
		$infos_truk = $this->bdd->recupererTous($requete);
90
		$infos_truk = $this->bdd->recupererTous($requete);
79
	
91
	
80
		foreach ($infos_truk as $truk) {
92
		foreach ($infos_truk as $truk) {
81
			$id_collection = $truk['ccb_id_collection'];
93
			$id_collection = $truk['ccb_id_collection'];
82
			$inventaire = $this->transformerBonMauvaisEtat($truk["ccb_ce_unite_rangement_etat"]);
94
			$inventaire = $this->transformerBonMauvaisEtat($truk["ccb_ce_unite_rangement_etat"]);
83
			$inventaire_auteur = $this->transformerBonMauvaisEtat($truk["ccb_ce_etat_general"]);
95
			$inventaire_auteur = $this->transformerBonMauvaisEtat($truk["ccb_ce_etat_general"]);
84
			$update = 'UPDATE coel_collection_botanique '.
96
			$update = 'UPDATE coel_collection_botanique '.
85
					'SET '.
97
					'SET '.
86
					'ccb_ce_unite_rangement_etat = "'.$inventaire.'", '.
98
					'ccb_ce_unite_rangement_etat = "'.$inventaire.'", '.
87
					'ccb_ce_etat_general = "'.$inventaire_auteur.'" '.
99
					'ccb_ce_etat_general = "'.$inventaire_auteur.'" '.
88
					'WHERE ccb_id_collection = "'.$id_collection.'"';
100
					'WHERE ccb_id_collection = "'.$id_collection.'"';
89
	
101
	
90
			$this->bdd->executer($update);
102
			$this->bdd->executer($update);
91
		}
103
		}
92
	}
104
	}
93
	
105
	
94
	private function transformerBonMauvaisEtat($cle) {
-
 
95
		if ($cle==0) $cle="NULL";
-
 
96
		$valeur = $cle;
106
	private function desontologiserPeriode() {
97
		$ontologies = array("2265" => "Très mauvais état",
-
 
98
						"2266" => "Mauvais état",
-
 
99
						"2267" => "État moyen",
-
 
100
						"2268" => "Bon état",
107
		$requete_table = "ALTER TABLE coel_collection ADD ".
101
						"2269" => "Très bon état",
108
				" cc_periode_constitution_debut int(4)  AFTER cc_truk_periode_constitution, ADD cc_periode_constitution_fin int(4)  AFTER cc_periode_constitution_debut;";
102
				);
109
		
103
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
-
 
104
		return $valeur;
110
	//	$infos_truk = $this->bdd->requeter($requete_table);
-
 
111
	
-
 
112
		$requete = "SELECT cc_id_collection, substr(`ccb_recolte_date_debut`, 1, 4) AS annee_debut, ccb_ce_recolte_date_debut_type as type_debut, ".
-
 
113
				"substr(`ccb_recolte_date_fin`, 1, 4) AS annee_fin, ccb_ce_recolte_date_fin_type as type_fin,".
-
 
114
		" cc_truk_periode_constitution AS siecle FROM `coel_collection_botanique`, `coel_collection` 
105
	}
115
					WHERE `ccb_id_collection`=`cc_id_collection` ";
-
 
116
	
-
 
117
		$infos_truk = $this->bdd->recupererTous($requete);
106
	
118
		
107
	private function transformerouinon($cle) {
119
		
-
 
120
		foreach ($infos_truk as $truk) {
-
 
121
			$id_collection = $truk['ccb_id_collection'];
108
		$valeur = $cle;
122
			$periode = $this->transformerPeriode($truk);
109
		$ontologies = array("2092" => "non",
123
			$update = 'UPDATE coel_collection '.
110
						"2093" => "oui",
124
					'SET '.
111
						"2094" => "en partie",
125
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
-
 
126
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
112
						"2239" => "ne sait pas",
127
					'WHERE cc_id_collection = "'.$id_collection.'"';
-
 
128
	
-
 
129
			$this->bdd->executer($update);
-
 
130
		}
113
						"2240" => "peut-être",
131
		
-
 
132
		$requete = "SELECT cc_id_collection, '0000' AS annee_debut, '' as type_debut, ".
-
 
133
				"'0000' AS annee_fin, '' as type_fin,".
-
 
134
				" cc_truk_periode_constitution AS siecle FROM `coel_collection`
114
						"2241" => "oui",
135
					WHERE `cc_periode_constitution_debut` is null and `cc_truk_periode_constitution` != ''";
-
 
136
		
-
 
137
		$infos_truk = $this->bdd->recupererTous($requete);
115
						"2242" => "non",
138
		
116
						"2339" => "oui",
139
		
117
						"2340" => "non",
140
		foreach ($infos_truk as $truk) {
118
						"2341" => "en grande partie",
141
			$id_collection = $truk['cc_id_collection'];
119
						"2342" => "ne sait pas)",
142
			$periode = $this->transformerPeriode($truk);
120
						"2343" => "parfois",
143
			$update = 'UPDATE coel_collection '.
121
						"2344" => "oui",
144
					'SET '.
122
						"2345" => "non",
145
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
-
 
146
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
123
						"30744" => "indéterminé",
147
					'WHERE cc_id_collection = "'.$id_collection.'"';
-
 
148
		
-
 
149
			$this->bdd->executer($update);
-
 
150
		}
-
 
151
		/*supprimer ccb_recolte_date_debut,  ccb_ce_recolte_date_debut_type, ccb_recolte_date_fin,  ccb_ce_recolte_date_fin_type, cc_truk_periode_constitution
-
 
152
		 * 
-
 
153
		 * $requete_table = "ALTER TABLE coel_collection_botanique ".
-
 
154
		 "CHANGE `ccb_ce_unite_rangement_etat` `ccb_ce_unite_rangement_etat` int(1) NULL DEFAULT NULL COMMENT 'liste de 1 à 5 correspondant à une liste déroulante entre très mauvais et très bon', ".
124
						"30745" => "oui",
155
		 "CHANGE `ccb_ce_etat_general` `ccb_ce_etat_general` int(1) NULL DEFAULT NULL COMMENT 'liste de 1 à 5 correspondant à une liste déroulante entre très mauvais et très bon';";
125
						"30746" => "non");
156
		
126
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
157
		 $infos_truk = $this->bdd->requeter($requete_table);
127
		return $valeur;
158
		 */
128
	}
159
	}
129
	
160
	
130
	private function desontologiserUniteBase() {
161
	private function desontologiserUniteBase() {
131
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
162
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
132
				" ccb_nb_planches_herbiers int(20)  AFTER `ccb_truk_unite_base`, ADD ccb_nb_especes int(20)  AFTER ccb_nb_planches_herbiers;";
163
				" ccb_nb_planches_herbiers int(20)  AFTER `ccb_truk_unite_base`, ADD ccb_nb_especes int(20)  AFTER ccb_nb_planches_herbiers;";
133
		
164
		
134
		$infos_truk = $this->bdd->requeter($requete_table);
165
		$infos_truk = $this->bdd->requeter($requete_table);
135
		
166
		
136
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_base ".
167
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_base ".
137
					"FROM coel_collection_botanique ".
168
					"FROM coel_collection_botanique ".
138
					"WHERE ccb_truk_unite_base IS NOT NULL AND ccb_truk_unite_base != ''";
169
					"WHERE ccb_truk_unite_base IS NOT NULL AND ccb_truk_unite_base != ''";
139
 
170
 
140
		$infos_truk = $this->bdd->recupererTous($requete);
171
		$infos_truk = $this->bdd->recupererTous($requete);
141
				
172
				
142
		foreach($infos_truk as $truk) {
173
		foreach($infos_truk as $truk) {
143
			
174
			
144
			$id_collection = $truk['ccb_id_collection'];
175
			$id_collection = $truk['ccb_id_collection'];
145
			
176
			
146
			// Séparation de chaque catégorie d'unite de truk
177
			// Séparation de chaque catégorie d'unite de truk
147
			$categories_truk = explode(';;', $truk['ccb_truk_unite_base']);
178
			$categories_truk = explode(';;', $truk['ccb_truk_unite_base']);
148
			// Iteration sur toutes les catégories de truk trouvées
179
			// Iteration sur toutes les catégories de truk trouvées
149
			foreach($categories_truk as $categorie_truk) {						
180
			foreach($categories_truk as $categorie_truk) {						
150
				// extraction du numéro d'ontologie de la liste concernée
181
				// extraction du numéro d'ontologie de la liste concernée
151
				$categorie_truk_unite_infos = explode('##', $categorie_truk);		
182
				$categorie_truk_unite_infos = explode('##', $categorie_truk);		
152
				// Seules les infos de planche d'herbier nous interessent (donc numéro d'ontologie 2270)
183
				// Seules les infos de planche d'herbier nous interessent (donc numéro d'ontologie 2270)
153
				if($categorie_truk_unite_infos[0] == '2270') {
184
				if($categorie_truk_unite_infos[0] == '2270') {
154
					$truk_unite_infos = $categorie_truk_unite_infos[1];
185
					$truk_unite_infos = $categorie_truk_unite_infos[1];
155
					
186
					
156
					$truk_unite_infos = explode('||', $truk_unite_infos);
187
					$truk_unite_infos = explode('||', $truk_unite_infos);
157
					$nb_planches_herbiers = $truk_unite_infos[0];
188
					$nb_planches_herbiers = $truk_unite_infos[0];
158
					$nb_especes =  $truk_unite_infos[5];
189
					$nb_especes =  $truk_unite_infos[5];
159
					
190
					
160
					$update = 'UPDATE coel_collection_botanique '.
191
					$update = 'UPDATE coel_collection_botanique '.
161
								'SET '.
192
								'SET '.
162
									'ccb_nb_planches_herbiers = "'.$nb_planches_herbiers.'", '.
193
									'ccb_nb_planches_herbiers = "'.$nb_planches_herbiers.'", '.
163
									'ccb_nb_especes = "'.$nb_especes.'" '.
194
									'ccb_nb_especes = "'.$nb_especes.'" '.
164
								'WHERE ccb_id_collection = "'.$id_collection.'"';
195
								'WHERE ccb_id_collection = "'.$id_collection.'"';
165
					
196
					
166
					$this->bdd->executer($update);
197
					$this->bdd->executer($update);
167
				}
198
				}
168
			}
199
			}
169
		}
200
		}
170
	}
201
	}
171
	
202
	
172
	private function desontologiserUniteRangement() {
203
	private function desontologiserUniteRangement() {
173
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
204
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
174
				" ccb_nb_liasses int(20)  AFTER `ccb_truk_unite_rangement`, ADD ccb_format_liasses varchar(50)  AFTER ccb_nb_liasses ,".
205
				" ccb_nb_liasses int(20)  AFTER `ccb_truk_unite_rangement`, ADD ccb_format_liasses varchar(50)  AFTER ccb_nb_liasses ,".
175
				" ADD ccb_nb_cartons_herbier int(20)  AFTER `ccb_format_liasses`, ADD ccb_format_cartons_herbier varchar(50)  AFTER ccb_nb_cartons_herbier , ".
206
				" ADD ccb_nb_cartons_herbier int(20)  AFTER `ccb_format_liasses`, ADD ccb_format_cartons_herbier varchar(50)  AFTER ccb_nb_cartons_herbier , ".
176
				"ADD ccb_autres_unites_rangement text AFTER ccb_format_cartons_herbier;";
207
				"ADD ccb_autres_unites_rangement text AFTER ccb_format_cartons_herbier;";
177
				
208
				
178
		//print_r($requete_table);
209
		//print_r($requete_table);
179
		$infos_truk = $this->bdd->requeter($requete_table);
210
		$infos_truk = $this->bdd->requeter($requete_table);
180
		
211
		
181
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_rangement ".
212
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_rangement ".
182
					"FROM coel_collection_botanique ".
213
					"FROM coel_collection_botanique ".
183
					"WHERE ccb_truk_unite_rangement IS NOT NULL AND ccb_truk_unite_rangement != '' ";
214
					"WHERE ccb_truk_unite_rangement IS NOT NULL AND ccb_truk_unite_rangement != '' ";
184
 
215
 
185
		$infos_truk = $this->bdd->recupererTous($requete);
216
		$infos_truk = $this->bdd->recupererTous($requete);
186
		
217
		
187
		// Récupération de la liste des termes d'ontologies pour les types de rangement
218
		// Récupération de la liste des termes d'ontologies pour les types de rangement
188
		$requete_onto = "SELECT * FROM coel_meta_liste_valeur ".
219
		$requete_onto = "SELECT * FROM coel_meta_liste_valeur ".
189
					"WHERE cmlv_ce_parent = 1044";
220
					"WHERE cmlv_ce_parent = 1044";
190
		
221
		
191
		$infos_onto = $this->bdd->recupererTous($requete_onto);
222
		$infos_onto = $this->bdd->recupererTous($requete_onto);
192
		
223
		
193
		// Pour associer facilement chaque id d'ontologie à sa signification
224
		// Pour associer facilement chaque id d'ontologie à sa signification
194
		$ontologie_rangement = array();
225
		$ontologie_rangement = array();
195
		foreach($infos_onto as $onto) {
226
		foreach($infos_onto as $onto) {
196
			$ontologie_rangement[$onto['cmlv_id_valeur']] = $onto;
227
			$ontologie_rangement[$onto['cmlv_id_valeur']] = $onto;
197
		}
228
		}
198
		
229
		
199
		foreach($infos_truk as $truk) {
230
		foreach($infos_truk as $truk) {
200
 
231
 
201
			$id_collection = $truk['ccb_id_collection'];
232
			$id_collection = $truk['ccb_id_collection'];
202
			$unite_rangement_des = array('cartons' => array(), 'liasses' => array(), 'autres' => array());
233
			$unite_rangement_des = array('cartons' => array(), 'liasses' => array(), 'autres' => array());
203
			
234
			
204
			// Séparation de chaque catégorie d'unite de truk
235
			// Séparation de chaque catégorie d'unite de truk
205
			$categories_unite_rangement = explode(';;', $truk['ccb_truk_unite_rangement']);
236
			$categories_unite_rangement = explode(';;', $truk['ccb_truk_unite_rangement']);
206
			
237
			
207
			// Pour éviter de modifier une collection où seul un "squelette" de truk serait présent
238
			// Pour éviter de modifier une collection où seul un "squelette" de truk serait présent
208
			$collection_a_modifier = false;
239
			$collection_a_modifier = false;
209
			
240
			
210
			// Iteration sur toutes les catégories de rangement trouvées
241
			// Iteration sur toutes les catégories de rangement trouvées
211
			foreach($categories_unite_rangement as $unite_rangement) {						
242
			foreach($categories_unite_rangement as $unite_rangement) {						
212
				// extraction du numéro d'ontologie de la liste concernée
243
				// extraction du numéro d'ontologie de la liste concernée
213
				list($id_ontologie_rangement, $infos_unite_rangement) = explode('##', $unite_rangement);			
244
				list($id_ontologie_rangement, $infos_unite_rangement) = explode('##', $unite_rangement);			
214
				$tableau_unite_rangement = $this->parserUniteRangement($infos_unite_rangement);
245
				$tableau_unite_rangement = $this->parserUniteRangement($infos_unite_rangement);
215
				
246
				
216
				if($tableau_unite_rangement['nombre'] > 0) {
247
				if($tableau_unite_rangement['nombre'] > 0) {
217
					$collection_a_modifier = true;
248
					$collection_a_modifier = true;
218
					switch($id_ontologie_rangement) {
249
					switch($id_ontologie_rangement) {
219
						// Liasses : 2256
250
						// Liasses : 2256
220
						case "2256":
251
						case "2256":
221
							$unite_rangement_des['liasses'] = $tableau_unite_rangement;
252
							$unite_rangement_des['liasses'] = $tableau_unite_rangement;
222
						break;
253
						break;
223
						// Cartons d'herbier : 2255
254
						// Cartons d'herbier : 2255
224
						case "2255":
255
						case "2255":
225
							$unite_rangement_des['cartons'] = $tableau_unite_rangement;
256
							$unite_rangement_des['cartons'] = $tableau_unite_rangement;
226
						break;
257
						break;
227
						// Autres
258
						// Autres
228
						default:
259
						default:
229
							$unite_rangement_des['autres'][] = $this->formaterLigneAutreUniteRangement($id_ontologie_rangement, $ontologie_rangement, $tableau_unite_rangement);
260
							$unite_rangement_des['autres'][] = $this->formaterLigneAutreUniteRangement($id_ontologie_rangement, $ontologie_rangement, $tableau_unite_rangement);
230
					}	
261
					}	
231
				}								
262
				}								
232
			}
263
			}
233
			
264
			
234
			// Pas la peine de modifier une collection qui ne content ni liasse, ni carton d'herbier, ni autre
265
			// Pas la peine de modifier une collection qui ne content ni liasse, ni carton d'herbier, ni autre
235
			// (on ne le sait qu'à ce moment là après analyse par le script car la colonne ccb_truk_unite_rangement
266
			// (on ne le sait qu'à ce moment là après analyse par le script car la colonne ccb_truk_unite_rangement
236
			// est tout de même quelquefois remplie par une syntaxe d'ontologie vide quand il n'y a rien)
267
			// est tout de même quelquefois remplie par une syntaxe d'ontologie vide quand il n'y a rien)
237
			if($collection_a_modifier) {
268
			if($collection_a_modifier) {
238
				$update = "UPDATE coel_collection_botanique ".
269
				$update = "UPDATE coel_collection_botanique ".
239
								"SET ";
270
								"SET ";
240
				
271
				
241
				$champs = array();
272
				$champs = array();
242
				
273
				
243
				if(!empty($unite_rangement_des['liasses'])) {
274
				if(!empty($unite_rangement_des['liasses'])) {
244
					$champs[] = "ccb_nb_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['nombre']).", ".
275
					$champs[] = "ccb_nb_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['nombre']).", ".
245
					"ccb_format_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['format'])." ";
276
					"ccb_format_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['format'])." ";
246
				}
277
				}
247
				
278
				
248
				if(!empty($unite_rangement_des['cartons'])) {
279
				if(!empty($unite_rangement_des['cartons'])) {
249
					$champs[] = "ccb_nb_cartons_herbier = ".$this->bdd->proteger($unite_rangement_des['cartons']['nombre']).", ".
280
					$champs[] = "ccb_nb_cartons_herbier = ".$this->bdd->proteger($unite_rangement_des['cartons']['nombre']).", ".
250
					"ccb_format_cartons_herbier = ".$this->bdd->proteger($unite_rangement_des['cartons']['format'])." ";
281
					"ccb_format_cartons_herbier = ".$this->bdd->proteger($unite_rangement_des['cartons']['format'])." ";
251
				}
282
				}
252
				
283
				
253
				if(!empty($unite_rangement_des['autres'])) {
284
				if(!empty($unite_rangement_des['autres'])) {
254
					// Pour éviter de casser les sauts de lignes il faut les remplacer après avoir protégé la valeur
285
					// Pour éviter de casser les sauts de lignes il faut les remplacer après avoir protégé la valeur
255
					$champs[] = "ccb_autres_unites_rangement = ".str_replace('NEWLINE', "\r\n", $this->bdd->proteger(implode('NEWLINE', $unite_rangement_des['autres'])));
286
					$champs[] = "ccb_autres_unites_rangement = ".str_replace('NEWLINE', "\r\n", $this->bdd->proteger(implode('NEWLINE', $unite_rangement_des['autres'])));
256
				}
287
				}
257
								
288
								
258
				$update .= implode(', ', $champs)." ".
289
				$update .= implode(', ', $champs)." ".
259
							"WHERE ccb_id_collection = '".$id_collection."'";
290
							"WHERE ccb_id_collection = '".$id_collection."'";
260
 
291
 
261
				$this->bdd->executer($update);
292
				$this->bdd->executer($update);
262
			}
293
			}
263
		}
294
		}
264
	}
295
	}
265
	
296
	
266
	private function parserUniteRangement($unite_rangement) {
297
	private function parserUniteRangement($unite_rangement) {
267
		$tableau_unite_rangement = explode('||', $unite_rangement);
298
		$tableau_unite_rangement = explode('||', $unite_rangement);
268
		return array(
299
		return array(
269
			'nombre' => $tableau_unite_rangement[0],
300
			'nombre' => $tableau_unite_rangement[0],
270
			'precision' => $tableau_unite_rangement[1],
301
			'precision' => $tableau_unite_rangement[1],
271
			'format' => $tableau_unite_rangement[2]
302
			'format' => $tableau_unite_rangement[2]
272
		);
303
		);
273
	}
304
	}
274
	
305
	
275
	private function formaterLigneAutreUniteRangement($id_ontologie, $ontologie_rangement, $tableau_unite_rangement) {
306
	private function formaterLigneAutreUniteRangement($id_ontologie, $ontologie_rangement, $tableau_unite_rangement) {
276
		$nom_rangement = $id_ontologie;
307
		$nom_rangement = $id_ontologie;
277
		
308
		
278
		// Des fois on a un numéro d'ontologie des fois un nom de type de rangement
309
		// Des fois on a un numéro d'ontologie des fois un nom de type de rangement
279
		if(!is_numeric($id_ontologie)) {
310
		if(!is_numeric($id_ontologie)) {
280
			$nom_rangement = $id_ontologie;
311
			$nom_rangement = $id_ontologie;
281
		} else if(!empty($ontologie_rangement[$id_ontologie])) {
312
		} else if(!empty($ontologie_rangement[$id_ontologie])) {
282
			$nom_rangement = $ontologie_rangement[$id_ontologie]['cmlv_nom'];
313
			$nom_rangement = $ontologie_rangement[$id_ontologie]['cmlv_nom'];
283
		} else {
314
		} else {
284
			$nom_rangement = 'Type de rangement inconnu';
315
			$nom_rangement = 'Type de rangement inconnu';
285
		}
316
		}
286
		
317
		
287
		// Le nombre d'unités est directement accolé au type
318
		// Le nombre d'unités est directement accolé au type
288
		$tab_autre_ligne_rangement = array($nom_rangement);
319
		$tab_autre_ligne_rangement = array($nom_rangement);
289
		if(!empty($tableau_unite_rangement['nombre'])) {
320
		if(!empty($tableau_unite_rangement['nombre'])) {
290
			$tab_autre_ligne_rangement[0] .= ' : '.$tableau_unite_rangement['nombre'];
321
			$tab_autre_ligne_rangement[0] .= ' : '.$tableau_unite_rangement['nombre'];
291
		}
322
		}
292
		
323
		
293
		// La précision est soit exacte soit approximative
324
		// La précision est soit exacte soit approximative
294
		if(!empty($tableau_unite_rangement['precision'])) {
325
		if(!empty($tableau_unite_rangement['precision'])) {
295
			$precision = $tableau_unite_rangement['precision'] == 'E' ? 'exacte' : 'appromixative';
326
			$precision = $tableau_unite_rangement['precision'] == 'E' ? 'exacte' : 'appromixative';
296
			$tab_autre_ligne_rangement[] = 'Précision '.$precision;
327
			$tab_autre_ligne_rangement[] = 'Précision '.$precision;
297
		}
328
		}
298
		
329
		
299
		// Le format est une suite de de type YxZ ou Y et Z sont des longueurs et largeurs
330
		// Le format est une suite de de type YxZ ou Y et Z sont des longueurs et largeurs
300
		// eventuellement séparés par des virgules s'il y a différents formats
331
		// eventuellement séparés par des virgules s'il y a différents formats
301
		if(!empty($tableau_unite_rangement['format'])) {
332
		if(!empty($tableau_unite_rangement['format'])) {
302
			$tab_autre_ligne_rangement[] = 'Format '.$tableau_unite_rangement['format'];
333
			$tab_autre_ligne_rangement[] = 'Format '.$tableau_unite_rangement['format'];
303
		}
334
		}
304
		// On retourne une ligne de la forme "type de rangement : nombre - Précision précision - Format format"		
335
		// On retourne une ligne de la forme "type de rangement : nombre - Précision précision - Format format"		
305
		return implode(' - ', $tab_autre_ligne_rangement);
336
		return implode(' - ', $tab_autre_ligne_rangement);
306
	}
337
	}
-
 
338
	
-
 
339
	
-
 
340
	private function transformerPeriode($donnees) {
-
 
341
		// initialisation
-
 
342
		$siecle = array("2233"=>"15",
-
 
343
				"2234"=>"16",
-
 
344
				"2235"=>"17",
-
 
345
				"2236"=>"18",
-
 
346
				"2237"=>"19",
-
 
347
				"2238"=>"20");
-
 
348
		$type = array("2316"=>"Date inconnue",
-
 
349
				"2317"=>"Date exacte",
-
 
350
				"2318"=>"Antérieure à",
-
 
351
				"2319"=>"Postérieure à",
-
 
352
				"2320"=>"Date estimée",
-
 
353
				"2321"=>"Date inconnue",
-
 
354
				"2322"=>"Date exacte",
-
 
355
				"2323"=>"Antérieure à",
-
 
356
				"2324"=>"Postérieure à",
-
 
357
				"2325"=>"Date estimée",
-
 
358
				"2326"=>"Encore en activité");
-
 
359
		$periode_debut = ""; $periode_fin = "";
-
 
360
		if ($donnees["annee_debut"] == "") $donnees["annee_debut"] = "0000";
-
 
361
		if($donnees["annee_fin"] == "") $donnees["annee_fin"] = "0000";
-
 
362
	
-
 
363
		// si une date de début ET une date de fin sont indiquées
-
 
364
		if ($donnees["annee_debut"] !== "0000" && $donnees["annee_fin"] !== "0000") {
-
 
365
			$periode_debut = $donnees["annee_debut"];
-
 
366
			$periode_fin = $donnees["annee_fin"];
-
 
367
				
-
 
368
			// si un (ou plusieurs) siècles sont indiqué(s)
-
 
369
		} else if($donnees["siecle"] != "") {
-
 
370
			// initialisation années début et fin de siècle
-
 
371
			$siecles = explode(";;", $donnees["siecle"]);
-
 
372
			$siecle_debut = $siecle[$siecles[0]]."01";
-
 
373
			$siecle_fin = $siecle[array_pop($siecles)]."99";
-
 
374
				
-
 
375
			// si les centaines de l'année de début et du siècle sont égales
-
 
376
			if (substr($donnees["annee_debut"],0,2) == substr($siecle_debut,0,2)) {
-
 
377
				$periode_debut = $donnees["annee_debut"];
-
 
378
			} else if ($donnees["annee_debut"] != "0000" && $donnees["annee_debut"] < $siecle_debut) {
-
 
379
				$periode_debut = $donnees["annee_debut"];
-
 
380
			} else {
-
 
381
				$periode_debut = $siecle_debut;
-
 
382
			}
-
 
383
	
-
 
384
			if (substr($donnees["annee_fin"],0,2) == substr($siecle_fin,0,2)) {
-
 
385
				$periode_fin = $donnees["annee_fin"];
-
 
386
			} else if ($donnees["annee_fin"] != "0000" && $donnees["annee_fin"] > $siecle_fin) {
-
 
387
				$periode_fin = $donnees["annee_fin"];
-
 
388
			} else {
-
 
389
				$periode_fin = $siecle_fin;
-
 
390
			}
-
 
391
		} else {
-
 
392
			if ($donnees["annee_debut"] !== "0000") $periode_debut = $donnees["annee_debut"];
-
 
393
			if($donnees["annee_fin"] !== "0000") $periode_fin = $donnees["annee_fin"];
-
 
394
		}
-
 
395
		//print_r($donnees); echo $periode_debut." - ".$periode_fin;
-
 
396
		return array($periode_debut,$periode_fin);
-
 
397
	}
-
 
398
	
-
 
399
	private function transformerBonMauvaisEtat($cle) {
-
 
400
		if ($cle==0) $cle="NULL";
-
 
401
		$valeur = $cle;
-
 
402
		$ontologies = array("2265" => "1",
-
 
403
				"2266" => "2",
-
 
404
				"2267" => "3",
-
 
405
				"2268" => "4",
-
 
406
				"2269" => "5",
-
 
407
		);
-
 
408
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
-
 
409
		return $valeur;
-
 
410
	}
-
 
411
	
-
 
412
	private function transformerouinon($cle) {
-
 
413
		$valeur = $cle;
-
 
414
		$ontologies = array("2092" => "non",
-
 
415
				"2093" => "oui",
-
 
416
				"2094" => "enPartie",
-
 
417
				"2239" => "neSaitPas",
-
 
418
				"2240" => "peutEtre",
-
 
419
				"2241" => "oui",
-
 
420
				"2242" => "non",
-
 
421
				"2339" => "oui",
-
 
422
				"2340" => "non",
-
 
423
				"2341" => "enGrandePartie",
-
 
424
				"2342" => "neSaitPas)",
-
 
425
				"2343" => "parfois",
-
 
426
				"2344" => "oui",
-
 
427
				"2345" => "non",
-
 
428
				"30744" => "indetermine",
-
 
429
				"30745" => "oui",
-
 
430
				"30746" => "non");
-
 
431
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
-
 
432
		return $valeur;
-
 
433
	}
307
}
434
}
308
?>	
435
?>