X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvcard.inc.php;h=778cd1f22d0dfd9fad1656f56f16b601c7a6bf0d;hb=c442573a4e872aed5392ef0a0a4047833666031a;hp=ecf6d2aa82413a5dfcda697a29a2a0807aa7cda7;hpb=2998edf118b3d6243171dd3294247ad1324ac343;p=platal.git diff --git a/include/vcard.inc.php b/include/vcard.inc.php index ecf6d2a..778cd1f 100644 --- a/include/vcard.inc.php +++ b/include/vcard.inc.php @@ -19,8 +19,6 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * ***************************************************************************/ -require_once('user.func.inc.php'); - class VCard extends PlVCard { private $profile_list = array(); @@ -58,8 +56,9 @@ class VCard extends PlVCard protected function buildEntry($pf) { global $globals; + $pf = $pf['value']; - $entry = new PlVCardEntry($pf->firstNames(), $pf->lastNames, null, null, $pf->nickname); + $entry = new PlVCardEntry($pf->firstNames(), $pf->lastNames(), null, null, $pf->nickname); $user = $pf->owner(); @@ -69,8 +68,7 @@ class VCard extends PlVCard $freetext .= "\n" . $this->freetext; } $entry->set('NOTE', $freetext); - // Mobile - if (!empty($pf->mobile)) { + if ($pf->mobile) { $entry->addTel(null, $pf->mobile, false, true, true, false, true, true); } @@ -85,44 +83,54 @@ class VCard extends PlVCard } // Homes - $adrs = $pf->getAddresses(Profile::ADDRESS_PERSO); + $adrs = $pf->iterAddresses(Profile::ADDRESS_PERSO); while ($adr = $adrs->next()) { - // TODO : find a way to fetch only the "street" part of the address - $group = $entry->addHome($adr['text'], null, null, $adr['postalCode'], - $adr['locality'], $adr['administrativeArea'], $adr['country'], - $adr['current'], $adr['mail'], $adr['mail']); - if (!empty($adr['fixed_tel'])) { - $entry->addTel($group, $adr['fixed_tel'], false, true, true, false, false, $adr['current'] && empty($pf->mobile)); + if (!$adr->postalCode || !$adr->locality || !$adr->country) { + $group = $entry->addHome($adr->text, null, null, null, + null, $adr->administrativeArea, null, + $adr->hasFlag('current'), $adr->hasFlag('mail'), $adr->hasFlag('mail')); + } else { + // TODO : find a way to fetch only the "street" part of the address + $group = $entry->addHome($adr->text, null, null, $adr->postalCode, + $adr->locality, $adr->administrativeArea, $adr->country, + $adr->hasFlag('current'), $adr->hasFlag('mail'), $adr->hasFlag('mail')); } - if (!empty($adr['fax_tel'])) { - $entry->addTel($group, $adr['fax_tel'], true, false, false, false, false, false); + foreach ($adr->phones() as $phone) { + if ($phone->linkType() == Phone::TYPE_FIXED) { + $entry->addTel($group, $phone->display, false, true, true, false, false, + $adr->hasFlag('current') && empty($pf->mobile)); + } else if ($phone->linkType() == Phone::TYPE_FAX) { + $entry->addTel($group, $phone->display, true, false, false, false, false, false); + } } } // Pro - $adrs = $pf->getAddresses(Profile::ADDRESS_PRO); + $adrs = $pf->iterAddresses(Profile::ADDRESS_PRO); while ($adr = $adrs->next()) { - // TODO : link address to company - $group = $entry->addWork(null, null, null, null, - $adr['text'], null, null, $adr['postalCode'], - $adr['locality'], $adr['administrativeArea'], $adr['country']); - if (!empty($adr['fixed_tel'])) { - $entry->addTel($group, $adr['fixed_tel']); + if (!$adr->postalCode || !$adr->locality || !$adr->country) { + $group = $entry->addWork(null, null, null, null, + $adr->text, null, null, null, + null, $adr->administrativeArea, null); + } else { + // TODO : link address to company + $group = $entry->addWork(null, null, null, null, + $adr->text, null, null, $adr->postalCode, + $adr->locality, $adr->administrativeArea, $adr->country); } - if (!empty($adr['fax_tel'])) { - $entry->addTel($group, $adr['display_tel'], true); - } - /* TODO : fetch email for jobs, too - if (!empty($pro['email'])) { - $entry->addMail($group, $pro['email']); + foreach ($adr->phones() as $phone) { + if ($phone->linkType() == Phone::TYPE_FIXED) { + $entry->addTel($group, $phone->display); + } else if ($phone->linkType() == Phone::TYPE_FAX) { + $entry->addTel($group, $phone->display, true); } - */ + } } // Melix if (!is_null($user)) { $alias = $user->emailAlias(); - if (!is_null($alias)) { + if (!is_null($alias) && $pf->alias_pub == 'pub') { $entry->addMail(null, $alias); } } @@ -131,7 +139,6 @@ class VCard extends PlVCard if (!is_null($user)) { $groups = $user->groups(); if (count($groups)) { - require_once "directory.enums.inc.php"; $gn = DirEnum::getOptions(DirEnum::GROUPESX); $gns = array(); foreach (array_keys($groups) as $gid) { @@ -144,16 +151,14 @@ class VCard extends PlVCard $binets = $pf->getBinets(); if (count($binets)) { - require_once "directory.enums.inc.php"; $bn = DirEnum::getOptions(DirEnum::BINETS); $bns = array(); foreach ($binets as $bid) { $bns[$bid] = $bn[$bid]; } - $entry->set('X-BINETS', join(', ', $bid)); + $entry->set('X-BINETS', join(', ', $bns)); } if (!empty($pf->section)) { - require_once "directory.enums.inc.php"; $sections = DirEnum::getOptions(DirEnum::SECTIONS); $entry->set('X-SECTION', $sections[$pf->section]); } @@ -162,8 +167,8 @@ class VCard extends PlVCard if ($this->photos) { $res = XDB::query( "SELECT attach, attachmime - FROM photo AS p - WHERE p.uid = {?}", $pf->id()); + FROM profile_photos AS p + WHERE p.pid = {?}", $pf->id()); if ($res->numRows()) { list($data, $type) = $res->fetchOneRow(); $entry->setPhoto($data, strtoupper($type));