Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 245 → Rev 246

/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;
}
}