Probleme avec auteurs (voila autre chose)

Hi

J'ai un gros probleme depuis que j'ai installe la derniere version de Spip (1.8.2.d):

J'ai un site arabe (UTF-8) avec 350 auteurs (tous avec des noms en arabe sauf un - moi) qui marchait tres bien. Avec la nouvelle version, quand on veut ajouter un auteur a un article et qu'on rentre son nom dans la boite de recherche on recoit toujours le message: "trop de resultats, veuillez affiner la recherche", pourtant on rentre le nom exact et on sait qu'il n'y a qu'une entree avec ce nom et on ne peut pas affiner plus que ca!

Quand je rentre mon nom en caracteres latins, il le trouve tout de suite.

Ce qui est bizarre, c'est que j'ai une copie exacte du site en local (mais alors exacte!) et ca marchait bien avec la nouvelle version jusqu'au moment ou la recherche me sort une liste d'une dizaine d'auteurs dont aucun ne correspond au nom recherche!

Quelqu'un a une idee? ca devient urgent, les admins attendent de regler ce probleme car ils ne peuvent pas publier des articles sans auteurs.

Merci

George

ps: dois-je poster ce probleme sur spip-dev?

George Kandalaft a écrit :

Hi

J'ai un gros probleme depuis que j'ai installe la derniere version de Spip (1.8.2.d):

J'ai un site arabe (UTF-8) avec 350 auteurs (tous avec des noms en arabe sauf un - moi) qui marchait tres bien. Avec la nouvelle version, quand on veut ajouter un auteur a un article et qu'on rentre son nom dans la boite de recherche on recoit toujours le message: "trop de resultats, veuillez affiner la recherche", pourtant on rentre le nom exact et on sait qu'il n'y a qu'une entree avec ce nom et on ne peut pas affiner plus que ca!

Quand je rentre mon nom en caracteres latins, il le trouve tout de suite.

Ce qui est bizarre, c'est que j'ai une copie exacte du site en local (mais alors exacte!) et ca marchait bien avec la nouvelle version jusqu'au moment ou la recherche me sort une liste d'une dizaine d'auteurs dont aucun ne correspond au nom recherche!

Quelqu'un a une idee? ca devient urgent, les admins attendent de regler ce probleme car ils ne peuvent pas publier des articles sans auteurs.

Merci

George

ps: dois-je poster ce probleme sur spip-dev?

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

a tout hasard vérifié si le réglage du charset n'aurait pas bougé ....

-----Message d'origine-----
De : spip-bounces@rezo.net [mailto:spip-bounces@rezo.net] De
la part de George Kandalaft
Envoyé : mercredi 7 septembre 2005 15:00
À : spip@rezo.net
Objet : [Spip] Probleme avec auteurs (voila autre chose)

Hi

J'ai un gros probleme depuis que j'ai installe la derniere
version de Spip (1.8.2.d):

J'ai un site arabe (UTF-8) avec 350 auteurs (tous avec des
noms en arabe sauf un - moi) qui marchait tres bien. Avec la
nouvelle version, quand on veut ajouter un auteur a un
article et qu'on rentre son nom dans la boite de recherche on
recoit toujours le message: "trop de resultats, veuillez
affiner la recherche", pourtant on rentre le nom exact et on
sait qu'il n'y a qu'une entree avec ce nom et on ne peut pas
affiner plus que ca!

Quand je rentre mon nom en caracteres latins, il le trouve
tout de suite.

Ce qui est bizarre, c'est que j'ai une copie exacte du site
en local (mais alors exacte!) et ca marchait bien avec la
nouvelle version jusqu'au moment ou la recherche me sort une
liste d'une dizaine d'auteurs dont aucun ne correspond au nom
recherche!

Quelqu'un a une idee? ca devient urgent, les admins attendent
de regler ce probleme car ils ne peuvent pas publier des
articles sans auteurs.

Merci

George

ps: dois-je poster ce probleme sur spip-dev?

Je pense que oui.

Fil wrote:

Je n'ai pas le temps de regarder en détail pour le moment (et c'est
compliqué car il faudrait avoir sous la main une base en arabe)

Mais essaie de modifier les lignes 34 et 48 de ecrire/inc_mots.php3, en
supprimant dans les deux cas, soit strtolower, soit translitteration,

ca, ca marche en supprimant strtolower dans les 2 cas. Mais est ce que ca marchera aussi pour des nom latins?

