Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1925 Rev 1926
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" :
24
				case "sauvegarder" :
25
					$this->sauvegarder(); break;
25
					$this->sauvegarder(); break;
26
				case "unitebase" :
26
				case "unitebase" :
27
					$this->desontologiserUniteBase(); break;
27
					$this->desontologiserUniteBase(); break;
28
				case "uniterangement" :
28
				case "uniterangement" :
29
					$this->desontologiserUniteRangement(); break;
29
					$this->desontologiserUniteRangement(); break;
30
				case "inventaire" :
30
				case "inventaire" :
31
					$this->desontologiserInventaire(); break;
31
					$this->desontologiserInventaire(); break;
32
				case "etat" :
32
				case "etat" :
33
					$this->desontologiserEtat(); break;
33
					$this->desontologiserEtat(); break;
34
				case "periode" :
34
				case "periode" :
35
					$this->desontologiserPeriode(); break;
35
					$this->desontologiserPeriode(); break;
36
				default :
36
				default :
37
					$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
37
					$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
38
			}
38
			}
39
		} catch (Exception $erreur) {
39
		} catch (Exception $erreur) {
40
			$this->traiterErreur($erreur->getMessage());
40
			$this->traiterErreur($erreur->getMessage());
41
		}
41
		}
42
	}
42
	}
43
	
43
	
44
	private function sauvegarder() {
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;";
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);
46
		$infos_truk = $this->bdd->requeter($requete);
47
	}
47
	}
48
	
48
	
49
	private function desontologiserInventaire() {
49
	private function desontologiserInventaire() {
50
		$requete_table = "ALTER TABLE coel_collection_botanique ".
50
		$requete_table = "ALTER TABLE coel_collection_botanique ".
51
			"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?', ".
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?', ".
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?';";
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?';";
54
		
54
		
55
		$infos_truk = $this->bdd->requeter($requete_table);
55
		$infos_truk = $this->bdd->requeter($requete_table);
56
		
56
		
57
		$requete = "SELECT ccb_id_collection, ccb_ce_inventaire, ccb_ce_inventaire_auteur, ccb_ce_traitement ".
57
		$requete = "SELECT ccb_id_collection, ccb_ce_inventaire, ccb_ce_inventaire_auteur, ccb_ce_traitement ".
58
				"FROM coel_collection_botanique ".
58
				"FROM coel_collection_botanique ".
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 != '')";
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 != '')";
60
		
60
		
61
		$infos_truk = $this->bdd->recupererTous($requete);
61
		$infos_truk = $this->bdd->recupererTous($requete);
62
		
62
		
63
		foreach ($infos_truk as $truk) {
63
		foreach ($infos_truk as $truk) {
64
			$id_collection = $truk['ccb_id_collection'];
64
			$id_collection = $truk['ccb_id_collection'];
65
			$inventaire = $this->transformerouinon($truk["ccb_ce_inventaire"]);
65
			$inventaire = $this->transformerouinon($truk["ccb_ce_inventaire"]);
66
			$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"]);
67
			$traitement = $this->transformerouinon($truk["ccb_ce_traitement"]);
68
			$update = 'UPDATE coel_collection_botanique '.
68
			$update = 'UPDATE coel_collection_botanique '.
69
					'SET '.
69
					'SET '.
70
					'ccb_ce_inventaire = "'.$inventaire.'", '.
70
					'ccb_ce_inventaire = "'.$inventaire.'", '.
71
					'ccb_ce_inventaire_auteur = "'.$inventaire_auteur.'" '.
71
					'ccb_ce_inventaire_auteur = "'.$inventaire_auteur.'" '.
72
					'ccb_ce_traitement = "'.$traitement.'" '.
72
					'ccb_ce_traitement = "'.$traitement.'" '.
73
					'WHERE ccb_id_collection = "'.$id_collection.'"';
73
					'WHERE ccb_id_collection = "'.$id_collection.'"';
74
				
74
				
75
			$this->bdd->executer($update);
75
			$this->bdd->executer($update);
76
		}
76
		}
77
	}
77
	}
78
	
78
	
