Exemple #1
0
function list_sort_owners($emails, $tri_promo = true)
{
    global $globals;
    // $membres' structure is the following: $sortKey => $key => $listMember
    $membres = array();
    $seen = array();
    $members = array();
    $uf = new UserFilter(new UFC_Email($emails));
    $it = $uf->iterUsers();
    while ($u = $it->next()) {
        $members[$u->uid] = array('user' => $u, 'profile' => null, 'email' => $u->forlifeEmail());
        $seen[] = strtolower($u->forlifeEmail());
    }
    $pf = new ProfileFilter(new UFC_Email($emails));
    $it = $pf->iterProfiles();
    if ($it) {
        while ($p = $it->next()) {
            $members[$p->owner_id]['user']->setPrefetchedProfile($p);
            $members[$p->owner_id]['profile'] = $p;
        }
    }
    foreach ($emails as $email) {
        $email = strtolower($email);
        if (!in_array($email, $seen)) {
            $seen[] = $email;
            $members[$email] = array('user' => null, 'profile' => null, 'email' => $email);
        }
    }
    // $members is now an array of uid => {'user': User or null, 'email': $email}
    // $sorted_members is an array of $sortKey1 => $sortKey2 => {User, email}
    $sorted_members = array();
    foreach ($members as $member) {
        if (is_null($member['user'])) {
            $category = 'AAAAA';
            $name = $member['email'];
        } else {
            $category = $member['user']->category();
            $name = $member['user']->sortName();
        }
        if (empty($category)) {
            $category = "AAAAA";
        }
        $main_sort_key = $tri_promo ? $category : strtoupper($name[0]);
        $alt_sort_key = $name . $member['email'];
        if (!array_key_exists($main_sort_key, $sorted_members)) {
            $sorted_members[$main_sort_key] = array();
        }
        $sorted_members[$main_sort_key][$alt_sort_key] = $member;
    }
    uksort($sorted_members, 'strcasecmp');
    foreach ($sorted_members as &$subsorted_members) {
        uksort($subsorted_members, 'strcasecmp');
    }
    return $sorted_members;
}
Exemple #2
0
 function handler_bulkmail(PlPage $page, PlUser $authUser, $payload)
 {
     require_once 'partnersharing.inc.php';
     $partner = PartnerSharing::fetchByAPIUser($authUser);
     if ($partner == null || !$partner->has_bulkmail) {
         return PL_FORBIDDEN;
     }
     if (!isset($payload['uids'])) {
         $page->trigError('Malformed query.');
         return PL_BAD_REQUEST;
     }
     $uids = $payload['uids'];
     $pf = new UserFilter(new PFC_And(new UFC_PartnerSharingID($partner->id, $uids), new UFC_HasValidEmail(), new UFC_PartnerSharingEmail($partner->id)));
     $contexts = array();
     foreach ($pf->iterUsers() as $user) {
         $contexts[] = array('name' => $user->fullName(), 'email' => $user->bestEmail(), 'gender' => $user->isFemale() ? 'woman' : 'man');
     }
     $page->jsonAssign('contexts', $contexts);
     return PL_JSON;
 }
Exemple #3
0
 public function iterToNotify()
 {
     if ($this->data['notify_all']) {
         $condition = UFC_Group::BOTH;
     } else {
         $condition = UFC_Group::NOTIFIED;
     }
     $uf = new UserFilter(new UFC_Group($this->id, true, $condition));
     return $uf->iterUsers();
 }
Exemple #4
0
 function handler_accounts(PlPage $page)
 {
     $page->changeTpl('admin/accounts.tpl');
     $page->setTitle('Administration - Comptes');
     if (Post::has('create_account')) {
         S::assert_xsrf_token();
         $firstname = Post::t('firstname');
         $lastname = mb_strtoupper(Post::t('lastname'));
         $sex = Post::s('sex');
         $email = Post::t('email');
         $type = Post::s('type');
         if (!$type) {
             $page->trigError("Empty account type");
         } elseif (!isvalid_email($email)) {
             $page->trigError("Invalid email address: {$email}");
         } elseif (strlen(Post::s('pwhash')) != 40) {
             $page->trigError("Invalid password hash");
         } else {
             $login = PlUser::makeHrid($firstname, $lastname, $type);
             $full_name = $firstname . ' ' . $lastname;
             $directory_name = $lastname . ' ' . $firstname;
             XDB::execute("INSERT INTO  accounts (hruid, type, state, password,\n                                                     registration_date, email, full_name,\n                                                     display_name, sex, directory_name,\n                                                     lastname, firstname)\n                                   VALUES  ({?}, {?}, 'active', {?}, NOW(), {?}, {?}, {?}, {?}, {?}, {?}, {?})", $login, $type, Post::s('pwhash'), $email, $full_name, $full_name, $sex, $directory_name, $lastname, $firstname);
         }
     }
     $uf = new UserFilter(new UFC_AccountType('ax', 'school', 'fx'));
     $page->assign('users', $uf->iterUsers());
 }
Exemple #5
0
 function getEmails($aliases)
 {
     if (!is_array($aliases)) {
         return null;
     }
     $uf = new UserFilter(new UFC_Hrpid($aliases));
     $users = $uf->iterUsers();
     $ret = array();
     while ($user = $users->next()) {
         $ret[] = $user->forlife;
     }
     return join(', ', $ret);
 }