Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 53 → Rev 54

/trunk/controleurs/Recherche.php
13,6 → 13,9
*/
class Recherche extends ColControleur {
private $chaine_recherche = null;
private static $url_exemple = null;
//+----------------------------------------------------------------------------------------------------------------+
// Méthodes
/**
29,10 → 32,8
$donnees = array();
// Gestion des données de la requête
$chaine = $this->obtenirChaineRecherche();
$this->memoriserChaineRecherche($chaine);
$donnees['recherche'] = htmlspecialchars(stripslashes($chaine));
$donnees['recherche'] = htmlspecialchars($this->obtenirChaineRecherche());
 
// Gestion des urls
$this->url->setVariableRequete('module', 'Recherche');
$this->url->setVariableRequete('action', 'rechercher');
40,7 → 41,7
$donnees['url_module'] = 'Recherche';
$donnees['url_action'] = 'rechercher';
$this->url->setVariableRequete('recherche', '%s');
$donnees['url_exemple'] = $this->url->getUrl();
self::$url_exemple = $this->url->getUrl();
$this->url->unsetVariablesRequete(array('module', 'action', 'recherche'));
// Gestion du squelette et de la sortie
49,8 → 50,17
private function obtenirChaineRecherche() {
$chaine = '';
if (isset($_GET['recherche'])) {
if (!is_null($this->chaine_recherche)) {
$chaine = $this->chaine_recherche;
} else if (isset($_GET['recherche'])) {
// Pré-traitement de la chaine de recherche
$chaine = $_GET['recherche'];
// Suppression des slash ajouté automatiquement par PHP devant les guillemets
$chaine = stripslashes($chaine);
// Mémorisation de la chaine
$this->memoriserChaineRecherche($chaine);
// Stockage dans la classe pour éviter d'effectuer à nouveau le traitement ci-dessus
$this->chaine_recherche = $chaine;
} else if (isset($_SESSION['col']['recherche'])) {
$chaine = $_SESSION['col']['recherche'];
}
60,6 → 70,19
private function memoriserChaineRecherche($chaine) {
$_SESSION['col']['recherche'] = $chaine;
}
 
public static function getUrlExemple($chaine) {
$url = '';
if (!is_null(self::$url_exemple)) {
// L'utilisation d'urlencode nécessiate de pré-encodé la chaine dans le format de sortie si nécessaire
if (Config::get('sortie_encodage') != Config::get('appli_encodage')) {
$chaine = mb_convert_encoding($chaine, Config::get('sortie_encodage'), Config::get('appli_encodage'));
}
$chaine = urlencode($chaine);
$url = sprintf(self::$url_exemple, $chaine);
}
return $url;
}
/**
* Recherche des collections.
71,9 → 94,8
$parametres = array('mots' => '*');
// Récupération des paramêtres de l'url
$chaine_de_recherche = '';
if (isset($_GET['recherche'])) {
$chaine_de_recherche = $_GET['recherche'];
$chaine_de_recherche = $this->obtenirChaineRecherche();
if (!empty($chaine_de_recherche)) {
$this->url->setVariableRequete('recherche', $chaine_de_recherche);
}
$parametres = $this->parserChaineDeRecherche($chaine_de_recherche);
91,6 → 113,7
$fragmenteur = Composant::fabrique('fragmenteur', $options);
$donnees['fragmenteur'] = $fragmenteur->executer();
list($de, $a) = $fragmenteur->getDeplacementParPageId();
$this->url->unsetVariableRequete('recherche');
 
// Gestion de l'accès aux données
$rechercheDao->setLimitation(($de - 1), $fragmenteur->getDonneesParPage());
129,11 → 152,7
$this->chargerPiedDePage();
}
private function parserChaineDeRecherche($chaine) {
// Pré-traitement de la chaine de recherche
// Suppression des slash ajouté automatiquement par PHP
$chaine = stripslashes($chaine);
private function parserChaineDeRecherche($chaine) {
$mots = preg_split('/ /i', $chaine, -1, PREG_SPLIT_NO_EMPTY);
$parametres = array('mots' => '');
$cle_precedente = null;