Rev 478 | Rev 487 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass Wiki {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;private $restClient = null;private $dossierBase = '';private $index = array();public function __construct(Conteneur $conteneur) {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();$this->dossierBase = dirname(__FILE__).'/';}public function uploaderFichiersSp() {$this->chargerIndex();$envoyes = array();foreach ($this->index as $nom) {$tag = $nom['page_wiki_dsc'];if (isset($envoyes[$tag]) == false && preg_match('/^Esp([0-9]{4})/', $tag, $match)) {$fichier = $this->dossierBase.self::DOSSIER_DSC_TXT.$match[1].'.txt';if (file_exists($fichier) === true) {$txt = file_get_contents($fichier);$donnees = array('pageTag' => $tag, 'pageContenu' => $txt);$this->restClient->ajouter($this->URL_WIKI, $donnees);$envoyes[$tag] = 'OK';} else {$this->messages->traiterErreur("Le fichier $fichier est introuvable.");}}$this->messages->afficherAvancement("Upload des fichiers d'espèce dans le wikini");}echo "\n";}public function dowloaderPagesWiki() {$this->chargerIndex();$envoyes = array();foreach ($this->index as $nom) {$tagDsc = $nom['page_wiki_dsc'];$tagCle = $nom['page_wiki_cle'];if (isset($envoyes[$tagDsc]) == false) {$url = $this->URL_WIKI.'/'.$tagDsc;$txt = $this->telechargerTxt($url);$fichier = $this->dossierBase.self::DOSSIER_V2.'dsc/'.$tagDsc.'.txt';if (file_put_contents($fichier, $txt)) {$envoyes[$tagDsc] = 'OK';}}if (isset($envoyes[$tagCle]) == false) {$url = $this->URL_WIKI.'/'.$tagCle;$txt = $this->telechargerTxt($url);$fichier = $this->dossierBase.self::DOSSIER_V2.'cle/'.$tagCle.'.txt';if (file_put_contents($fichier, $txt)) {$envoyes[$tagCle] = 'OK';}}$this->messages->afficherAvancement("Download des fichiers en cours");}echo "\n";}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';if (file_exists($fichier) === true) {$txt = file_get_contents($fichier);$this->envoyerPage($tagDsc, $txt);$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) {$txt = file_get_contents($fichier);$this->envoyerPage($tagDsc, $txt);$envoyes[$tagCle] = 'OK';} else {$this->messages->traiterErreur("Le fichier $fichier est introuvable.");}}$this->messages->afficherAvancement("Upload des textes dans le wikini eFlore");}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);return $donnees['texte'];}private function chargerIndex() {$indexTxt = $this->dossierBase.self::DOSSIER_V2.'coste_v2_00.tsv';$this->index = $this->outils->transformerTxtTsvEnTableau($indexTxt);}}?>