freetext = $freetext; $this->photos = $photos; } public function addUser($user) { $user = User::getSilent($user); if ($user) { $this->user_list[] = $user; $this->count++; } } public function addUsers(array $users) { foreach ($users as $user) { $this->addUser($user); } } protected function fetch() { return PlIteratorUtils::fromArray($this->user_list); } protected function buildEntry($entry) { global $globals; $login = $entry['value']; $user = get_user_details($login->login()); if (empty($user['nom_usage'])) { $entry = new PlVCardEntry($user['prenom'], $user['nom'], null, null, @$user['nickname']); } else { $entry = new PlVCardEntry($user['prenom'], array($user['nom'], $user['nom_usage']), null, null, @$user['nickname']); } // Free text $freetext = '(' . $user['promo'] . ')'; if ($this->freetext) { $freetext .= "\n" . $this->freetext; } if (strlen(trim($user['freetext']))) { $freetext .= "\n" . MiniWiki::WikiToText($user['freetext']); } $entry->set('NOTE', $freetext); // Mobile if (!empty($user['mobile'])) { $entry->addTel(null, $user['mobile'], false, true, true, false, true, true); } // Emails // TODO: this logic is not hruid-compatible; replace it. $entry->addMail(null, $user['bestalias'] . '@' . $globals->mail->domain, true); $entry->addMail(null, $user['bestalias'] . '@' . $globals->mail->domain2); if ($user['bestalias'] != $user['forlife']) { $entry->addMail(null, $user['forlife'] . '@' . $globals->mail->domain); $entry->addMail(null, $user['forlife'] . '@' . $globals->mail->domain2); } // Homes foreach ($user['adr'] as $adr) { $street = array($adr['adr1']); if (!empty($adr['adr2'])) { $street[] = $adr['adr2']; } if (!empty($adr['adr3'])) { $street[] = $adr['adr3']; } $group = $entry->addHome($street, null, null, $adr['postcode'], $adr['city'], $adr['region'], @$adr['country'], $adr['active'], $adr['courier'], $adr['courier']); if (!empty($adr['tels'])) { foreach ($adr['tels'] as $tel) { $fax = $tel['tel_type'] == 'Fax'; $entry->addTel($group, $tel['tel'], $fax, !$fax, !$fax, false, false, !$fax && $adr['active'] && empty($user['mobile'])); } } } // Pro foreach ($user['adr_pro'] as $pro) { $street = array($adr['adr1']); if (!empty($pro['adr2'])) { $street[] = $pro['adr2']; } if (!empty($pro['adr3'])) { $street[] = $pro['adr3']; } $group = $entry->addWork($pro['entreprise'], null, $pro['poste'], $pro['fonction'], $street, null, null, $pro['postcode'], $pro['city'], $pro['region'], @$pro['country']); if (!empty($pro['tel'])) { $entry->addTel($group, $pro['tel']); } if (!empty($pro['fax'])) { $entry->addTel($group, $pro['fax'], true); } if (!empty($pro['email'])) { $entry->addMail($group, $pro['email']); } } // Melix $res = XDB::query( "SELECT alias FROM virtual INNER JOIN virtual_redirect USING(vid) INNER JOIN auth_user_quick ON ( user_id = {?} AND emails_alias_pub = 'public' ) WHERE ( redirect={?} OR redirect={?} ) AND alias LIKE '%@{$globals->mail->alias_dom}'", $user['user_id'], $user['forlife'].'@'.$globals->mail->domain, $user['forlife'].'@'.$globals->mail->domain2); if ($res->numRows()) { $entry->addMail(null, $res->fetchOneCell()); } // Custom fields if (count($user['gpxs_name'])) { $entry->set('X-GROUPS', join(', ', $user['gpxs_name'])); } if (count($user['binets'])) { $entry->set('X-BINETS', join(', ', $user['binets'])); } if (!empty($user['section'])) { $entry->set('X-SECTION', $user['section']); } // Photo if ($this->photos) { $res = XDB::query( "SELECT attach, attachmime FROM photo AS p WHERE p.uid = {?}", $login->id()); if ($res->numRows()) { list($data, $type) = $res->fetchOneRow(); $entry->setPhoto($data, strtoupper($type)); } } return $entry; } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>