[SPIP Zone] Bug export Mailsubscribers ?

Bonjour,

Un site spip 3.2.5 avec tous les plugins de newsletter à jour,
comportant dans les 6500 inscrits à 5 listes différentes.

Je vais dans Activité -> Inscrits aux envois par email puis je choisi à
gauche la liste des gens inscrits par internet (la liste public),
j'obtiens un affichage avec 3 onglets, tous / inscrits (2045) /
Désinscrits (456).

Je me positionne sur l'onglet "inscrits (2045)" et je clique en bas sur
"Exporter les inscrits" et là j'obtiens un csv avec 2082 lignes ...
après analyse du fichier je m'aperçois qu'il y a dans ces 2082 des
personnes marquées comme désinscrites de cette liste mais néanmoins par
ailleurs inscrites à d'autres listes ... sans que la différence
2082-2045 donne une indication logique du problème ...

Bref dans l'urgence je décide d'y aller à la mano et j'élabore une
requête vite fait (ni parfaite ni élégante) dans phpMyAdmin ...

Mon premier essai retourne 2082 lignes (donc même problème):

SELECT `spip_mailsubscribers`.`email` FROM `spip_mailsubscriptions`,
`spip_mailsubscribers` WHERE `id_mailsubscribinglist`='4' AND
`spip_mailsubscribers`.`statut` = 'valide' AND
`spip_mailsubscriptions`.`id_mailsubscriber`
=`spip_mailsubscribers`.`id_mailsubscriber` ORDER BY
`spip_mailsubscribers`.`email`

Mon second essai est meilleur avec 2045 lignes:

SELECT `spip_mailsubscribers`.`email` FROM `spip_mailsubscriptions`,
`spip_mailsubscribers` WHERE `id_mailsubscribinglist`='4' AND
`spip_mailsubscriptions`.`statut` = 'valide' AND
`spip_mailsubscriptions`.`id_mailsubscriber`
=`spip_mailsubscribers`.`id_mailsubscriber` AND
`spip_mailsubscribers`.`statut` = 'valide' ORDER BY
`spip_mailsubscribers`.`email`

Dans la première je ne teste le statut "valide" qu'au niveau de
'spip_mailsubscribers', dans la seconde je vérifie ce statut "valide"
aussi pour "spip_mailsubscriptions" car le statut d'un subscriber peut
être valide en général mais pas pour telle ou telle liste ...

J'ai l'impression donc que le bouton "Exporter les inscrits" teste le
statut "valide" de l'inscrit dans la table "spip_mailsubscribers"
seulement et qu'il manque le test du statut "valide" dans la table
"spip_mailsubscriptions" pour la liste en cours d'affichage ...

Bug ou feature ?

--

Pierre.

Bug ! Corrigé (en principe) par https://zone.spip.org/trac/spip-zone/changeset/118832 :slight_smile:

--
Cédric
Le 28 nov. 2019 à 17:54 +0100, CSI <csi@zedd.pro>, a écrit :

Bonjour,

Un site spip 3.2.5 avec tous les plugins de newsletter à jour,
comportant dans les 6500 inscrits à 5 listes différentes.

Je vais dans Activité -> Inscrits aux envois par email puis je choisi à
gauche la liste des gens inscrits par internet (la liste public),
j'obtiens un affichage avec 3 onglets, tous / inscrits (2045) /
Désinscrits (456).

Je me positionne sur l'onglet "inscrits (2045)" et je clique en bas sur
"Exporter les inscrits" et là j'obtiens un csv avec 2082 lignes ...
après analyse du fichier je m'aperçois qu'il y a dans ces 2082 des
personnes marquées comme désinscrites de cette liste mais néanmoins par
ailleurs inscrites à d'autres listes ... sans que la différence
2082-2045 donne une indication logique du problème ...

Bref dans l'urgence je décide d'y aller à la mano et j'élabore une
requête vite fait (ni parfaite ni élégante) dans phpMyAdmin ...

Mon premier essai retourne 2082 lignes (donc même problème):

SELECT `spip_mailsubscribers`.`email` FROM `spip_mailsubscriptions`,
`spip_mailsubscribers` WHERE `id_mailsubscribinglist`='4' AND
`spip_mailsubscribers`.`statut` = 'valide' AND
`spip_mailsubscriptions`.`id_mailsubscriber`
=`spip_mailsubscribers`.`id_mailsubscriber` ORDER BY
`spip_mailsubscribers`.`email`

Mon second essai est meilleur avec 2045 lignes:

SELECT `spip_mailsubscribers`.`email` FROM `spip_mailsubscriptions`,
`spip_mailsubscribers` WHERE `id_mailsubscribinglist`='4' AND
`spip_mailsubscriptions`.`statut` = 'valide' AND
`spip_mailsubscriptions`.`id_mailsubscriber`
=`spip_mailsubscribers`.`id_mailsubscriber` AND
`spip_mailsubscribers`.`statut` = 'valide' ORDER BY
`spip_mailsubscribers`.`email`

Dans la première je ne teste le statut "valide" qu'au niveau de
'spip_mailsubscribers', dans la seconde je vérifie ce statut "valide"
aussi pour "spip_mailsubscriptions" car le statut d'un subscriber peut
être valide en général mais pas pour telle ou telle liste ...

J'ai l'impression donc que le bouton "Exporter les inscrits" teste le
statut "valide" de l'inscrit dans la table "spip_mailsubscribers"
seulement et qu'il manque le test du statut "valide" dans la table
"spip_mailsubscriptions" pour la liste en cours d'affichage ...

Bug ou feature ?

--

Pierre.

----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Super je teste dès que je vois la mise à jour du plugin sur le site en question. Merci !

Yeepee yeah ! ça fonctionne sur mon site, grand merci pour la correction rapide !