CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Sam Nov 23, 2024 6:31 pm

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 13 messages ] 
Auteur Message
MessagePublié: Lun Jan 14, 2013 10:59 pm 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
Bonjour,

Je tente de faire une recherche dans un polymod sur un champ string qui contient une simple quote (')
Le système ne retourne pas l'entrée bien qu'elle existe.
Le problème vient de la quote car si je modifie les termes c'est ok
Je pense qu'il s'agit d'un problème d'encodage, j'ai essayé différentes solutions mais rien à faire

La condition est du style:
<atm-search-param search="newsresult" type="keywords" value="test avec ' une quote" mandatory="true" operator="phrase" /> marche pas
ou
<atm-search-param search="newsresult" type="keywords" value="test avec &#039; une quote" mandatory="true" operator="phrase" /> marche pas
(dans la base ' est encodé en &#039; pour un string)

Une idée ?
Merci pour votre aide


Haut
 Profil  
 
MessagePublié: Mar Jan 15, 2013 10:19 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
Salut,
La value que tu cherches (value="test avec ' une quote") est en dure dans ta rangée ou est-elle récupérée d'un request ?


Haut
 Profil  
 
MessagePublié: Mar Jan 15, 2013 10:50 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Jeu Oct 07, 2010 1:28 pm
Message(s) : 13
Localisation : Toulouse
Bonjour,

Je pense que ta requête ne retourne rien parce-que dans la classe CMS_object_search d'Automne il y a une ligne de code qui nettoie les mots clés des virgules et point-virgules :
Code :
//clean user keywords (never trust user input, user is evil)
$value = strtr($value, ",;", "  ");

Donc quand tu recherches "test avec &#039; une quote" le test se fait en fait sur "test avec &#039 une quote".

J'ai essayé en désactivant la ligne qui supprime les , et ; et ça fonctionne en mettant &#039; !

Reste à trouver une vrai solution...
Chez moi ça passe avec operator=any (valeur par défaut) mais je pense que ça utilise ASE (moteur de recherche Automne) d'après le code que j'ai parcouru rapidement.


Haut
 Profil  
 
MessagePublié: Mar Jan 15, 2013 10:56 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
De mon côté, je préconiserais plutôt un encodage url ou une mise en variable avant utilisation.
Mes tests en local sont concluants sur un request, Automne semble gérer cela correctement mais dans certains cas.
Mettre la chaine dans une variable et exploitée la variable fonctionne.
Donc, perso, je toucherais pas au code source :wink:


Haut
 Profil  
 
MessagePublié: Mar Jan 15, 2013 11:13 am 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Jeu Oct 07, 2010 1:28 pm
Message(s) : 13
Localisation : Toulouse
Ah oui c'est sûr, je ne préconise pas de modifier le code source, c'est une mauvaise idée, je cherchais juste la manière dont Automne traitait la requête :wink:


Haut
 Profil  
 
MessagePublié: Mar Jan 15, 2013 5:38 pm 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
Merci à tous les 2,

atm4u : le texte n'est pas en dur et j'utilise des variables pour encoder le texte du genre :
<atm-setvar vartype="var" varname="search" value="{helper:io::htmlspecialchars:{var:string:txt}}" /> (pour encoder)
<atm-search-param search="newsresult" type="keywords" value="{var:string:search}" mandatory="true" operator="phrase"/>

fred : j'avais pas vu cette ligne de code ... mais effectivement ça coince car la recherche concerne un string et la quote est encodée en &#039; dans la table (par ex table mod_subobject_string_public champ value)
=> on ne peut pas faire de recherche exacte sur une phrase qui contient une quote si le champ est un string

J'ai testé le truc sans le moteur de recherche ASE.

De plus au niveau de l'admin d'un module polymod qui contient un champ string indexé, si on fait une recherche avec "Phrase exacte" de sélectionné on aura un résultat si on remplace la quote par &#039; dans l'admin le ; ne semble pas être supprimé.

a++


Haut
 Profil  
 
MessagePublié: Mer Jan 16, 2013 5:15 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
Ton operator="phrase" est une notion obligatoire de ton développement ?
Je ne pense pas que tu sois obligé d'encoder ton string avant la mise en variable, mais j'ai pas de certitude la-dessus.


Haut
 Profil  
 
MessagePublié: Mer Jan 16, 2013 5:23 pm 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
atm4u a écrit:
Ton operator="phrase" est une notion obligatoire de ton développement ?

oui


Haut
 Profil  
 
MessagePublié: Mer Jan 16, 2013 9:29 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
Je persiste, de mon côté pas de problème :?
Ma solution se base sur un request, ma recherche est ainsi :
Code :
<atm-search-param search="catalogResult" type="keywords" value="{request:string:search}" mandatory="true" operator="phrase"/>

Et cela fonctionne parfaitement.

Donc, je pense qu'il faut chercher ailleurs :
1 - Supprimer ton encodage lors de la mise en variable, je pense même que ta mise en variable est inutile
2 - Le champ est bien en un champ de type "Chaine de caractères"
3 - S'assurer que tu as mis cache="0" dans ton block polymod, car la variable sinon n'est pas ré-actualisée.
Peux-tu vérifier ces éléments et me tenir au courant ?


Haut
 Profil  
 
MessagePublié: Mer Jan 16, 2013 11:07 pm 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
merci d'avoir testé mais non ... moi aussi je persiste. marche pas si la chaine possède une '
as-tu le moteur de recherche ASE installé ?
ce n'est pas mon cas
a++


Haut
 Profil  
 
MessagePublié: Jeu Jan 17, 2013 1:02 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
Ok, bon j'ai monté deux test case et effectivement, j'ai un soucis sur le 2nd qui ressemble a ce que tu décris.
Pas de ASE de mon côté, je vais creuser un peu : http://demo.automne4you.com/web/demo/12 ... t-case.php


Haut
 Profil  
 
MessagePublié: Mer Jan 30, 2013 9:45 pm 
Hors-ligne
Avatar de l’utilisateur

Inscrit(e) le : Sam Fév 12, 2011 5:26 pm
Message(s) : 188
Sans solution ni compréhension du problème j'ai fait une issue sur guithub.
A voir si cela est pris en compte ou pas.


Haut
 Profil  
 
MessagePublié: Ven Fév 01, 2013 12:04 pm 
Hors-ligne

Inscrit(e) le : Lun Nov 19, 2012 5:00 pm
Message(s) : 18
Je te remercie !
Il va falloir que je me penche sérieusement sur guithub.


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 13 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Google [Bot] et 71 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr