X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvcard.inc.php;h=2fb2e58a48198df2b39ec07b0f422c2d673fea9c;hb=d284f750d006b2988870f96ba55a01bf6144a358;hp=df91906914d9082e82515aaf7c1a87901cab71e0;hpb=bbc7476ed266ed900cc53d2a6623bb05eba64b47;p=platal.git diff --git a/include/vcard.inc.php b/include/vcard.inc.php index df91906..2fb2e58 100644 --- a/include/vcard.inc.php +++ b/include/vcard.inc.php @@ -1,6 +1,6 @@ visibility = Visibility::defaultForRead(Visibility::VIEW_PRIVATE); $this->freetext = $freetext; $this->photos = $photos; } public function addProfile($profile) { - $profile = Profile::get($profile); + $profile = Profile::get($profile, Profile::FETCH_ALL, $this->visibility); if ($profile) { $this->profile_list[] = $profile; $this->count++; @@ -68,17 +70,17 @@ 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); } // Emails if (!is_null($user)) { $entry->addMail(null, $user->bestalias, true); - $entry->addMail(null, $user->bestalias_alternate); if ($user->forlife != $user->bestalias) { $entry->addMail(null, $user->forlife); + } + if ($user->forlife_alternate != $user->bestalias) { $entry->addMail(null, $user->forlife_alternate); } } @@ -86,32 +88,59 @@ class VCard extends PlVCard // Homes $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->hasFlag('current'), $adr->hasFlag('mail'), $adr->hasFlag('mail')); + 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 { + $group = $entry->addHome(trim(Geocoder::getFirstLines($adr->text, $adr->postalCode, 4)), null, null, $adr->postalCode, + $adr->locality, $adr->administrativeArea, $adr->country, + $adr->hasFlag('current'), $adr->hasFlag('mail'), $adr->hasFlag('mail')); + } foreach ($adr->phones() as $phone) { - if ($phone->type == Phone::TYPE_FIXED) { + if ($phone->link_type == Phone::TYPE_FIXED) { $entry->addTel($group, $phone->display, false, true, true, false, false, $adr->hasFlag('current') && empty($pf->mobile)); - } else if ($phone->type == Phone::TYPE_FAX) { + } else if ($phone->link_type == Phone::TYPE_FAX) { $entry->addTel($group, $phone->display, true, false, false, false, false, false); } } } // 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); - foreach ($adr->phones() as $phone) { - if ($phone->type == Phone::TYPE_FIXED) { - $entry->addTel($group, $phone->display); + $jobs = $pf->getJobs(); + foreach ($jobs as $job) { + $terms_array = array(); + foreach ($job->terms as $term) { + $terms_array[] = $term->full_name; + } + $terms = implode(', ', $terms_array); + if ($job->address) { + if (!$job->address->postalCode || !$job->address->locality || !$job->address->country) { + $group = $entry->addWork($job->company->name, null, $job->description, $terms, + $job->address->text, null, null, null, + null, $job->address->administrativeArea, null); + } else { + $group = $entry->addWork($job->company->name, null, $job->description, $terms, + trim(Geocoder::getFirstLines($job->address->text, $job->address->postalCode, 4)), + null, null, $job->address->postalCode, + $job->address->locality, $job->address->administrativeArea, $job->address->country); + } + } else { + $group = $entry->addWork($job->company->name, null, $job->description, $terms, + null, null, null, null, + null, null, null); + } + if ($job->user_email) { + $entry->addMail($group, $job->user_email); + } + foreach ($job->phones as $phone) { + if ($phone->type == Phone::TYPE_MOBILE) { + $entry->addTel($group, $phone->display, false, true, true, false, true); } else if ($phone->type == Phone::TYPE_FAX) { $entry->addTel($group, $phone->display, true); + } else { + $entry->addTel($group, $phone->display, false, true, true); } } } @@ -119,14 +148,14 @@ class VCard extends PlVCard // Melix if (!is_null($user)) { $alias = $user->emailAlias(); - if (!is_null($alias)) { + if (!is_null($alias) && $pf->alias_pub == 'public') { $entry->addMail(null, $alias); } } // Custom fields if (!is_null($user)) { - $groups = $user->groups(); + $groups = $user->groups(true, true); if (count($groups)) { $gn = DirEnum::getOptions(DirEnum::GROUPESX); $gns = array(); @@ -148,16 +177,16 @@ class VCard extends PlVCard $entry->set('X-BINETS', join(', ', $bns)); } if (!empty($pf->section)) { - $sections = DirEnum::getOptions(DirEnum::SECTIONS); - $entry->set('X-SECTION', $sections[$pf->section]); + $entry->set('X-SECTION', $pf->section); } // Photo if ($this->photos) { $res = XDB::query( "SELECT attach, attachmime - FROM profile_photos AS p - WHERE p.pid = {?}", $pf->id()); + FROM profile_photos + WHERE pid = {?} AND pub IN ('public', {?})", + $pf->id(), $this->visibility->level()); if ($res->numRows()) { list($data, $type) = $res->fetchOneRow(); $entry->setPhoto($data, strtoupper($type)); @@ -167,5 +196,5 @@ class VCard extends PlVCard } } -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>