X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp.php;h=25871a884e06ac6614ae5a6abd55779c52304a39;hb=b65169f172b0b06c7731cfc67aaea15081fc0d31;hp=b004fde7f367bbe287c0ff8deaeedae493639310;hpb=fb422cab62b9dd57b5c29f6ab3f1cb330fcc1aa4;p=platal.git diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index b004fde..25871a8 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -29,31 +29,31 @@ class XnetGrpModule extends PLModule '%grp/asso.php' => $this->make_hook('index', AUTH_PUBLIC), '%grp/logo' => $this->make_hook('logo', AUTH_PUBLIC), '%grp/site' => $this->make_hook('site', AUTH_PUBLIC), - '%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'), - '%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'), - '%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'), - '%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP, 'groupannu'), - '%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP, 'groupmember:groupannu'), - '%grp/annuaire/csv' => $this->make_hook('csv', AUTH_MDP, 'groupmember:groupannu'), - '%grp/trombi' => $this->make_hook('trombi', AUTH_MDP, 'groupannu'), - '%grp/geoloc' => $this->make_hook('geoloc', AUTH_MDP, 'groupannu'), + '%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'), + '%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'), + '%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'), + '%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP, 'groupannu'), + '%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP, 'groupmember:groupannu'), + '%grp/annuaire/csv' => $this->make_hook('csv', AUTH_MDP, 'groupmember:groupannu'), + '%grp/trombi' => $this->make_hook('trombi', AUTH_MDP, 'groupannu'), + '%grp/geoloc' => $this->make_hook('geoloc', AUTH_MDP, 'groupannu'), '%grp/subscribe' => $this->make_hook('subscribe', AUTH_MDP), - '%grp/subscribe/valid' => $this->make_hook('subscribe_valid', AUTH_MDP, 'groupadmin'), - '%grp/unsubscribe' => $this->make_hook('unsubscribe', AUTH_MDP, 'groupmember'), + '%grp/subscribe/valid' => $this->make_hook('subscribe_valid', AUTH_MDP, 'groupadmin'), + '%grp/unsubscribe' => $this->make_hook('unsubscribe', AUTH_MDP, 'groupmember'), '%grp/change_rights' => $this->make_hook('change_rights', AUTH_MDP), - '%grp/admin/annuaire' => $this->make_hook('admin_annuaire', AUTH_MDP, 'groupadmin'), - '%grp/member' => $this->make_hook('admin_member', AUTH_MDP, 'groupadmin'), - '%grp/member/new' => $this->make_hook('admin_member_new', AUTH_MDP, 'groupadmin'), - '%grp/member/new/ajax' => $this->make_hook('admin_member_new_ajax', AUTH_MDP, 'user', NO_AUTH), - '%grp/member/del' => $this->make_hook('admin_member_del', AUTH_MDP, 'groupadmin'), - '%grp/member/suggest' => $this->make_hook('admin_member_suggest', AUTH_MDP, 'groupadmin'), + '%grp/admin/annuaire' => $this->make_hook('admin_annuaire', AUTH_MDP, 'groupadmin'), + '%grp/member' => $this->make_hook('admin_member', AUTH_MDP, 'groupadmin'), + '%grp/member/new' => $this->make_hook('admin_member_new', AUTH_MDP, 'groupadmin'), + '%grp/member/new/ajax' => $this->make_hook('admin_member_new_ajax', AUTH_MDP, 'user', NO_AUTH), + '%grp/member/del' => $this->make_hook('admin_member_del', AUTH_MDP, 'groupadmin'), + '%grp/member/suggest' => $this->make_hook('admin_member_suggest', AUTH_MDP, 'groupadmin'), '%grp/rss' => $this->make_token_hook('rss', AUTH_PUBLIC), - '%grp/announce/new' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), - '%grp/announce/edit' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), + '%grp/announce/new' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), + '%grp/announce/edit' => $this->make_hook('edit_announce', AUTH_MDP, 'groupadmin'), '%grp/announce/photo' => $this->make_hook('photo_announce', AUTH_PUBLIC), - '%grp/admin/announces' => $this->make_hook('admin_announce', AUTH_MDP, 'groupadmin'), + '%grp/admin/announces' => $this->make_hook('admin_announce', AUTH_MDP, 'groupadmin'), ); } @@ -659,6 +659,11 @@ class XnetGrpModule extends PLModule S::assert_xsrf_token(); $suggest_account_activation = false; + // FS#703 : $_GET is urldecoded twice, hence + // + (the data) => %2B (in the url) => + (first decoding) => ' ' (second decoding) + // Since there can be no spaces in emails, we can fix this with : + $email = str_replace(' ', '+', $email); + // Finds or creates account: first cases are for users with an account. if (!User::isForeignEmailAddress($email)) { // Standard account @@ -768,6 +773,11 @@ class XnetGrpModule extends PLModule { $page->changeTpl('xnetgrp/membres-suggest.tpl'); + // FS#703 : $_GET is urldecoded twice, hence + // + (the data) => %2B (in the url) => + (first decoding) => ' ' (second decoding) + // Since there can be no spaces in emails, we can fix this with : + $email = str_replace(' ', '+', $email); + if (Post::has('suggest')) { if (Post::t('suggest') == 'yes') { $user = S::user(); @@ -983,6 +993,7 @@ class XnetGrpModule extends PLModule $mmlist = new MMList(S::user(), $globals->asso('mail_domain')); if (Post::has('change')) { + require_once 'emails.inc.php'; S::assert_xsrf_token(); // Convert user status to X @@ -1010,6 +1021,11 @@ class XnetGrpModule extends PLModule WHERE uid = {?}', Post::t('email'), $user->id()); } + if (require_email_update($user, Post::t('email'))) { + $listClient = new MMList(S::user()); + $listClient->change_user_email($user->forlifeEmail(), Post::t('email')); + update_alias_user($user->forlifeEmail(), Post::t('email')); + } if (XDB::affectedRows()) { $page->trigSuccess('Données de l\'utilisateur mises à jour.'); } @@ -1077,16 +1093,17 @@ class XnetGrpModule extends PLModule foreach (Env::v('ml3', array()) as $ml => $state) { require_once 'emails.inc.php'; $ask = !empty($_REQUEST['ml4'][$ml]); + list($local_part, ) = explode('@', $ml); if($state == $ask) { if ($state && $email_changed) { - update_list_alias($user, $from_email, $ml, $globals->asso('mail_domain')); + update_list_alias($user->id(), $from_email, $local_part, $globals->asso('mail_domain')); $page->trigSuccess("L'abonnement de {$user->fullName()} à $ml a été mis à jour."); } } else if($ask) { - add_to_list_alias($user, $ml, $globals->asso('mail_domain')); + add_to_list_alias($user->id(), $local_part, $globals->asso('mail_domain')); $page->trigSuccess("{$user->fullName()} a été abonné à $ml."); } else { - delete_from_list_alias($user, $ml, $globals->asso('mail_domain')); + delete_from_list_alias($user->id(), $local_part, $globals->asso('mail_domain')); $page->trigSuccess("{$user->fullName()} a été désabonné de $ml."); } }