/trunk/services/bibliotheque/VersionVerificateur.php |
---|
New file |
0,0 → 1,44 |
<?php |
class VersionVerificateur { |
private $ressources = null; |
private $parametres = null; |
private $versions = null; |
public function __construct(Ressources $ressources, Parametres $parametres, Versions $versions) { |
$this->ressources = $ressources; |
$this->parametres = $parametres; |
$this->versions = $versions; |
} |
public function verifier() { |
$this->verifierDispoMultiProjetPourService(); |
$this->verifierExistance(); |
} |
private function verifierDispoMultiProjetPourService() { |
$servicesMultiProjet = array('NomDetails'); |
$classeService = $this->ressources->getServiceClasse(); |
$versionDemandee = $this->parametres->get('version.projet'); |
if ($versionDemandee == '*' && in_array($classeService, $servicesMultiProjet) === false) { |
$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id"; |
$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE; |
throw new Exception($message, $code); |
} |
} |
private function verifierExistance() { |
$versionDemandee = $this->parametres->get('version.projet'); |
$versionTrouvee = $this->versions->getVersions(); |
if (is_numeric($versionDemandee)) { |
if (count($versionTrouvee) == 0) { |
$projet = $this->ressources->getProjetNom(); |
$message = "La version '$versionDemandee' n'est pas disponible pour le projet '$projet' !"; |
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; |
throw new Exception($message, $code); |
} |
} |
} |
} |
?> |
/trunk/services/bibliotheque/generique/NomsListeGenerique.php |
---|
22,27 → 22,35 |
} |
public function consulter() { |
$this->noms = $this->rechercher(); |
$this->nbreNomsTotal = $this->nomDao->recupererNombreNomsTotal(); |
$this->trierNoms(); |
$retour = $this->construireTableauRetour(); |
$this->rechercher(); |
if ($this->avoirResultats()) { |
$this->trierNoms(); |
$retour = $this->construireTableauRetour(); |
} else { |
$message = "Aucun résultat ne correspond a votre requête !"; |
$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; |
throw new Exception($message, $code); |
} |
return $retour; |
} |
private function avoirResultats() { |
$resultat = ($this->nbreNomsTotal == 0) ? false : true; |
return $resultat; |
} |
private function rechercher() { |
$resultats = array(); |
$recherche = $this->parametres->get('recherche'); |
if ($recherche == 'stricte') { |
$resultats = $this->nomDao->rechercherStricte(); |
} else if ($recherche == 'etendue') { |
$resultats = $this->nomDao->rechercherEtendue(); |
} else if ($recherche == 'floue') { |
if ($recherche == 'floue') { |
$resultats = $this->nomDao->rechercherFloue(); |
} else { |
$resultats = $this->nomDao->rechercher(); |
} |
return $resultats; |
$this->noms = $resultats; |
$this->nbreNomsTotal = $this->nomDao->recupererNombreNomsTotal(); |
} |
private function trierNoms() { |
109,39 → 117,30 |
} |
private function formaterEnteteMasque() { |
$masquesStrictes = array('nn', 'rg'); |
$paramsMasque = array( |
'' => 'nom_sci', |
'nn' => 'num_nom', |
'rg' => 'rang', |
'sg' => 'nom_supra_generique', |
'gen' => 'genre', |
'sp' => 'epithete_sp', |
'ssp' => 'epithete_infra_sp', |
'au' => 'auteur', |
'an' => 'annee'); |
$etendre = ($this->parametres->get('recherche') == 'etendue') ? true : false; |
$masqueComplet = array(); |
if ($this->parametres->exister('masque')) { |
$masque = ''; |
$masque .= 'nom_sci='.$this->parametres->get('masque'); |
if ($this->parametres->get('recherche') == 'etendue') { |
$masque .= '%'; |
foreach ($paramsMasque as $masqueType => $champ) { |
$masqueParam = 'masque'.($masqueType != '' ? '.'.$masqueType : $masqueType); |
if ($this->parametres->exister($masqueParam)) { |
$masqueValeur = $this->parametres->get($masqueParam); |
$masque = "$champ=$masqueValeur"; |
$masque .= ($etendre && in_array($masqueType, $masquesStrictes) === false) ? '%' : ''; |
$masqueComplet[] = $masque; |
} |
$masqueComplet[] = $masque; |
} |
if ($this->parametres->exister('masque.sg')) { |
$masque = ''; |
$masque .= 'nom_supra_generique='.$this->parametres->get('masque.sg'); |
if ($this->parametres->get('recherche') == 'etendue') { |
$masque .= '%'; |
} |
$masqueComplet[] = $masque; |
} |
if ($this->parametres->exister('masque.gen')) { |
$masque = ''; |
$masque .= 'genre='.$this->parametres->get('masque.gen'); |
if ($this->parametres->get('recherche') == 'etendue') { |
$masque .= '%'; |
} |
$masqueComplet[] = $masque; |
} |
if ($this->parametres->exister('masque.sp')) { |
$masque = ''; |
$masque .= 'epithete_sp='.$this->parametres->get('masque.sp'); |
if ($this->parametres->get('recherche') == 'etendue') { |
$masque .= '%'; |
} |
$masqueComplet[] = $masque; |
} |
return implode('&', $masqueComplet); |
} |
/trunk/services/bibliotheque/Conteneur.php |
---|
67,6 → 67,16 |
return $this->partages['RessourcesVerificateur']; |
} |
public function getVersionVerificateur() { |
if (!isset($this->partages['VersionVerificateur'])){ |
$ressources = $this->getRessourcesUrl(); |
$parametres = $this->getParametresUrl(); |
$versions = $this->getVersions(); |
$this->partages['VersionVerificateur'] = new VersionVerificateur($ressources, $parametres, $versions); |
} |
return $this->partages['VersionVerificateur']; |
} |
public function getBdd() { |
if (!isset($this->partages['Bdd'])){ |
$this->partages['Bdd'] = new Bdd(); |
95,6 → 105,7 |
$projet->initialiser(); |
$projet->setParamsVerif($this->getParametresUrlVerificateur()); |
$projet->setRessourcesVerif($this->getRessourcesUrlVerificateur()); |
$projet->setVersionVerif($this->getVersionVerificateur()); |
$projet->setServiceGenerique($this->getServiceGenerique()); |
$this->partages['Projet'] = $projet; |
} |
/trunk/services/bibliotheque/Projet.php |
---|
3,6 → 3,7 |
private $ressources = null; |
private $paramsVerif = null; |
private $ressourcesVerif = null; |
private $versionVerif = null; |
private $cheminBase = ''; |
private $cheminConfig = ''; |
private $cheminBiblio = ''; |
28,6 → 29,10 |
$this->paramsVerif = $paramsVerificateur; |
} |
public function setVersionVerif($versionVerificateur) { |
$this->versionVerif = $versionVerificateur; |
} |
public function setRessourcesVerif($ressourcesVerificateur) { |
$this->ressourcesVerif = $ressourcesVerificateur; |
} |
85,6 → 90,7 |
public function verifier() { |
$this->paramsVerif->verifier(); |
$this->ressourcesVerif->verifier(); |
$this->versionVerif->verifier(); |
$this->verifierExistanceServiceClasse(); |
} |
/trunk/services/bibliotheque/nom/NomDAO.php |
---|
10,13 → 10,6 |
$this->versions = $versions; |
} |
private function getTable() { |
$versions = $this->versions->getVersions(); |
$derniereVersion = end($versions); |
$projetNom = strtolower($this->ressources->getProjetNom()); |
return $projetNom.'_v'.$derniereVersion; |
} |
public function rechercherInfosNom() { |
$table = $this->getTable(); |
$detailsId = $this->ressources->getDetailsId(); |
33,29 → 26,18 |
return $nom; |
} |
public function rechercherStricte() { |
public function rechercher() { |
$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"; |
} |
$conditions = $this->getConditions(); |
$where = $this->getWhere($conditions); |
$navigation = $this->getNavigation(); |
$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) ". |
$this->getWhere($conditions). |
implode(' AND ', $conditions). |
$where.$conditions. |
'ORDER BY ns.nom_sci ASC '. |
"LIMIT $navigation "; |
64,36 → 46,6 |
return $resultats; |
} |
public 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"; |
} |
$navigation = $this->getNavigation(); |
$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) ". |
$this->getWhere($conditions). |
implode(' AND ', $conditions). |
'ORDER BY ns.nom_sci ASC '. |
"LIMIT $navigation "; |
$resultats = $this->bdd->recupererTous($requete); |
return $resultats; |
} |
public function rechercherFloue() { |
$table = $this->getTable(); |
$masque = $this->parametres->getMasquePourBdd(); |
114,23 → 66,65 |
return $resultats; |
} |
private function getNavigation() { |
$debut = (int) $this->parametres->get('navigation.depart'); |
$nbre = $this->parametres->get('navigation.limite'); |
$navigation = "$debut,$nbre"; |
return $navigation; |
private function getTable() { |
$versions = $this->versions->getVersions(); |
$derniereVersion = end($versions); |
$projetNom = strtolower($this->ressources->getProjetNom()); |
return $projetNom.'_v'.$derniereVersion; |
} |
private function getWhere($conditions = array()) { |
private function getConditions() { |
$masquesStrictes = array('nn', 'rg'); |
$paramsMasque = array( |
'' => 'nom_sci', |
'nn' => 'num_nom', |
'rg' => 'rang', |
'sg' => 'nom_supra_generique', |
'gen' => 'genre', |
'sp' => 'epithete_sp', |
'ssp' => 'epithete_infra_sp', |
'au' => 'auteur', |
'an' => 'annee'); |
$operateurParDefaut = $this->getOperateurCondition(); |
$conditionsSql = array(); |
foreach ($paramsMasque as $typeMasque => $champ) { |
$operateur = in_array($typeMasque, $masquesStrictes) ? '=' : $operateurParDefaut; |
if ($valeurMasque = $this->parametres->getMasquePourBdd($typeMasque)) { |
$conditionsSql[] = "ns.$champ $operateur $valeurMasque"; |
} |
} |
return implode(' AND ', $conditionsSql); |
} |
private function getOperateurCondition() { |
$operateur = ''; |
$recherche = $this->parametres->get('recherche'); |
if ($recherche == 'stricte') { |
$operateur = '='; |
} else if ($recherche == 'etendue') { |
$operateur = 'LIKE'; |
} |
return $operateur; |
} |
private function getWhere($conditions = '') { |
$where = ''; |
if ($this->ressources->getServiceNom() == 'taxons') { |
$where = 'WHERE ns.num_nom = ns.num_nom_retenu '; |
} else if (count($conditions) > 0) { |
} else if ($conditions != '') { |
$where = 'WHERE '; |
} |
return $where; |
} |
private function getNavigation() { |
$debut = (int) $this->parametres->get('navigation.depart'); |
$nbre = $this->parametres->get('navigation.limite'); |
$navigation = "$debut,$nbre"; |
return $navigation; |
} |
public function recupererNombreNomsTotal() { |
$requete = 'SELECT FOUND_ROWS() AS nbre'; |
$nombre = $this->bdd->recuperer($requete); |
/trunk/services/bibliotheque/Versions.php |
---|
54,8 → 54,10 |
} |
private function remplacerPointParUnderscore($versions) { |
foreach ($versions as $cle => $valeur) { |
$versions[$cle] = str_replace('.', '_', $valeur); |
if (count($versions) > 0) { |
foreach ($versions as $cle => $valeur) { |
$versions[$cle] = str_replace('.', '_', $valeur); |
} |
} |
return $versions; |
} |