New file |
0,0 → 1,105 |
<?php |
// declare(encoding='UTF-8'); |
/** |
* classe Controleur du module Recherche. |
* |
* @package Collection |
* @category Php5 |
* @author Jean-Pascal MILCENT <jpm@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 |
* @version SVN: $$Id: AdminAdministrateur.php 128 2009-09-02 12:20:55Z aurelien $$ |
*/ |
class Recherche extends Controleur { |
|
private $parametres = array(); |
private $url = null; |
|
public function __construct() { |
$registre = Registre::getInstance(); |
$this->parametres = $registre->get('parametres'); |
$this->url = $this->parametres['url']; |
parent::__construct(); |
} |
/** |
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs |
*/ |
public function executerActionParDefaut() { |
return $this->chargerMoteurRecherche(); |
} |
|
/** |
* Charge le moteur de recherche et l'envoie à la vue. |
* @return string la vue correspondante |
*/ |
public function chargerMoteurRecherche() { |
$donnees = array(); |
|
// Gestion de l'url |
$this->url->setVariableRequete('module', 'Recherche'); |
$this->url->setVariableRequete('action', 'rechercher'); |
$donnees['url_form'] = $this->url->getUrl(); |
$donnees['url_module'] = 'Recherche'; |
$donnees['url_action'] = 'rechercher'; |
|
// Gestion du squelette |
$this->chargerVue('moteur', $donnees); |
|
// Attribution des morceaux de HTML à la sortie |
$sortie['corps'] = $this->moteur; |
return $sortie; |
} |
|
/** |
* Recherche des collections. |
* @return string la vue correspondante |
*/ |
public function rechercher() { |
$donnees = array(); |
$rechercheDao = $this->getModele('RechercheDao'); |
$parametres = array('mots' => ''); |
|
// Récupération des paramêtres de l'url |
if (isset($_GET['recherche'])) { |
$parametres['mots'] = $_GET['recherche']; |
} |
|
// Gestion du nombre de résultats |
$donnees_total = $rechercheDao->chercherStructureNbre($parametres); |
|
// Gestion du fragmenteur |
$options = array( |
'url' => $this->url, |
'donnees_total' => $donnees_total); |
$fragmenteur = Composant::fabrique('fragmenteur', $options); |
$donnees['fragmenteur'] = $fragmenteur->executer(); |
list($de, $a) = $fragmenteur->getDeplacementParPageId(); |
|
// Gestion de l'accès aux données |
$rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage()); |
$resultats = $rechercheDao->chercher($parametres); |
|
// Post-traitement des résultats pour l'affichage |
foreach ($resultats as $resultat) { |
$structure_id = $resultat['cs_id_structure']; |
if (!isset($donnees['infos'][$structure_id])) { |
$structure = array( |
'nom' => $resultat['cs_nom'], |
'ville' => $resultat['cs_ville']); |
$donnees['infos'][$structure_id]['structure'] = $structure; |
} |
|
$collection = array('nom' => $resultat['cc_nom']); |
$donnees['infos'][$structure_id]['collections'][] = $collection; |
} |
|
// Gestion des squelettes |
$this->chargerVue('resultat', $donnees); |
$sortie_moteur = $this->chargerMoteurRecherche(); |
|
// Attribution des morceaux de HTML à la sortie |
$sortie['corps'] = $sortie_moteur['corps'].$this->resultat; |
return $sortie; |
} |
} |