/** * @param CAccount $oAccount * @param string $sAuthType * @param int $iDataType * @param string $sDataValue * @return bool */ public function updateAccount(CAccount &$oAccount, $sAuthType, $iDataType, $sDataValue) { $bResult = false; try { if ($oAccount->isValid()) { $this->oStorage->updateAccount($oAccount, $sAuthType, $iDataType, $sDataValue); } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; }
/** * Saves changes made to the account. * * @api * * @param CAccount &$oAccount Account object containing data to be saved. * @param bool $bSetIdentityDefault Default value is **false**.. If **true** account identity needs treatting as default. * * @return bool */ public function updateAccount(CAccount &$oAccount, $bSetIdentityDefault = false) { $bResult = false; try { if ($oAccount->isValid()) { $oAccount->IncomingMailUseSSL = in_array($oAccount->IncomingMailPort, array(993, 995)); $oAccount->OutgoingMailUseSSL = in_array($oAccount->OutgoingMailPort, array(465)); if (0 < $oAccount->Domain->IdTenant && CApi::GetConf('tenant', false) && null !== $oAccount->GetObsoleteValue('StorageQuota')) { /* @var $oTenantsApi CApiTenantsManager */ $oTenantsApi = CApi::Manager('tenants'); if ($oTenantsApi) { /* @var $oTenant CTenant */ $oTenant = $oTenantsApi->getTenantById($oAccount->Domain->IdTenant); if (!$oTenant) { throw new CApiManagerException(Errs::TenantsManager_TenantDoesNotExist); } else { $this->_validateAccountSubscriptionLimits($oAccount, $oTenant, false); if (0 < $oTenant->QuotaInMB) { $iAccountStorageQuota = $oAccount->GetObsoleteValue('StorageQuota'); $iSize = $oTenantsApi->getTenantAllocatedSize($oTenant->IdTenant); $iSize -= (int) ($iAccountStorageQuota / 1024); if ((int) ($oAccount->getRealQuotaSize() / 1024) + $iSize > $oTenant->QuotaInMB) { throw new CApiManagerException(Errs::TenantsManager_QuotaLimitExided); } } } } } $bUseOnlyHookUpdate = false; CApi::Plugin()->RunHook('api-update-account', array(&$oAccount, &$bUseOnlyHookUpdate)); if (!$bUseOnlyHookUpdate) { if (!$this->oStorage->updateAccount($oAccount)) { $this->moveStorageExceptionToManager(); throw new CApiManagerException(Errs::UserManager_AccountUpdateFailed); } } if ($oAccount->IsDefaultAccount && 0 < $oAccount->User->IdHelpdeskUser) { /* @var $oApiHelpdeskManager CApiHelpdeskManager */ $oApiHelpdeskManager = CApi::Manager('helpdesk'); if ($oApiHelpdeskManager) { $oHelpdeskUser = $oApiHelpdeskManager->getUserById($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser); if ($oHelpdeskUser) { $oHelpdeskUser->MailNotifications = $oAccount->User->AllowHelpdeskNotifications; $oHelpdeskUser->Signature = $oAccount->User->HelpdeskSignature; $oHelpdeskUser->SignatureEnable = $oAccount->User->HelpdeskSignatureEnable; $oHelpdeskUser->Name = $oAccount->FriendlyName; $oApiHelpdeskManager->updateUser($oHelpdeskUser); } } } if ($oAccount->IsDefaultAccount && (null !== $oAccount->GetObsoleteValue('FriendlyName') && $oAccount->GetObsoleteValue('FriendlyName') !== $oAccount->FriendlyName || null !== $oAccount->GetObsoleteValue('HideInGAB') && $oAccount->GetObsoleteValue('HideInGAB') !== $oAccount->HideInGAB)) { /* @var $oApiGContactsManager CApiGcontactsManager */ $oApiGContactsManager = CApi::Manager('gcontacts'); if ($oApiGContactsManager) { $oContact = $oApiGContactsManager->getContactByTypeId($oAccount, $oAccount->IdUser, true); if ($oContact) { $oContact->FullName = $oAccount->FriendlyName; $oContact->HideInGAB = !!$oAccount->HideInGAB; $oApiGContactsManager->updateContact($oContact); } } } if ($bSetIdentityDefault) { $this->oStorage->updateIdentitiesDefaults(null, $oAccount->IdAccount); //TODO remove this from there } $bResult = true; } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; }