/** * Build and export data with VCard format * * @access public * @return string HTML content with menu and menu items */ function VCardBuild() { if (!$GLOBALS['app']->Session->Logged()) { return Jaws_HTTPError::Get(403); } require_once JAWS_PATH . 'gadgets/Addressbook/vCard.php'; $model = $this->gadget->model->load('AddressBook'); $agModel = $this->gadget->model->load('AddressBookGroup'); $user = (int) $GLOBALS['app']->Session->GetAttribute('user'); $ids = jaws()->request->fetch('adr:array'); $link = $this->gadget->urlMap('AddressBook', array(), true); if (empty($ids)) { Jaws_Header::Location($link); return false; } $addressItems = $model->GetAddresses($ids, $user); if (Jaws_Error::IsError($addressItems) || empty($addressItems)) { return Jaws_HTTPError::Get(404); } $result = ''; $nVCard = array('LastName', 'FirstName', 'AdditionalNames', 'Prefixes', 'Suffixes'); foreach ($addressItems as $addressItem) { $vCard = new vCard(); $names = explode(';', $addressItem['name']); foreach ($names as $key => $name) { $vCard->n($name, $nVCard[$key]); } $vCard->fn($names[3] . (trim($names[3]) == '' ? '' : ' ') . $names[1] . (trim($names[1]) == '' ? '' : ' ') . $names[0]); $vCard->nickname($addressItem['nickname']); $vCard->title($addressItem['title']); $adrGroups = $agModel->GetGroupNames($addressItem['address_id'], $user); $vCard->categories(implode(',', $adrGroups)); $this->FillVCardTypes($vCard, 'tel', $addressItem['tel_home'], $this->_TelTypes); $this->FillVCardTypes($vCard, 'tel', $addressItem['tel_work'], $this->_TelTypes); $this->FillVCardTypes($vCard, 'tel', $addressItem['tel_other'], $this->_TelTypes); $this->FillVCardTypes($vCard, 'email', $addressItem['email_home'], $this->_EmailTypes); $this->FillVCardTypes($vCard, 'email', $addressItem['email_work'], $this->_EmailTypes); $this->FillVCardTypes($vCard, 'email', $addressItem['email_other'], $this->_EmailTypes); $this->FillVCardTypes($vCard, 'adr', $addressItem['adr_home'], $this->_AdrTypes, '\\n'); $this->FillVCardTypes($vCard, 'adr', $addressItem['adr_work'], $this->_AdrTypes, '\\n'); $this->FillVCardTypes($vCard, 'adr', $addressItem['adr_other'], $this->_AdrTypes, '\\n'); $this->FillVCardTypes($vCard, 'url', $addressItem['url'], null, '\\n'); $vCard->note($addressItem['notes']); $result = $result . $vCard; } header("Content-Disposition: attachment; filename=\"" . 'address.vcf' . "\""); header("Content-type: application/csv"); header("Content-Length: " . strlen($result)); header("Pragma: no-cache"); header("Expires: 0"); header("Connection: close"); echo $result; exit; }