From ebb8f05f0996ce3822c865c9388b9e3f0599604f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 5 Jun 2013 15:53:27 +0200 Subject: [PATCH] Subscription to ML can also be done according to member type --- htdocs/admin/mailman.php | 1 + htdocs/admin/spip.php | 1 + htdocs/core/lib/admin.lib.php | 1 + .../mailmanspip/class/mailmanspip.class.php | 27 +++++++++++-------- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/mailman.php b/htdocs/admin/mailman.php index 34d0fae56e5..eaca2cb998a 100644 --- a/htdocs/admin/mailman.php +++ b/htdocs/admin/mailman.php @@ -30,6 +30,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/mailmanspip.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $langs->load("admin"); $langs->load("members"); diff --git a/htdocs/admin/spip.php b/htdocs/admin/spip.php index ae7601fb611..755ab8670e1 100644 --- a/htdocs/admin/spip.php +++ b/htdocs/admin/spip.php @@ -30,6 +30,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/mailmanspip.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $langs->load("admin"); $langs->load("members"); diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 6e302fa9806..d399256dc0e 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1082,6 +1082,7 @@ function form_constantes($tableau,$strictw3c=0) print ''; //print 'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members/remove?adminpw=%MAILMAN_ADMINPW%&unsubscribees=%EMAIL%'; diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php index 26c9cb3a24b..e0add082e71 100644 --- a/htdocs/mailmanspip/class/mailmanspip.class.php +++ b/htdocs/mailmanspip/class/mailmanspip.class.php @@ -395,17 +395,22 @@ class MailmanSpip foreach ($lists as $list) { - // Filter on type something (ADHERENT_MAILMAN_LISTS = "filtervalue:mailinglist1,filtervalue2:mailinglist2,mailinglist3") - $tmp=explode(':',$list); - if (! empty($tmp[1])) - { - $list=$tmp[1]; - if ($object->element == 'member' && $object->type != $tmp[1]) // Filter on member type label - { - dol_syslog("We ignore list ".$list." because object member type ".$object->type." does not match ".$tmp[0], LOG_DEBUG); - continue; - } - } + // Filter on type something (ADHERENT_MAILMAN_LISTS = "mailinglist0,TYPE:typevalue:mailinglist1,CATEG:categvalue:mailinglist2") + $tmp=explode(':',$list); + if (! empty($tmp[2])) + { + $list=$tmp[2]; + if ($object->element == 'member' && $tmp[0] == 'TYPE' && $object->type != $tmp[1]) // Filter on member type label + { + dol_syslog("We ignore list ".$list." because object member type ".$object->type." does not match ".$tmp[1], LOG_DEBUG); + continue; + } + if ($object->element == 'member' && $tmp[0] == 'CATEG' && ! in_array($tmp[1], $categstatic->containing($object->id, 'member', 'label'))) // Filter on member category + { + dol_syslog("We ignore list ".$list." because object member is not into category ".$tmp[1], LOG_DEBUG); + continue; + } + } //We call Mailman to unsubscribe the user $result = $this->callMailman($object, $conf->global->ADHERENT_MAILMAN_UNSUB_URL, $list);