+ $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[] = $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) {
+ 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();