/branches/v5.10-vilmorin/modules/resultat/squelettes/resultat.tpl.html |
---|
New file |
0,0 → 1,22 |
<?php if($typeNom == "nom_scientifique"): ?> |
<?php if ($rang == null): ?> |
Cet affichage montre tous les résultats. |
<a href="<?php echo $urlInverse; ?>">Cliquez ici pour afficher seulement les espèces</a> |
<?php else: ?> |
<!-- Cet affichage ne montre que le rang "<?php echo $rang; ?>".--> |
Cet affichage ne montre que les espèces. |
<a href="<?php echo $urlInverse; ?>">Cliquez ici pour afficher tous les taxons</a> |
<?php endif; ?> |
<br/><br/> |
<?php endif; ?> |
<?=$ongletsHtml?> |
<p style="float:right;"> |
<?php if($typeNom == "nom_scientifique"): ?> |
<?= $nombreTaxonsAffiches ?> nom<?php echo $nombreTaxonsAffiches > 1 ? 's' : ''; ?> affiché<?php echo $nombreTaxonsAffiches > 1 ? 's' : ''; ?> / |
<?php endif; ?> |
<?=$nbreTaxons?> nom<?php echo $nbreTaxons > 1 ? 's' : ''; ?> trouvé<?php echo $nbreTaxons > 1 ? 's' : ''; ?>. |
</p> |
<?=$nomsHtml?> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/liste_noms_verna.tpl.html |
---|
New file |
0,0 → 1,19 |
<!-- onglet "Tableau multilingue" --> |
<? if ($noms) : ?> |
<table> |
<tr> |
<th>n°</th> |
<th>langue</th> |
<th>nom commun</th> |
<th>nom latin</th> |
</tr> |
<? $i = 1; foreach ($noms as $id => $valeurs) : ?> |
<tr> |
<td><?=$i++?></td> |
<td><?= $valeurs['langue']?></td> |
<td><?= $valeurs['nomVerna']?></td> |
<td><a href="<?= $valeurs['urlFiche']?>"><?= $valeurs['nomSci']?></a></td> |
</tr> |
<? endforeach; ?> |
</table> |
<? endif; ?> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/onglets.tpl.html |
---|
New file |
0,0 → 1,15 |
<ul class="onglets"> |
<?php if ($typeNom == 'nom_scientifique') : ?> |
<?php foreach ($ongletsNs as $onglet) : ?> |
<li <?=($typeResultat == $onglet ? 'class="menu_actif sci"': 'class="sci"')?> > |
<a href="<?=$urls[$onglet]?>"><?=$i18n['ns'][$onglet]?></a> |
</li> |
<?php endforeach; ?> |
<?php elseif ($typeNom == 'nom_vernaculaire') : ?> |
<?php foreach ($ongletsNv as $onglet) : ?> |
<li <?=($typeResultat == $onglet ? 'class="menu_actif verna"': 'class="verna"')?> > |
<a href="<?=$urls[$onglet]?>"><?=$i18n['nv'][$onglet]?></a> |
</li> |
<?php endforeach; ?> |
<?php endif; ?> |
</ul> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/decomposition.tpl.html |
---|
New file |
0,0 → 1,67 |
<!-- onglet "Tableau" --> |
<p> |
Rechercher sur |
<a href="http://www.theplantlist.org/tpl/search?q=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/tpl.png" alt="The Plant List" |
title="Rechercher dans The Plant List"/> |
</a> |
<a href="http://www.ipni.org/ipni/simplePlantNameSearch.do?find_wholeName=<?=htmlentities($masqueRecherche)?>&output_format=normal&query_type=by_query&back_page=query_ipni.html"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/ipni.png" alt="IPNI" title="Rechercher dans IPNI"/> |
</a> |
<a href="http://plants.jstor.org/search?plantName=%22<?=htmlentities($masqueRecherche)?>%22&syn=1"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/jstor.png" alt="JSTOR Plant Science" title="Rechercher dans JSTOR Plant Science" /> |
</a> |
<a href="http://coldb.mnhn.fr/Consultation?filtre=motif&motif=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/mnhn.png" alt="Muséum national d'Histoire naturelle" title="Rechercher dans Muséum national d'Histoire naturelle" /> |
</a> |
<a href="http://www.anbg.gov.au/cgi-bin/apni?TAXON_NAME=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/anbg.png" alt="Australian Plant Name Index" title="Rechercher dans Australian Plant Name Index" /> |
</a> |
<a href="http://sweetgum.nybg.org/vh/specimen_list.php?QueryName=BasicQuery&QueryPage=http%3A%2F%2Fsciweb.nybg.org%2Fscience2%2Fvii2.asp&Restriction=NybRecordType+%3D+%27Specimen%27&StartAt=1&any=SummaryData%7CAdmWebMetadata&QueryOption=any&Submit=Search&QueryTerms=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/nybg.png" alt="NYBG Virtual Herbarium" title="Rechercher dans NYBG Virtual Herbarium" /> |
</a> |
<a href="http://collections.mnh.si.edu/search/botany/?qt=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/si.png" alt="Type Specimen Register of the U.S. National Herbarium" title="Rechercher dans Type Specimen Register of the U.S. National Herbarium" /> |
</a> |
<a href="http://herbarium.univie.ac.at/database/search.php?taxon=<?=htmlentities($masqueRecherche)?>&search=1"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/vha.png" alt="Virtual Herbaria Austria" title="Rechercher dans Virtual Herbaria Austria" /> |
</a> |
<a href="http://swbiodiversity.org/seinet/taxa/index.php?taxon=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/seinet.png" alt="SEINet" title="Rechercher dans SEINet" /> |
</a> |
<a href="http://www.ville-ge.ch/musinfo/bd/cjb/africa/resultat.php?efFamille=&projet%5B%5D=FSA&projet%5B%5D=FTA&projet%5B%5D=FNA&projet%5B%5D=BDM&langue=en&pbRecherche=Rechercher&efNom=<?=htmlentities($masqueRecherche)?>"> |
<img src="<?=$baseUrlIco?>presentations/images/sites/cjb.png" alt="African Plants Database" title="Rechercher dans African Plants Database du Jardin Botanique de Genève" /> |
</a> |
</p> |
<table id="ef-resultats-decomposition"> |
<thead> |
<tr> |
<th id="col-ns">Nom scientifique</th> |
<th>Auteur</th> |
<th>Année</th> |
<th>Référence bibliographique</th> |
<th title="Commentaires nomenclaturaux ou taxonomiques concernant le nom scientifique">Nom addendum</th> |
<th title="Identifiant numérique du nom scientifique">N° nom</th> |
</tr> |
</thead> |
<tbody> |
<? $i = 1 ?> |
<? foreach ($noms as $nom) : ?> |
<tr |
class="<?=$nom['retenu'] === 'true' ? 'retenu' : 'synonyme' ?>" |
title="Ligne #<?=$i++?>"> |
<td> |
<? if ($nom['retenu'] !== 'absent') : ?> |
<a href="<?=$nom['urlFiche']?>"><?=$nom['nomSci']?></a> |
<? else : ?><?=$nom['nomSci']?> |
<? endif; ?> |
</td> |
<td><?=$nom['auteur']?></td> |
<td><?=$nom['annee']?></td> |
<td><?=$nom['biblio']?></td> |
<td><?=$nom['addendum']?></td> |
<td><?=$nom['nn']?></td> |
</tr> |
<? endforeach; ?> |
</tbody> |
</table> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/liste_noms.tpl.html |
---|
New file |
0,0 → 1,18 |
<!-- onglet "Liste" --> |
<ol> |
<? foreach ($noms as $id => $nom) : ?> |
<li> |
<?php if ($nom['retenu'] == 'absent') : ?> |
<?=$nom['nomSci']?> |
<?php else : ?> |
<a href="<?=$nom['urlFiche']?>"> |
<?php if ($nom['retenu'] == 'true') : ?> |
<strong class="nom-sci-retenu"><?=$nom['nomSci']?></strong> |
<?php else : ?> |
<?=$nom['nomSci']?> |
<?php endif; ?> |
</a> |
<?php endif; ?> |
</li> |
<? endforeach; ?> |
</ol> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/determination_verna.tpl.html |
---|
New file |
0,0 → 1,88 |
<!-- onglet "Vignettes noms français" --> |
<?php if ($noms) : ?> |
<ul id="ef-resultats-nv-determination"> |
<? foreach ($noms as $nnTaxon => $nom) : ?> |
<li class="zone-resultat"> |
<table > |
<tbody > |
<tr><td class="nom"> |
<?php if (isset($nom['nomVerna'])) : ?> |
<?php $nbrNomVerna = count($nom['nomVerna']) ?> |
<ul class="synonymes" style="width:100%;"> |
<?php for ($i = 0; ($i < 3); $i++) : ?> |
<?php if (isset($nom['nomVerna'][$i])) : ?> |
<li><?=$nom['nomVerna'][$i]['nom_vernaculaire']?></li> |
<?php endif; ?> |
<? endfor; ?> |
<?php if ($nbrNomVerna === 4) : ?> |
<?php if (isset($nom['nomVerna'][3])) : ?> |
<li><?=$nom['nomVerna'][3]['nom_vernaculaire']?></li> |
<?php endif; ?> |
<?php endif; ?> |
<?php if ($nbrNomVerna > 3 && $nbrNomVerna != 4) : ?> |
<li class="synonymes-autres"> |
<ul> |
<?php for ($i = 3; $i < $nbrNomVerna; $i++) : ?> |
<li><?=$nom['nomVerna'][$i]['nom_vernaculaire']?></li> |
<? endfor; ?> |
</ul> |
</li> |
<?php endif; ?> |
</ul> |
<?php endif; ?> |
</td><td class="nom"> |
<a class="lien_fiche_eflore" href="<?=$nom['urlFiche']?>" ><?=$nom['nomSci']?></a> |
</td> |
<td> |
<?php if (isset($imagesCoste[$taxons[$nom['nomSci']]][0])) : ?> |
<img class="illustration_resultat_coste" src="<?=htmlentities($imagesCoste[$taxons[$nom['nomSci']]][0])?>" alt="illustration de Coste" /> |
<?php else : ?> |
<div class="vide"></div> |
<?php endif; ?> |
</td> |
<td> |
<?php if (isset($imagesUrls[$nnTaxon])) : ?> |
<img class="illustration_resultat_cel" src="<?=htmlentities($imagesUrls[$nnTaxon][0])?>" data-num-nom="<?= $nnTaxon; ?>" title="<?= $nnTaxon; ?>" alt="Images issues du CEL" style="width:100px;height:100px;display:block;float:right;"/> |
<?php else : ?> |
<p class="absent"> |
Pas de photo<br /> |
<a href="<?=$urlWidget.'&num_nom='.$nnTaxon?>" |
title="Ajouter une photographie au moyen du Carnet en Ligne" |
onclick="window.open(this.href); return false;" class="contribuer"> |
Contribuer |
</a> |
</p> |
<?php endif; ?> |
</td> |
<td > |
<?php if (isset($repartition['urls'][$nnTaxon])) : ?> |
<img src="<?=htmlentities($repartition['urls'][$nnTaxon])?>" alt="Carte de répartition" class="repartition_vignette illustration_resultat_choro"/> |
<?php else : ?> |
<div class="absent">Pas de carte</div> |
<?php endif; ?> |
</td></tr> |
</tbody> |
</table> |
</li> |
<? endforeach; ?> |
</ul> |
<?php endif; ?> |
<script type="text/javascript"> |
//<![CDATA[ |
$(document).ready(function() { |
ajouterToggleSynonymesAutres(); |
}); |
function ajouterToggleSynonymesAutres() { |
$("ul#ef-resultats-nv-determination li").each(function(index) { |
$(this).find('.synonymes-autres').prepend('<a id="bascule-'+index+'" href="#">et plus...</a>'); |
$(this).find('.synonymes-autres ul').css('display', 'none'); |
$(this).find('.synonymes-autres ul').attr('id', 'sa-'+index); |
$('#bascule-'+index).on('click', function() { |
$('#sa-'+index).toggle('blind', {}, 500); |
return false; |
}); |
}); |
} |
//]]> |
</script> |
/branches/v5.10-vilmorin/modules/resultat/squelettes/determination.tpl.html |
---|
New file |
0,0 → 1,94 |
<!-- onglet "Vignettes" --> |
<ul id="ef-resultats-determination"> |
<?php if ($noms) : ?> |
<? foreach ($noms as $nnTaxon => $nom) : ?> |
<li class="zone-resultat"> |
<div class="nom-sci"> |
<a class="lien_fiche_eflore" href="<?=$nom['urlFiche']?>" > |
<strong class="nom-sci-retenu"><?=$nom['nomSciRetenuSurligne']?></strong> |
</a> |
</div> |
<?php if (isset($repartition)) : ?> |
<?php if (isset($repartition['urls'][$nnTaxon]) ) : ?> |
<img class="illustration_resultat_choro" src="<?=htmlentities($repartition['urls'][$nnTaxon])?>" alt="<?= $nom['nomSciRetenu'] ?> - Carte de répartition" /> |
<?php else : ?> |
<div class="absent">Pas de carte</div> |
<?php endif;endif; ?> |
<?php if ($nom['rang'] != 'Famille' && $nom['rang'] != 'Genre' && $nom['rang'] != 'Ordre') : ?> |
<?php if (isset($imagesUrls[$nnTaxon])) : ?> |
<img class="illustration_resultat_cel" src="<?=htmlentities($imagesUrls[$nnTaxon][0])?>" data-num-nom="<?= $nnTaxon; ?>" title="<?= $nnTaxon; ?>" alt="<?= $nom['nomSciRetenu'] ?> (image CeL)" style="width:100px;height:100px;display:block;float:right;"/> |
<?php else : ?> |
<p class="absent">Pas de photo<br /> |
<a href="<?=$urlWidget.'&num_nom='.$nnTaxon?>" |
title="Ajouter une photographie au moyen du Carnet en Ligne" |
onclick="window.open(this.href); return false;" class="contribuer"> |
Contribuer |
</a> |
</p> |
<?php endif; ?> |
<?php if (isset($dessins) && isset($dessins[$taxons[$nnTaxon]][0])) : ?> |
<img class="illustration_resultat_coste" src="<?=htmlentities($dessins[$taxons[$nnTaxon]][0])?>" alt="<?= $nom['nomSciRetenu'] ?> (illustration de Coste)" /> |
<?php endif; ?> |
<?php endif; ?> |
<?php if (isset($synonymes[$nnTaxon])) : ?> |
<?php $nbrSynonymes = count($synonymes[$nnTaxon]) ?> |
<ul class="synonymes" style="width:100%;"> |
<?php for ($i = 0; ($i < 3); $i++) : ?> |
<?php if (isset($synonymes[$nnTaxon][$i])) : ?> |
<li><b>syn.</b> <?=$synonymes[$nnTaxon][$i]['nomSci']?></li> |
<?php endif; ?> |
<? endfor; ?> |
<?php if ($nbrSynonymes === 4) : ?> |
<?php if (isset($synonymes[$nnTaxon][3])) : ?> |
<li><b>syn.</b> <?=$synonymes[$nnTaxon][3]['nomSci']?></li> |
<?php endif; ?> |
<?php endif; ?> |
<?php if ($nbrSynonymes > 3 && $nbrSynonymes != 4) : ?> |
<li class="synonymes-autres"> |
<ul> |
<?php for ($i = 3; $i < $nbrSynonymes; $i++) : ?> |
<li><b>syn.</b> <?=$synonymes[$nnTaxon][$i]['nomSci']?></li> |
<? endfor; ?> |
</ul> |
</li> |
<?php endif; ?> |
</ul> |
<?php endif; ?> |
</li> |
<? endforeach; ?> |
<?php endif; ?> |
<?php if ($nomsSansCorrespondance) : ?> |
<li class="zone-resultat" title="Aucun nom retenu n'a été trouvé pour ces noms scientifiques"> |
<strong>Noms sans correspondance</strong> |
<ul class="noms-ss-correspondance"> |
<?php foreach ($nomsSansCorrespondance as $nomSC) : ?> |
<li><?=$nomSC?></li> |
<?php endforeach; ?> |
</ul> |
</li> |
<?php endif; ?> |
</ul> |
<script type="text/javascript"> |
//<![CDATA[ |
$(document).ready(function() { |
ajouterToggleSynonymesAutres(); |
}); |
function ajouterToggleSynonymesAutres() { |
$("ul#ef-resultats-determination li").each(function(index) { |
$(this).find('.synonymes-autres').prepend('<a id="bascule-'+index+'" href="#">et plus...</a>'); |
$(this).find('.synonymes-autres ul').css('display', 'none'); |
$(this).find('.synonymes-autres ul').attr('id', 'sa-'+index); |
$('#bascule-'+index).on('click', function() { |
$('#sa-'+index).toggle('blind', {}, 500); |
return false; |
}); |
}); |
} |
//]]> |
</script> |
/branches/v5.10-vilmorin/modules/resultat/ParametresResultats.php |
---|
New file |
0,0 → 1,11 |
<?php |
class ParametresResultats { |
public $typeResultat = 'determination'; |
public $typeNom = ''; |
public $masqueRecherche = ''; |
public $reftaxCourant = 'bdtfx'; |
public $projetImg = 'cel'; |
/** Si "null", montre tous les résultats. Sinon, ne montre que le rang spécifié, par défaut les espèces (290). */ |
public $rang = null; |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_vernaculaire/AlphabVernaFormateur.php |
---|
New file |
0,0 → 1,113 |
<?php |
class AlphabVernaFormateur implements Formateur { |
const TPL_VUE = 'liste_noms_verna'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $fusioneur = null; |
private $manipulateurDeChaine = null; |
private $imagesService = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
public function __construct(ParametresResultats $parametres, Array $resultats, |
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null, |
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine; |
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService; |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
private function supprimerCodeReftaxAvecNn($nn) { |
$codeReftax = Registre::get('parametres.referentiel').'.nn:'; |
return str_replace($codeReftax, '', $nn); |
} |
private function renvoyerInfoVerna($nn, $valeurs) { |
$infosDuNom = array(); |
$infosDuNom['nomSci'] = $valeurs['taxon']; |
$infosDuNom['nomVerna'] = $valeurs['nom_vernaculaire']; |
$infosDuNom['langue'] = $valeurs['code_langue']; |
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($nn, $this->parametres->typeNom, $this->parametres->masqueRecherche); |
return $infosDuNom ; |
} |
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')); |
} |
public function formater() { |
$nomVerna = array(); |
foreach ($this->noms as $id => $nom) { |
$nn = $this->supprimerCodeReftaxAvecNn($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)) { |
$nomVerna[0][$id] = $this->renvoyerInfoVerna($nn, $nom); |
} else { |
$nomVerna[1][$id] = $this->renvoyerInfoVerna($nn, $nom); |
} |
} |
ksort($nomVerna); |
$this->infosPourTpl['noms'] = isset($nomVerna) ? $nomVerna : false; |
} |
public function trier() { |
$verna = array(); |
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs) { |
$verna += $this->classerAlphabetiquement('nomVerna', $valeurs); |
} |
$this->infosPourTpl['noms'] = $verna; |
} |
private function classerAlphabetiquement($champs, $valeurs) { |
$this->trieur->setTableau($valeurs); |
$this->trieur->setChampsEtOrdres(array($champs => 'nat')); |
return $this->trieur->trier(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) { |
$this->infosPourTpl['noms'][$idNom]['nomVerna'] = $this->surlignerMotsMasqueRecherche($nom['nomVerna']); |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_vernaculaire/DeterminationVernaFormateur.php |
---|
New file |
0,0 → 1,229 |
<?php |
class DeterminationVernaFormateur implements Formateur { |
const TPL_VUE = 'determination_verna'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $fusioneur = null; |
private $manipulateurDeChaine = null; |
private $imagesService = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
private $conteneur = null; |
private $apiCartes = null; |
public function __construct(ParametresResultats $parametres, Array $resultats, |
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null, |
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine; |
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService; |
$this->conteneur = new Conteneur(); |
$this->apiCartes = $this->conteneur->getApiCartes(); |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
public function formater() { |
$this->obtenirUrlsDessins(); |
$this->obtenirUrlsPhotos(); |
$this->chargerRepartition(); |
$this->extraireInfosNomsPourTplDetermination(); |
$this->infosPourTpl['urlWidget'] = Config::get('base_url_widget_saisie')."?referentiel=".Registre::get('parametres.referentiel'); |
} |
private function obtenirUrlsDessins() { |
if (Config::get(Registre::get('parametres.referentiel').'.baseDessins') != "") { |
$this->extraireInfosTaxons(); |
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseDessins')); |
$tax = implode(',', $this->infosPourTpl['taxons']); |
$this->imagesService->setNnTaxon($tax); |
$costeImg = $this->imagesService->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons(); |
if (!empty($costeImg)) { |
foreach ($costeImg as $infos) { |
$num_taxon = $infos['num_taxonomique']; |
$images[$num_taxon][] = $infos['binaire.href']; |
$this->infosPourTpl['imagesCoste'] = $images; |
} |
} |
} |
} |
private function extraireInfosTaxons() { |
foreach ($this->noms as $id => $nom ) { |
if (array_key_exists('num_taxon', $nom) |
&& array_key_exists('taxon', $nom)) { |
$this->infosPourTpl['taxons'][$nom['taxon']] = $nom['num_taxon']; |
} |
} |
} |
private function obtenirUrlsPhotos() { |
if (Config::get(Registre::get('parametres.referentiel').'.baseImages') != "") { |
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseImages')); |
$nns = $this->extraireNnDesNoms(); |
$urls = $this->imagesService->setApi(Eflore::API_EFLORE)->getUrlsImagesParIdsNoms($nns); |
$this->infosPourTpl['imagesUrls'] = $this->supprimerCodeReferentielDesUrls($urls); |
} |
} |
private function extraireNnDesNoms() { |
$nns = array(); |
foreach ($this->noms as $id => $nom) { |
if (array_key_exists('nom_retenu.code', $nom)) { |
if (in_array($nom['nom_retenu.code'], $nns) == false) { |
$idAAjouter = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']); |
if (is_numeric($idAAjouter)) { |
$nns[] = $idAAjouter; |
} |
} |
} |
} |
return $nns; |
} |
private function supprimerCodeReferentielDesUrls($urls) { |
$urlsNettoyees = array(); |
foreach ($urls as $id => $url) { |
$id = $this->supprimerCodeReferentiel($id); |
$urlsNettoyees[$id] = $url; |
} |
return $urlsNettoyees; |
} |
private function supprimerCodeReferentiel($chaine) { |
$codeReferentiel = $this->parametres->referentielCourant.'.'; |
$chaine = str_replace($codeReferentiel, '', $chaine); |
return $chaine; |
} |
private function chargerRepartition() { |
// $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; |
} |
private function extraireNumerosNomSynonymes() { |
$numNomsASynonyme = array(); |
foreach ($this->noms as $id => $nom) { |
$num_nom_retenu = $this->supprimerCodeReferentielAvecNn($nom['nom_retenu.code']); |
// faux |
$numNomsASynonyme[$num_nom_retenu][$id] = TRUE; |
} |
return $numNomsASynonyme; |
} |
private function extraireInfosNomsPourTplDetermination() { |
$taxons = array(); |
foreach ($this->noms as $idNomCourant => $nom) { |
$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 |
if (isset($taxons) && (!isset($taxons[1]) || array_key_exists($nn, $taxons[1]) == false)) { |
$taxons[1][$nn] = $this->renvoyerInfosTaxon($nom['taxon'], $nn); |
} |
$taxons[1][$nn]['nomVerna'][] = $this->renvoyerInfosNomVerna($nom); |
} |
} |
$this->infosPourTpl['noms'] = isset($taxons) ? $taxons : false; |
} |
private function renvoyerInfosNomVerna($valeurs) { |
$nom_verna = array(); |
$nom_verna['nn'] = $valeurs['id']; |
$nom_verna['nom_vernaculaire'] = $valeurs['nom_vernaculaire']; |
return $nom_verna; |
} |
private function renvoyerInfosTaxon($nomSci, $nn) { |
$taxon = array(); |
$taxon['nomSci'] = $nomSci; |
$taxon['urlFiche'] = $this->urls->obtenirUrlFiche($nn, $this->parametres->typeNom, $this->parametres->masqueRecherche); |
$this->chargerRepartition($nn); |
$taxon['repartition_vignette'] = $this->infosPourTpl['repartition']['urls']; |
return $taxon; |
} |
private function supprimerCodeReferentielAvecNn($nn) { |
return str_replace($this->parametres->referentielCourant.'.nn:', '', $nn); |
} |
//tri alphabétique des noms scientifiques par catégorie (débute par , contient ) |
public function trier() { |
$verna = array(); |
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs) { |
$verna += $this->classerAlphabetiquement('nomSci', $valeurs); |
} |
$this->infosPourTpl['noms'] = $verna; |
} |
private function classerAlphabetiquement($champs, $valeurs) { |
$this->trieur->setTableau($valeurs); |
$this->trieur->setChampsEtOrdres(array($champs => 'nat')); |
return $this->trieur->trier(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) { |
foreach ($nom['nomVerna'] as $idVerna => $nomVerna) { |
$nom['nomVerna'][$idVerna]['nom_vernaculaire'] = $this->surlignerMotsMasqueRecherche($nomVerna['nom_vernaculaire']); |
} |
$this->infosPourTpl['noms'][$idNom] = $nom; |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/Formateur.php |
---|
New file |
0,0 → 1,10 |
<?php |
interface Formateur { |
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null); |
public function getTplInfos(); |
public function getTplNom(); |
public function formater(); |
public function trier(); |
public function surligner(); |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/ResultatFormateurFabrique.php |
---|
New file |
0,0 → 1,16 |
<?php |
class ResultatFormateurFabrique { |
public static function creer(ParametresResultats $parametres, Array $resultats){ |
$typeResultat = ucwords($parametres->typeResultat); |
$typeNom = ($parametres->typeNom == 'nom_vernaculaire') ? 'Verna' : ''; |
$Classe = $typeResultat.$typeNom.'Formateur'; |
$ResultatFormateur = null; |
if (class_exists($Classe)) { |
return new $Classe($parametres, $resultats); |
} else { |
throw new Exception("La classe '$Classe' est introuvable."); |
} |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/DeterminationFormateur.php |
---|
New file |
0,0 → 1,258 |
<?php |
class DeterminationFormateur implements Formateur { |
const TPL_VUE = 'determination'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $fusioneur = null; |
private $manipulateurDeChaine = null; |
private $imagesService = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
public function __construct(ParametresResultats $parametres, Array $resultats, |
Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null, |
ChaineManipulateur $manipulateurDeChaine = null, Images $imagesService = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
$this->manipulateurDeChaine = is_null($manipulateurDeChaine) ? new ChaineManipulateur() : $manipulateurDeChaine; |
$this->imagesService = is_null($imagesService) ? new Images($this->parametres->projetImg) : $imagesService; |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
public function formater() { |
$this->extraireInfosTaxons(); |
$this->obtenirUrlsDessins(); |
$this->obtenirUrlsPhotos(); |
$this->chargerRepartition(); |
$this->extraireInfosNomsPourTplDetermination(); |
$this->infosPourTpl['urlWidget'] = Config::get('base_url_widget_saisie')."?referentiel=".Registre::get('parametres.referentiel'); |
} |
private function obtenirUrlsDessins() { |
if (Config::get(Registre::get('parametres.referentiel').'.baseDessins') != "") { |
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseDessins')); |
$tax = implode(',', $this->infosPourTpl['taxons']); |
$this->imagesService->setNnTaxon($tax); |
$costeImg = $this->imagesService->setApi(Eflore::API_EFLORE)->getInfosImagesTaxons(); |
if (!empty($costeImg)) { |
foreach ($costeImg as $infos) { |
$num_taxon = $infos['num_taxonomique']; |
$images[$num_taxon][] = $infos['binaire.href']; |
$this->infosPourTpl['dessins'] = $images; |
} |
} |
} |
} |
private function extraireInfosTaxons() { |
foreach ($this->noms as $id => $nom ) { |
if (array_key_exists('num_taxonomique', $nom)) { |
$this->infosPourTpl['taxons'][$id] = $nom['num_taxonomique']; |
} |
} |
} |
private function obtenirUrlsPhotos() { |
if (Config::get(Registre::get('parametres.referentiel').'.baseImages') != "") { |
$this->imagesService->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseImages')); |
$ids = $this->extraireIdDesNoms(); |
$urls = $this->imagesService->setApi(Eflore::API_EFLORE)->getUrlsImagesParIdsNoms($ids); |
$this->infosPourTpl['imagesUrls'] = $this->supprimerCodeReferentielDesIds($urls); |
} |
} |
private function extraireIdDesNoms() { |
$ids = array(); |
foreach ($this->noms as $id => $nom) { |
$idAAjouter = $id; |
if (is_numeric($idAAjouter)) { |
$ids[] = $idAAjouter; |
} |
if (array_key_exists('nom_retenu.id', $nom)) { |
if (in_array($nom['nom_retenu.id'], $ids) == false) { |
$idAAjouter = $nom['nom_retenu.id']; |
if (is_numeric($idAAjouter)) { |
$ids[] = $idAAjouter; |
} |
} |
} |
} |
return $ids; |
} |
private function supprimerCodeReferentielDesIds($urls) { |
$urlsNettoyees = array(); |
foreach ($urls as $id => $url) { |
$id = $this->supprimerCodeReferentiel($id); |
$urlsNettoyees[$id] = $url; |
} |
return $urlsNettoyees; |
} |
private function supprimerCodeReferentiel($chaine) { |
$codeReferentiel = Registre::get('parametres.referentiel').'.'; |
$chaine = str_replace($codeReferentiel, '', $chaine); |
return $chaine; |
} |
// TODO : utiliser le conteneur pour charger tous les objets de cette classe |
private function chargerRepartition() { |
$referentiel = Registre::get('parametres.referentiel'); |
if (Config::get("$referentiel.baseRepartition") != '') { |
$conteneur = new Conteneur(); |
$cartesWs = $conteneur->getApiCartes(); |
$cartesWs->setProjet(Config::get(Registre::get('parametres.referentiel').'.baseRepartition')); |
$cartesWs->setLargeur('108x101'); |
$urls = array(); |
foreach ($this->noms as $id => $nom) { |
if (array_key_exists('num_taxonomique', $nom)) { |
$nt = $nom['num_taxonomique']; |
$cartesWs->setId("$referentiel.nt:$nt"); |
if (array_key_exists($id, $urls) == false) { |
$urls[$id] = $cartesWs->getUrlPng(); |
} |
} |
} |
$this->infosPourTpl['repartition']['urls'] = $urls; |
} |
} |
private function extraireInfosNomsPourTplDetermination() { |
$tri = $this->diviserResultats(); |
$this->infosPourTpl['nomsSansCorrespondance'] = isset($tri['sansCorres']) ? $tri['sansCorres'] : false; |
$this->infosPourTpl['noms'] = isset($tri['retenus']) ? $tri['retenus'] : false; |
$this->infosPourTpl['synonymes'] = isset($tri['synonymes'] ) ? $tri['synonymes'] : false; |
} |
/** |
* division ordonnée par |
* 1 - noms retenus qui commencent par la requete |
* 2 - requete contenue dans un synonyme dont le nom retenu ne contient pas la requete |
* 3 - requete contenue dans un hybride retenu |
* 4 - requete contenue dans un nom retenu mais pas au début |
* 5 - requete contenue dans un nom sans correspondance |
* |
*/ |
private function diviserResultats() { |
$tri = array(); |
$sansCorres = array(); |
$synonymes = array(); |
$retenus = array(); |
foreach ($this->noms as $cle => $valeurs) { |
if ($valeurs['nom_retenu.libelle'] == null) {//sans correspondances |
$sansCorres[$cle] = $valeurs['nom_sci_complet']; |
} elseif ($valeurs['retenu'] == 'true') { // retenus |
if (preg_match('/ x |^x /',$valeurs['nom_sci'] ) ) { |
//hybrides |
$retenus[2][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']); |
} elseif (strripos($valeurs['nom_sci_complet'], $this->parametres->masqueRecherche) === 0) {//preg_match('/^'.strtolower($this->parametres->masqueRecherche).' |^'.strtolower($this->parametres->masqueRecherche).'$/', strtolower($valeurs['nom_sci']) ) ) { |
//commence par |
$retenus[0][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']); |
} else { |
//contient |
$retenus[3][$cle] = $this->retournerInfosNomRetenu($cle,$valeurs['nom_sci_complet'], $valeurs['rang.libelle']); |
} |
} else {//synonymes |
$idNomRetenu = $valeurs['nom_retenu.id']; |
if (in_array($valeurs['nom_retenu.id'], array_keys($this->noms)) == false) { |
//synonymes dont le nom retenu n'est pas un résultat de recherche |
$retenus[1][$idNomRetenu] = $this->retournerInfosNomRetenu($idNomRetenu,$valeurs['nom_retenu.libelle'], $valeurs['rang.libelle']); |
$this->infosPourTpl['taxons'][$idNomRetenu] = $valeurs['num_taxonomique']; //num taxon pour images coste |
} |
$synonymes[$idNomRetenu][] = $this->retournerInfosSynonyme($cle, $valeurs); |
} |
} |
ksort($retenus); |
$tri['retenus'] = $retenus; |
$tri['synonymes'] = $synonymes; |
$tri['sansCorres'] = $sansCorres; |
return $tri; |
} |
private function retournerInfosNomRetenu($cle, $nom_sci, $rang) { |
$infos = array(); |
$infos['nomSciRetenu'] = $nom_sci; |
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, strtolower($this->parametres->masqueRecherche), $nom_sci); |
$infos['rang'] = $rang; |
return $infos; |
} |
private function retournerInfosSynonyme($cle, $valeurs) { |
$infos = array(); |
$infos['nn'] = $cle; |
$infos['nomSci'] = $valeurs['nom_sci_complet']; |
$infos['urlFiche'] = $this->urls->obtenirUrlFiche($cle, $this->parametres->typeNom, $this->parametres->masqueRecherche, $valeurs['nom_retenu.libelle']); |
return $infos; |
} |
public function trier() { |
$nomsRetenus = array(); |
foreach ($this->infosPourTpl['noms'] as $categorie => $valeurs ) { //classement alpha par groupes |
$nomsRetenus += $this->classerAlphabetiquement('nomSciRetenu', $valeurs); |
} |
$this->infosPourTpl['noms'] = $nomsRetenus; |
$this->infosPourTpl['nomsSansCorrespondance'] = |
$this->classerAlphabetiquement('nomSciRetenu', $this->infosPourTpl['nomsSansCorrespondance'] ); |
} |
private function ajouterAuxNomsScoreSimilariteAvec($masque) { |
$nom_demande_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($masque)); |
foreach ($this->infosPourTpl['noms'] as $id => $nom) { |
$nom_flou_ss = strtolower($this->manipulateurDeChaine->supprimerAccents($nom['nomSciRetenu'])); |
$stat = array(); |
// Prime pour la ressemblance globale : |
$score = 500 - levenshtein($nom_flou_ss, $nom_demande_ss); |
// On affine |
$score = $score + (similar_text($nom_demande_ss, $nom_flou_ss) * 3); |
$nom['score'] = $score; |
$this->infosPourTpl['noms'][$id] = $nom; |
} |
} |
private function classerAlphabetiquement($champs, $valeurs) { |
$this->trieur->setTableau($valeurs); |
$this->trieur->setChampsEtOrdres(array($champs => 'nat')); |
return $this->trieur->trier(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $idNom => $nom) { |
$this->infosPourTpl['noms'][$idNom]['nomSciRetenuSurligne'] = $this->surlignerMotsMasqueRecherche($nom['nomSciRetenu']); |
if (isset($this->infosPourTpl['synonymes'][$idNom])) { |
foreach ($this->infosPourTpl['synonymes'][$idNom] as $idSyn => $synonyme) { |
$this->infosPourTpl['synonymes'][$idNom][$idSyn]['nomSci'] = $this->surlignerMotsMasqueRecherche($synonyme['nomSci']); |
} |
} |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
Property changes: |
Added: svnkit:entry:sha1-checksum |
+b308b575b63824443e3ba51a065e27a97843a2d9 |
\ No newline at end of property |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/RetenuFormateur.php |
---|
New file |
0,0 → 1,88 |
<?php |
class RetenuFormateur implements Formateur { |
const TPL_VUE = 'liste_noms'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $fusioneur = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, |
Trieur $trieur = null, AppUrls $urls = null, TableauManipulateur $tableau = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
$this->fusioneur = (is_null($tableau)) ? new TableauManipulateur() : $tableau; |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
public function formater() { |
foreach ($this->noms as $id => $nom) { |
$infosDuNom = array(); |
$infosDuNom['nomSci'] = $nom['nom_sci_complet']; |
$infosDuNom['retenu'] = $nom['retenu']; |
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : ''; |
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche); |
$this->infosPourTpl['noms'][$id] = $infosDuNom; |
} |
} |
public function trier() { |
$nomsRetenus = array(); |
$nomsSynonymes = array(); |
foreach ($this->infosPourTpl['noms'] as $id => $nom) { |
if ($nom['retenu'] == 'true') { |
$nomsRetenus[$id] = $nom; |
} else { |
$nomsSynonymes[$id] = $nom; |
} |
} |
$this->trieur->setTableau($nomsRetenus); |
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC)); |
$nomsRetenus = $this->trieur->trier(); |
$this->trieur->setTableau($nomsSynonymes); |
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC)); |
$nomsSynonymes = $this->trieur->trier(); |
$this->fusioneur->setTableau($nomsRetenus); |
$this->fusioneur->etendreAvec($nomsSynonymes); |
$this->infosPourTpl['noms'] = $this->fusioneur->getTableau(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $id => $nom) { |
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']); |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/DecompoFormateur.php |
---|
New file |
0,0 → 1,72 |
<?php |
class DecompoFormateur implements Formateur { |
const TPL_VUE = 'decomposition'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
public function formater() { |
$this->infosPourTpl['masqueRecherche'] = rawurlencode($this->parametres->masqueRecherche); |
$this->infosPourTpl['baseUrlIco'] = $this->urls->obtenirUrlBaseDossier(); |
foreach ($this->noms as $id => $nom) { |
$infosDuNom = array(); |
$infosDuNom['nomSci'] = $nom['nom_sci']; |
$infosDuNom['retenu'] = $nom['retenu']; |
$infosDuNom['auteur'] = is_null($nom['auteur']) ? '' : $nom['auteur']; |
$infosDuNom['annee'] = is_null($nom['annee']) ? '' : $nom['annee']; |
$infosDuNom['biblio'] = is_null($nom['biblio_origine']) ? '' : $nom['biblio_origine']; |
$infosDuNom['addendum'] = is_null($nom['nom_addendum']) ? '' : $nom['nom_addendum']; |
$infosDuNom['nn'] = $id; |
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : ''; |
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche); |
$this->infosPourTpl['noms'][$id] = $infosDuNom; |
} |
} |
public function trier() { |
$this->trieur->setTableau($this->infosPourTpl['noms']); |
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC)); |
$this->infosPourTpl['noms'] = $this->trieur->trier(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $id => $nom) { |
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']); |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/formateurs/nom_scientifique/AlphabFormateur.php |
---|
New file |
0,0 → 1,65 |
<?php |
class AlphabFormateur implements Formateur { |
const TPL_VUE = 'liste_noms'; |
private $parametres = null; |
private $surligneur = null; |
private $trieur = null; |
private $urls = null; |
private $motsASurligner = array(); |
private $noms = array(); |
private $infosPourTpl = array(); |
public function __construct(ParametresResultats $parametres, Array $resultats, Surligneur $surligneur = null, Trieur $trieur = null, AppUrls $urls = null) { |
$this->parametres = $parametres; |
$this->noms = $resultats['resultat']; |
$this->surligneur = (is_null($surligneur)) ? new Surligneur() : $surligneur; |
$this->trieur = (is_null($trieur)) ? new Trieur() : $trieur; |
$this->urls = (is_null($urls)) ? new AppUrls() : $urls; |
} |
public function getTplInfos() { |
return $this->infosPourTpl; |
} |
public function getTplNom() { |
return self::TPL_VUE; |
} |
public function formater() { |
foreach ($this->noms as $id => $nom) { |
$infosDuNom = array(); |
$infosDuNom['nomSci'] = $nom['nom_sci_complet']; |
$infosDuNom['retenu'] = $nom['retenu']; |
$nom_retenu = $nom['retenu'] == 'true' ? $nom['nom_sci'] : ''; |
$infosDuNom['urlFiche'] = $this->urls->obtenirUrlFiche($id, $this->parametres->typeNom, $this->parametres->masqueRecherche); |
$this->infosPourTpl['noms'][$id] = $infosDuNom; |
} |
} |
public function trier() { |
$this->trieur->setTableau($this->infosPourTpl['noms']); |
$this->trieur->setChampsEtOrdres(array('nomSci' => SORT_ASC)); |
$this->infosPourTpl['noms'] = $this->trieur->trier(); |
} |
public function surligner() { |
$this->definirMotsASurligner(); |
foreach ($this->infosPourTpl['noms'] as $id => $nom) { |
$this->infosPourTpl['noms'][$id]['nomSci'] = $this->surlignerMotsMasqueRecherche($nom['nomSci']); |
} |
} |
private function definirMotsASurligner() { |
$this->motsASurligner = explode(' ', $this->parametres->masqueRecherche); |
} |
private function surlignerMotsMasqueRecherche($nom) { |
$this->surligneur->setTexte($nom); |
$nom = $this->surligneur->surlignerMots($this->motsASurligner); |
return $nom; |
} |
} |
?> |
/branches/v5.10-vilmorin/modules/resultat/Resultat.php |
---|
New file |
0,0 → 1,264 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* Classe mère du module Liste. |
* |
* @category PHP 5.2 |
* @package eflore-consultation |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
* @author Delphine CAUQUIL <delphine@tela-botanica.org> |
* @copyright 2011 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 Resultat extends aControleur { |
private $parametres = null; |
private $resultats = null; |
private $donneesTpl = array(); |
private $i18n = array(); |
private $parametresAvancesGeneriques = array('gen','fam','nn','nt','sp','ssp','type','sto','sti','stc'); |
public function initialiser() { |
spl_autoload_register(array($this, 'chargerClassesResultat')); |
$this->parametres = new ParametresResultats(); |
$this->capturerParametres(); |
$this->capturerParametresAvances(); |
$this->parametres->referentielCourant = Registre::get('parametres.referentiel'); |
$this->parametres->projetImg = Config::get($this->parametres->referentielCourant.'.baseImages'); |
$this->resultats = Registre::get('resultats'); |
$this->i18n = I18n::get('Recherche-form-avancee'); |
} |
private function chargerClassesResultat($classe) { |
$base = dirname(__FILE__).DS; |
$cheminFormateurs = $base.'formateurs'.DS; |
$cheminFormateursNs = $cheminFormateurs.'nom_scientifique'.DS; |
$cheminFormateursNv = $cheminFormateurs.'nom_vernaculaire'.DS; |
$dossiers = array($base, $cheminFormateurs, $cheminFormateursNs, $cheminFormateursNv); |
foreach ($dossiers as $chemin) { |
$fichierATester = $chemin.$classe.'.php'; |
if (file_exists($fichierATester)) { |
include_once $fichierATester; |
return null; |
} |
} |
} |
private function capturerParametres() { |
$this->parametres->masqueRecherche = ""; |
if (isset($_GET['resultat'])) { |
$this->parametres->typeResultat = $_GET['resultat']; |
} |
if (isset($_GET['nom'])) { |
$this->parametres->masqueRecherche = trim($_GET['nom']); |
} |
//recherche avancee type |
if (isset($_GET['fam'])) { |
$this->parametres->masqueRecherche .= trim($_GET['fam']); |
} |
if (isset($_GET['gen'])) { |
$this->parametres->masqueRecherche .= trim($_GET['gen']); |
} |
if (isset($_GET['sp'])) { |
$this->parametres->masqueRecherche .= trim($_GET['sp']); |
} |
if (isset($_GET['ssp'])) { |
$this->parametres->masqueRecherche .= trim($_GET['ssp']); |
} |
if (isset($_GET['and'])) { |
$this->parametres->masqueRecherche .= trim($_GET['and']); |
} |
if (isset($_GET['anf'])) { |
$this->parametres->masqueRecherche .= trim($_GET['anf']); |
} |
if (isset($_GET['au'])) { |
$this->parametres->masqueRecherche .= trim($_GET['au']); |
} |
if (isset($_GET['bib'])) { |
$this->parametres->masqueRecherche .= trim($_GET['bib']); |
} |
// Si spécifié, seuls les résultats du niveau spécifié sont affichés. |
// Passer "*" pour annuler le filtre par rang (le paramètre est mis à "null"). |
// Par défaut, seules les espèces sont affichées (paramètre par défaut). |
if (isset($_GET['rang'])) { |
$this->parametres->rang = ($_GET['rang'] == '*' ? null : $_GET['rang']); |
} |
if (isset($_GET['type_nom'])) { |
$this->parametres->typeNom = $_GET['type_nom']; |
} |
if (isset($_GET['niveau'])) { |
Registre::set('parametres.niveau', $_GET['niveau']); |
} |
} |
private function capturerParametresAvances() { |
$this->capturerParametresAvancesGeneriques(); |
$this->capturerParametresAvancesDependantsLangage(); |
$this->capturerParametresAvancesPresenceSpecifiques(); |
$this->capturerParametresAvancesRang(); |
} |
private function capturerParametresAvancesRang() { |
// rang à afficher |
$this->param['rang'] = $this->parametres->rang; |
if ($this->param['rang'] === null) { |
$this->param['rang'] = '*'; |
} |
} |
private function capturerParametresAvancesGeneriques() { |
foreach($this->parametresAvancesGeneriques as $param) { |
if (isset($_GET[$param]) && $_GET[$param] != '') { |
$this->param[$param] = urldecode($_GET[$param]); |
} |
} |
} |
private function capturerParametresAvancesDependantsLangage() { |
if (isset($_GET['au']) && $_GET['au'] != '' |
&& $_GET['au'] != urlencode($this->i18n['valeur-form-auteur'])) { |
$this->param['au'] = urldecode($_GET['au']); |
} |
if (isset($_GET['bib']) && $_GET['bib'] != '' |
&& $_GET['bib'] != urlencode($this->i18n['valeur-form-bib'])) { |
$this->param['bib'] = urldecode($_GET['bib']); |
} |
if (isset($_GET['and']) && $_GET['and'] != '' |
&& $_GET['and'] != urlencode($this->i18n['valeur-form-date'])) { |
$this->param['and'] = urldecode($_GET['and']); |
} |
if (isset($_GET['anf']) && $_GET['anf'] != '' |
&& $_GET['anf'] != urlencode($this->i18n['valeur-form-date'])) { |
$this->param['anf'] = urldecode($_GET['anf']); |
} |
} |
private function capturerParametresAvancesPresenceSpecifiques() { |
$champs_presence = $this->obtenirChampsPresence(); |
foreach($champs_presence as $champ) { |
$param = $champ['param']; |
if (isset($_GET[$param]) && $_GET[$param] != '') { |
$this->param[$param] = urldecode($_GET[$param]); |
} |
} |
} |
private function obtenirChampsPresence() { |
$tableau_champs_presence = array(); |
$referentiel = Registre::get('parametres.referentiel'); |
$champs_presence = Config::get($referentiel.'.champsPresence'); |
$champs_presence_spl = explode('|', $champs_presence); |
foreach($champs_presence_spl as $champ) { |
$label_param_champ = explode(':', $champ); |
if(count($label_param_champ) >= 2) { |
$tableau_champs_presence[] = array('param' => $label_param_champ[1], |
'label' => $label_param_champ[0]); |
} |
} |
return $tableau_champs_presence; |
} |
public function executerActionParDefaut() { |
$this->executerResultat(); |
} |
public function executerResultat() { |
$this->chargerOnglets(); |
$this->chargerNbreDeTaxons(); |
$this->chargerNomsFormates(); |
$this->setSortie(self::RENDU_CORPS, $this->getVue('resultat', $this->donneesTpl)); |
} |
private function chargerOnglets() { |
$donnees = array(); |
$donnees['typeResultat'] = $this->parametres->typeResultat; |
$donnees['typeNom'] = $this->parametres->typeNom; |
$donnees['ongletsNs'] = array('determination', 'retenu', 'decompo'); |
$donnees['ongletsNv'] = array('determination', 'alphab'); |
if (@$_GET['action'] == 'rechercheAvancee') { |
$donnees['urls']['alphab'] = $this->urls->obtenirUrlResultatAvanceOnglets('alphab', $this->param); |
$donnees['urls']['retenu'] = $this->urls->obtenirUrlResultatAvanceOnglets('retenu', $this->param); |
$donnees['urls']['determination'] = $this->urls->obtenirUrlResultatAvanceOnglets('determination',$this->param); |
$donnees['urls']['decompo'] = $this->urls->obtenirUrlResultatAvanceOnglets('decompo',$this->param); |
} else { |
$donnees['urls']['alphab'] = $this->urls->obtenirUrlResultat('alphab', $this->param); |
$donnees['urls']['retenu'] = $this->urls->obtenirUrlResultat('retenu', $this->param); |
$donnees['urls']['determination'] = $this->urls->obtenirUrlResultat('determination', $this->param); |
$donnees['urls']['decompo'] = $this->urls->obtenirUrlResultat('decompo', $this->param); |
} |
// Inversion du critère de filtrage de rang : espèces seulement VS tout (pas d'autre choix pour l'instant) |
//echo "PARAMS: <pre>" . print_r($this->param, true) . "</pre><br/>"; |
$paramsAvecRangInverse = $this->param; |
if (array_key_exists('rang', $paramsAvecRangInverse)) { |
if ($paramsAvecRangInverse['rang'] == '*') { |
$paramsAvecRangInverse['rang'] = 290; |
} else { |
unset ($paramsAvecRangInverse['rang']); |
} |
} |
//echo "PARAMS INV: <pre>" . print_r($paramsAvecRangInverse, true) . "</pre><br/>"; |
$this->donneesTpl['urlInverse'] = $this->urls->obtenirUrlResultat($donnees['typeResultat'], $paramsAvecRangInverse); |
//echo "URL INV: " . $this->donneesTpl['urlInverse'] . "<br/>"; |
$donnees['i18n']['nv'] = I18n::get('Resultat-onglets-nv'); |
$donnees['i18n']['ns'] = I18n::get('Resultat-onglets-ns'); |
$this->donneesTpl['ongletsHtml'] = $this->getVue('onglets', $donnees); |
} |
private function chargerNbreDeTaxons() { |
$this->donneesTpl['nbreTaxons'] = $this->resultats['entete']['total']; |
} |
// Filtre selon le rang à afficher (espèce, genre... tout) |
// et renvoie le nombre de taxons réellement affichés |
private function filtrer() { |
$nbTaxAff = 0; |
if ($this->parametres->rang != null) { |
foreach ($this->resultats['resultat'] as $c => $v) { |
$numRang = substr($v['rang.code'], strrpos($v['rang.code'], ':') +1); |
if ($numRang != $this->parametres->rang) { |
unset($this->resultats['resultat'][$c]); |
} else { |
$nbTaxAff++; |
} |
} |
} else { |
$nbTaxAff = $this->resultats['entete']['total']; |
} |
return $nbTaxAff; |
} |
private function chargerNomsFormates() { |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt mise en forme des noms"); |
// Filtre selon $this->parametres['rang'] pour afficher seulement un rang, ou bien tous |
// Valable uniquement pour la recherche par nom scientifique |
//echo "<pre>".print_r($this->parametres, true)."</pre>"; |
if ($this->parametres->typeNom == 'nom_scientifique') { |
$this->donneesTpl['nombreTaxonsAffiches'] = $this->filtrer(); |
$this->donneesTpl['rang'] = $this->parametres->rang; |
} else { |
$this->donneesTpl['nombreTaxonsAffiches'] = $this->donneesTpl['nbreTaxons']; |
} |
$this->donneesTpl['typeNom'] = $this->parametres->typeNom; |
$formateur = ResultatFormateurFabrique::creer($this->parametres, $this->resultats); |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt formatage des noms"); |
$formateur->formater(); |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt triage des noms"); |
$formateur->trier(); |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt surlignage des noms"); |
$formateur->surligner(); |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Avt création de la vue"); |
$this->donneesTpl['nomsHtml'] = $this->getVue($formateur->getTplNom(), $formateur->getTplInfos()); |
if (Config::get('benchmark_chrono')) Chronometre::chrono("Après mise en forme des noms"); |
} |
} |
?> |