ou
encore en remplaçant strtolower par mb_strtolower

c'est bizarre, ca, ca me donne "*Fatal error*: Call to undefined function: mb_strtolower() in etc." ma version php locale est 4.3.2 pourtant.

George

@ Benoit Mamet <ben.spip@gmail.com> :

---------- Forwarded message ----------
From: George Kandalaft <george@diwanalarab.com>
Date: Sep 7, 2005 3:00 PM
Subject: [Spip] Probleme avec auteurs (voila autre chose)
To: spip@rezo.net

Hi

J'ai un gros probleme depuis que j'ai installe la derniere version de
Spip (1.8.2.d):

J'ai un site arabe (UTF-8) avec 350 auteurs (tous avec des noms en arabe
sauf un - moi) qui marchait tres bien. Avec la nouvelle version, quand
on veut ajouter un auteur a un article et qu'on rentre son nom dans la
boite de recherche on recoit toujours le message: "trop de resultats,
   
-- Fil

>Mais essaie de modifier les lignes 34 et 48 de ecrire/inc_mots.php3, en
>supprimant dans les deux cas, soit strtolower, soit translitteration,
>
ca, ca marche en supprimant strtolower dans les 2 cas. Mais est ce que
ca marchera aussi pour des nom latins?

Dans ce cas-là tu ne pourras plus taper "DE GAULLE" si ton auteur est "De
Gaulle", ni l'inverse.

>encore en remplaçant strtolower par mb_strtolower
>
c'est bizarre, ca, ca me donne "*Fatal error*: Call to undefined
function: mb_strtolower() in etc." ma version php locale est 4.3.2 pourtant.

php n'est pas toujours compilé avec les fonctions mbstring (multi-byte).

-- Fil

Fil wrote:

Mais essaie de modifier les lignes 34 et 48 de ecrire/inc_mots.php3, en
supprimant dans les deux cas, soit strtolower, soit translitteration,

ca, ca marche en supprimant strtolower dans les 2 cas. Mais est ce que ca marchera aussi pour des nom latins?
   
Dans ce cas-là tu ne pourras plus taper "DE GAULLE" si ton auteur est "De
Gaulle", ni l'inverse.

alors, qu'est ce qu'on fait? on garde ca comme ca ou faut il introduire une condition sur la langue? j'imagine que le probleme va etre le meme en persan par exemple

George

>Dans ce cas-là tu ne pourras plus taper "DE GAULLE" si ton auteur est "De
>Gaulle", ni l'inverse.
>
alors, qu'est ce qu'on fait? on garde ca comme ca ou faut il introduire
une condition sur la langue? j'imagine que le probleme va etre le meme
en persan par exemple

Je pense que mb_strtolower sera la bonne réponse ; et qu'il faudra donc
l'"émuler" pour ceux chez qui elle n'est pas activée, en passant en
minuscules les seuls caractères A-Z (après translittération). Bref, il faut
un peu de temps et de quoi tester.

-- Fil

Je pense que mb_strtolower sera la bonne réponse ; et qu'il faudra donc
l'"émuler" pour ceux chez qui elle n'est pas activée, en passant en
minuscules les seuls caractères A-Z (après translittération). Bref, il faut
un peu de temps et de quoi tester.

Si tu peux essayer, c'est le patch suivant :
http://trac.rezo.net/trac/spip/changeset/4766

-- Fil

Hi

Sorry j'etais sorti hier.

Apparement ca marche, j'ai essaye plusieurs noms et prenoms (dont certains existenet plus d'une fois) et j'ai eu soit le resultat unique demande soit la liste des auteurs qui ont le meme prenom. J'ai meme essaye GEORGE et il m'a donne George

George

Fil wrote:

bug fermé :slight_smile:
George, tu confirmes ?

@ Benoit Mamet <ben.spip@gmail.com> :

---------- Forwarded message ----------
From: George Kandalaft <george@diwanalarab.com>
Date: Sep 7, 2005 3:00 PM
Subject: [Spip] Probleme avec auteurs (voila autre chose)
To: spip@rezo.net

Hi

J'ai un gros probleme depuis que j'ai installe la derniere version de
Spip (1.8.2.d):

