•  » Plugins
  •  » Insensible à la casse...

#286 2011-02-27 17:17:25

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Nouveau bug à la mise à jour des username en conflit : [Bugtracker] ticket 2207. Après mise à jour d'un nom d'utilisateur en conflit, le tableau ne se rafraichit pas et indique toujours les utilisateurs en conflit précédemment traités.

Par exemple, j'ai "béatrice" et "BÉATRICE" qui sont en conflit. Je renomme "BÉATRICE" en "BÉATRICE1". L'opération se fait correctement (dixit la base de données), le message en vert "Le nom de l'utilisateur a été mis à jour." apparait mais le tableau -//:---\spam toujours les utilisateurs "béatrice" et "BÉATRICE" en conflit.

Il faut recharger la page d'admin du plugin pour retrouver un affichage cohérent.

[edit] Résolu dans [Subversion] r9398 [/edit]

Dernière modification par Eric (2011-02-27 17:24:17)

Hors ligne

#287 2011-02-27 17:32:10

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Whiler a écrit:

@ Eric : ([Subversion] r9389)

J'ai re-implémenté la vérification de l'existence d'un login depuis l'interface de LCAS...

J'ai supprimé le SELECT car celui-ci ne tenait pas compte de la règle définie dans les options...

Les quelques tests que j'ai effectués ont été concluants ;o)

J'y ai cru moi aussi mais, finalement, çà ne fonctionne pas complètement :-(
Le contrôle d'unicité fonctionne pour les username tenant compte des règles définies mais si on renomme un user avec un nom totalement différent et existant en bdd (par exemple "admin"):

[mysql error 1062] Duplicate entry 'admin' for key 'users_ui1'

              UPDATE piwigo_users
              SET username="admin"
              WHERE id=4
              LIMIT 1
              ;

#1    my_error E:\www\PWG_2.2-RC3-MySql5.5.8\include\dblayer\functions_mysql.inc.php(88)
#2    pwg_query E:\www\PWG_2.2-RC3-MySql5.5.8\plugins\LCAS\admin\LCAS_admin.php(112)
#3    include_once E:\www\PWG_2.2-RC3-MySql5.5.8\admin\plugin.php(56)
#4    include E:\www\PWG_2.2-RC3-MySql5.5.8\admin.php(224)

J'ai pris un cas particulier (le compte admin de ma galerie de test) mais c'est le même problème avec un autre compte:
- J'ai un conflit entre "béatrice" et "BÉATRICE"
- J'ai un compte "toto" existant et n'entrant pas en conflit
- Je renomme "BÉATRICE" en "toto"
Et j'ai le beau message d'insulte...

[edit] [Bugtracker] ticket 2208 [/edit]

Dernière modification par Eric (2011-02-27 17:35:31)

Hors ligne

#288 2011-02-27 19:09:28

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

[Subversion] r9401

En cumulant la recherche de doublons avec les règles configurées pour LCAS et une simple recherche par SELECT d'un username existant, il n'y a plus d'erreur "Duplicate entry" et le renommage des username en conflit fonctionne ;-)

Hors ligne

#289 2011-02-27 19:12:40

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

Eric a écrit:

[Subversion] r9401

En cumulant la recherche de doublons avec les règles configurées pour LCAS et une simple recherche par SELECT d'un username existant, il n'y a plus d'erreur "Duplicate entry" et le renommage des username en conflit fonctionne ;-)

C'est également vrai pour ce cas ?

- J'ai un conflit entre "béatrice" et "BÉATRICE"
- J'ai un compte "tôtô" existant et n'entrant pas en conflit
- Je renomme "BÉATRICE" en "toto"

Hors ligne

#290 2011-02-27 19:19:55

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Whiler a écrit:

Eric a écrit:

[Subversion] r9401

En cumulant la recherche de doublons avec les règles configurées pour LCAS et une simple recherche par SELECT d'un username existant, il n'y a plus d'erreur "Duplicate entry" et le renommage des username en conflit fonctionne ;-)

C'est également vrai pour ce cas ?

