+
+ public function handler_admin_nl_sync($page)
+ {
+ global $globals;
+ $nl = $this->getNl();
+ if (!$nl) {
+ return PL_FORBIDDEN;
+ }
+
+ if (Env::has('add_users')) {
+ S::assert_xsrf_token();
+
+ $nl->bulkSubscribe(array_keys(Env::v('add_users')));
+
+ $page->trigSuccess('Ajouts réalisés avec succès.');
+ }
+
+ // TODO(x2006barrois): remove raw SQL query.
+ $uids = XDB::fetchColumn('SELECT DISTINCT(g.uid)
+ FROM group_members AS g
+ WHERE g.asso_id = {?} AND NOT EXISTS (SELECT ni.*
+ FROM newsletter_ins AS ni
+ INNER JOIN newsletters AS n ON (ni.nlid = n.id)
+ WHERE g.uid = ni.uid AND n.group_id = g.asso_id)',
+ $globals->asso('id'));
+
+ $users = User::getBulkUsersWithUIDs($uids);
+ usort($users, 'User::compareDirectoryName');
+
+ $page->setTitle('Synchronisation de la newsletter');
+ $page->changeTpl('newsletter/sync.tpl');
+ $page->assign('users', $users);
+ }
+
+ public function handler_admin_nl_enable($page)
+ {
+ global $globals;
+ $nl = $this->getNl();
+ if ($nl) {
+ return PL_FORBIDDEN;
+ }
+
+ if (Post::has('title')) {
+ if (!S::has_xsrf_token()) {
+ return PL_FORBIDDEN;
+ }
+
+ XDB::execute('INSERT INTO newsletters
+ SET group_id = {?}, name = {?}',
+ $globals->asso('id'), Post::s('title'));
+
+ $mailer = new PlMailer();
+ $mailer->assign('group', $globals->asso('nom'));
+ $mailer->assign('user', S::user());
+ $mailer->send();
+
+ $page->trigSuccessRedirect("La lettre d'informations du groupe " .
+ $globals->asso('nom') . " a bien été créée",
+ $globals->asso('shortname') . '/admin/nl');
+ }
+ $page->setTitle('Activation de la newsletter');
+ $page->changeTpl('newsletter/enable.tpl');
+ }