$this->make_hook('nl', AUTH_PASSWD, 'groupmember'), '%grp/nl/show' => $this->make_hook('nl_show', AUTH_PASSWD, 'groupmember'), '%grp/nl/search' => $this->make_hook('nl_search', AUTH_PASSWD, 'groupmember'), '%grp/admin/nl' => $this->make_hook('admin_nl', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/sync' => $this->make_hook('admin_nl_sync', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/enable' => $this->make_hook('admin_nl_enable', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/edit' => $this->make_hook('admin_nl_edit', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/edit/cancel' => $this->make_hook('admin_nl_cancel', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/edit/delete' => $this->make_hook('admin_nl_delete', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/edit/valid' => $this->make_hook('admin_nl_valid', AUTH_PASSWD, 'groupadmin'), '%grp/admin/nl/categories' => $this->make_hook('admin_nl_cat', AUTH_PASSWD, 'groupadmin'), '%grp/stat' => $this->make_hook('stat_nl', AUTH_PASSWD, 'groupadmin') ); } protected function getNl() { global $globals; $group = $globals->asso('shortname'); return NewsLetter::forGroup($group); } 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'); } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>