Index de l'article

Filtres et expressions régulières

Augmenter le nombre de valeurs dans les listes déroulantes des filtres dans l'édition des emails

En back, on peut déjà largement personnaliser l'affichage des champs en édition d'utilisateurs, mais cela n'est pas encore pris en compte dans l'affichage de ces champs en mode envoi d'email (après sélection des listes)... Qu'à cela ne tienne ! Si certaines de vos listes déroulantes ont disparues, c'est aussi à cause d'une clause SQL de LIMIT par défaut bridée à 100, dans plugins / acymailing / tagsubscriber / tagsubscriber.php lignes 182 et 186. La modifier vous permettra déjà de recréer dynamiquement vos listes déroulantes les plus longues. Personnellement je règle à 2000.

Classer les valeurs des listes déroulantes des filtres en ordre aphabêtique

En effet à cet endroit, ces listes se génèrent dynamiquement (et sont par défaut bridée à 100, voire au-dessus), mais l'ordre de leurs valeurs est aléatoire...

Pour les classer par ordre alphabêtique, ajoutez un ORDER BY juste avant le LIMIT concluant la requête SQL ligne 182 du fichier plugins/acymailing/tagsubscriber/tagsubscriber.php. Sous cette forme :

$query = 'SELECT DISTINCT `'.acymailing_secureField($map).'` AS value FROM #__acymailing_subscriber ORDER BY `'.acymailing_secureField($map).'` ASC LIMIT 2000';

Attention : les guillemets sont de types différents, et supportent parfois mal les copier-coller. Au pire vous les retrouverez dans le code, au début de la requête, où le secureField est déjà utilisé avec les bons types de guillemets.

Masquer des champs des filtres dans l'édition des emails

Par défaut tous les champs apparaissent, ce grand nombre de champs et d'options est un peu déstabilisant pour les utilisateurs, on peut souhaiter en cacher certains. Si vous vous sentez de le faire en PHP, vous pouvez attaquer le fichier plugins/acymailing/tagsubscriber/tagsubscriber.php, sinon quelques lignes de CSS en viendront à bout, puisqu'il ne s'agit que de masquer certaines options.

Utilisez un display: none en récupérant les attributs de cette façon :

select#filter0acymailingfieldmap option[value |= CHAMP1],
select#filtertype0 option[value |= GROUPE_CHAMP1]

Utiliser les expressions régulières

Parfois les filtres de vos champs personnalisées sont insuffisants (souvent de par l'impossibilité d'ajouter des filtres OR). Utilisez donc une expression régulière (REGEXP dans les filtres), pour ne sélectionner que certaines valeurs d'un champ :

Valeur1|Valeur2|Valeur3

Ou encore pour ne sélectionner que les départements de la région PACA par exemple (une ancienne région rançaise). Si vos codes postaux sont correctement remplis, et accompagné d'un filtre country = 'FRANCE' :, mettez un filtre regex sur le zipcode pour ne sélectionner que les contacts dont le zipcode commence par :

^04|^05|^06|^13|^83|^84