Adds group nl subscription from group profile edition (Closes #1481).
authorStéphane Jacob <sj@m4x.org>
Fri, 13 May 2011 22:16:55 +0000 (00:16 +0200)
committerStéphane Jacob <sj@m4x.org>
Fri, 13 May 2011 22:16:55 +0000 (00:16 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
ChangeLog
modules/xnetgrp.php
templates/xnetgrp/membres-edit.tpl

index 9d0251e..059ad36 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,9 @@ Bug/Wish:
     * Search:
         - #1285: Autocompletes on internal words in university search      -JAC
 
+    * XnetGrp:
+        - #1481: Adds group nl subscription from group profile edition     -JAC
+
 ================================================================================
 VERSION 1.1.1                                                         09 05 2011
 
index de4f48c..29daade 100644 (file)
@@ -1234,16 +1234,39 @@ class XnetGrpModule extends PLModule
                     $page->trigSuccess("{$user->fullName()} a été désabonné de $ml.");
                 }
             }
+
+            if ($globals->asso('has_nl')) {
+                // Updates group's newsletter subscription.
+                if (Post::i('newsletter') == 1) {
+                    XDB::execute('INSERT IGNORE INTO  newsletter_ins (uid, nlid)
+                                              SELECT  {?}, id
+                                                FROM  newsletters
+                                               WHERE  group_id = {?}',
+                                 $user->id(), $globals->asso('id'));
+                } else {
+                    XDB::execute('DELETE  ni
+                                    FROM  newsletter_ins AS ni
+                              INNER JOIN  newsletters    AS n  ON (n.id = ni.nlid)
+                                   WHERE  ni.uid = {?} AND n.group_id = {?}',
+                                 $user->id(), $globals->asso('id'));
+                }
+            }
         }
 
         $res = XDB::rawFetchAllAssoc('SHOW COLUMNS FROM group_members LIKE \'position\'');
         $positions = str_replace(array('enum(', ')', '\''), '', $res[0]['Type']);
+        $nl_registered = XDB::fetchOneCell('SELECT  COUNT(ni.uid)
+                                              FROM  newsletter_ins AS ni
+                                        INNER JOIN  newsletters    AS n  ON (n.id = ni.nlid)
+                                             WHERE  ni.uid = {?} AND n.group_id = {?}',
+                                           $user->id(), $globals->asso('id'));
 
         $page->assign('user', $user);
         $page->assign('suggest', $this->suggest($user));
         $page->assign('listes', $mmlist->get_lists($user->forlifeEmail()));
         $page->assign('alias', $user->emailGroupAliases($globals->asso('mail_domain')));
         $page->assign('positions', explode(',', $positions));
+        $page->assign('nl_registered', $nl_registered);
     }
 
     function handler_rss(PlPage $page, PlUser $user)
index f616a56..24edb37 100644 (file)
         <small>Poste, origine&hellip; (accessible à toutes les personnes autorisées à consulter l'annuaire)</small>
       </td>
     </tr>
+    {if $asso->has_nl}
+    <tr class="impair">
+      <td class="titre">
+        Newsletter&nbsp;:
+      </td>
+      <td>
+        <label>Inscrit<input type="radio" name="newsletter" value="1" {if $nl_registered eq 1}checked="checked"{/if} /></label>
+        &nbsp;-&nbsp;
+        <label><input type="radio" name="newsletter" value="0" {if $nl_registered eq 0}checked="checked"{/if} />Non inscrit</label>
+      </td>
+    </tr>
+    {/if}
     {if $user->type eq 'xnet'}
     <tr id="make_X">
       <td colspan="2">