/** * @param CContact $oContact * @return bool */ public function createContact($oContact) { $bResult = false; if (isset($oContact)) { $this->init($oContact->IdUser); $sUUID = \Sabre\DAV\UUIDUtil::getUUID(); if (empty($oContact->IdContact)) { $oContact->IdContact = $sUUID; } $vCard = new \Sabre\VObject\Component('VCARD'); CApiContactsVCardHelper::UpdateVCardFromContact($oContact, $vCard); $sUrl = $this->AddressBookHomeSet . \afterlogic\DAV\Constants::ADDRESSBOOK_DEFAULT_NAME . '/' . $oContact->IdContact . '.vcf'; $this->Dav->CreateItem($sUrl, $vCard->serialize()); $bResult = true; /* $oContact->initBeforeChange(); $sEmail = $oContact->ViewEmail; $oAddressBook = $this->getAddressBook($oContact->IdUser, 'Collected'); $aContactsIds = $this->searchContactItemsByEmail($oContact->IdUser, $sEmail, $oAddressBook); $this->deleteContactsByAddressBook($oContact->IdUser, $aContactsIds, $oAddressBook); */ } return $bResult; }
/** * @return array */ public function AjaxContactVCardUpload() { $oAccount = $this->getDefaultAccountFromParam(); $mResult = false; if ($this->oApiCapability->isContactsSupported($oAccount)) { $bGlobal = '1' === (string) $this->getParamValue('Global', '0'); $sContactId = (string) $this->getParamValue('ContactId', ''); $bSharedWithAll = '1' === (string) $this->getParamValue('SharedWithAll', '0'); $iTenantId = $bSharedWithAll ? $oAccount->IdTenant : null; if ($bGlobal) { if (!$this->oApiCapability->isGlobalContactsSupported($oAccount, true)) { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::ContactsNotAllowed); } } else { if (!$this->oApiCapability->isPersonalContactsSupported($oAccount)) { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::ContactsNotAllowed); } } $oApiContacts = $this->ApiContacts(); $oApiGContacts = $this->ApiGContacts(); $oContact = $bGlobal ? $oApiGContacts->getContactById($oAccount, $sContactId) : $oApiContacts->getContactById($oAccount->IdUser, $sContactId, false, $iTenantId); if ($oContact) { $sTempName = md5('VCARD/' . $oAccount->IdUser . '/' . $oContact->IdContact . '/' . ($bGlobal ? '1' : '0') . '/'); $oVCard = new \Sabre\VObject\Component\VCard(); \CApiContactsVCardHelper::UpdateVCardFromContact($oContact, $oVCard); $sData = $oVCard->serialize(); if ($this->ApiFileCache()->put($oAccount, $sTempName, $sData)) { $mResult = array('Name' => 'contact-' . $oContact->IdContact . '.vcf', 'TempName' => $sTempName, 'MimeType' => 'text/vcard', 'Size' => strlen($sData), 'Hash' => ''); $mResult['MimeType'] = \MailSo\Base\Utils::MimeContentType($mResult['Name']); $mResult['Hash'] = \CApi::EncodeKeyValues(array('TempFile' => true, 'AccountID' => $oAccount->IdAccount, 'Name' => $mResult['Name'], 'TempName' => $sTempName)); return $this->DefaultResponse($oAccount, __FUNCTION__, $mResult); } } throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::CanNotGetContact); } else { throw new \ProjectCore\Exceptions\ClientException(\ProjectCore\Notifications::ContactsNotAllowed); } return $this->DefaultResponse($oAccount, __FUNCTION__, $mResult); }
/** * @param int $iUserId * @param string $sEmail * @return bool */ public function UpdateSuggestTable($iUserId, $aEmails) { $bResult = false; $this->Init($iUserId); $oDefautltAB = $this->getAddressBook($iUserId, \afterlogic\DAV\Constants::ADDRESSBOOK_DEFAULT_NAME); $oCollectedAB = $this->getAddressBook($iUserId, \afterlogic\DAV\Constants::ADDRESSBOOK_COLLECTED_NAME); $aCollectedContactItems = $this->getObjectItems($iUserId, $oCollectedAB); foreach ($aEmails as $sEmail => $sName) { $mFindContact = false; if ($aCollectedContactItems) { foreach ($aCollectedContactItems as $oCollectedContactItem) { $oVCard = \Sabre\VObject\Reader::read($oCollectedContactItem->get()); if (isset($oVCard->EMAIL)) { foreach ($oVCard->EMAIL as $oEmail) { if (strtolower((string) $oEmail) == strtolower($sEmail)) { $mFindContact = $oCollectedContactItem; break; } } } unset($oVCard); } } $aDefaultContactIds = $this->searchContactItemsByEmail($iUserId, $sEmail, $oDefautltAB); if (count($aDefaultContactIds) === 0) { if ($mFindContact === false) { $sUUID = \Sabre\DAV\UUIDUtil::getUUID(); $oContact = new CContact(); $oContact->FullName = $sName; $oContact->HomeEmail = $sEmail; $oContact->IdContactStr = $sUUID; $oVCard = new \Sabre\VObject\Component\VCard(); $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'} = '1'; CApiContactsVCardHelper::UpdateVCardFromContact($oContact, $oVCard); $oCollectedAB->createFile($sUUID . '.vcf', $oVCard->serialize()); $bResult = true; } else { if ($mFindContact instanceof \Sabre\CardDAV\Card) { $oVCard = \Sabre\VObject\Reader::read($mFindContact->get()); if (isset($oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'})) { $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'} = (int) $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'}->getValue() + 1; } else { $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'} = '1'; } $mFindContact->put($oVCard->serialize()); unset($oVCard); } } } else { foreach ($aDefaultContactIds as $sDefaultContactId) { $mDefaultContact = $this->geItem($iUserId, $oDefautltAB, $sDefaultContactId); if ($mDefaultContact !== false) { $oVCard = \Sabre\VObject\Reader::read($mDefaultContact->get()); if (isset($oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'})) { $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'} = (int) $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'}->getValue() + 1; } else { $oVCard->{'X-AFTERLOGIC-USE-FREQUENCY'} = '1'; } $mDefaultContact->put($oVCard->serialize()); unset($oVCard); } } if ($mFindContact instanceof \Sabre\CardDAV\Card) { $mFindContact->delete(); } } } return $bResult; }