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