79
	private function desontologiserEtat() {
79
	private function desontologiserEtat() {
80
		$requete_table = "ALTER TABLE coel_collection_botanique ".
80
		$requete_table = "ALTER TABLE coel_collection_botanique ".
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', ".
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', ".
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';";
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';";
83
	
83
	
84
		$infos_truk = $this->bdd->requeter($requete_table);
84
		$infos_truk = $this->bdd->requeter($requete_table);
85
	
85
	
86
		$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 ".
87
				"FROM coel_collection_botanique ".
87
				"FROM coel_collection_botanique ".
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 != '')";
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 != '')";
89
	
89
	
90
		$infos_truk = $this->bdd->recupererTous($requete);
90
		$infos_truk = $this->bdd->recupererTous($requete);
91
	
91
	
92
		foreach ($infos_truk as $truk) {
92
		foreach ($infos_truk as $truk) {
93
			$id_collection = $truk['ccb_id_collection'];
93
			$id_collection = $truk['ccb_id_collection'];
94
			$inventaire = $this->transformerBonMauvaisEtat($truk["ccb_ce_unite_rangement_etat"]);
94
			$inventaire = $this->transformerBonMauvaisEtat($truk["ccb_ce_unite_rangement_etat"]);
95
			$inventaire_auteur = $this->transformerBonMauvaisEtat($truk["ccb_ce_etat_general"]);
95
			$inventaire_auteur = $this->transformerBonMauvaisEtat($truk["ccb_ce_etat_general"]);
96
			$update = 'UPDATE coel_collection_botanique '.
96
			$update = 'UPDATE coel_collection_botanique '.
97
					'SET '.
97
					'SET '.
98
					'ccb_ce_unite_rangement_etat = "'.$inventaire.'", '.
98
					'ccb_ce_unite_rangement_etat = "'.$inventaire.'", '.
99
					'ccb_ce_etat_general = "'.$inventaire_auteur.'" '.
99
					'ccb_ce_etat_general = "'.$inventaire_auteur.'" '.
100
					'WHERE ccb_id_collection = "'.$id_collection.'"';
100
					'WHERE ccb_id_collection = "'.$id_collection.'"';
101
	
101
	
102
			$this->bdd->executer($update);
102
			$this->bdd->executer($update);
103
		}
103
		}
104
	}
104
	}
105
	
105
	
