function handler_csv(PlPage $page, $liste = null) { if (is_null($liste)) { return PL_NOT_FOUND; } $this->is_group_admin($page); $mlist = $this->prepare_list($liste); $members = $mlist->getMembers(); $list = list_fetch_basic_info(list_extract_members($members[1])); pl_cached_content_headers('text/x-csv', 'iso-8859-1', 1); echo utf8_decode("Nom;Prénom;Promotion\n"); echo utf8_decode(implode("\n", $list)); exit; }
function list_sort_members($members, $tri_promo = true) { $m = list_extract_members($members); return list_sort_owners($m, $tri_promo); }
function handler_directory_sync($page) { global $globals; require_once 'emails.inc.php'; $page->changeTpl('xnetgrp/sync.tpl'); Platal::load('lists', 'lists.inc.php'); if (Env::has('add_users')) { S::assert_xsrf_token(); $users = array_keys(Env::v('add_users')); $former_users = XDB::fetchColumn('SELECT uid FROM group_former_members WHERE remember = TRUE AND asso_id = {?} AND uid IN {?}', $globals->asso('id'), $users); $new_users = array_diff($users, $former_users); foreach ($former_users as $uid) { $user = User::getSilentWithUID($uid); $page->trigWarning($user->fullName() . ' est un ancien membre du groupe qui ne souhaite pas y revenir.'); } if (count($former_users) > 1) { $page->trigWarning('S\'ils souhaitent revenir dans le groupe, il faut qu\'ils en fassent la demande sur la page d\'accueil du groupe.'); } elseif (count($former_users)) { $page->trigWarning('S\'il souhaite revenir dans le groupe, il faut qu\'il en fasse la demande sur la page d\'accueil du groupe.'); } $data = array(); foreach ($new_users as $uid) { Group::subscribe($globals->asso('id'), $uid); } } if (Env::has('add_nonusers')) { S::assert_xsrf_token(); $nonusers = array_keys(Env::v('add_nonusers')); foreach ($nonusers as $email) { if ($user = User::getSilent($email) || !isvalid_email($email)) { continue; } list($local_part, $domain) = explode('@', strtolower($email)); $hruid = User::makeHrid($local_part, $domain, 'ext'); if ($user = User::getSilent($hruid)) { continue; } require_once 'name.func.inc.php'; $parts = explode('.', $local_part); if (count($parts) == 1) { $lastname = $display_name = capitalize_name($mbox); $firstname = ''; } else { $display_name = $firstname = capitalize_name($parts[0]); $lastname = capitalize_name(implode(' ', array_slice($parts, 1))); } $full_name = build_full_name($firstname, $lastname); $directory_name = build_directory_name($firstname, $lastname); $sort_name = build_sort_name($firstname, $lastname); XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, sort_name, firstname, lastname, email, type, state) VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')', $hruid, $display_name, $full_name, $directory_name, $sort_name, $firstname, $lastname, $email); $uid = XDB::insertId(); Group::subscribe($globals->asso('id'), $uid); } } if (Env::has('add_users') || Env::has('add_nonusers')) { $page->trigSuccess('Ajouts réalisés avec succès.'); } $user = S::user(); $client = new MMList($user, $globals->asso('mail_domain')); $lists = $client->get_lists(); $members = array(); foreach ($lists as $list) { $details = $client->get_members($list['list']); $members = array_merge($members, list_extract_members($details[1])); } $members = array_unique($members); $uids = array(); $users = array(); $nonusers = array(); foreach ($members as $email) { if ($user = User::getSilent($email)) { $uids[] = $user->id(); } else { $nonusers[] = $email; } } $aliases = iterate_list_alias($globals->asso('mail_domain')); foreach ($aliases as $alias) { list($local_part, $domain) = explode('@', $alias); $aliases_members = list_alias_members($local_part, $domain); $users = array_merge($users, $aliases_members['users']); $nonusers = array_merge($nonusers, $aliases_members['nonusers']); } foreach ($users as $user) { $uids[] = $user->id(); } $nonusers = array_unique($nonusers); $uids = array_unique($uids); if (count($uids)) { $uids = XDB::fetchColumn('SELECT a.uid FROM accounts AS a WHERE a.uid IN {?} AND NOT EXISTS (SELECT * FROM group_members AS g WHERE a.uid = g.uid AND g.asso_id = {?})', $uids, $globals->asso('id')); $users = User::getBulkUsersWithUIDs($uids); usort($users, 'User::compareDirectoryName'); } else { $users = array(); } sort($nonusers); $page->assign('users', $users); $page->assign('nonusers', $nonusers); }