J'ai un site arabe (UTF-8) avec 350 auteurs (tous avec des noms en arabe
sauf un - moi) qui marchait tres bien. Avec la nouvelle version, quand
on veut ajouter un auteur a un article et qu'on rentre son nom dans la
boite de recherche on recoit toujours le message: "trop de resultats,
veuillez affiner la recherche", pourtant on rentre le nom exact et on
sait qu'il n'y a qu'une entree avec ce nom et on ne peut pas affiner
plus que ca!

Bonjour,

Spip-contrib ne répond plus depuis hier. Que se passe-t-il?

Pascale

Bonjour,

Spip-contrib ne répond plus depuis hier. Que se passe-t-il?

t'as de l'électricité?

C'est très précisément la page :
http://www.spip-contrib.net/spikini/NouveauCritere
qui ne s'affiche plus…

Si quelqu'un connait un moyen d'accéder au contenu, avec ou sans électricité…

Pascale

Le jeudi, 8 sep 2005, à 13:35 Europe/Paris, Jean-Christophe Sekinger a écrit :

Bonjour,

Spip-contrib ne répond plus depuis hier. Que se passe-t-il?

t'as de l'électricité?

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

SDC a écrit (08/09/2005 13:30) :

Bonjour,

Spip-contrib ne répond plus depuis hier. Que se passe-t-il?

plus sérieusement... il faut savoir ausi que ce site est très demandé (avec raison)et il arrive qu'ouvaton (leur hébergeur) ait des soucis/lenteurs... si en plus ton, navigateur te sert des pages pas fraîches (ouh l'odeur)
... t'aurais pas un tout petit modem non?

jc

-----Message d'origine-----
De : spip-bounces@rezo.net [mailto:spip-bounces@rezo.net] De
la part de SDC
Envoyé : jeudi 8 septembre 2005 13:50
À : SPIP
Objet : Re: [Spip] Spip contrib?

C'est très précisément la page :
http://www.spip-contrib.net/spikini/NouveauCritere
qui ne s'affiche plus…

Si quelqu'un connait un moyen d'accéder au contenu, avec ou
sans électricité…

Pascale

Ici ça fonctionne.

Voilà la page :

Des nouveaux critères
Principe

Le NouveauCompilo permet maintenant d’ajouter ses propres paramètres aux
boucles. Cela va dans le sens de l’ajout de nouvelles boucles, sur de
nouvelles tables, dans SPIP. Mais bien sûr, on peut aussi les utiliser pour
écrire ses propres extensions des tables actuelles.

Dans SPIP, une boucle dans le squelette est traduite en requête SQL vers la
base de données où sont stockées les tables articles, brèves et autres. Du
coup, un critère de boucle se traduit comme une nouvelle contrainte dans la
requête.

Implémenter un nouveau critère demandera donc une connaissance des requêtes
SQL.

Par exemple, quand on ajoute le critère {exclus} à une boucle d’articles,
SPIP va ajouter une contrainte disant que l’on ne veut pas récupérer
l’article en cours de la table, mais juste les autres :
                WHERE ... AND spip_articles.id_articles != XX
implémentation

Les critères du noyau de SPIP sont tous déclarés dans inc-criteres.php3, y
jeter un coup d’oeil est une bonne idée.

Pour déclarer un nouveau critère, il faut déclarer une fonction
critere_quelquechose dans ecrire/mes_options.php3 (ou dans un fichier
indépendant si on veut utiliser le SystemeDePlugin). quelquechose étant le
nom du critère qui apparaîtra dans la boucle (ainsi, on ne peut pas déclarer
de critère purement numériques).

Par exemple, la fonction pour le critère {exclus} est déclarée comme cela :
function critere_exclus_dist($idb, &$boucles, $param, $not) {
        $boucle = &$boucles[$idb];

        if ($param != 'exclus' OR $not)
                erreur_squelette(_T('info_erreur_squelette'), $param);

        $boucle->where = $boucle->id_table . '.' .
$boucle->primary."!='"."
        . calculer_argument_precedent($idb,$boucle->primary, $boucles) .
         "."'";

}

Cette fonction a un _dist à la fin, parce que c’est une fonction du noyau,
on peut ainsi écraser cette fonction en déclarant sa propre fonction
critere_exclus.

La fonction prend quatre paramètres :
1- $idb qui est l’identifiant de la boucle (le nom après BOUCLE dans le
squelette),
2- &$boucles qui est un tableau de toutes les boucles de ce squelette.
Indexer par leur identifiant,
3- $param qui est le critère qui a fait appeler cette fonction, ainsi, si on
veut passer des paramètre, on peut les récupérer ici,
4- $not qui indique si le critère est inversé.

