/** * @return array */ public function AjaxContactUpdate() { $oAccount = $this->getDefaultAccountFromParam(); $bGlobal = '1' === $this->getParamValue('Global', '0'); $sContactId = $this->getParamValue('ContactId', ''); $bSharedToAll = '1' === $this->getParamValue('SharedToAll', '0'); $iTenantId = $bSharedToAll ? $oAccount->IdTenant : null; if ($bGlobal && $this->oApiCapability->IsGlobalContactsSupported($oAccount, true)) { $oApiContacts = $this->ApiGContacts(); } else { if (!$bGlobal && $this->oApiCapability->IsPersonalContactsSupported($oAccount)) { $oApiContacts = $this->ApiContacts(); } } if ($oApiContacts) { $oContact = $oApiContacts->GetContactById($bGlobal ? $oAccount : $oAccount->IdUser, $sContactId, false, $iTenantId); if ($oContact) { $this->populateContactObject($oContact, $oContact->ItsMe); if ($oApiContacts->UpdateContact($oContact)) { return $this->TrueResponse($oAccount, __FUNCTION__); } else { switch ($oApiContacts->GetLastErrorCode()) { case \Errs::Sabre_PreconditionFailed: throw new \ProjectSeven\Exceptions\ClientException(\ProjectSeven\Notifications::ContactDataHasBeenModifiedByAnotherApplication); } } } } else { throw new \ProjectSeven\Exceptions\ClientException(\ProjectSeven\Notifications::ContactsNotAllowed); } return $this->FalseResponse($oAccount, __FUNCTION__); }
/** * @param string $path * @param \Sabre\DAV\INode $node * @param array $requestedProperties * @param array $returnedProperties * @return void */ public function beforeGetProperties($path, \Sabre\DAV\INode $node, &$requestedProperties, &$returnedProperties) { $oAccount = $this->getAccount(); if (isset($oAccount)) { $carddavPlugin = $this->getPlugin('Sabre\\CardDAV\\Plugin'); if (null !== $oAccount && isset($carddavPlugin) && $this->oApiCapaManager->IsGlobalContactsSupported($oAccount, false)) { $carddavPlugin->directories = array('gab'); } } }