3,43 → 3,20 |
|
private $parametres = null; |
private $ressources = null; |
private $bdd = null; |
private $projet = null; |
private $versions = null; |
private $nomDao = null; |
private $nomFormateur = null; |
|
private $listeUrl = null; |
private $detailsHrefTpl = null; |
private $ontologieHrefTpl = null; |
private $champsProjet = array(); |
|
private $nbreTotalNoms = 0; |
private $noms = array(); |
|
public function __construct(Ressources $ressources, Parametres $parametres, Bdd $bdd) { |
public function __construct(Ressources $ressources, Parametres $parametres, NomDAO $nomDao, NomFormateur $nomFormateur) { |
$this->ressources = $ressources; |
$this->parametres = $parametres; |
$this->bdd = $bdd; |
$this->nomDao = $nomDao; |
$this->nomFormateur = $nomFormateur; |
} |
|
public function setProjet($projet) { |
$this->projet = $projet; |
} |
|
public function setVersions($versions) { |
$this->versions = $versions; |
} |
|
public function setChampsProjet($champsProjet) { |
$this->champsProjet = $champsProjet; |
} |
|
public function setDetailsHrefTpl($tpl) { |
$this->detailsHrefTpl = $tpl; |
} |
|
public function setOntologieHrefTpl($tpl) { |
$this->ontologieHrefTpl = $tpl; |
} |
|
public function setListeUrl($url) { |
$this->listeUrl = $url; |
} |
46,115 → 23,27 |
|
public function consulter() { |
$this->noms = $this->rechercher(); |
$this->nbreNomsTotal = $this->recupererNombreNomsTotal(); |
$this->nbreNomsTotal = $this->nomDao->recupererNombreNomsTotal(); |
$this->trierNoms(); |
$retour = $this->construireTableauRetour(); |
return $retour; |
} |
|
private function getTable() { |
$versions = $this->versions->getVersions(); |
return $this->projet.'_v'.end($versions); |
} |
|
private function rechercher() { |
$resultats = array(); |
$recherche = $this->parametres->get('recherche'); |
|
if ($recherche == 'stricte') { |
$resultats = $this->rechercherStricte(); |
$resultats = $this->nomDao->rechercherStricte(); |
} else if ($recherche == 'etendue') { |
$resultats = $this->rechercherEtendue(); |
$resultats = $this->nomDao->rechercherEtendue(); |
} else if ($recherche == 'floue') { |
$resultats = $this->rechercherFloue(); |
$resultats = $this->nomDao->rechercherFloue(); |
} |
|
return $resultats; |
} |
|
private function rechercherStricte() { |
$table = $this->getTable(); |
$conditions = array(); |
if ($masque = $this->parametres->getMasquePourBdd()) { |
$conditions[] = "ns.nom_sci = $masque"; |
} |
if ($masqueSg = $this->parametres->getMasquePourBdd('sg')) { |
$conditions[] = "ns.nom_supra_generique = $masqueSg"; |
} |
if ($masqueGen = $this->parametres->getMasquePourBdd('gen')) { |
$conditions[] = "ns.genre = $masqueGen"; |
} |
if ($masqueSp = $this->parametres->getMasquePourBdd('sp')) { |
$conditions[] = "ns.epithete_sp = $masqueSp"; |
} |
|
$requete = 'SELECT SQL_CALC_FOUND_ROWS ns.*, '. |
' nr.nom_sci AS nr_nom_sci, nb.nom_sci AS nb_nom_sci '. |
"FROM $table AS ns ". |
" LEFT JOIN $table AS nr ON (ns.num_nom_retenu = nr.num_nom) ". |
" LEFT JOIN $table AS nb ON (ns.basionyme = nb.num_nom) ". |
'WHERE ns.num_nom = ns.num_nom_retenu '. |
implode(' AND ', $conditions). |
'ORDER BY ns.nom_sci ASC '. |
'LIMIT 0,100'; |
$resultats = $this->bdd->recupererTous($requete); |
|
return $resultats; |
} |
|
private function rechercherEtendue() { |
$table = $this->getTable(); |
$conditions = array(); |
if ($masque = $this->parametres->getMasquePourBdd()) { |
$conditions[] = "ns.nom_sci LIKE $masque"; |
} |
if ($masqueSg = $this->parametres->getMasquePourBdd('sg')) { |
$conditions[] = "ns.nom_supra_generique LIKE $masqueSg"; |
} |
if ($masqueGen = $this->parametres->getMasquePourBdd('gen')) { |
$conditions[] = "ns.genre LIKE $masqueGen"; |
} |
if ($masqueSp = $this->parametres->getMasquePourBdd('sp')) { |
$conditions[] = "ns.epithete_sp LIKE $masqueSp"; |
} |
$requete = 'SELECT SQL_CALC_FOUND_ROWS ns.*, '. |
' nr.nom_sci AS nr_nom_sci, nb.nom_sci AS nb_nom_sci '. |
"FROM $table AS ns ". |
" LEFT JOIN $table AS nr ON (ns.num_nom_retenu = nr.num_nom) ". |
" LEFT JOIN $table AS nb ON (ns.basionyme = nb.num_nom) ". |
'WHERE ns.num_nom = ns.num_nom_retenu '. |
implode(' AND ', $conditions). |
'ORDER BY ns.nom_sci ASC '. |
'LIMIT 0,100'; |
|
$resultats = $this->bdd->recupererTous($requete); |
return $resultats; |
} |
|
private function rechercherFloue() { |
$table = $this->getTable(); |
$masque = $this->parametres->getMasquePourBdd(); |
$requete = 'SELECT SQL_CALC_FOUND_ROWS ns.*, '. |
' nr.nom_sci AS nr_nom_sci, nb.nom_sci AS nb_nom_sci '. |
"FROM $table AS ns ". |
" LEFT JOIN $table AS nr ON (ns.num_nom_retenu = nr.num_nom) ". |
" LEFT JOIN $table AS nb ON (ns.basionyme = nb.num_nom) ". |
'WHERE ns.num_nom = ns.num_nom_retenu '. |
($masque ? |
" (SOUNDEX(ns.nom_sci) = SOUNDEX($masque)) ". |
" OR (SOUNDEX(REVERSE(ns.nom_sci)) = SOUNDEX(REVERSE($masque))) " : ''). |
'ORDER BY ns.nom_sci ASC '. |
'LIMIT 0,100'; |
$resultats = $this->bdd->recupererTous($requete); |
return $resultats; |
} |
|
private function recupererNombreNomsTotal() { |
$requete = 'SELECT FOUND_ROWS() AS nbre'; |
$nombre = $this->bdd->recuperer($requete); |
return (int) $nombre['nbre']; |
} |
|
private function trierNoms() { |
$recherche = $this->parametres->get('recherche'); |
if ($recherche == 'floue') { |
197,21 → 86,12 |
|
private function formaterNom($infos) { |
$nomAFormater = new NomDO($infos); |
$formateur = new NomFormateur($nomAFormater); |
$formateur->setBdd($this->bdd); |
$formateur->setChampsProjet($this->champsProjet); |
$formateur->setDetailsHrefTpl($this->detailsHrefTpl); |
$formateur->setOntologieHrefTpl($this->ontologieHrefTpl); |
$formateur->setChampsRetour($this->parametres->getListe('retour.champs')); |
$nom = $formateur->formaterListe(); |
$this->nomFormateur->setNomAFormater($nomAFormater); |
$this->nomFormateur->setChampsRetour($this->parametres->getListe('retour.champs')); |
$nom = $this->nomFormateur->formaterListe(); |
return $nom; |
} |
|
private function formaterHref($nom) { |
$href = sprintf($this->detailsHrefTpl, $nom['num_nom']); |
return $href; |
} |
|
private function construireEntete() { |
$entete = array('masque' => '', 'depart' => 0, 'limite' => 100, 'total' => 0); |
$entete['masque'] = $this->formaterEnteteMasque(); |