Example #1
0
 /**
  * @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;
 }
Example #2
0
 /**
  * @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);
 }
Example #3
0
 /**
  * @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;
 }