* @author Delphine CAUQUIL * @author Isabelle NEMBROT * @copyright 2013 Tela-Botanica * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 * @version $Id$ */ class Texte extends aControleur { private $conteneur = null; private $donnees = array(); private $format = "text/html"; public function __construct(Conteneur $conteneur) { $this->conteneur = $conteneur; $this->nomCourant = $this->conteneur->getNomCourant(); parent::__construct(); } public function getDonnees() { $url_wiki = $this->obtenirUrlWikini(); $obj = json_decode(file_get_contents($url_wiki)); $this->donnees['corps'] = $obj->{'texte'}; if (strpos($this->format, "html") != false) { $this->obtenirCorpsHtml(); } else { $this->obtenirCorpsPlain(); } if ($this->donnees['corps'] != "") { $this->donnees['corps'] = preg_split('/===/', $this->donnees['corps'], -1, PREG_SPLIT_NO_EMPTY); $this->donnees['titre'] = $this->donnees['corps'][0]; if (strpos($this->format, "html") != false) { $this->obtenirTitreHtml(); } else { $this->obtenirTitrePlain(); } } return $this->donnees; } //formater pour AppUrls ? public function obtenirUrlWikini() { $titre = urlencode("Fiche simplifiée Smart'flore"); $base_url_wiki = Config::get('smartFloreWikiTpl'); $url_wiki = $base_url_wiki .strtoupper($this->conteneur->getParametre('referentiel'))."nt".$this->nomCourant->getNomSelectionne()->get('num_taxonomique') ."?txt.format=".$this->format."&txt.section.titre=".$titre; return ($url_wiki); } private function obtenirCorpsHtml() { $a_remplacer = array('

', '

'); $this->donnees['corps'] = str_replace($a_remplacer, "===", $this->donnees['corps']); } private function obtenirCorpsPlain() { $a_enlever = array(Chr(10).'=', '='.Chr(10), Chr(10).''.Chr(10)); $this->donnees['corps'] = str_replace($a_enlever, '', $this->donnees['corps']); $this->donnees['corps'] = str_replace(Chr(10), '
', $this->donnees['corps']); } private function obtenirTitreHtml() { $a_remplacer = array('', '', '(
', '
)'); $this->donnees['titre'] = str_replace($a_remplacer, '
', $this->donnees['titre']); $a_enlever = array(Chr(10).'
', '
'.Chr(10), Chr(10).''.Chr(10), '
'.Chr(10).'
'.Chr(10)); $this->donnees['titre'] = str_replace($a_enlever, '', $this->donnees['titre']); $this->separer_NomCommun_NomSci(); } private function separer_NomCommun_NomSci() { $this->donnees['titre'] = str_replace('
', '::', $this->donnees['titre']); $this->donnees['titre'] = preg_split("/::/", $this->donnees['titre'], -1, PREG_SPLIT_NO_EMPTY); $this->donnees['nom-commun'] = $this->donnees['titre'][0]; // sauf erreur ? parser le wikini serait peut-être plus adapté } private function obtenirTitrePlain() { $this->donnees['titre'] = str_replace('**', '
', $this->donnees['titre']); $a_remplacer = array('(
', '
)', '

'); $this->donnees['titre'] = str_replace($a_remplacer, '
', $this->donnees['titre']); $this->separer_NomCommun_NomSci(); $this->separer_NomSci_NomAuteur(); } private function separer_NomSci_NomAuteur() { $nom_sci = str_replace('//', '::', $this->donnees['titre'][1]); $nom_sci = preg_split("/::/", $nom_sci, -1, PREG_SPLIT_NO_EMPTY); $this->donnees['titre'][1] = "".$nom_sci[0]." ".$nom_sci[1]; } } ?>