Elle commence par deux morceaux de code assez commun :
        $boucle = &$boucles[$idb];
qui permet de récupérer la boucle actuelle.
        if ($param != 'exclus' OR $not)
                erreur_squelette(_T('info_erreur_squelette'), $param);

qui vérifie que le critère passé n’est pas accompagné d’autres paramètres et
qu’il n’est pas nié (ce qui n’aurait pas de sens pour ce critère)

La dernière partie du code ajoute la nouvelle contrainte à la requête :
        $boucle->where = $boucle->id_table . '.' .
$boucle->primary."!='"."
        . calculer_argument_precedent($idb,$boucle->primary, $boucles) .
         "."'";

On peut modifier un certain nombre de champs de la requête d’une boucle :
- $select quels champs seront sélectionnés et rendus accessible pour
l’affichage (c’est un tableau de nom de champ),
- $from sur quelles tables faire la requête, (ici aussi, un tableau de nom
de table), mais attention à la notive de Déesse A. :

    Il faut d’ailleurs remarquer qu’un critère n’a a priori pas à affecter
le champ from de la requête SQL à construire (il y a des exceptions dans le
code de Spip, je sais, mais ça fait partie des scories que je cherche à
évacuer).

- $where quelles sont les contraintes sur la requête, toutes les
contraintes seront associées avec un AND, si on veut faire un OR entre deux
contraintes, il faut le mettre comme une seule contrainte (encore un tableau
de contraintes),
- $limit ???
- $group quelle colonne groupée (un nom de champ),
- $order par quelle colonne trié (une chaîne entre guillemets, ainsi il
faudra toujours retourner quelque chose du genre : "'colonne'"),
- sous_requete ???
- compte_requete ???

Un certain nombre de sucres sont présents pour nous aider à garder des
critères génériques qui puissent marcher avec le plus de boucles possible :
- $boucle->id_table est le nom de la table sur laquelle la boucle
s’applique,
- $boucle->primary est la clef "primaire" de la table,
- on peut récupérer un argument passé dans la boucle (soit par le contexte,
soit par assignation) grâce à la méthode calculer_argument_precedent qui
prend trois paramètres :

    * l’identifiant de la boucle actuelle,
    * le nom du champ à récupérer,
    * le tableau des boucles.

Pour chaque boucle, dans le fichier inc-boucles.php, une requête de base est
déjà spécifiée, il faut donc faire attention à ajouter des nouvelles
contraintes compatibles avec cela. En général, cela implique de mettre une
contrainte sur la clef "primaire" de la table :$boucle->id_table . '.' .
$boucle->primary

Pour accéder aux champs nouveaux demandés dans la requête, il y a deux
méthodes :
- si c’est un champ déclaré dans le fichier de configuration, on y a accès
directement par la balise #NOM_CHAMP,
- sinon (c’est une balise calculée), il faut déclarer une fonction
balise_CHAMP qui explique ‡ spip comment récupérer ce nouveau champ (voir la
page sur le NouveauCompilo).

SDC a écrit (08/09/2005 13:49) :

C'est très précisément la page :
http://www.spip-contrib.net/spikini/NouveauCritere
qui ne s'affiche plus…

Si quelqu'un connait un moyen d'accéder au contenu, avec ou sans électricité…

avec électricité:
le spikini est effectivement long à charger (ça demande beaucoup aux serveur d'ouvaton un truc comme ça)
la page que tu cherches est super-extra-longue à charger mais elle est accessible

sans électricité:
va chez un voisin qui un super-extra-haut-débit

Le jeudi, 8 sep 2005, à 13:51 Europe/Paris, Jean-Christophe Sekinger a écrit :

SDC a écrit (08/09/2005 13:30) :

Bonjour,

Spip-contrib ne répond plus depuis hier. Que se passe-t-il?

plus sérieusement... il faut savoir ausi que ce site est très demandé
(avec raison)et il arrive qu'ouvaton (leur hébergeur) ait des
soucis/lenteurs... si en plus ton, navigateur te sert des pages pas
fraîches (ouh l'odeur)
... t'aurais pas un tout petit modem non?

jc

Ah! La longueur!
Ben là c'est un plutôt un pas tout petit ADSL.

Grand merci à Olivier pour le transfert du contenu.

Pascale