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; }
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; }
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(); }
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()); }
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); }