106
	private function desontologiserPeriode() {
106
	private function desontologiserPeriode() {
107
		$requete_table = "ALTER TABLE coel_collection ADD ".
107
		$requete_table = "ALTER TABLE coel_collection ADD ".
108
				" cc_periode_constitution_debut int(4)  AFTER cc_truk_periode_constitution, ADD cc_periode_constitution_fin int(4)  AFTER cc_periode_constitution_debut;";
108
				" cc_periode_constitution_debut int(4)  AFTER cc_truk_periode_constitution, ADD cc_periode_constitution_fin int(4)  AFTER cc_periode_constitution_debut;";
109
		
109
		
110
	//	$infos_truk = $this->bdd->requeter($requete_table);
110
		$infos_truk = $this->bdd->requeter($requete_table);
111
	
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, ".
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,".
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` 
114
		" cc_truk_periode_constitution AS siecle FROM `coel_collection_botanique`, `coel_collection` 
115
					WHERE `ccb_id_collection`=`cc_id_collection` ";
115
					WHERE `ccb_id_collection`=`cc_id_collection` ";
116
	
116
	
117
		$infos_truk = $this->bdd->recupererTous($requete);
117
		$infos_truk = $this->bdd->recupererTous($requete);
118
		
118
		
119
		
119
		
120
		foreach ($infos_truk as $truk) {
120
		foreach ($infos_truk as $truk) {
121
			$id_collection = $truk['ccb_id_collection'];
121
			$id_collection = $truk['ccb_id_collection'];
122
			$periode = $this->transformerPeriode($truk);
122
			$periode = $this->transformerPeriode($truk);
123
			$update = 'UPDATE coel_collection '.
123
			$update = 'UPDATE coel_collection '.
124
					'SET '.
124
					'SET '.
125
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
125
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
126
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
126
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
127
					'WHERE cc_id_collection = "'.$id_collection.'"';
127
					'WHERE cc_id_collection = "'.$id_collection.'"';
128
	
128
	
129
			$this->bdd->executer($update);
129
			$this->bdd->executer($update);
130
		}
130
		}
131
		
131
		
132
		$requete = "SELECT cc_id_collection, '0000' AS annee_debut, '' as type_debut, ".
132
		$requete = "SELECT cc_id_collection, '0000' AS annee_debut, '' as type_debut, ".
133
				"'0000' AS annee_fin, '' as type_fin,".
133
				"'0000' AS annee_fin, '' as type_fin,".
134
				" cc_truk_periode_constitution AS siecle FROM `coel_collection`
134
				" cc_truk_periode_constitution AS siecle FROM `coel_collection`
135
					WHERE `cc_periode_constitution_debut` is null and `cc_truk_periode_constitution` != ''";
135
					WHERE `cc_periode_constitution_debut` is null and `cc_truk_periode_constitution` != ''";
136
		
136
		
137
		$infos_truk = $this->bdd->recupererTous($requete);
137
		$infos_truk = $this->bdd->recupererTous($requete);
138
		
138
		
139
		
139
		
140
		foreach ($infos_truk as $truk) {
140
		foreach ($infos_truk as $truk) {
141
			$id_collection = $truk['cc_id_collection'];
141
			$id_collection = $truk['cc_id_collection'];
142
			$periode = $this->transformerPeriode($truk);
142
			$periode = $this->transformerPeriode($truk);
143
			$update = 'UPDATE coel_collection '.
143
			$update = 'UPDATE coel_collection '.
144
					'SET '.
144
					'SET '.
145
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
145
					'cc_periode_constitution_debut = "'.$periode[0].'", '.
146
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
146
					'cc_periode_constitution_fin = "'.$periode[1].'" '.
147
					'WHERE cc_id_collection = "'.$id_collection.'"';
147
					'WHERE cc_id_collection = "'.$id_collection.'"';
148
		
148
		
149
			$this->bdd->executer($update);
149
			$this->bdd->executer($update);
150
		}
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
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
		 * 
152
		 * 
153
		 * $requete_table = "ALTER TABLE coel_collection_botanique ".
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', ".
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', ".
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';";
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';";
156
		
156
		
157
		 $infos_truk = $this->bdd->requeter($requete_table);
157
		 $infos_truk = $this->bdd->requeter($requete_table);
158
		 */
158
		 */
159
	}
159
	}
160
	
160
	
161
	private function desontologiserUniteBase() {
161
	private function desontologiserUniteBase() {
162
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
162
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
163
				" 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;";
164
		
164
		
165
		$infos_truk = $this->bdd->requeter($requete_table);
165
		$infos_truk = $this->bdd->requeter($requete_table);
166
		
166
		
167
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_base ".
167
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_base ".
168
					"FROM coel_collection_botanique ".
168
					"FROM coel_collection_botanique ".
169
					"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 != ''";
170
 
170
 
171
		$infos_truk = $this->bdd->recupererTous($requete);
171
		$infos_truk = $this->bdd->recupererTous($requete);
172
				
172
				
173
		foreach($infos_truk as $truk) {
173
		foreach($infos_truk as $truk) {
174
			
174
			
175
			$id_collection = $truk['ccb_id_collection'];
175
			$id_collection = $truk['ccb_id_collection'];
176
			
176
			
177
			// Séparation de chaque catégorie d'unite de truk
177
			// Séparation de chaque catégorie d'unite de truk
178
			$categories_truk = explode(';;', $truk['ccb_truk_unite_base']);
178
			$categories_truk = explode(';;', $truk['ccb_truk_unite_base']);
179
			// Iteration sur toutes les catégories de truk trouvées
179
			// Iteration sur toutes les catégories de truk trouvées
180
			foreach($categories_truk as $categorie_truk) {						
180
			foreach($categories_truk as $categorie_truk) {						
181
				// extraction du numéro d'ontologie de la liste concernée
181
				// extraction du numéro d'ontologie de la liste concernée
182
				$categorie_truk_unite_infos = explode('##', $categorie_truk);		
182
				$categorie_truk_unite_infos = explode('##', $categorie_truk);		
183
				// 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)
184
				if($categorie_truk_unite_infos[0] == '2270') {
184
				if($categorie_truk_unite_infos[0] == '2270') {
185
					$truk_unite_infos = $categorie_truk_unite_infos[1];
185
					$truk_unite_infos = $categorie_truk_unite_infos[1];
186
					
186
					
187
					$truk_unite_infos = explode('||', $truk_unite_infos);
187
					$truk_unite_infos = explode('||', $truk_unite_infos);
188
					$nb_planches_herbiers = $truk_unite_infos[0];
188
					$nb_planches_herbiers = $truk_unite_infos[0];
189
					$nb_especes =  $truk_unite_infos[5];
189
					$nb_especes =  $truk_unite_infos[5];
190
					
190
					
191
					$update = 'UPDATE coel_collection_botanique '.
191
					$update = 'UPDATE coel_collection_botanique '.
192
								'SET '.
192
								'SET '.
193
									'ccb_nb_planches_herbiers = "'.$nb_planches_herbiers.'", '.
193
									'ccb_nb_planches_herbiers = "'.$nb_planches_herbiers.'", '.
194
									'ccb_nb_especes = "'.$nb_especes.'" '.
194
									'ccb_nb_especes = "'.$nb_especes.'" '.
195
								'WHERE ccb_id_collection = "'.$id_collection.'"';
195
								'WHERE ccb_id_collection = "'.$id_collection.'"';
196
					
196
					
197
					$this->bdd->executer($update);
197
					$this->bdd->executer($update);
198
				}
198
				}
199
			}
199
			}
200
		}
200
		}
201
	}
201
	}
202
	
202
	
203
	private function desontologiserUniteRangement() {
203
	private function desontologiserUniteRangement() {
204
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
204
		$requete_table = "ALTER TABLE coel_collection_botanique ADD ".
205
				" 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 ,".
206
				" 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 , ".
207
				"ADD ccb_autres_unites_rangement text AFTER ccb_format_cartons_herbier;";
207
				"ADD ccb_autres_unites_rangement text AFTER ccb_format_cartons_herbier;";
208
				
208
				
209
		//print_r($requete_table);
209
		//print_r($requete_table);
210
		$infos_truk = $this->bdd->requeter($requete_table);
210
		$infos_truk = $this->bdd->requeter($requete_table);
211
		
211
		
212
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_rangement ".
212
		$requete = "SELECT ccb_id_collection, ccb_truk_unite_rangement ".
213
					"FROM coel_collection_botanique ".
213
					"FROM coel_collection_botanique ".
214
					"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 != '' ";
215
 
215
 
216
		$infos_truk = $this->bdd->recupererTous($requete);
216
		$infos_truk = $this->bdd->recupererTous($requete);
217
		
217
		
218
		// 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
219
		$requete_onto = "SELECT * FROM coel_meta_liste_valeur ".
219
		$requete_onto = "SELECT * FROM coel_meta_liste_valeur ".
220
					"WHERE cmlv_ce_parent = 1044";
220
					"WHERE cmlv_ce_parent = 1044";
221
		
221
		
222
		$infos_onto = $this->bdd->recupererTous($requete_onto);
222
		$infos_onto = $this->bdd->recupererTous($requete_onto);
223
		
223
		
224
		// Pour associer facilement chaque id d'ontologie à sa signification
224
		// Pour associer facilement chaque id d'ontologie à sa signification
225
		$ontologie_rangement = array();
225
		$ontologie_rangement = array();
226
		foreach($infos_onto as $onto) {
226
		foreach($infos_onto as $onto) {
227
			$ontologie_rangement[$onto['cmlv_id_valeur']] = $onto;
227
			$ontologie_rangement[$onto['cmlv_id_valeur']] = $onto;
228
		}
228
		}
229
		
229
		
230
		foreach($infos_truk as $truk) {
230
		foreach($infos_truk as $truk) {
231
 
231
 
232
			$id_collection = $truk['ccb_id_collection'];
232
			$id_collection = $truk['ccb_id_collection'];
233
			$unite_rangement_des = array('cartons' => array(), 'liasses' => array(), 'autres' => array());
233
			$unite_rangement_des = array('cartons' => array(), 'liasses' => array(), 'autres' => array());
234
			
234
			
235
			// Séparation de chaque catégorie d'unite de truk
235
			// Séparation de chaque catégorie d'unite de truk
236
			$categories_unite_rangement = explode(';;', $truk['ccb_truk_unite_rangement']);
236
			$categories_unite_rangement = explode(';;', $truk['ccb_truk_unite_rangement']);
237
			
237
			
238
			// 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
239
			$collection_a_modifier = false;
239
			$collection_a_modifier = false;
240
			
240
			
241
			// Iteration sur toutes les catégories de rangement trouvées
241
			// Iteration sur toutes les catégories de rangement trouvées
242
			foreach($categories_unite_rangement as $unite_rangement) {						
242
			foreach($categories_unite_rangement as $unite_rangement) {						
243
				// extraction du numéro d'ontologie de la liste concernée
243
				// extraction du numéro d'ontologie de la liste concernée
244
				list($id_ontologie_rangement, $infos_unite_rangement) = explode('##', $unite_rangement);			
244
				list($id_ontologie_rangement, $infos_unite_rangement) = explode('##', $unite_rangement);			
245
				$tableau_unite_rangement = $this->parserUniteRangement($infos_unite_rangement);
245
				$tableau_unite_rangement = $this->parserUniteRangement($infos_unite_rangement);
246
				
246
				
247
				if($tableau_unite_rangement['nombre'] > 0) {
247
				if($tableau_unite_rangement['nombre'] > 0) {
248
					$collection_a_modifier = true;
248
					$collection_a_modifier = true;
249
					switch($id_ontologie_rangement) {
249
					switch($id_ontologie_rangement) {
250
						// Liasses : 2256
250
						// Liasses : 2256
251
						case "2256":
251
						case "2256":
252
							$unite_rangement_des['liasses'] = $tableau_unite_rangement;
252
							$unite_rangement_des['liasses'] = $tableau_unite_rangement;
253
						break;
253
						break;
254
						// Cartons d'herbier : 2255
254
						// Cartons d'herbier : 2255
255
						case "2255":
255
						case "2255":
256
							$unite_rangement_des['cartons'] = $tableau_unite_rangement;
256
							$unite_rangement_des['cartons'] = $tableau_unite_rangement;
257
						break;
257
						break;
258
						// Autres
258
						// Autres
259
						default:
259
						default:
260
							$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);
261
					}	
261
					}	
262
				}								
262
				}								
263
			}
263
			}
264
			
264
			
265
			// 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
266
			// (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
267
			// 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)
268
			if($collection_a_modifier) {
268
			if($collection_a_modifier) {
269
				$update = "UPDATE coel_collection_botanique ".
269
				$update = "UPDATE coel_collection_botanique ".
270
								"SET ";
270
								"SET ";
271
				
271
				
272
				$champs = array();
272
				$champs = array();
273
				
273
				
274
				if(!empty($unite_rangement_des['liasses'])) {
274
				if(!empty($unite_rangement_des['liasses'])) {
275
					$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']).", ".
276
					"ccb_format_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['format'])." ";
276
					"ccb_format_liasses = ".$this->bdd->proteger($unite_rangement_des['liasses']['format'])." ";
277
				}
277
				}
278
				
278
				
279
				if(!empty($unite_rangement_des['cartons'])) {
279
				if(!empty($unite_rangement_des['cartons'])) {
280
					$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']).", ".
281
					"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'])." ";
282
				}
282
				}
283
				
283
				
284
				if(!empty($unite_rangement_des['autres'])) {
284
				if(!empty($unite_rangement_des['autres'])) {
285
					// 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
286
					$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'])));
287
				}
287
				}
288
								
288
								
289
				$update .= implode(', ', $champs)." ".
289
				$update .= implode(', ', $champs)." ".
290
							"WHERE ccb_id_collection = '".$id_collection."'";
290
							"WHERE ccb_id_collection = '".$id_collection."'";
291
 
291
 
292
				$this->bdd->executer($update);
292
				$this->bdd->executer($update);
293
			}
293
			}
294
		}
294
		}
295
	}
295
	}
296
	
296
	
297
	private function parserUniteRangement($unite_rangement) {
297
	private function parserUniteRangement($unite_rangement) {
298
		$tableau_unite_rangement = explode('||', $unite_rangement);
298
		$tableau_unite_rangement = explode('||', $unite_rangement);
299
		return array(
299
		return array(
300
			'nombre' => $tableau_unite_rangement[0],
300
			'nombre' => $tableau_unite_rangement[0],
301
			'precision' => $tableau_unite_rangement[1],
301
			'precision' => $tableau_unite_rangement[1],
302
			'format' => $tableau_unite_rangement[2]
302
			'format' => $tableau_unite_rangement[2]
303
		);
303
		);
304
	}
304
	}
305
	
305
	
306
	private function formaterLigneAutreUniteRangement($id_ontologie, $ontologie_rangement, $tableau_unite_rangement) {
306
	private function formaterLigneAutreUniteRangement($id_ontologie, $ontologie_rangement, $tableau_unite_rangement) {
307
		$nom_rangement = $id_ontologie;
307
		$nom_rangement = $id_ontologie;
308
		
308
		
309
		// 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
310
		if(!is_numeric($id_ontologie)) {
310
		if(!is_numeric($id_ontologie)) {
311
			$nom_rangement = $id_ontologie;
311
			$nom_rangement = $id_ontologie;
312
		} else if(!empty($ontologie_rangement[$id_ontologie])) {
312
		} else if(!empty($ontologie_rangement[$id_ontologie])) {
313
			$nom_rangement = $ontologie_rangement[$id_ontologie]['cmlv_nom'];
313
			$nom_rangement = $ontologie_rangement[$id_ontologie]['cmlv_nom'];
314
		} else {
314
		} else {
315
			$nom_rangement = 'Type de rangement inconnu';
315
			$nom_rangement = 'Type de rangement inconnu';
316
		}
316
		}
317
		
317
		
318
		// Le nombre d'unités est directement accolé au type
318
		// Le nombre d'unités est directement accolé au type
319
		$tab_autre_ligne_rangement = array($nom_rangement);
319
		$tab_autre_ligne_rangement = array($nom_rangement);
320
		if(!empty($tableau_unite_rangement['nombre'])) {
320
		if(!empty($tableau_unite_rangement['nombre'])) {
321
			$tab_autre_ligne_rangement[0] .= ' : '.$tableau_unite_rangement['nombre'];
321
			$tab_autre_ligne_rangement[0] .= ' : '.$tableau_unite_rangement['nombre'];
322
		}
322
		}
323
		
323
		
324
		// La précision est soit exacte soit approximative
324
		// La précision est soit exacte soit approximative
325
		if(!empty($tableau_unite_rangement['precision'])) {
325
		if(!empty($tableau_unite_rangement['precision'])) {
326
			$precision = $tableau_unite_rangement['precision'] == 'E' ? 'exacte' : 'appromixative';
326
			$precision = $tableau_unite_rangement['precision'] == 'E' ? 'exacte' : 'appromixative';
327
			$tab_autre_ligne_rangement[] = 'Précision '.$precision;
327
			$tab_autre_ligne_rangement[] = 'Précision '.$precision;
328
		}
328
		}
329
		
329
		
330
		// 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
331
		// 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
332
		if(!empty($tableau_unite_rangement['format'])) {
332
		if(!empty($tableau_unite_rangement['format'])) {
333
			$tab_autre_ligne_rangement[] = 'Format '.$tableau_unite_rangement['format'];
333
			$tab_autre_ligne_rangement[] = 'Format '.$tableau_unite_rangement['format'];
334
		}
334
		}
335
		// 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"		
336
		return implode(' - ', $tab_autre_ligne_rangement);
336
		return implode(' - ', $tab_autre_ligne_rangement);
337
	}
337
	}
338
	
338
	
339
	
339
	
340
	private function transformerPeriode($donnees) {
340
	private function transformerPeriode($donnees) {
341
		// initialisation
341
		// initialisation
342
		$siecle = array("2233"=>"15",
342
		$siecle = array("2233"=>"15",
343
				"2234"=>"16",
343
				"2234"=>"16",
344
				"2235"=>"17",
344
				"2235"=>"17",
345
				"2236"=>"18",
345
				"2236"=>"18",
346
				"2237"=>"19",
346
				"2237"=>"19",
347
				"2238"=>"20");
347
				"2238"=>"20");
348
		$type = array("2316"=>"Date inconnue",
348
		$type = array("2316"=>"Date inconnue",
349
				"2317"=>"Date exacte",
349
				"2317"=>"Date exacte",
350
				"2318"=>"Antérieure à",
350
				"2318"=>"Antérieure à",
351
				"2319"=>"Postérieure à",
351
				"2319"=>"Postérieure à",
352
				"2320"=>"Date estimée",
352
				"2320"=>"Date estimée",
353
				"2321"=>"Date inconnue",
353
				"2321"=>"Date inconnue",
354
				"2322"=>"Date exacte",
354
				"2322"=>"Date exacte",
355
				"2323"=>"Antérieure à",
355
				"2323"=>"Antérieure à",
356
				"2324"=>"Postérieure à",
356
				"2324"=>"Postérieure à",
357
				"2325"=>"Date estimée",
357
				"2325"=>"Date estimée",
358
				"2326"=>"Encore en activité");
358
				"2326"=>"Encore en activité");
359
		$periode_debut = ""; $periode_fin = "";
359
		$periode_debut = ""; $periode_fin = "";
360
		if ($donnees["annee_debut"] == "") $donnees["annee_debut"] = "0000";
360
		if ($donnees["annee_debut"] == "") $donnees["annee_debut"] = "0000";
361
		if($donnees["annee_fin"] == "") $donnees["annee_fin"] = "0000";
361
		if($donnees["annee_fin"] == "") $donnees["annee_fin"] = "0000";
362
	
362
	
363
		// si une date de début ET une date de fin sont indiquées
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") {
364
		if ($donnees["annee_debut"] !== "0000" && $donnees["annee_fin"] !== "0000") {
365
			$periode_debut = $donnees["annee_debut"];
365
			$periode_debut = $donnees["annee_debut"];
366
			$periode_fin = $donnees["annee_fin"];
366
			$periode_fin = $donnees["annee_fin"];
367
				
367
				
368
			// si un (ou plusieurs) siècles sont indiqué(s)
368
			// si un (ou plusieurs) siècles sont indiqué(s)
369
		} else if($donnees["siecle"] != "") {
369
		} else if($donnees["siecle"] != "") {
370
			// initialisation années début et fin de siècle
370
			// initialisation années début et fin de siècle
371
			$siecles = explode(";;", $donnees["siecle"]);
371
			$siecles = explode(";;", $donnees["siecle"]);
372
			$siecle_debut = $siecle[$siecles[0]]."01";
372
			$siecle_debut = $siecle[$siecles[0]]."01";
373
			$siecle_fin = $siecle[array_pop($siecles)]."99";
373
			$siecle_fin = $siecle[array_pop($siecles)]."99";
374
				
374
				
375
			// si les centaines de l'année de début et du siècle sont égales
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)) {
376
			if (substr($donnees["annee_debut"],0,2) == substr($siecle_debut,0,2)) {
377
				$periode_debut = $donnees["annee_debut"];
377
				$periode_debut = $donnees["annee_debut"];
378
			} else if ($donnees["annee_debut"] != "0000" && $donnees["annee_debut"] < $siecle_debut) {
378
			} else if ($donnees["annee_debut"] != "0000" && $donnees["annee_debut"] < $siecle_debut) {
379
				$periode_debut = $donnees["annee_debut"];
379
				$periode_debut = $donnees["annee_debut"];
380
			} else {
380
			} else {
381
				$periode_debut = $siecle_debut;
381
				$periode_debut = $siecle_debut;
382
			}
382
			}
383
	
383
	
384
			if (substr($donnees["annee_fin"],0,2) == substr($siecle_fin,0,2)) {
384
			if (substr($donnees["annee_fin"],0,2) == substr($siecle_fin,0,2)) {
385
				$periode_fin = $donnees["annee_fin"];
385
				$periode_fin = $donnees["annee_fin"];
386
			} else if ($donnees["annee_fin"] != "0000" && $donnees["annee_fin"] > $siecle_fin) {
386
			} else if ($donnees["annee_fin"] != "0000" && $donnees["annee_fin"] > $siecle_fin) {
387
				$periode_fin = $donnees["annee_fin"];
387
				$periode_fin = $donnees["annee_fin"];
388
			} else {
388
			} else {
389
				$periode_fin = $siecle_fin;
389
				$periode_fin = $siecle_fin;
390
			}
390
			}
391
		} else {
391
		} else {
392
			if ($donnees["annee_debut"] !== "0000") $periode_debut = $donnees["annee_debut"];
392
			if ($donnees["annee_debut"] !== "0000") $periode_debut = $donnees["annee_debut"];
393
			if($donnees["annee_fin"] !== "0000") $periode_fin = $donnees["annee_fin"];
393
			if($donnees["annee_fin"] !== "0000") $periode_fin = $donnees["annee_fin"];
394
		}
394
		}
395
		//print_r($donnees); echo $periode_debut." - ".$periode_fin;
395
		//print_r($donnees); echo $periode_debut." - ".$periode_fin;
396
		return array($periode_debut,$periode_fin);
396
		return array($periode_debut,$periode_fin);
397
	}
397
	}
398
	
398
	
399
	private function transformerBonMauvaisEtat($cle) {
399
	private function transformerBonMauvaisEtat($cle) {
400
		if ($cle==0) $cle="NULL";
400
		if ($cle==0) $cle="NULL";
401
		$valeur = $cle;
401
		$valeur = $cle;
402
		$ontologies = array("2265" => "1",
402
		$ontologies = array("2265" => "1",
403
				"2266" => "2",
403
				"2266" => "2",
404
				"2267" => "3",
404
				"2267" => "3",
405
				"2268" => "4",
405
				"2268" => "4",
406
				"2269" => "5",
406
				"2269" => "5",
407
		);
407
		);
408
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
408
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
409
		return $valeur;
409
		return $valeur;
410
	}
410
	}
411
	
411
	
412
	private function transformerouinon($cle) {
412
	private function transformerouinon($cle) {
413
		$valeur = $cle;
413
		$valeur = $cle;
414
		$ontologies = array("2092" => "non",
414
		$ontologies = array("2092" => "non",
415
				"2093" => "oui",
415
				"2093" => "oui",
416
				"2094" => "enPartie",
416
				"2094" => "enPartie",
417
				"2239" => "neSaitPas",
417
				"2239" => "neSaitPas",
418
				"2240" => "peutEtre",
418
				"2240" => "peutEtre",
419
				"2241" => "oui",
419
				"2241" => "oui",
420
				"2242" => "non",
420
				"2242" => "non",
421
				"2339" => "oui",
421
				"2339" => "oui",
422
				"2340" => "non",
422
				"2340" => "non",
423
				"2341" => "enGrandePartie",
423
				"2341" => "enGrandePartie",
424
				"2342" => "neSaitPas)",
424
				"2342" => "neSaitPas)",
425
				"2343" => "parfois",
425
				"2343" => "parfois",
426
				"2344" => "oui",
426
				"2344" => "oui",
427
				"2345" => "non",
427
				"2345" => "non",
428
				"30744" => "indetermine",
428
				"30744" => "indetermine",
429
				"30745" => "oui",
429
				"30745" => "oui",
430
				"30746" => "non");
430
				"30746" => "non");
431
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
431
		if (isset($ontologies[$cle])) $valeur = $ontologies[$cle];
432
		return $valeur;
432
		return $valeur;
433
	}
433
	}
434
}
434
}
435
?>	
-
 
436
435
?>	
-
 
436