- J'ai un conflit entre "béatrice" et "BÉATRICE"
- J'ai un compte "tôtô" existant et n'entrant pas en conflit
- Je renomme "BÉATRICE" en "toto"

$£@§ ! :-(

Non, pas pour ce cas. Et je sais pourquoi : Je suis une buse !
Je reviens avec une correction...

Hors ligne

#291 2011-02-27 19:21:56

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

Je n'ai pas vérifié... mais est-ce que l'inscription de nouveaux utilisateurs est gérée en fonction de la règle choisie ?

(Si oui, il doit simplement falloir utiliser la même fonction/mécanisme, ou alors il est peut-être aussi buggé ?)

Hors ligne

#292 2011-02-27 19:28:57

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Whiler a écrit:

Je n'ai pas vérifié... mais est-ce que l'inscription de nouveaux utilisateurs est gérée en fonction de la règle choisie ?

(Si oui, il doit simplement falloir utiliser la même fonction/mécanisme, ou alors il est peut-être aussi buggé ?)

Plus le temps pour vérifier... Ceci dit, en revenant sur le code avant [Subversion] r9401, le renommage de "BÉATRICE" en "toto" alors que "tôtô" existe ne pose pas de problème non plus. :-(

Un vrai casse-tête que je reprendrai plus sereinement demain. A moins que tu n'aies du temps. Je réouvre le [Bugtracker] ticket 2208 ;-)

Hors ligne

#293 2011-02-27 19:43:54

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

Si je trouve 5mn (au moins 15 ;o)), je regarderai... mais je manque cruellement de temps (d'où les messages où je me contente de soumettre des idées...)

Hors ligne

#294 2011-02-28 22:07:15

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Bonsoir ;

bon, je devrais pouvoir me remettre à tester... demain ;-) !

Hors ligne

#295 2011-03-01 17:37:14

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Je pense avoir trouvé ce qui cloche pour [Bugtracker] ticket 2208 : On fait appel à LCAS_change_case() pour transformer le username modifié selon les règles en place mais on ne fait pas la même chose pour les username déjà présents en bdd. Du coup, la requête ne sait pas retrouver ses petits.

Il faudrait utiliser la fonction qu'on appelle pour le contrôle des inscriptions et identifications : LCAS_SearchCaseUsername(). Elle retourne un username si déjà présent en bdd et "matchant" les règles de sensibilité.
Mais si aucun username n'est déjà présent (c'est ce qu'on cherche dans ce cas précis), que retourne la fonction ? Un tableau vide ?

J'ai essayé de coder "Si LCAS_SearchCaseUsername() retourne un tableau vide alors le renommage du username en conflit est OK sinon NOK". Sans grand succès pour l'instant.

Hors ligne

#296 2011-03-02 09:00:23

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

LucMorizur a écrit:

Bonsoir ;

bon, je devrais pouvoir me remettre à tester... demain ;-) !

Euh, désolé, je suis allé au cinoche hier :-/ ... (Somewhere de Sofia Coppola, bof.)

De fait je n'ai pu penser qu'à un petit truc en passant, c'est de laisser $conf['insensitive_case_logon'] inchangé si l'option LCAS est à 0 (plugin désactivé) : [Subversion] r9470. Et je ne me suis donc pas (encore) penché sur vos récentes réflexions.

Par contre je me suis posé une grave question : l'une des fonctions au cœur de LCAS, LCAS_mbStringToArray($s) , qui convertit une chaîne multi-octet en un tableau de chacun de ses caractères, utilise les fonctions mb_strlen et mb_substr ! Or ne devions-nous pas essayer de ne pas utiliser une extension qui peut ne pas être activée ([Forum, post 159483 by Eric in topic 19180] Insensible à la casse...) ? Mais là je serais bien incapable de dire ce qu'on pourrait utiliser à la place...

Hors ligne

#297 2011-03-02 13:46:52

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Ayé ! Avec [Subversion] r9474, je pense avoir résolu le [Bugtracker] ticket 2208 mais j'attends vos retours de test avant de fermer le bug.
Comme annoncé précédemment, je me suis basé sur le fonctionnement de LCAS_SearchCaseUsername(). J'ai fait plusieurs tests dans différentes configurations et çà a l'air de coller mais j'ai pu zapper des cas particuliers.

