1,11 → 1,10 |
<?php |
class Wiki { |
|
const URL_WIKI = 'http://www.tela-botanica.org/wikini/florecoste/api/rest/0.5/pages'; |
const URL_WIKI_EFLORE = 'http://www.tela-botanica.org/wikini/Coste/api/rest/0.5/pages'; |
const DOSSIER_V2 = '../../../donnees/coste/2.00/'; |
const DOSSIER_DSC_TXT = '../../../donnees/coste/descriptions/txt/'; |
|
private $URL_WIKI = ''; |
private $URL_WIKI_EFLORE = ''; |
private $conteneur = null; |
private $outils = null; |
private $messages = null; |
17,6 → 16,8 |
mb_internal_encoding('UTF-8'); |
setlocale(LC_ALL, 'fr_FR.UTF-8'); |
$this->conteneur = $conteneur; |
$this->URL_WIKI = $this->conteneur->getParametre('wiki.travail'); |
$this->URL_WIKI_EFLORE = $this->conteneur->getParametre('wiki.eflore'); |
$this->outils = $conteneur->getOutils(); |
$this->messages = $conteneur->getMessages(); |
$this->restClient = $conteneur->getRestClient(); |
33,7 → 34,7 |
if (file_exists($fichier) === true) { |
$txt = file_get_contents($fichier); |
$donnees = array('pageTag' => $tag, 'pageContenu' => $txt); |
$this->restClient->ajouter(self::URL_WIKI, $donnees); |
$this->restClient->ajouter($this->URL_WIKI, $donnees); |
$envoyes[$tag] = 'OK'; |
} else { |
$this->messages->traiterErreur("Le fichier $fichier est introuvable."); |
51,17 → 52,17 |
$tagDsc = $nom['page_wiki_dsc']; |
$tagCle = $nom['page_wiki_cle']; |
if (isset($envoyes[$tagDsc]) == false) { |
$url = self::URL_WIKI.'/'.$tagDsc; |
$url = $this->URL_WIKI.'/'.$tagDsc; |
$txt = $this->telechargerTxt($url); |
$fichier = $this->dossierBase.self::DOSSIER_V2.'/dsc/'.$tagDsc.'.txt'; |
$fichier = $this->dossierBase.self::DOSSIER_V2.'dsc/'.$tagDsc.'.txt'; |
if (file_put_contents($fichier, $txt)) { |
$envoyes[$tagDsc] = 'OK'; |
} |
} |
if (isset($envoyes[$tagCle]) == false) { |
$url = self::URL_WIKI.'/'.$tagCle; |
$url = $this->URL_WIKI.'/'.$tagCle; |
$txt = $this->telechargerTxt($url); |
$fichier = $this->dossierBase.self::DOSSIER_V2.'/cle/'.$tagCle.'.txt'; |
$fichier = $this->dossierBase.self::DOSSIER_V2.'cle/'.$tagCle.'.txt'; |
if (file_put_contents($fichier, $txt)) { |
$envoyes[$tagCle] = 'OK'; |
} |
74,14 → 75,14 |
public function uploaderDansWikiEflore() { |
$this->chargerIndex(); |
$envoyes = array(); |
|
foreach ($this->index as $nom) { |
$tagDsc = $nom['page_wiki_dsc']; |
if (isset($envoyes[$tagDsc]) == false) { |
$fichier = $this->dossierBase.self::DOSSIER_V2.'/dsc/'.$tagDsc.'.txt'; |
$fichier = $this->dossierBase.self::DOSSIER_V2.'dsc/'.$tagDsc.'.txt'; |
if (file_exists($fichier) === true) { |
$txt = file_get_contents($fichier); |
$donnees = array('pageTag' => $tagDsc, 'pageContenu' => $txt); |
$this->restClient->ajouter(self::URL_WIKI_EFLORE, $donnees); |
$this->envoyerPage($tagDsc, $txt); |
$envoyes[$tagDsc] = 'OK'; |
} else { |
$this->messages->traiterErreur("Le fichier $fichier est introuvable."); |
90,11 → 91,10 |
|
$tagCle = $nom['page_wiki_cle']; |
if (isset($envoyes[$tagCle]) == false) { |
$fichier = $this->dossierBase.self::DOSSIER_V2.'/cle/'.$tagCle.'.txt'; |
$fichier = $this->dossierBase.self::DOSSIER_V2.'cle/'.$tagCle.'.txt'; |
if (file_exists($fichier) === true) { |
$txt = file_get_contents($fichier); |
$donnees = array('pageTag' => $tagCle, 'pageContenu' => $txt); |
$this->restClient->ajouter(self::URL_WIKI_EFLORE, $donnees); |
$this->envoyerPage($tagDsc, $txt); |
$envoyes[$tagCle] = 'OK'; |
} else { |
$this->messages->traiterErreur("Le fichier $fichier est introuvable."); |
105,6 → 105,87 |
echo "\n"; |
} |
|
public function uploaderIndexDansWikiEflore() { |
$this->chargerIndex(); |
$envoyes = array(); |
$pageIndexFamille = "==Index Famille Coste==\n\n"; |
$pageIndexGenre = "==Index Genre Coste==\n\n"; |
$pageIndexEspece = "==Index Espèce Coste==\n\n"; |
foreach ($this->index as $nom) { |
$indentation = $this->getIndentationTxtLien($nom); |
$txtLien = $this->getTxtLienGenerique($nom); |
|
$tagDsc = $nom['page_wiki_dsc']; |
if (isset($envoyes[$tagDsc]) == false) { |
$fichier = $this->dossierBase.self::DOSSIER_V2.'dsc/'.$tagDsc.'.txt'; |
if (file_exists($fichier) === true) { |
if ($nom['rang'] <= 180) { |
$pageIndexFamille .= "$indentation- [[$tagDsc $txtLien]]\n"; |
} elseif ($nom['rang'] == 220) { |
$pageIndexGenre .= "$indentation- [[$tagDsc $txtLien]]\n"; |
} else { |
$pageIndexEspece .= "$indentation- [[$tagDsc $txtLien]]\n"; |
} |
$envoyes[$tagDsc] = 'OK'; |
} else { |
$this->messages->traiterErreur("Le fichier $fichier est introuvable."); |
} |
} |
|
$tagCle = $nom['page_wiki_cle']; |
if (isset($envoyes[$tagCle]) == false) { |
$fichier = $this->dossierBase.self::DOSSIER_V2.'cle/'.$tagCle.'.txt'; |
if (file_exists($fichier) === true) { |
$indentation = $indentation.' '; |
if ($nom['rang'] == 180) { |
$pageIndexFamille = rtrim($pageIndexFamille, "\n"); |
$pageIndexFamille .= " - [[$tagCle Clé]]\n"; |
} elseif ($nom['rang'] == 220) { |
$pageIndexGenre = rtrim($pageIndexGenre, "\n"); |
$pageIndexGenre .= " - [[$tagCle Clé]]\n"; |
} |
$envoyes[$tagCle] = 'OK'; |
} else { |
$this->messages->traiterErreur("Le fichier $fichier est introuvable."); |
} |
} |
$this->messages->afficherAvancement("Upload des index dans le wikini eFlore"); |
} |
$this->envoyerPage('IndexFamille', $pageIndexFamille); |
$this->envoyerPage('IndexGenre', $pageIndexGenre); |
$this->envoyerPage('IndexEspece', $pageIndexEspece); |
echo "\n"; |
} |
|
private function getIndentationTxtLien($nom) { |
$rangs = array('Reg' => 1, 'Emb' => 2, 'Cla' => 3, 'Fam' => 4, 'Gen' => 5, 'Esp' => 6); |
$indentation = ''; |
if (preg_match('/^(Reg|Emb|Cla|Fam|Gen|Esp)[0-9]+/', $nom['page_wiki_dsc'], $match)) { |
$type = $match[1]; |
$indentation = str_repeat(' ', $rangs[$type]); |
} |
return $indentation; |
} |
|
private function getTxtLienGenerique($nom) { |
$rangs = array('Reg' => 'Règne', 'Emb' => 'Embranchement', 'Cla' => 'Classe', 'Fam' => 'Famille', |
'Gen' => 'Genre', 'Esp' => 'Espèce'); |
$nomSci = $nom['nom_sci']; |
$txtLien = ''; |
if (preg_match('/^(Reg|Emb|Cla|Fam|Gen|Esp)([0-9]+)/', $nom['page_wiki_dsc'], $match)) { |
$numCoste = $match[2]; |
$type = $match[1]; |
$nomRang = $rangs[$type]; |
$txtLien = "$nomRang $numCoste - $nomSci"; |
} |
return $txtLien; |
} |
|
private function envoyerPage($titre, $txt) { |
$donnees = array('pageTag' => $titre, 'pageContenu' => $txt); |
$this->restClient->ajouter($this->URL_WIKI_EFLORE, $donnees); |
} |
|
private function telechargerTxt($url) { |
$json = $this->restClient->consulter($url); |
$donnees = json_decode($json, true); |
112,7 → 193,7 |
} |
|
private function chargerIndex() { |
$indexTxt = $this->dossierBase.self::DOSSIER_V2.'index.tsv'; |
$indexTxt = $this->dossierBase.self::DOSSIER_V2.'coste_v2_00.tsv'; |
$this->index = $this->outils->transformerTxtTsvEnTableau($indexTxt); |
} |
} |