* @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 '
'.print_r($donnees['masque'],true).'
';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:
" . print_r($parametres, true) . "

"; // Gestion du nombre de résultats $donnees_total = $rechercheDao->chercherPublicationsNbre($parametres); // Gestion du fragmenteur $options = array( 'url' => $this->url, 'url_var' => Config::get('parametre_url_page'), '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', 'ouvrage', 'libre'); foreach($masques_possibles as $masque_possible) { if(!isset($masque[$masque_possible])) { $masque[$masque_possible] = ''; } } return $masque; } }