Il y a tout de même quelque chose qui me gène dans mon fix (et, par extension, dans LCAS_SearchCaseUsername()) : Une requête remonte tous les username présents dans la table #_users pour faire le comparatif en concordance avec les règles de LCAS. Cà va bien lorsqu'on n'a que quelques users mais je suis inquiet pour les performances lorsqu'on a plusieurs centaines / milliers d'utilisateurs inscrits. On remonte systématiquement tout ce beau monde dans un tableau.

On doit pouvoir optimiser çà, non ?

Hors ligne

#298 2011-03-02 19:44:24

Whiler
Membre
Clichy
2004-12-24
189

Re: Insensible à la casse...

Eric :

Sans dénormaliser le modèle de la base d'origine en ajoutant une colonne pour le format converti, je ne vois hélas pas comment... (ou en ajoutant une fonction à la base de données pour effectuer une conversion comme le fait notre fonction... lol... installation du plugin, 2 semaines en admettant qu'on ait les droits)....

J'avais également pensé à cela... mais je ne suis pas sûr que des métriques existent quelque part avec le nb de users enregistrés sur des sites utilisant PWG...

Sinon, plutôt que de renvoyer/parcourir un tableau... faire une boucle par ligne... mais dans ce cas, ce n'est plus la mémoire qui morfle mais les accès php<->base...


Luc :

Pas testé dans notre contexte... mais une idée en passant (je ne sais pas s'il faut des libs spécifiques)
Un truc du genre :

Code:

<?php
$username = 'водка';
$a = preg_split('//u', $username, -1, PREG_SPLIT_NO_EMPTY);
print_r($a);
?>

Grâce au u, je renvoie bien 5 caractères...

Array ( [0] => в [1] => о [2] => д [3] => к [4] => а )

(sans le u, 10... ;o))

Array ( [0] => Ð [1] => ² [2] => Ð [3] => ¾ [4] => Ð [5] => ´ [6] => Ð [7] => º [8] => Ð [9] => ° )

Hors ligne

#299 2011-03-03 21:18:19

Eric
Former Piwigo Team
VALENCE (FR)
2005-03-25
4579

Re: Insensible à la casse...

Whiler a écrit:

Eric :

Sans dénormaliser le modèle de la base d'origine en ajoutant une colonne pour le format converti, je ne vois hélas pas comment... (ou en ajoutant une fonction à la base de données pour effectuer une conversion comme le fait notre fonction... lol... installation du plugin, 2 semaines en admettant qu'on ait les droits)....

J'avais également pensé à cela... mais je ne suis pas sûr que des métriques existent quelque part avec le nb de users enregistrés sur des sites utilisant PWG...

Sinon, plutôt que de renvoyer/parcourir un tableau... faire une boucle par ligne... mais dans ce cas, ce n'est plus la mémoire qui morfle mais les accès php<->base...

Mouais... Pas glop tout çà.
Je me demande s'il ne serait pas possible de réécrire la requête de manière à avoir quelque chose du genre (pas testé):

Code:

SELECT username
FROM '.USERS_TABLE.'
WHERE '.LCAS_change_case(.'username'.).' LIKE '.$_post($username).';

Quand j'aurai à nouveau du temps à y consacrer...

Hors ligne

#300 2011-03-03 21:22:42

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Insensible à la casse...

Eric a écrit:

Je me demande s'il ne serait pas possible de réécrire la requête de manière à avoir quelque chose du genre (pas testé):

Code:

SELECT username
FROM '.USERS_TABLE.'
WHERE '.LCAS_change_case(.'username'.).' LIKE '.$_post($username).';

Quand j'aurai à nouveau du temps à y consacrer...

Ah ben ça alors, j'avais aussi pensé à ça...

Dès que j'ai du temps, je m'y mets...

Nan, je rigole (un peu), car les trois semaines qui suivent je vais faire pas mal d'hôtel, mais j'ai aussi un rôle à apprendre :-/ ...

Hors ligne

  •  » Plugins
  •  » Insensible à la casse...

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact