Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 1067 → Rev 1068

/trunk/modules/resultat/formateurs/nom_vernaculaire/DeterminationVernaFormateur.php
115,75 → 115,49
}
private function chargerRepartition() {
$numsNomsASynonymes = $this->extraireNumerosNomSynonymes();
if (Config::get(Registre::get('parametres.referentiel').'.baseRepartition') != "") {
$this->apiCartes->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition'));
$this->apiCartes->setLargeur('108x101');
$urls = array();
foreach ($this->noms as $nom) {
if (array_key_exists('nom_retenu.code', $nom)) {
$id = $nom['nom_retenu.code'];
$id = $this->supprimerCodeReferentielAvecNn($id);
$idsNoms = $numsNomsASynonymes[$id];
$this->apiCartes->setId("nn:".implode(',',$idsNoms)."");
if (array_key_exists($id, $urls) == false) {
$urls[$id] = $this->apiCartes->getUrlPng();
}
// $numsNomsASynonymes = $this->extraireNumerosNomSynonymes();
if (Config::get(Registre::get('parametres.referentiel').'.baseRepartition') == "") {
return;
}
 
$this->apiCartes->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition'));
$this->apiCartes->setLargeur('108x101');
$urls = array();
foreach ($this->noms as $nom) {
if (array_key_exists('nom_retenu.code', $nom)) {
$id = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
$this->apiCartes->setId("nn:" . $id); // . ',' . implode(',', array_keys($numsNomsASynonymes[$id])));
if (array_key_exists($id, $urls) == false) {
$urls[$id] = $this->apiCartes->getUrlPng();
}
}
$this->infosPourTpl['repartition']['urls'] = $urls;
}
$this->infosPourTpl['repartition']['urls'] = $urls;
}
private function extraireNumerosNomSynonymes() {
$numNomsASynonyme = array();
//TODO: pourrait surement être bien plus efficace
// et ne faire qu'une seule boucle
foreach ($this->noms as $id => $nom) {
$num_nom_retenu = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
if(!isset($numNomsASynonyme[$num_nom_retenu])) {
$numNomsASynonyme[$num_nom_retenu] = array();
}
$numNomsASynonyme[$num_nom_retenu][] = $id;
if(!in_array($num_nom_retenu,$numNomsASynonyme[$num_nom_retenu])) {
$numNomsASynonyme[$num_nom_retenu][] = $num_nom_retenu;
}
// faux
$numNomsASynonyme[$num_nom_retenu][$id] = TRUE;
}
foreach($this->noms as $id => $nom) {
$num_nom_retenu = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
if($id != $num_nom_retenu) {
$numNomsASynonyme[$id] = $numNomsASynonyme[$num_nom_retenu];
}
}
return $numNomsASynonyme;
}
function supprimerAccents($chaine){
return strtr($chaine,array('à' => 'a','á' => 'a','â' => 'a','ã' => 'a','ä' => 'a',
'ç' => 'c',
'è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i',
'ñ' => 'n',
'ò' => 'o', 'ó' => 'o' , 'ô' => 'o', 'õ' => 'o', 'ö' => 'o',
'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u',
'ý' => 'y', 'ÿ' => 'y'));
}
 
private function extraireInfosNomsPourTplDetermination() {
$taxons = array();
foreach ($this->noms as $idNomCourant => $nom) {
$nn = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']);
$nom_min = strtolower($nom['nom_vernaculaire']);
$nom_ss_accent = $this->supprimerAccents($nom_min);
if (preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', $nom_ss_accent )) {
//au moins un debute par la requête
$nn = intval($this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']));
$nomV = iconv('UTF-8', 'ASCII//TRANSLIT', strtolower($nom['nom_vernaculaire']));
if (preg_match('/^'.strtolower($this->parametres->masqueRecherche).'(?: |$)/', $nomV)) {
// au moins un debute par la requête
if (isset($taxons) && array_key_exists($nn, $taxons[0]) == false) {
$taxons[0][$nn] = $this->renvoyerInfosTaxon($nom['taxon'], $nn);
}
$taxons[0][$nn]['nomVerna'][] = $this->renvoyerInfosNomVerna($nom);
} else {
//contient
// contient
if (isset($taxons) && (!isset($taxons[1]) || array_key_exists($nn, $taxons[1]) == false)) {
$taxons[1][$nn] = $this->renvoyerInfosTaxon($nom['taxon'], $nn);
}
204,13 → 178,13
$taxon = array();
$taxon['nomSci'] = $nomSci;
$taxon['urlFiche'] = $this->urls->obtenirUrlFiche($nn, $this->parametres->typeNom, $this->parametres->masqueRecherche);
$taxon['repartition_vignette'] = $this->chargerRepartition($nn);
$this->chargerRepartition($nn);
$taxon['repartition_vignette'] = $this->infosPourTpl['repartition']['urls'];
return $taxon;
}
 
private function supprimerCodeReferentielAvecNn($nn) {
$codeReferentiel = $this->parametres->referentielCourant.'.nn:';
return str_replace($codeReferentiel, '', $nn);
return str_replace($this->parametres->referentielCourant.'.nn:', '', $nn);
}
 
//tri alphabétique des noms scientifiques par catégorie (débute par , contient )