3,8 → 3,11 |
* Exemple de lancement du script : /opt/lampp/bin/php cli.php ontologie -a analyser |
* |
*/ |
require_once dirname(__FILE__).DS.'Traduction.php'; |
|
class Prometheus extends EfloreScript { |
|
private $projetDossier = ''; |
private $lecteur = null; |
private $fichier = ''; |
private $lotsTermes = array(); |
36,8 → 39,9 |
public function executer() { |
try { |
$this->initialiserProjet('prometheus'); |
$this->projetDossier = Config::get('dossierTsv'); |
|
$this->fichier = realpath(dirname(__FILE__)).'/../../../donnees/prometheus/v1.00_2003-02-18/Ontology.xml'; |
$this->fichier = $this->projetDossier.'Ontology.xml'; |
// Lancement de l'action demandée |
$cmd = $this->getParametre('a'); |
switch ($cmd) { |
52,8 → 56,15 |
$this->vider(); |
$this->lireFichierXml(); |
break; |
case 'chargerTraductions' : |
$this->viderTraductions(); |
$this->chargerTraductions(); |
break; |
case 'vider' : |
$this->vider(); |
case 'viderTraductions' : |
$this->viderTraductions(); |
break; |
case 'supprimerTous' : |
$this->supprimerTous(); |
break; |
515,6 → 526,94 |
return $this->getBdd()->proteger($chaine); |
} |
|
private function viderTraductions() { |
$requete = 'UPDATE prometheus_ontologies_terme_v1_00 '. |
'SET nom = NULL, description = NULL, notes = NULL'; |
$this->executerSql($requete); |
} |
|
private function chargerTraductions() { |
$dossier = $this->projetDossier.'traductions'.DS; |
$pointeur = opendir($dossier); |
while ($fichierNom = readdir($pointeur)) { |
if (preg_match('/^[.]{1,2}/', $fichierNom) == false) { |
$fichierChemin = $dossier.$fichierNom; |
$lecteur = new LecteurExcel($fichierChemin); |
//$this->verifierStructureFichierExcel($lecteur); |
for ($ligne = 2; $ligne < $lecteur->getNbreLignes(); $ligne++) { |
$traduction = new Traduction(); |
$traduction->type = $lecteur->getValeur($ligne, 1); |
$traduction->en = $lecteur->getValeur($ligne, 2); |
$traduction->fr = $lecteur->getValeur($ligne, 3); |
$traduction->sourcesTraduction = $lecteur->getValeur($ligne, 4); |
$traduction->remarques = $lecteur->getValeur($ligne, 5); |
$traduction->sources = $lecteur->getValeur($ligne, 6); |
$traduction->relectureRemarques = $lecteur->getValeur($ligne, 7); |
$this->genererNotes($traduction); |
|
$this->insererTraduction($traduction); |
} |
} |
} |
closedir($pointeur); |
} |
|
private function verifierStructureFichierExcel($lecteur) { |
$messages = array(); |
$colonnes = array("Type d'élément", "Élément en anglais", "Traduction en français", "Sources de la traduction", "Remarques", "Sources", "Relecture/ Remarques"); |
foreach ($colonnes as $numero => $intitule) { |
$valeurBrute = $lecteur->getValeur(1, ($numero + 1)); |
if ($valeurBrute != $intitule) { |
$messages[] = "Le fichier {$lecteur->getFichier()} ne contient pas la bonne colonne #$numero : $intitule != $valeurBrute"; |
} |
} |
if (count($messages) > 0) { |
throw new Exception(implode("\n", $messages)); |
} |
} |
|
private function genererNotes(Traduction $traduction) { |
$notes = array(); |
if ($this->etreVide($traduction->sourcesTraduction) === false) { |
$notes[] = "Sources de la traduction : ".$traduction->sourcesTraduction; |
} |
if ($this->etreVide($traduction->remarques) === false) { |
$notes[] = "Remarques : ".$traduction->remarques; |
} |
if ($this->etreVide($traduction->sources) === false) { |
$notes[] = "Sources : ".$traduction->sources; |
} |
if ($this->etreVide($traduction->relectureRemarques) === false) { |
$notes[] = "Remarques sur la relecture : ".$traduction->relectureRemarques; |
} |
if (count($notes) > 0) { |
$traduction->notes = implode("\n", $notes); |
} |
} |
|
private function insererTraduction($traduction) { |
$requete = null; |
$notes = $traduction->notes; |
if ($traduction->type == 'term') { |
$notes = $this->proteger("Nom :\n".$notes); |
$nom = $this->proteger($traduction->fr); |
$nomEn = $this->proteger($traduction->en); |
$requete = "UPDATE prometheus_ontologies_terme_v1_00 ". |
"SET nom = $nom, notes = $notes ". |
"WHERE nom_en = $nomEn "; |
} else if ($traduction->type == 'DEFINITION') { |
$notes = $this->proteger("Description :\n".$notes); |
$description = $this->proteger($traduction->fr); |
$descriptionEn = $this->proteger($traduction->en); |
$requete = "UPDATE prometheus_ontologies_terme_v1_00 ". |
"SET description = $description, notes = CONCAT(notes, '\n', $notes) ". |
"WHERE description_en = $descriptionEn "; |
} |
if ($requete != null) { |
$this->executerSql($requete); |
} |
} |
|
private function vider() { |
$requete = 'TRUNCATE TABLE prometheus_ontologies_auteur_v1_00'; |
$this->executerSql($requete); |