/trunk/bibliotheque/dao/RechercheDao.php |
---|
44,7 → 44,7 |
} |
// recherche du nombre de publications : nouveau |
public function chercherPersonnesNbre($parametres) { |
public function chercherPublicationsNbre($parametres) { |
$url = $this->construireUrlRecherchePublications('NombrePublications', $parametres, false); |
$json = $this->envoyerRequeteConsultation($url); |
$donnees = json_decode($json, true); |
/trunk/controleurs/RecherchePublications.php |
---|
New file |
0,0 → 1,117 |
<?php |
/** |
* classe Controleur du module RecherchePublications |
* |
* @package Collection |
* @category Php5 |
* @author Satanas et Diabolo <wtf@tela-botanica.org> |
* @copyright 2010 Tela-Botanica |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL |
*/ |
class RecherchePublications extends Recherche { |
protected $masque = null; |
protected static $url_exemple = null; |
/** |
* Charge le moteur de recherche et l'envoie à la vue. |
*/ |
public function chargerMoteurRecherche() { |
$donnees = array(); |
// masque multi-critères |
$donnees['masque'] = $this->obtenirMasqueRecherche(); |
// Gestion des urls |
$donnees['url_form'] = $this->obtenirUrlRecherche(); |
$donnees['url_module'] = 'RecherchePublications'; |
$donnees['url_action'] = 'rechercher'; |
$donnees['url_contexte'] = $this->registre->get('contexte'); |
self::$url_exemple = $this->obtenirUrlRecherche('%s'); |
// remplissage de cases de tableaux vides pour éviter des warnings |
$donnees['masque'] = $this->initialiserMasquesVides($donnees['masque']); |
//echo '<pre>'.print_r($donnees['masque'],true).'</pre>';exit; |
// Gestion du squelette et de la sortie |
$this->setSortie(self::RENDU_TETE, $this->getVue('moteur_publications', $donnees)); |
} |
// recherche des publications |
public function rechercher() { |
$masque = $this->obtenirMasqueRecherche(); |
$masque['cible'] = "publications"; |
$donnees = array(); |
$donnees['masque'] = $masque; |
$rechercheDao = new RechercheDao(); |
// Récupération des paramètres depuis le masque |
$parametres = $masque; |
$this->remplacerAbreviationParId($parametres); |
//echo "PARAM 2: <pre>" . print_r($parametres, true) . "</pre><br/>"; |
// Gestion du nombre de résultats |
$donnees_total = $rechercheDao->chercherPublicationsNbre($parametres); |
// Gestion du fragmenteur |
$options = array( |
'url' => $this->url, |
'donnees_total' => $donnees_total, |
'donnees_par_page' => Config::get('resultat_par_page_defaut'), |
'donnees_par_page_choix' => Config::get('resultat_par_page_choix'), |
); |
$fragmenteur = Composant::fabrique('fragmenteur', $options); |
$donnees['fragmenteur'] = $fragmenteur->executer(); |
list($de, $a) = $fragmenteur->getDeplacementParPageId(); |
$this->url->unsetVariablesRequete(array('recherche', 'page')); |
// Gestion de l'accès aux données |
$rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage()); |
$rechercheDao->setDistinction(1); |
// Récupération des résultats |
$resultats = $rechercheDao->chercherPublications($parametres); |
// Affichage de la liste de résultats |
foreach ($resultats as $resultat) { |
if (!empty($resultat['cpu_id_publication'])) { |
$editeur = $resultat['cpu_ce_truk_editeur']; |
$pdd = strpos($editeur, "##"); |
if ($pdd !== false) { |
$editeur = substr($editeur, $pdd + 2); |
} |
$publication = array( |
'nomcomplet' => $resultat['cpu_fmt_nom_complet'], |
'date' => $resultat['cpu_date_parution'], |
'titre' => $resultat['cpu_titre'], |
'auteur' => $resultat['cpu_fmt_auteur'], |
'editeur' => $editeur, |
'nb_pages' => $resultat['cpu_truk_pages'], |
//'url' => $this->obtenirUrlFichePersonne($resultat['cp_id_personne']) |
); |
$donnees['infos']['publications'][] = $publication; |
} |
} |
// Post-traitement des résultats pour l'affichage |
$this->postraiterDonnees($donnees['infos']); |
// Gestion des squelettes |
$this->chargerMoteurRecherche(); |
$resultat = $this->getVue('resultat', $donnees); |
$this->setSortie(self::RENDU_CORPS, $resultat); |
$this->chargerPiedDePage(); |
} |
protected function initialiserMasquesVides($masque) { |
$masques_possibles = array('titre', 'auteur', 'date', 'revue'); |
foreach($masques_possibles as $masque_possible) { |
if(!isset($masque[$masque_possible])) { |
$masque[$masque_possible] = ''; |
} |
} |
return $masque; |
} |
} |
/trunk/controleurs/Recherche.php |
---|
13,9 → 13,9 |
*/ |
class Recherche extends aControleur { |
//private $chaine_recherche = null; |
private $masque = null; |
private static $url_exemple = null; |
//protected $chaine_recherche = null; |
protected $masque = null; |
protected static $url_exemple = null; |
//+----------------------------------------------------------------------------------------------------------------+ |
// Méthodes |
52,7 → 52,7 |
$this->setSortie(self::RENDU_TETE, $this->getVue('moteur', $donnees)); |
} |
private function obtenirMasqueRecherche() { |
protected function obtenirMasqueRecherche() { |
$masque = array(); |
if (!is_null($this->masque)) { |
$masque = $this->masque; |
96,6 → 96,8 |
//echo "PARAM 2: <pre>" . print_r($parametres, true) . "</pre><br/>"; |
// Gestion du nombre de résultats |
$donnees_total = null; |
if (isset($masque['cible'])) { |
switch ($masque['cible']) { |
case 'collections': |
$donnees_total = $rechercheDao->chercherCollectionsNbre($parametres); |
106,6 → 108,7 |
default: |
// @TODO qu'est-ce qui se passe ? |
} |
} |
// Gestion du fragmenteur |
$options = array( |
124,6 → 127,7 |
$rechercheDao->setDistinction(1); |
// Récupération des résultats |
if (isset($masque['cible'])) { |
switch ($masque['cible']) { |
case 'collections': |
$resultats = $rechercheDao->chercherCollections($parametres); |
133,8 → 137,10 |
break; |
default: |
} |
} |
// Affichage de la liste de résultats |
if (isset($masque['cible'])) { |
switch ($masque['cible']) { |
case 'collections': |
foreach ($resultats as $resultat) { |
177,6 → 183,7 |
default: |
} |
} |
// Post-traitement des résultats pour l'affichage |
$this->postraiterDonnees($donnees['infos']); |
188,7 → 195,7 |
$this->chargerPiedDePage(); |
} |
private function initialiserMasquesVides($masque) { |
protected function initialiserMasquesVides($masque) { |
$masques_possibles = array('lieu-stockage', |
'veg','zg','bot','p','pr','nom-famille','date-vivant','date-deces','adresse'); |
foreach($masques_possibles as $masque_possible) { |
199,7 → 206,7 |
return $masque; |
} |
private function remplacerAbreviationParId(&$parametres) { |
protected function remplacerAbreviationParId(&$parametres) { |
// liste 27 : Liste des relations entre une collection et une personne (id:1030) |
// liste 80 : Liste des types de collection botanique (id:1083) |
$params_a_remplacer = array('veg' => 1043, 'bot' => 1083, 'pr' => 1030); |
/trunk/configurations/config.default.ini |
---|
42,6 → 42,7 |
; Débogage |
; Indique si oui ou non on veut afficher le débogage. |
fw_debogage = true |
fw_debogage_mode = echo |
; Indique si oui ou non on veut lancer le chronométrage |
chronometrage = false |
/trunk/squelettes/resultat.tpl.html |
---|
32,7 → 32,20 |
<?php endif; ?> |
</li> |
<?php endforeach; ?> |
<!-- recherche de publications --> |
<?php elseif ($masque['cible'] == 'publications'): ?> |
<?php foreach ($infos['publications'] as $publication) : ?> |
<li> |
<!-- <a href="<?=$publication['url']?>"> --> |
<?php if($publication['nomcomplet']): ?> |
<?=$publication['nomcomplet']?> |
<?php else: ?> |
<?=$publication['auteur']?> - <?=$publication['date']?> - <?=$publication['titre']?> - <?=$publication['editeur']?> - <?=$publication['nb_pages']?> |
<?php endif; ?> |
<!-- </a> --> |
</li> |
<?php endforeach; ?> |
<?php endif; ?> |
</ul> |
<?php endif; ?> |
</div> |
/trunk/squelettes/moteur_publications.tpl.html |
---|
New file |
0,0 → 1,118 |
<!-- COL - DEBUT MOTEUR RECHERCHE PUBLICATIONS --> |
<script type="text/javascript"> |
// Function pour cacher / afficher les options de recherche |
$(document).ready(function() { |
$("#col-rech-opt-toggle").html("Afficher les options de recherche"); |
$("#col-rech-opt").hide(); |
$("#col-rech-opt-toggle").toggle( |
function() { |
$("#col-rech-opt-toggle").html("Cacher les options de recherche"); |
$("#col-rech-opt").slideDown("fast"); |
}, |
function() { |
$("#col-rech-opt-toggle").html("Afficher les options de recherche"); |
$("#col-rech-opt").slideUp("fast"); |
} |
); |
// Rechargement des options sélectionnées dans les select |
$('#col-form select').each(function() { |
var optionSelectionnee = $(this).attr('data-option-selectionnee'); |
$(this).find('option[value="' + optionSelectionnee + '"]').attr('selected', 'selected'); |
}); |
}); |
</script> |
<div class="coel-consultation"> |
<h2 class="titre-moteur-recherche">Rechercher une publication</h2> |
<form id="pub-form" name="col-form" action="<?=$url_form;?>" method="get"> |
<input name="module" type="hidden" value="<?=$url_module;?>" /> |
<input name="action" type="hidden" value="<?=$url_action;?>" /> |
<?php if (isset($url_contexte)) : ?> |
<input name="contexte" type="hidden" value="<?=$url_contexte;?>" /> |
<? endif; ?> |
<div id="col-rech-masque"> |
<div class="champ-masque" title="Titre"> |
<label class="label-gauche">Titre</label> |
<input name="masque[titre]" type="text" value="<?= $masque['titre'] ?>" /> |
</div> |
<div class="champ-masque" title="Auteur"> |
<label class="label-droite">Auteur</label> |
<input name="masque[auteur]" type="text" value="<?= $masque['auteur'] ?>" /> |
</div> |
<div class="champ-masque" title="Date"> |
<label class="label-gauche">Date</label> |
<input name="masque[date]" type="text" value="<?= $masque['date'] ?>" /> |
</div> |
<!-- <div class="champ-masque"> |
<label class="label-droite">Revue</label> |
<input name="masque[revue]" value="<?= $masque['revue'] ?>" /> |
</div> --> |
<!-- <div class="champ-masque"> |
<label class="label-gauche">Mot-clé</label> |
<input name="masque[mot-cle]" value="<?= $masque['mot-cle'] ?>" /> |
</div> --> |
</div> |
<input id="col-rech-ok" type="submit" value="OK" /> |
</form> |
<br/> |
<a id="col-rech-opt-toggle" href="#col-rech-opt-txt" title="Précisions sur les options de recherche"></a> |
<div id="col-rech-opt"> |
<h2 id="col-rech-opt-titre">Options de recherche</h2> |
<div id="col-rech-opt-txt"> |
<p> |
Par défaut, la recherche est insensible à la casse (majuscule / minuscule) et s'effectue |
en intercalant automatiquement le joker % avant et après la chaine recherchée et entre chaque mot |
de celle-ci. |
</p> |
<p>Pour les opérateurs dont la valeur est un <em>texte libre</em> ou une <em>liste</em>, |
il est possible d'utiliser des jokers. |
Ces "jokers" permettent de modifier la recherche. |
</p> |
<table> |
<thead> |
<tr> |
<th>Joker</th> |
<th>Applicable sur</th> |
<th>Explication</th> |
<!-- <th>Exemples</th> --> |
</tr> |
</thead> |
<tbody> |
<tr> |
<td>""</td> |
<td>Texte libre</td> |
<td>Permet de rechercher sur une expression exacte.</td> |
<!-- <td><a href="<?=Recherche::getUrlExemple('"Archives de l\'herbier Granger"')?>"> |
"Archives de l'herbier Granger"</a></td> --> |
</tr> |
<tr> |
<td>%</td> |
<td>Texte libre</td> |
<td>Remplace n'importe quel nombre de caractères, y compris aucun.</td> |
<!-- <td><a href="<?=Recherche::getUrlExemple('"herbier %Abbé% Carondelet"')?>"> |
"herbier %Abbé% Carondelet"</a></td> --> |
</tr> |
<tr> |
<td>_</td> |
<td>Texte libre</td> |
<td>Remplace exactement un caractère</td> |
<!-- <td><a href="<?=Recherche::getUrlExemple('p:"Jo_l"')?>">p:"Jo_l"</a></td> --> |
</tr> |
<tr> |
<td>,</td> |
<td>Liste</td> |
<td>Permet d'indiquer plusieurs valeurs</td> |
<!-- <td><a href="<?=Recherche::getUrlExemple('veg:br,ph')?>">veg:br,ph</a></td> --> |
</tr> |
</tbody> |
</table> |
</div> |
</div> |
</div> |
<!-- COL - FIN MOTEUR RECHERCHE PUBLICATIONS --> |