Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 233 Rev 349
1
<?php
1
<?php
2
/**
2
/**
3
 * Exemple de lancement du script : /opt/lampp/bin/php cli.php ontologie -a analyser
3
 * Exemple de lancement du script : /opt/lampp/bin/php cli.php ontologie -a analyser
4
 *
4
 *
5
 */
5
 */
6
require_once dirname(__FILE__).DS.'Traduction.php';
6
require_once dirname(__FILE__).DS.'Traduction.php';
7
 
7
 
8
class Prometheus extends EfloreScript {
8
class Prometheus extends EfloreScript {
9
 
9
 
10
	private $projetDossier = '';
10
	private $projetDossier = '';
11
	private $lecteur = null;
11
	private $lecteur = null;
12
	private $fichier = '';
12
	private $fichier = '';
13
	private $lotsTermes = array();
13
	private $lotsTermes = array();
14
	private $lotsRelations = array();
14
	private $lotsRelations = array();
15
	private $lotsImages = array();
15
	private $lotsImages = array();
16
	private $lotsPublications = array();
16
	private $lotsPublications = array();
17
	private $lotsAuteurs = array();
17
	private $lotsAuteurs = array();
18
	private $lotsHierarchie = array();
18
	private $lotsHierarchie = array();
19
	private $baseIdGroupe = 10000;
19
	private $baseIdGroupe = 10000;
20
	private $baseIdSousGroupe = 20000;
20
	private $baseIdSousGroupe = 20000;
21
	private $types = array(
21
	private $types = array(
22
		'FREQUENCY_MODIFIERS' => 2,
22
		'FREQUENCY_MODIFIERS' => 2,
23
		'QUALIFIERS' => 3,
23
		'QUALIFIERS' => 3,
24
		'RELATIVE_MODIFIERS' => 4,
24
		'RELATIVE_MODIFIERS' => 4,
25
		'RELATIVE_VALUES' => 5,
25
		'RELATIVE_VALUES' => 5,
26
		'SPATIAL_MODIFIERS' => 6,
26
		'SPATIAL_MODIFIERS' => 6,
27
		'LOCATER_REGIONS' => 7,
27
		'LOCATER_REGIONS' => 7,
28
		'TEMPORAL_MODIFIERS' => 8,
28
		'TEMPORAL_MODIFIERS' => 8,
29
		'UNIT_TERMS' => 9,
29
		'UNIT_TERMS' => 9,
30
		'QUANTITATIVE_PROPERTIES' => 10,
30
		'QUANTITATIVE_PROPERTIES' => 10,
31
		'NEW_QUALITATIVE_PROPERTIES' => 11,
31
		'NEW_QUALITATIVE_PROPERTIES' => 11,
32
		'DISALLOWED_TERMS' => 20,
32
		'DISALLOWED_TERMS' => 20,
33
		'QUALITATIVE_STATES' => 13,
33
		'QUALITATIVE_STATES' => 13,
34
		'TYPE_OF_STRUCTURE_TERMS' => 14,
34
		'TYPE_OF_STRUCTURE_TERMS' => 14,
35
		'STRUCTURE_TERMS' => 15,
35
		'STRUCTURE_TERMS' => 15,
36
		'REGION_TERMS' => 16,
36
		'REGION_TERMS' => 16,
37
		'GENERIC_STRUCTURES' => 17);
37
		'GENERIC_STRUCTURES' => 17);
38
 
38
 
39
	public function executer() {
39
	public function executer() {
40
		try {
40
		try {
41
			$this->initialiserProjet('prometheus');
41
			$this->initialiserProjet('prometheus');
42
			$this->projetDossier = Config::get('dossierTsv');
42
			$this->projetDossier = Config::get('dossierTsv');
43
 
43
 
44
			$this->fichier = $this->projetDossier.'Ontology.xml';
44
			$this->fichier = $this->projetDossier.'Ontology.xml';
45
			// Lancement de l'action demandée
45
			// Lancement de l'action demandée
46
			$cmd = $this->getParametre('a');
46
			$cmd = $this->getParametre('a');
47
		    switch ($cmd) {
47
		    switch ($cmd) {
48
		    	case 'chargerTous' :
48
		    	case 'chargerTous' :
49
		    		$this->chargerStructureSql();
49
		    		$this->chargerStructureSql();
50
		    		$this->lireFichierXml();
50
		    		$this->lireFichierXml();
51
		    		break;
51
		    		break;
52
		    	case 'chargerStructureSql' :
52
		    	case 'chargerStructureSql' :
53
		    		$this->chargerStructureSql();
53
		    		$this->chargerStructureSql();
54
		    		break;
54
		    		break;
55
		    	case 'analyser' :
55
		    	case 'analyser' :
56
					$this->vider();
56
					$this->vider();
57
		    		$this->lireFichierXml();
57
		    		$this->lireFichierXml();
58
					break;
58
					break;
59
				case 'chargerTraductions' :
59
				case 'chargerTraductions' :
60
					$this->viderTraductions();
60
					$this->viderTraductions();
61
					$this->chargerTraductions();
61
					$this->chargerTraductions();
62
					break;
62
					break;
63
		    	case 'vider' :
63
		    	case 'vider' :
64
		    		$this->vider();
64
		    		$this->vider();
65
		    	case 'viderTraductions' :
65
		    	case 'viderTraductions' :
66
		    		$this->viderTraductions();
66
		    		$this->viderTraductions();
67
		    		break;
67
		    		break;
68
		    	case 'supprimerTous' :
68
		    	case 'supprimerTous' :
69
		    		$this->supprimerTous();
69
		    		$this->supprimerTous();
70
		    		break;
70
		    		break;
71
				default :
71
				default :
72
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
72
					throw new Exception("Erreur : la commande '$cmd' n'existe pas!");
73
			}
73
			}
74
		} catch (Exception $e) {
74
		} catch (Exception $e) {
75
			$this->traiterErreur($e->getMessage());
75
			$this->traiterErreur($e->getMessage());
76
		}
76
		}
77
    }
77
    }
78
 
78
 
79
 
79
 
80
    /**
80
    /**
81
	 * Lit le fichier OSM et lance l'analyse des noeuds xml en fonction de leur type.
81
	 * Lit le fichier OSM et lance l'analyse des noeuds xml en fonction de leur type.
82
	 */
82
	 */
83
	private function lireFichierXml() {
83
	private function lireFichierXml() {
84
		$termes = array_keys($this->types);
84
		$termes = array_keys($this->types);
85
		$this->lecteur = new XMLReader();
85
		$this->lecteur = new XMLReader();
86
		if ($this->ouvrirFichierXml()) {
86
		if ($this->ouvrirFichierXml()) {
87
			while ($this->lecteur->read()) {
87
			while ($this->lecteur->read()) {
88
				if ($this->lecteur->nodeType == XMLREADER::ELEMENT) {
88
				if ($this->lecteur->nodeType == XMLREADER::ELEMENT) {
89
					if (in_array($this->lecteur->localName, $termes)) {
89
					if (in_array($this->lecteur->localName, $termes)) {
90
						$noeud = $this->obtenirNoeudSimpleXml();
90
						$noeud = $this->obtenirNoeudSimpleXml();
91
						$type = $this->lecteur->localName;
91
						$type = $this->lecteur->localName;
92
						$this->traiterTermes($this->types[$type], $noeud->children());
92
						$this->traiterTermes($this->types[$type], $noeud->children());
93
					} else if ($this->lecteur->localName == 'STATE_GROUPS') {
93
					} else if ($this->lecteur->localName == 'STATE_GROUPS') {
94
						$noeud = $this->obtenirNoeudSimpleXml();
94
						$noeud = $this->obtenirNoeudSimpleXml();
95
						$this->traiterGroupes($noeud->children());
95
						$this->traiterGroupes($noeud->children());
96
					} else if ($this->lecteur->localName == 'NewQualitativeProperties') {
96
					} else if ($this->lecteur->localName == 'NewQualitativeProperties') {
97
						$noeud = $this->obtenirNoeudSimpleXml();
97
						$noeud = $this->obtenirNoeudSimpleXml();
98
						$this->traiterNouvellesQualites($noeud->children());
98
						$this->traiterNouvellesQualites($noeud->children());
99
					} else if ($this->lecteur->localName == 'RELATIONSHIPS') {
99
					} else if ($this->lecteur->localName == 'RELATIONSHIPS') {
100
						$noeud = $this->obtenirNoeudSimpleXml();
100
						$noeud = $this->obtenirNoeudSimpleXml();
101
						$this->traiterRelations($noeud->children());
101
						$this->traiterRelations($noeud->children());
102
					} else if ($this->lecteur->localName == 'PICTURES') {
102
					} else if ($this->lecteur->localName == 'PICTURES') {
103
						$noeud = $this->obtenirNoeudSimpleXml();
103
						$noeud = $this->obtenirNoeudSimpleXml();
104
						$this->traiterImages($noeud->children());
104
						$this->traiterImages($noeud->children());
105
					} else if ($this->lecteur->localName == 'CITATIONS') {
105
					} else if ($this->lecteur->localName == 'CITATIONS') {
106
						$noeud = $this->obtenirNoeudSimpleXml();
106
						$noeud = $this->obtenirNoeudSimpleXml();
107
						$this->traiterCitations($noeud->children());
107
						$this->traiterCitations($noeud->children());
108
					} else if ($this->lecteur->localName == 'AUTHORS') {
108
					} else if ($this->lecteur->localName == 'AUTHORS') {
109
						$noeud = $this->obtenirNoeudSimpleXml();
109
						$noeud = $this->obtenirNoeudSimpleXml();
110
						$this->traiterAuteurs($noeud->children());
110
						$this->traiterAuteurs($noeud->children());
111
					} else if ($this->lecteur->localName == 'TreeNode') {
111
					} else if ($this->lecteur->localName == 'TreeNode') {
112
						$noeud = $this->obtenirNoeudSimpleXml();
112
						$noeud = $this->obtenirNoeudSimpleXml();
113
						$this->traiterHierarchie($noeud);
113
						$this->traiterHierarchie($noeud);
114
					}
114
					}
115
				}
115
				}
116
			}
116
			}
117
			if (count($this->lotsTermes) > 0) {
117
			if (count($this->lotsTermes) > 0) {
118
				$this->insererLotDeTermes();
118
				$this->insererLotDeTermes();
119
			}
119
			}
120
			if (count($this->lotsRelations) > 0) {
120
			if (count($this->lotsRelations) > 0) {
121
				$this->insererLotDeRelations();
121
				$this->insererLotDeRelations();
122
			}
122
			}
123
			if (count($this->lotsImages) > 0) {
123
			if (count($this->lotsImages) > 0) {
124
				$this->insererLotImages();
124
				$this->insererLotImages();
125
			}
125
			}
126
			if (count($this->lotsPublications) > 0) {
126
			if (count($this->lotsPublications) > 0) {
127
				$this->insererLotDePublications();
127
				$this->insererLotDePublications();
128
			}
128
			}
129
			if (count($this->lotsAuteurs) > 0) {
129
			if (count($this->lotsAuteurs) > 0) {
130
				$this->insererLotAuteurs();
130
				$this->insererLotAuteurs();
131
			}
131
			}
132
			if (count($this->lotsHierarchie) > 0) {
132
			if (count($this->lotsHierarchie) > 0) {
133
				$this->insererLotHierarchie();
133
				$this->insererLotHierarchie();
134
			}
134
			}
135
		}
135
		}
136
	}
136
	}
137
 
137
 
138
	private function ouvrirFichierXml() {
138
	private function ouvrirFichierXml() {
139
		if ($this->lecteur->open($this->fichier) === false) {
139
		if ($this->lecteur->open($this->fichier) === false) {
140
			throw new Exception("Impossible d'ouvrir le fichier XML : $this->fichier");
140
			throw new Exception("Impossible d'ouvrir le fichier XML : $this->fichier");
141
		}
141
		}
142
		return true;
142
		return true;
143
	}
143
	}
144
 
144
 
145
	private function obtenirNoeudSimpleXml() {
145
	private function obtenirNoeudSimpleXml() {
146
		$doc = new DOMDocument;
146
		$doc = new DOMDocument;
147
		$element = $this->lecteur->expand();
147
		$element = $this->lecteur->expand();
148
		$noeud = simplexml_import_dom($doc->importNode($element, true));
148
		$noeud = simplexml_import_dom($doc->importNode($element, true));
149
		return $noeud;
149
		return $noeud;
150
	}
150
	}
151
 
151
 
152
	private function traiterTermes($type, $termes) {
152
	private function traiterTermes($type, $termes) {
153
		foreach ($termes as $terme) {
153
		foreach ($termes as $terme) {
154
			$id = (int) $terme->attributes()->GLOBALID;
154
			$id = (int) $terme->attributes()->GLOBALID;
155
			if (isset($this->lotsTermes[$id]) === false) {
155
			if (isset($this->lotsTermes[$id]) === false) {
156
				$valeur = array();
156
				$valeur = array();
157
				$valeur[] = (int) $id;
157
				$valeur[] = (int) $id;
158
				$valeur[] = (int) $type;
158
				$valeur[] = (int) $type;
159
				$valeur[] = (string) $terme->attributes()->term;
159
				$valeur[] = (string) $terme->attributes()->term;
160
				$valeur[] = (string) $this->obtenirDefinition($terme);
160
				$valeur[] = (string) $this->obtenirDefinition($terme);
161
				$valeur[] = (int) $this->obtenirPreference($terme);
161
				$valeur[] = (int) $this->obtenirPreference($terme);
162
				$valeur[] = (int) $this->obtenirAuteur($terme);
162
				$valeur[] = (int) $this->obtenirAuteur($terme);
163
				$valeur[] = (int) $this->obtenirCitation($terme);
163
				$valeur[] = (int) $this->obtenirCitation($terme);
164
				$valeur[] = (int) $this->obtenirImage($terme);
164
				$valeur[] = (int) $this->obtenirImage($terme);
165
				$this->lotsTermes[$id] = $valeur;
165
				$this->lotsTermes[$id] = $valeur;
166
			}
166
			}
167
			if (isset($terme->attributes()->parentID)) {
167
			if (isset($terme->attributes()->parentID)) {
168
				$relation = array();
168
				$relation = array();
169
				$relation[] = (int) $terme->attributes()->GLOBALID;
169
				$relation[] = (int) $terme->attributes()->GLOBALID;
170
				$relation[] = (int) $terme->attributes()->parentID;
170
				$relation[] = (int) $terme->attributes()->parentID;
171
				$relation[] = 'A POUR PARENT';
171
				$relation[] = 'A POUR PARENT';
172
				$this->ajouterRelation($relation);
172
				$this->ajouterRelation($relation);
173
			}
173
			}
174
			if (isset($terme->attributes()->PARENT_STRUCTURE_ID)) {
174
			if (isset($terme->attributes()->PARENT_STRUCTURE_ID)) {
175
				$relation = array();
175
				$relation = array();
176
				$relation[] = (int) $terme->attributes()->GLOBALID;
176
				$relation[] = (int) $terme->attributes()->GLOBALID;
177
				$relation[] = (int) $terme->attributes()->PARENT_STRUCTURE_ID;
177
				$relation[] = (int) $terme->attributes()->PARENT_STRUCTURE_ID;
178
				$relation[] = 'A POUR STRUCTURE PARENTE';
178
				$relation[] = 'A POUR STRUCTURE PARENTE';
179
				$this->ajouterRelation($relation);
179
				$this->ajouterRelation($relation);
180
			}
180
			}
181
			if (isset($terme->attributes()->stateOfNEWPROPERTYID)) {
181
			if (isset($terme->attributes()->stateOfNEWPROPERTYID)) {
182
				$relation = array();
182
				$relation = array();
183
				$relation[] = (int) $terme->attributes()->GLOBALID;
183
				$relation[] = (int) $terme->attributes()->GLOBALID;
184
				$relation[] = (int) $terme->attributes()->stateOfNEWPROPERTYID;
184
				$relation[] = (int) $terme->attributes()->stateOfNEWPROPERTYID;
185
				$relation[] = 'A POUR NOUVELLE QUALITE';
185
				$relation[] = 'A POUR NOUVELLE QUALITE';
186
				$this->ajouterRelation($relation);
186
				$this->ajouterRelation($relation);
187
			}
187
			}
188
		}
188
		}
189
	}
189
	}
190
 
190
 
191
	private function obtenirDefinition($terme) {
191
	private function obtenirDefinition($terme) {
192
		$definition = null;
192
		$definition = null;
193
		if (isset($terme->DEFINITION)) {
193
		if (isset($terme->DEFINITION)) {
194
			$definition = $terme->DEFINITION;
194
			$definition = $terme->DEFINITION;
195
		}
195
		}
196
		return $definition;
196
		return $definition;
197
	}
197
	}
198
 
198
 
199
	private function obtenirPreference($terme) {
199
	private function obtenirPreference($terme) {
200
		$preference = '1';
200
		$preference = '1';
201
		if (isset($terme->attributes()->PREFERRED_TERM)) {
201
		if (isset($terme->attributes()->PREFERRED_TERM)) {
202
			$valeur = (string) $terme->attributes()->PREFERRED_TERM;
202
			$valeur = (string) $terme->attributes()->PREFERRED_TERM;
203
			$preference = (trim($valeur) == 'Disallowed Term') ? '0' : '1';
203
			$preference = (trim($valeur) == 'Disallowed Term') ? '0' : '1';
204
		}
204
		}
205
		return $preference;
205
		return $preference;
206
	}
206
	}
207
 
207
 
208
	private function obtenirAuteur($terme) {
208
	private function obtenirAuteur($terme) {
209
		$auteur = 0;
209
		$auteur = 0;
210
		if (isset($terme->attributes()->authorID)) {
210
		if (isset($terme->attributes()->authorID)) {
211
			$auteur = $terme->attributes()->authorID;
211
			$auteur = $terme->attributes()->authorID;
212
		} elseif (isset($terme->attributes()->authorREF)) {
212
		} elseif (isset($terme->attributes()->authorREF)) {
213
			$auteur = $terme->attributes()->authorREF;
213
			$auteur = $terme->attributes()->authorREF;
214
		}
214
		}
215
		return $auteur;
215
		return $auteur;
216
	}
216
	}
217
 
217
 
218
	private function obtenirCitation($terme) {
218
	private function obtenirCitation($terme) {
219
		$citation = 0;
219
		$citation = 0;
220
		if (isset($terme->attributes()->citationID)) {
220
		if (isset($terme->attributes()->citationID)) {
221
			$citation = $terme->attributes()->citationID;
221
			$citation = $terme->attributes()->citationID;
222
		} elseif (isset($terme->attributes()->citationREF)) {
222
		} elseif (isset($terme->attributes()->citationREF)) {
223
			$citation = $terme->attributes()->citationREF;
223
			$citation = $terme->attributes()->citationREF;
224
		}
224
		}
225
		return $citation;
225
		return $citation;
226
	}
226
	}
227
 
227
 
228
	private function obtenirImage($terme) {
228
	private function obtenirImage($terme) {
229
		$image = 0;
229
		$image = 0;
230
		if (isset($terme->attributes()->pictureREF)) {
230
		if (isset($terme->attributes()->pictureREF)) {
231
			$image = $terme->attributes()->pictureREF;
231
			$image = $terme->attributes()->pictureREF;
232
		}
232
		}
233
		return $image;
233
		return $image;
234
	}
234
	}
235
 
235
 
236
	private function traiterGroupes($groupes) {
236
	private function traiterGroupes($groupes) {
237
		foreach ($groupes as $groupe) {
237
		foreach ($groupes as $groupe) {
238
			$id = $this->baseIdGroupe + (int) $groupe->attributes()->GROUP_ID;
238
			$id = $this->baseIdGroupe + (int) $groupe->attributes()->GROUP_ID;
239
			if (isset($this->lotsTermes[$id]) === false) {
239
			if (isset($this->lotsTermes[$id]) === false) {
240
				$valeur = array();
240
				$valeur = array();
241
				$valeur[] = (int) $id;
241
				$valeur[] = (int) $id;
242
				$valeur[] = 18;
242
				$valeur[] = 18;
243
				$valeur[] = (string) $groupe->attributes()->groupName;
243
				$valeur[] = (string) $groupe->attributes()->groupName;
244
				$valeur[] = '';
244
				$valeur[] = '';
245
				$valeur[] = 1;
245
				$valeur[] = 1;
246
				$valeur[] = 0;
246
				$valeur[] = 0;
247
				$valeur[] = 0;
247
				$valeur[] = 0;
248
				$valeur[] = 0;
248
				$valeur[] = 0;
249
				$this->lotsTermes[$id] = $valeur;
249
				$this->lotsTermes[$id] = $valeur;
250
			}
250
			}
251
			if (isset($groupe->STRUCTURES_LINKED_TO_GROUP)) {
251
			if (isset($groupe->STRUCTURES_LINKED_TO_GROUP)) {
252
				foreach ($groupe->STRUCTURES_LINKED_TO_GROUP->children() as $structure) {
252
				foreach ($groupe->STRUCTURES_LINKED_TO_GROUP->children() as $structure) {
253
					$relation = array();
253
					$relation = array();
254
					$relation[] = (int) $structure->attributes()->GLOBALID;
254
					$relation[] = (int) $structure->attributes()->GLOBALID;
255
					$relation[] = (int) $id;
255
					$relation[] = (int) $id;
256
					$relation[] = 'A POUR GROUPE';
256
					$relation[] = 'A POUR GROUPE';
257
					$this->ajouterRelation($relation);
257
					$this->ajouterRelation($relation);
258
				}
258
				}
259
			}
259
			}
260
			if (isset($groupe->STATES_IN_GROUP)) {
260
			if (isset($groupe->STATES_IN_GROUP)) {
261
				foreach ($groupe->STATES_IN_GROUP->children() as $etat) {
261
				foreach ($groupe->STATES_IN_GROUP->children() as $etat) {
262
					$relation = array();
262
					$relation = array();
263
					$relation[] = (int) $id;
263
					$relation[] = (int) $id;
264
					$relation[] = (int) $etat->attributes()->GLOBALID;
264
					$relation[] = (int) $etat->attributes()->GLOBALID;
265
					$relation[] = 'A POUR ETAT';
265
					$relation[] = 'A POUR ETAT';
266
					$this->ajouterRelation($relation);
266
					$this->ajouterRelation($relation);
267
				}
267
				}
268
			}
268
			}
269
			if (isset($groupe->STATESUBGROUPS)) {
269
			if (isset($groupe->STATESUBGROUPS)) {
270
				$this->traiterSousGroupes($id, $groupe->STATESUBGROUPS->children());
270
				$this->traiterSousGroupes($id, $groupe->STATESUBGROUPS->children());
271
			}
271
			}
272
		}
272
		}
273
	}
273
	}
274
 
274
 
275
	private function traiterSousGroupes($idGroupe, $sousGroupes) {
275
	private function traiterSousGroupes($idGroupe, $sousGroupes) {
276
		foreach ($sousGroupes as $sg) {
276
		foreach ($sousGroupes as $sg) {
277
			$id = $this->baseIdSousGroupe + (int) $sg->attributes()->STATESUBGROUP_GLOBALID;
277
			$id = $this->baseIdSousGroupe + (int) $sg->attributes()->STATESUBGROUP_GLOBALID;
278
			if (isset($this->lotsTermes[$id]) === false) {
278
			if (isset($this->lotsTermes[$id]) === false) {
279
				$valeur = array();
279
				$valeur = array();
280
				$valeur[] = (int) $id;
280
				$valeur[] = (int) $id;
281
				$valeur[] = 19;
281
				$valeur[] = 19;
282
				$valeur[] = (string) $sg->attributes()->subgGroupName;
282
				$valeur[] = (string) $sg->attributes()->subgGroupName;
283
				$valeur[] = '';
283
				$valeur[] = '';
284
				$valeur[] = 1;
284
				$valeur[] = 1;
285
				$valeur[] = 0;
285
				$valeur[] = 0;
286
				$valeur[] = 0;
286
				$valeur[] = 0;
287
				$valeur[] = 0;
287
				$valeur[] = 0;
288
				$this->lotsTermes[$id] = $valeur;
288
				$this->lotsTermes[$id] = $valeur;
289
 
289
 
290
				$relation = array();
290
				$relation = array();
291
				$relation[] = (int) $idGroupe;
291
				$relation[] = (int) $idGroupe;
292
				$relation[] = (int) $id;
292
				$relation[] = (int) $id;
293
				$relation[] = 'A POUR SOUS-GROUPE';
293
				$relation[] = 'A POUR SOUS-GROUPE';
294
				$this->ajouterRelation($relation);
294
				$this->ajouterRelation($relation);
295
			}
295
			}
296
			if (isset($sg->STATES_IN_SUBGROUP)) {
296
			if (isset($sg->STATES_IN_SUBGROUP)) {
297
				foreach ($sg->STATES_IN_SUBGROUP->children() as $etat) {
297
				foreach ($sg->STATES_IN_SUBGROUP->children() as $etat) {
298
					$relation = array();
298
					$relation = array();
299
					$relation[] = (int) $id;
299
					$relation[] = (int) $id;
300
					$relation[] = (int) $etat->attributes()->GLOBALID;
300
					$relation[] = (int) $etat->attributes()->GLOBALID;
301
					$relation[] = 'A POUR ETAT';
301
					$relation[] = 'A POUR ETAT';
302
					$this->ajouterRelation($relation);
302
					$this->ajouterRelation($relation);
303
				}
303
				}
304
			}
304
			}
305
		}
305
		}
306
	}
306
	}
307
 
307
 
308
	private function traiterNouvellesQualites($qualites) {
308
	private function traiterNouvellesQualites($qualites) {
309
		foreach ($qualites as $qualite) {
309
		foreach ($qualites as $qualite) {
310
			$id = (int) $qualite->attributes()->IDSEQ;
310
			$id = (int) $qualite->attributes()->IDSEQ;
311
			if (isset($this->lotsTermes[$id]) === false) {
311
			if (isset($this->lotsTermes[$id]) === false) {
312
				$valeur = array();
312
				$valeur = array();
313
				$valeur[] = (int) $id;
313
				$valeur[] = (int) $id;
314
				$valeur[] = 11;
314
				$valeur[] = 11;
315
				$valeur[] = (string) $qualite->attributes()->term;
315
				$valeur[] = (string) $qualite->attributes()->term;
316
				$valeur[] = (string) $this->obtenirDefinition($terme);
316
				$valeur[] = (string) $this->obtenirDefinition($terme);
317
				$valeur[] = (int) $this->obtenirPreference($terme);
317
				$valeur[] = (int) $this->obtenirPreference($terme);
318
				$valeur[] = (int) $this->obtenirAuteur($terme);
318
				$valeur[] = (int) $this->obtenirAuteur($terme);
319
				$valeur[] = (int) $this->obtenirCitation($terme);
319
				$valeur[] = (int) $this->obtenirCitation($terme);
320
				$valeur[] = (int) $this->obtenirImage($terme);
320
				$valeur[] = (int) $this->obtenirImage($terme);
321
				$this->lotsTermes[$id] = $valeur;
321
				$this->lotsTermes[$id] = $valeur;
322
			}
322
			}
323
			if (isset($qualite->attributes()->ParentPropertyID)) {
323
			if (isset($qualite->attributes()->ParentPropertyID)) {
324
				$relation = array();
324
				$relation = array();
325
				$relation[] = (int) $qualite->attributes()->IDSEQ;
325
				$relation[] = (int) $qualite->attributes()->IDSEQ;
326
				$relation[] = (int) $qualite->attributes()->ParentPropertyID;
326
				$relation[] = (int) $qualite->attributes()->ParentPropertyID;
327
				$relation[] = 'A POUR PARENT';
327
				$relation[] = 'A POUR PARENT';
328
				$this->ajouterRelation($relation);
328
				$this->ajouterRelation($relation);
329
			}
329
			}
330
			if (isset($qualite->MemberStates)) {
330
			if (isset($qualite->MemberStates)) {
331
				$etats = $qualite->MemberStates->children();
331
				$etats = $qualite->MemberStates->children();
332
				$idParent = $qualite->attributes()->IDSEQ;
332
				$idParent = $qualite->attributes()->IDSEQ;
333
				$this->traiterEtatsMembre($etats, $idParent);
333
				$this->traiterEtatsMembre($etats, $idParent);
334
			}
334
			}
335
			if (isset($qualite->Structures_linked_to_Property)) {
335
			if (isset($qualite->Structures_linked_to_Property)) {
336
				$structures = $qualite->Structures_linked_to_Property->children();
336
				$structures = $qualite->Structures_linked_to_Property->children();
337
				$idParent = $qualite->attributes()->IDSEQ;
337
				$idParent = $qualite->attributes()->IDSEQ;
338
				$this->traiterStructuresLiees($structures, $idParent);
338
				$this->traiterStructuresLiees($structures, $idParent);
339
			}
339
			}
340
			if (isset($qualite->ContextGroups)) {
340
			if (isset($qualite->ContextGroups)) {
341
				$contextes = $qualite->ContextGroups->children();
341
				$contextes = $qualite->ContextGroups->children();
342
				if (count($contextes) > 0) {
342
				if (count($contextes) > 0) {
343
					foreach ($contextes as $contexte) {
343
					foreach ($contextes as $contexte) {
344
						$idParent = $contexte->attributes()->ID;
344
						$idParent = $contexte->attributes()->ID;
345
						$structures = $contexte->Structures_linked_to_Context->children();
345
						$structures = $contexte->Structures_linked_to_Context->children();
346
						$this->traiterStructuresLiees($structures, $idParent);
346
						$this->traiterStructuresLiees($structures, $idParent);
347
						$etats = $contexte->MemberStates->children();
347
						$etats = $contexte->MemberStates->children();
348
						$this->traiterEtatsMembre($etats, $idParent);
348
						$this->traiterEtatsMembre($etats, $idParent);
349
					}
349
					}
350
				}
350
				}
351
			}
351
			}
352
		}
352
		}
353
	}
353
	}
354
 
354
 
355
	private function ajouterRelation($relation) {
355
	private function ajouterRelation($relation) {
356
		$id = implode('-', $relation);
356
		$id = implode('-', $relation);
357
		if (isset($this->lotsRelations[$id]) === false) {
357
		if (isset($this->lotsRelations[$id]) === false) {
358
			$this->lotsRelations[$id] = $relation;
358
			$this->lotsRelations[$id] = $relation;
359
		}
359
		}
360
	}
360
	}
361
 
361
 
362
	private function traiterEtatsMembre($etats, $idParent) {
362
	private function traiterEtatsMembre($etats, $idParent) {
363
		if (count($etats) > 0) {
363
		if (count($etats) > 0) {
364
			foreach ($etats as $etat) {
364
			foreach ($etats as $etat) {
365
				$relation = array();
365
				$relation = array();
366
				$relation[] = (int) $idParent;
366
				$relation[] = (int) $idParent;
367
				$relation[] = (int) $etat->attributes()->RefID;
367
				$relation[] = (int) $etat->attributes()->RefID;
368
				$relation[] = 'A POUR ETAT';
368
				$relation[] = 'A POUR ETAT';
369
				$this->ajouterRelation($relation);
369
				$this->ajouterRelation($relation);
370
			}
370
			}
371
		}
371
		}
372
	}
372
	}
373
 
373
 
374
	private function traiterStructuresLiees($structures, $idParent) {
374
	private function traiterStructuresLiees($structures, $idParent) {
375
		if (count($structures) > 0) {
375
		if (count($structures) > 0) {
376
			foreach ($structures as $structure) {
376
			foreach ($structures as $structure) {
377
				$relation = array();
377
				$relation = array();
378
				$relation[] = (int) $structure->attributes()->RefID;
378
				$relation[] = (int) $structure->attributes()->RefID;
379
				$relation[] = (int) $idParent;
379
				$relation[] = (int) $idParent;
380
				$relation[] = 'A POUR PROPRIETE';
380
				$relation[] = 'A POUR PROPRIETE';
381
				$this->ajouterRelation($relation);
381
				$this->ajouterRelation($relation);
382
			}
382
			}
383
		}
383
		}
384
	}
384
	}
385
 
385
 
386
	private function traiterRelations($relations) {
386
	private function traiterRelations($relations) {
387
		foreach ($relations as $rel) {
387
		foreach ($relations as $rel) {
388
			$relation = array();
388
			$relation = array();
389
			$relation[] = (int) $rel->attributes()->term1REF;
389
			$relation[] = (int) $rel->attributes()->term1REF;
390
			$relation[] = (int) $rel->attributes()->term2REF;
390
			$relation[] = (int) $rel->attributes()->term2REF;
391
			$relation[] = (string) $this->obtenirTypeRelation($rel->attributes()->relationship);
391
			$relation[] = (string) $this->obtenirTypeRelation($rel->attributes()->relationship);
392
			$this->ajouterRelation($relation);
392
			$this->ajouterRelation($relation);
393
		}
393
		}
394
	}
394
	}
395
 
395
 
396
	private function obtenirTypeRelation($type) {
396
	private function obtenirTypeRelation($type) {
397
		switch ($type) {
397
		switch ($type) {
398
			case 'ASSOCIATED WITH' :
398
			case 'ASSOCIATED WITH' :
399
				$relation = 'ASSOCIE AVEC';
399
				$relation = 'ASSOCIE AVEC';
400
				break;
400
				break;
401
			case 'IS A PART OF' :
401
			case 'IS A PART OF' :
402
				$relation = 'EST UNE PARTIE DE';
402
				$relation = 'EST UNE PARTIE DE';
403
				break;
403
				break;
404
			case 'IS A TYPE OF' :
404
			case 'IS A TYPE OF' :
405
				$relation = 'EST UN TYPE DE';
405
				$relation = 'EST UN TYPE DE';
406
				break;
406
				break;
407
			default :
407
			default :
408
				$relation = '';
408
				$relation = '';
409
		}
409
		}
410
		return $relation;
410
		return $relation;
411
	}
411
	}
412
 
412
 
413
	private function traiterImages($images) {
413
	private function traiterImages($images) {
414
		foreach ($images as $img) {
414
		foreach ($images as $img) {
415
			$valeur = array();
415
			$valeur = array();
416
			$valeur[] = (int) $img->attributes()->ID;
416
			$valeur[] = (int) $img->attributes()->ID;
417
			$valeur[] = (string) $img->attributes()->NAME;
417
			$valeur[] = (string) $img->attributes()->NAME;
418
			$valeur[] = (int) $img->attributes()->CITATION_REFID;
418
			$valeur[] = (int) $img->attributes()->CITATION_REFID;
419
			$this->lotsImages[] = $valeur;
419
			$this->lotsImages[] = $valeur;
420
		}
420
		}
421
	}
421
	}
422
 
422
 
423
	private function traiterCitations($citations) {
423
	private function traiterCitations($citations) {
424
		foreach ($citations as $publi) {
424
		foreach ($citations as $publi) {
425
			$valeur = array();
425
			$valeur = array();
426
			$valeur[] = (int) $publi->attributes()->ID;
426
			$valeur[] = (int) $publi->attributes()->ID;
427
			$valeur[] = (int) $publi->attributes()->primaryAuthorREF;
427
			$valeur[] = (int) $publi->attributes()->primaryAuthorREF;
428
			$valeur[] = (string) $publi->PUBLICATION;
428
			$valeur[] = (string) $publi->PUBLICATION;
429
			$valeur[] = (string) $publi->DATE;
429
			$valeur[] = (string) $publi->DATE;
430
			$valeur[] = (string) $publi->PAGE;
430
			$valeur[] = (string) $publi->PAGE;
431
			$this->lotsPublications[] = $valeur;
431
			$this->lotsPublications[] = $valeur;
432
		}
432
		}
433
	}
433
	}
434
 
434
 
435
	private function traiterAuteurs($auteurs) {
435
	private function traiterAuteurs($auteurs) {
436
		foreach ($auteurs as $auteur) {
436
		foreach ($auteurs as $auteur) {
437
			$valeur = array();
437
			$valeur = array();
438
			$valeur[] = (int) $auteur->attributes()->ID;
438
			$valeur[] = (int) $auteur->attributes()->ID;
439
			$valeur[] = (string) $auteur->attributes()->givenNames;
439
			$valeur[] = (string) $auteur->attributes()->givenNames;
440
			$valeur[] = (string) $auteur->attributes()->surname;
440
			$valeur[] = (string) $auteur->attributes()->surname;
441
			$valeur[] = $this->obtenirDateNaissance((string) $auteur->attributes()->born);
441
			$valeur[] = $this->obtenirDateNaissance((string) $auteur->attributes()->born);
442
			$valeur[] = (string) $auteur->attributes()->died;
442
			$valeur[] = (string) $auteur->attributes()->died;
443
			$this->lotsAuteurs[] = $valeur;
443
			$this->lotsAuteurs[] = $valeur;
444
		}
444
		}
445
	}
445
	}
446
 
446
 
447
	private function obtenirDateNaissance($annee) {
447
	private function obtenirDateNaissance($annee) {
448
		$date = $annee.'-00-00';
448
		$date = $annee.'-00-00';
449
		return $date;
449
		return $date;
450
	}
450
	}
451
 
451
 
452
	private function traiterHierarchie($noeud) {
452
	private function traiterHierarchie($noeud) {
453
		$valeur = array();
453
		$valeur = array();
454
		$valeur[] = (int) $noeud->attributes()->ID;
454
		$valeur[] = (int) $noeud->attributes()->ID;
455
		$valeur[] = (int) $noeud->attributes()->ParentNodeID;
455
		$valeur[] = (int) $noeud->attributes()->ParentNodeID;
456
		$valeur[] = (string) $noeud->attributes()->pathAsNames;
456
		$valeur[] = (string) $noeud->attributes()->pathAsNames;
457
		$valeur[] = (string) $noeud->attributes()->pathAsID;
457
		$valeur[] = (string) $noeud->attributes()->pathAsID;
458
		$valeur[] = (int) $noeud->attributes()->TermID;
458
		$valeur[] = (int) $noeud->attributes()->TermID;
459
		$this->lotsHierarchie[] = $valeur;
459
		$this->lotsHierarchie[] = $valeur;
460
	}
460
	}
461
 
461
 
462
	private function insererLotDeTermes() {
462
	private function insererLotDeTermes() {
463
		$champs = implode(',', array('id_terme', 'ce_type', 'nom_en', 'description_en', 'preference', 'ce_auteur', 'ce_publication', 'ce_image'));
463
		$champs = implode(',', array('id_terme', 'ce_type', 'nom_en', 'description_en', 'preference', 'ce_auteur', 'ce_publication', 'ce_image'));
464
		$values = $this->creerValues($this->lotsTermes);
464
		$values = $this->creerValues($this->lotsTermes);
465
		$requete = "INSERT INTO prometheus_ontologies_terme_v1_00 ($champs) VALUES $values";
465
		$requete = "INSERT INTO prometheus_ontologies_terme_v1_00 ($champs) VALUES $values";
466
		$this->executerSql($requete);
466
		$this->executerSql($requete);
467
	}
467
	}
468
 
468
 
469
	private function insererLotDeRelations() {
469
	private function insererLotDeRelations() {
470
		$champs = implode(',', array('id_terme_01', 'id_terme_02', 'relation'));
470
		$champs = implode(',', array('id_terme_01', 'id_terme_02', 'relation'));
471
		$values = $this->creerValues($this->lotsRelations);
471
		$values = $this->creerValues($this->lotsRelations);
472
		$requete = "INSERT INTO prometheus_ontologies_relation_v1_00 ($champs) VALUES $values";
472
		$requete = "INSERT INTO prometheus_ontologies_relation_v1_00 ($champs) VALUES $values";
473
		$this->executerSql($requete);
473
		$this->executerSql($requete);
474
	}
474
	}
475
 
475
 
476
	private function insererLotImages() {
476
	private function insererLotImages() {
477
		$champs = implode(',', array('id_image', 'uri', 'ce_publication'));
477
		$champs = implode(',', array('id_image', 'uri', 'ce_publication'));
478
		$values = $this->creerValues($this->lotsImages);
478
		$values = $this->creerValues($this->lotsImages);
479
		$requete = "INSERT INTO prometheus_ontologies_image_v1_00 ($champs) VALUES $values";
479
		$requete = "INSERT INTO prometheus_ontologies_image_v1_00 ($champs) VALUES $values";
480
		$this->executerSql($requete);
480
		$this->executerSql($requete);
481
	}
481
	}
482
 
482
 
483
	private function insererLotDePublications() {
483
	private function insererLotDePublications() {
484
		$champs = implode(',', array('id_publication', 'ce_auteur_principal', 'titre', 'date', 'uri'));
484
		$champs = implode(',', array('id_publication', 'ce_auteur_principal', 'titre', 'date', 'uri'));
485
		$values = $this->creerValues($this->lotsPublications);
485
		$values = $this->creerValues($this->lotsPublications);
486
		$requete = "INSERT INTO prometheus_ontologies_publication_v1_00 ($champs) VALUES $values";
486
		$requete = "INSERT INTO prometheus_ontologies_publication_v1_00 ($champs) VALUES $values";
487
		$this->executerSql($requete);
487
		$this->executerSql($requete);
488
	}
488
	}
489
 
489
 
490
	private function insererLotAuteurs() {
490
	private function insererLotAuteurs() {
491
		$champs = implode(',', array('id_auteur', 'prenom', 'nom', 'naissance_date', 'deces_date'));
491
		$champs = implode(',', array('id_auteur', 'prenom', 'nom', 'naissance_date', 'deces_date'));
492
		$values = $this->creerValues($this->lotsAuteurs);
492
		$values = $this->creerValues($this->lotsAuteurs);
493
		$requete = "INSERT INTO prometheus_ontologies_auteur_v1_00 ($champs) VALUES $values";
493
		$requete = "INSERT INTO prometheus_ontologies_auteur_v1_00 ($champs) VALUES $values";
494
		$this->executerSql($requete);
494
		$this->executerSql($requete);
495
	}
495
	}
496
 
496
 
497
	private function insererLotHierarchie() {
497
	private function insererLotHierarchie() {
498
		$champs = implode(',', array('id_noeud', 'id_noeud_parent', 'chemin_noms', 'chemin_ids', 'ce_terme'));
498
		$champs = implode(',', array('id_noeud', 'id_noeud_parent', 'chemin_noms', 'chemin_ids', 'ce_terme'));
499
		$values = $this->creerValues($this->lotsHierarchie);
499
		$values = $this->creerValues($this->lotsHierarchie);
500
		$requete = "INSERT INTO prometheus_ontologies_hierarchie_v1_00 ($champs) VALUES $values";
500
		$requete = "INSERT INTO prometheus_ontologies_hierarchie_v1_00 ($champs) VALUES $values";
501
		$this->executerSql($requete);
501
		$this->executerSql($requete);
502
	}
502
	}
503
 
503
 
504
	private function creerValues($valeurs) {
504
	private function creerValues($valeurs) {
505
		$values = array();
505
		$values = array();
506
		foreach ($valeurs as $valeur) {
506
		foreach ($valeurs as $valeur) {
507
			foreach ($valeur as $id => $val) {
507
			foreach ($valeur as $id => $val) {
508
				$valeur[$id] = $this->etreVide($val) ? 'NULL' : $this->proteger(trim($val));
508
				$valeur[$id] = $this->etreVide($val) ? 'NULL' : $this->proteger(trim($val));
509
			}
509
			}
510
			$values[]  = '('.implode(',', $valeur).')';
510
			$values[]  = '('.implode(',', $valeur).')';
511
		}
511
		}
512
		$values = implode(',', $values);
512
		$values = implode(',', $values);
513
		return $values;
513
		return $values;
514
	}
514
	}
515
 
515
 
516
	private function etreVide($val) {
516
	private function etreVide($val) {
517
		$vide = ($val === null || trim($val) === '') ? true : false;
517
		$vide = ($val === null || trim($val) === '') ? true : false;
518
		return $vide;
518
		return $vide;
519
	}
519
	}
520
 
520
 
521
	private function executerSql($requete) {
521
	private function executerSql($requete) {
522
		$this->getBdd()->requeter($requete);
522
		$this->getBdd()->requeter($requete);
523
	}
523
	}
524
 
524
 
525
	private function proteger($chaine) {
525
	private function proteger($chaine) {
526
		return $this->getBdd()->proteger($chaine);
526
		return $this->getBdd()->proteger($chaine);
527
	}
527
	}
528
 
528
 
529
	private function viderTraductions() {
529
	private function viderTraductions() {
530
		$requete = 'UPDATE prometheus_ontologies_terme_v1_00 '.
530
		$requete = 'UPDATE prometheus_ontologies_terme_v1_00 '.
531
			'SET nom = NULL, description = NULL, notes = NULL';
531
			'SET nom = NULL, description = NULL, notes = NULL';
532
		$this->executerSql($requete);
532
		$this->executerSql($requete);
533
	}
533
	}
534
 
534
 
535
	private function chargerTraductions() {
535
	private function chargerTraductions() {
536
		$dossier = $this->projetDossier.'traductions'.DS;
536
		$dossier = $this->projetDossier.'traductions'.DS;
537
		$pointeur = opendir($dossier);
537
		$pointeur = opendir($dossier);
538
		while ($fichierNom = readdir($pointeur)) {
538
		while ($fichierNom = readdir($pointeur)) {
539
			if (preg_match('/^[.]{1,2}/', $fichierNom) == false) {
539
			if (preg_match('/^[.]{1,2}/', $fichierNom) == false) {
540
				$fichierChemin = $dossier.$fichierNom;
540
				$fichierChemin = $dossier.$fichierNom;
541
				$lecteur = new LecteurExcel($fichierChemin);
541
				$lecteur = new LecteurExcel($fichierChemin);
542
				//$this->verifierStructureFichierExcel($lecteur);
542
				//$this->verifierStructureFichierExcel($lecteur);
543
				for ($ligne = 2; $ligne < $lecteur->getNbreLignes(); $ligne++) {
543
				for ($ligne = 2; $ligne < $lecteur->getNbreLignes(); $ligne++) {
544
					$traduction = new Traduction();
544
					$traduction = new Traduction();
545
					$traduction->type = $lecteur->getValeur($ligne, 1);
545
					$traduction->type = $lecteur->getValeur($ligne, 1);
546
					$traduction->en = $lecteur->getValeur($ligne, 2);
546
					$traduction->en = $lecteur->getValeur($ligne, 2);
547
					$traduction->fr = $lecteur->getValeur($ligne, 3);
547
					$traduction->fr = $lecteur->getValeur($ligne, 3);
548
					$traduction->sourcesTraduction = $lecteur->getValeur($ligne, 4);
548
					$traduction->sourcesTraduction = $lecteur->getValeur($ligne, 4);
549
					$traduction->remarques = $lecteur->getValeur($ligne, 5);
549
					$traduction->remarques = $lecteur->getValeur($ligne, 5);
550
					$traduction->sources = $lecteur->getValeur($ligne, 6);
550
					$traduction->sources = $lecteur->getValeur($ligne, 6);
551
					$traduction->relectureRemarques = $lecteur->getValeur($ligne, 7);
551
					$traduction->relectureRemarques = $lecteur->getValeur($ligne, 7);
552
					$this->genererNotes($traduction);
552
					$this->genererNotes($traduction);
553
 
553
 
554
					$this->insererTraduction($traduction);
554
					$this->insererTraduction($traduction);
555
				}
555
				}
556
			}
556
			}
557
		}
557
		}
558
		closedir($pointeur);
558
		closedir($pointeur);
559
	}
559
	}
560
 
560
 
561
	private function verifierStructureFichierExcel($lecteur) {
561
	private function verifierStructureFichierExcel($lecteur) {
562
		$messages = array();
562
		$messages = array();
563
		$colonnes = array("Type d'élément", "Élément en anglais", "Traduction en français", "Sources de la traduction", "Remarques", "Sources", "Relecture/ Remarques");
563
		$colonnes = array("Type d'élément", "Élément en anglais", "Traduction en français", "Sources de la traduction", "Remarques", "Sources", "Relecture/ Remarques");
564
		foreach ($colonnes as $numero => $intitule) {
564
		foreach ($colonnes as $numero => $intitule) {
565
			$valeurBrute = $lecteur->getValeur(1, ($numero + 1));
565
			$valeurBrute = $lecteur->getValeur(1, ($numero + 1));
566
			if ($valeurBrute != $intitule) {
566
			if ($valeurBrute != $intitule) {
567
				$messages[] = "Le fichier {$lecteur->getFichier()} ne contient pas la bonne colonne #$numero : $intitule != $valeurBrute";
567
				$messages[] = "Le fichier {$lecteur->getFichier()} ne contient pas la bonne colonne #$numero : $intitule != $valeurBrute";
568
			}
568
			}
569
		}
569
		}
570
		if (count($messages) > 0) {
570
		if (count($messages) > 0) {
571
			throw new Exception(implode("\n", $messages));
571
			throw new Exception(implode("\n", $messages));
572
		}
572
		}
573
	}
573
	}
574
 
574
 
575
	private function genererNotes(Traduction $traduction) {
575
	private function genererNotes(Traduction $traduction) {
576
		$notes = array();
576
		$notes = array();
577
		if ($this->etreVide($traduction->sourcesTraduction) === false) {
577
		if ($this->etreVide($traduction->sourcesTraduction) === false) {
578
			$notes[] = "Sources de la traduction : ".$traduction->sourcesTraduction;
578
			$notes[] = "Sources de la traduction : ".$traduction->sourcesTraduction;
579
		}
579
		}
580
		if ($this->etreVide($traduction->remarques) === false) {
580
		if ($this->etreVide($traduction->remarques) === false) {
581
			$notes[] = "Remarques : ".$traduction->remarques;
581
			$notes[] = "Remarques : ".$traduction->remarques;
582
		}
582
		}
583
		if ($this->etreVide($traduction->sources) === false) {
583
		if ($this->etreVide($traduction->sources) === false) {
584
			$notes[] = "Sources : ".$traduction->sources;
584
			$notes[] = "Sources : ".$traduction->sources;
585
		}
585
		}
586
		if ($this->etreVide($traduction->relectureRemarques) === false) {
586
		if ($this->etreVide($traduction->relectureRemarques) === false) {
587
			$notes[] = "Remarques sur la relecture : ".$traduction->relectureRemarques;
587
			$notes[] = "Remarques sur la relecture : ".$traduction->relectureRemarques;
588
		}
588
		}
589
		if (count($notes) > 0) {
589
		if (count($notes) > 0) {
590
			$traduction->notes = implode("\n", $notes);
590
			$traduction->notes = implode("\n", $notes);
591
		}
591
		}
592
	}
592
	}
593
 
593
 
594
	private function insererTraduction($traduction) {
594
	private function insererTraduction($traduction) {
595
		$requete = null;
595
		$requete = null;
596
		$notes = $traduction->notes;
596
		$notes = $traduction->notes;
597
		if ($traduction->type == 'term') {
597
		if ($traduction->type == 'term') {
598
			$notes = $this->proteger("Nom :\n".$notes);
598
			$notes = $this->proteger("Nom :\n".$notes);
599
			$nom = $this->proteger($traduction->fr);
599
			$nom = $this->proteger($traduction->fr);
600
			$nomEn = $this->proteger($traduction->en);
600
			$nomEn = $this->proteger($traduction->en);
601
			$requete = "UPDATE prometheus_ontologies_terme_v1_00 ".
601
			$requete = "UPDATE prometheus_ontologies_terme_v1_00 ".
602
				"SET nom = $nom, notes = $notes ".
602
				"SET nom = $nom, notes = $notes ".
603
				"WHERE nom_en = $nomEn ";
603
				"WHERE nom_en = $nomEn ";
604
		} else if ($traduction->type == 'DEFINITION') {
604
		} else if ($traduction->type == 'DEFINITION') {
605
			$notes = $this->proteger("Description :\n".$notes);
605
			$notes = $this->proteger("Description :\n".$notes);
606
			$description = $this->proteger($traduction->fr);
606
			$description = $this->proteger($traduction->fr);
607
			$descriptionEn = $this->proteger($traduction->en);
607
			$descriptionEn = $this->proteger($traduction->en);
608
			$requete = "UPDATE prometheus_ontologies_terme_v1_00 ".
608
			$requete = "UPDATE prometheus_ontologies_terme_v1_00 ".
609
				"SET description = $description, notes = CONCAT(notes, '\n', $notes) ".
609
				"SET description = $description, notes = CONCAT(notes, '\n', $notes) ".
610
				"WHERE description_en = $descriptionEn ";
610
				"WHERE description_en = $descriptionEn ";
611
		}
611
		}
612
		if ($requete != null) {
612
		if ($requete != null) {
613
			$this->executerSql($requete);
613
			$this->executerSql($requete);
614
		}
614
		}
615
	}
615
	}
616
 
616
 
617
	private function vider() {
617
	private function vider() {
618
		$requete = 'TRUNCATE TABLE prometheus_ontologies_auteur_v1_00';
618
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_auteur_v1_00';
619
		$this->executerSql($requete);
619
		$this->executerSql($requete);
620
		$requete = 'TRUNCATE TABLE prometheus_ontologies_hierarchie_v1_00';
620
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_hierarchie_v1_00';
621
		$this->executerSql($requete);
621
		$this->executerSql($requete);
622
		$requete = 'TRUNCATE TABLE prometheus_ontologies_image_v1_00';
622
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_image_v1_00';
623
		$this->executerSql($requete);
623
		$this->executerSql($requete);
624
		$requete = 'TRUNCATE TABLE prometheus_ontologies_publication_v1_00';
624
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_publication_v1_00';
625
		$this->executerSql($requete);
625
		$this->executerSql($requete);
626
		$requete = 'TRUNCATE TABLE prometheus_ontologies_relation_v1_00';
626
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_relation_v1_00';
627
		$this->executerSql($requete);
627
		$this->executerSql($requete);
628
		$requete = 'TRUNCATE TABLE prometheus_ontologies_terme_v1_00';
628
		$requete = 'TRUNCATE TABLE IF EXISTS prometheus_ontologies_terme_v1_00';
629
		$this->executerSql($requete);
629
		$this->executerSql($requete);
630
	}
630
	}
631
 
631
 
632
	private function supprimerTous() {
632
	private function supprimerTous() {
633
		$requete = "DROP TABLE prometheus_meta, prometheus_ontologies_auteur_v1_00, prometheus_ontologies_hierarchie_v1_00,
633
		$requete = "DROP TABLE IF EXISTS prometheus_meta, prometheus_ontologies_auteur_v1_00, prometheus_ontologies_hierarchie_v1_00,
634
			prometheus_ontologies_image_v1_00, prometheus_ontologies_publication_v1_00, prometheus_ontologies_relation_v1_00,
634
			prometheus_ontologies_image_v1_00, prometheus_ontologies_publication_v1_00, prometheus_ontologies_relation_v1_00,
635
			prometheus_ontologies_terme_v1_00, prometheus_ontologies_type_v1_00";
635
			prometheus_ontologies_terme_v1_00, prometheus_ontologies_type_v1_00";
636
		$this->getBdd()->requeter($requete);
636
		$this->getBdd()->requeter($requete);
637
	}
637
	}
638
}
638
}
639
?>
639
?>