From c4d57bd8254b91d17bbd836b1ae923dddcba564f Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Sat, 4 Nov 2006 22:21:49 +0000 Subject: [PATCH] #511: Migrate ML subscription when changing email of a non-X git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@1047 839d8a87-29fc-0310-9880-83ba4fa771e5 --- ChangeLog | 3 +++ bin/lists.rpc.py | 18 ++++++++++++++++++ modules/xnetgrp.php | 16 ++++++++++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1021b37..794318f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -38,6 +38,9 @@ Bug/Wish: - #451: vCard are RFC compliant -FRU - #502: Use 'alias' instead of 'aka' to specify the nickname -FRU + * Xnet: + - #511: Migrate ML subscription when changing email of a non-X -FRU + * Xnet/Events: - #490: Events can be opened to non-members -FRU - #514: Improve visibility of open events -FRU diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py index 7f5a5f0..a804005 100755 --- a/bin/lists.rpc.py +++ b/bin/lists.rpc.py @@ -391,6 +391,23 @@ def get_owners(userdesc, perms, vhost, listname): # owners procedures [ admin.php ] # +def replace_email(userdesc, perms, vhost, listname, from_email, to_email): + try: + mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) + except: + return 0 + try: + if not is_admin_on(userdesc, perms, mlist): + return 0 + + mlist.Lock() + mlist.ApprovedChangeMemberAddress(from_email, to_email, 0) + mlist.Save() + mlist.Unlock() + return 1 + except: + return 0 + def mass_subscribe(userdesc, perms, vhost, listname, users): try: mlist = MailList.MailList(vhost+VHOST_SEP+listname.lower(), lock=0) @@ -946,6 +963,7 @@ server.register_function(get_members) server.register_function(get_members_limit) server.register_function(get_owners) # admin.php +server.register_function(replace_email) server.register_function(mass_subscribe) server.register_function(mass_unsubscribe) server.register_function(add_owner) diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index 2378958..de80da7 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -694,6 +694,8 @@ class XnetGrpModule extends PLModule $globals->asso('mail_domain')); if (Post::has('change')) { + $email_changed = ($user['origine'] != 'X' && $user['email'] != Post::v('email')); + $from_email = $user['email']; if ($user['origine'] != 'X') { XDB::query('UPDATE groupex.membres SET prenom={?}, nom={?}, email={?}, sexe={?} @@ -720,7 +722,13 @@ class XnetGrpModule extends PLModule foreach (Env::v('ml1', array()) as $ml => $state) { $ask = empty($_REQUEST['ml2'][$ml]) ? 0 : 2; - if ($ask == $state) continue; + if ($ask == $state) { + if ($state) { + $mmlist->replace_email($ml, $from_email, $user['email2']); + $page->trig("L'abonnement de {$user['prenom']} {$user['nom']} à $ml@ a été mis à jour"); + } + continue; + } if ($state == '1') { $page->trig("{$user['prenom']} {$user['nom']} a " ."actuellement une demande d'inscription en " @@ -729,7 +737,11 @@ class XnetGrpModule extends PLModule $mmlist->mass_subscribe($ml, Array($user['email2'])); $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml@"); } else { - $mmlist->mass_unsubscribe($ml, Array($user['email2'])); + if ($email_changed) { + $mmlist->mass_unsubscribe($ml, Array($from_email)); + } else { + $mmlist->mass_unsubscribe($ml, Array($user['email2'])); + } $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml@"); } } -- 2.1.4