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