コード例 #1
0
ファイル: lists.php プロジェクト: Ekleog/platal
 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;
 }
コード例 #2
0
ファイル: lists.inc.php プロジェクト: Ekleog/platal
function list_sort_members($members, $tri_promo = true)
{
    $m = list_extract_members($members);
    return list_sort_owners($m, $tri_promo);
}
コード例 #3
0
ファイル: xnetgrp.php プロジェクト: Ekleog/platal
 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);
 }