%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/users/ |
Current File : //www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/users/manager.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ /** * @package Users */ class CApiUsersManager extends AApiManagerWithStorage { /** * @param CApiGlobalManager &$oManager */ public function __construct(CApiGlobalManager &$oManager, $sForcedStorage = '') { parent::__construct('users', $oManager, $sForcedStorage); $this->inc('classes.enum'); $this->inc('classes.user'); $this->inc('classes.account'); $this->inc('classes.caluser'); $this->inc('classes.identity'); } /** * @param string $sEmail * @return CAccount */ public function GetAccountOnLogin($sEmail) { $oAccount = null; try { CApi::Plugin()->RunHook('api-get-account-on-login-precall', array(&$sEmail, &$oAccount)); if (null === $oAccount) { $oAccount = $this->oStorage->GetAccountOnLogin($sEmail); } CApi::Plugin()->RunHook('api-change-account-on-login', array(&$oAccount)); } catch (CApiBaseException $oException) { $oAccount = false; $this->setLastException($oException); } return $oAccount; } /** * @param int $iAccountId * @return CAccount */ public function GetAccountById($iAccountId) { $oAccount = null; try { if (is_numeric($iAccountId)) { $iAccountId = (int) $iAccountId; CApi::Plugin()->RunHook('api-get-account-by-id-precall', array(&$iAccountId, &$oAccount)); if (null === $oAccount) { $oAccount = $this->oStorage->GetAccountById($iAccountId); } // Defautl account extension if ($oAccount instanceof CAccount) { if ($oAccount->IsInternal) { $oAccount->EnableExtension(CAccount::DisableAccountDeletion); $oAccount->EnableExtension(CAccount::ChangePasswordExtension); } if (EMailProtocol::IMAP4 === $oAccount->IncomingMailProtocol) { $oAccount->EnableExtension(CAccount::SpamFolderExtension); } if (CApi::GetConf('labs.webmail.disable-folders-manual-sort', false)) { $oAccount->EnableExtension(CAccount::DisableFoldersManualSort); } if (CApi::GetConf('sieve', false)) { $aSieveDomains = CApi::GetConf('sieve.config.domains', array()); if (!is_array($aSieveDomains)) { $aSieveDomains = array(); } if ($oAccount->IsInternal || (is_array($aSieveDomains) && 0 < count($aSieveDomains))) { $aSieveDomains = array_map('trim', $aSieveDomains); $aSieveDomains = array_map('strtolower', $aSieveDomains); if ($oAccount->IsInternal || in_array($oAccount->IncomingMailServer, $aSieveDomains)) { if (CApi::GetConf('sieve.autoresponder', false)) { $oAccount->EnableExtension(CAccount::AutoresponderExtension); } if (CApi::GetConf('sieve.forward', false)) { $oAccount->EnableExtension(CAccount::ForwardExtension); } if (CApi::GetConf('sieve.filters', false)) { $oAccount->EnableExtension(CAccount::SieveFiltersExtension); } } } } } CApi::Plugin()->RunHook('api-change-account-by-id', array(&$oAccount)); } else { throw new CApiBaseException(Errs::Validation_InvalidParameters); } } catch (CApiBaseException $oException) { $oAccount = false; $this->setLastException($oException); } return $oAccount; } /** * @param int $iUserId * @return CUser | false */ public function GetUserById($iUserId) { $oUser = null; try { if (is_numeric($iUserId)) { $iUserId = (int) $iUserId; CApi::Plugin()->RunHook('api-get-user-by-id-precall', array(&$iUserId, &$oUser)); if (null === $oUser) { $oUser = $this->oStorage->GetUserById($iUserId); } CApi::Plugin()->RunHook('api-change-user-by-id', array(&$oUser)); } else { throw new CApiBaseException(Errs::Validation_InvalidParameters); } } catch (CApiBaseException $oException) { $oUser = false; $this->setLastException($oException); } return $oUser; } /** * @param int $iUserId * @return int */ public function GetDefaultAccountDomainId($iUserId) { $iResult = 0; try { $iResult = $this->oStorage->GetDefaultAccountDomainId($iUserId); } catch (CApiBaseException $oException) { $this->setLastException($oException); } return $iResult; } /** * @param int $iUserId * @return int */ public function GetDefaultAccountId($iUserId) { $iResult = 0; try { $iResult = $this->oStorage->GetDefaultAccountId($iUserId); } catch (CApiBaseException $oException) { $this->setLastException($oException); } return $iResult; } /** * @param int $iUserId * @return CAccount */ public function GetDefaultAccount($iUserId) { $iAccountId = $this->GetDefaultAccountId($iUserId); return $this->GetAccountById($iAccountId); } /** * @param string $sEmail * @return int */ public function GetAccountUsedSpaceInKBytesByEmail($sEmail) { $iResult = 0; try { $iResult = $this->oStorage->GetAccountUsedSpaceInKBytesByEmail($sEmail); } catch (CApiBaseException $oException) { $this->setLastException($oException); } return $iResult; } /** * @param CIdentity &$oIdentity * @return bool */ public function CreateIdentity(CIdentity &$oIdentity) { $bResult = false; try { if ($oIdentity->Validate()) { if (!$this->oSettings->GetConf('WebMail/AllowIdentities') || $oIdentity->Virtual || !$this->oStorage->CreateIdentity($oIdentity)) { throw new CApiManagerException(Errs::UserManager_IdentityCreateFailed); } $bResult = true; } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CAccount $oAccount * @param CTenant $oTenant * @param bool $bUpdate * * @return bool * * @throws CApiManagerException */ private function validateAccountSubscriptionLimits(&$oAccount, $oTenant, $bCreate = false) { // TODO subscriptions // if (CApi::GetConf('capa', false) && $oAccount && $oTenant) // { // $oSubscriptionsApi = CApi::Manager('subscriptions'); // /* @var $oSubscriptionsApi CApiSubscriptionsManager */ // // $oTenantsApi = CApi::Manager('tenants'); // /* @var $oTenantsApi CApiTenantsManager */ // // if ($oSubscriptionsApi && $oTenantsApi && $oAccount->IsDefaultAccount && !$oAccount->IsDisabled) // { // if (0 < $oAccount->User->IdSubscription) // { // $oSub = $oSubscriptionsApi->GetSubscriptionById($oAccount->User->IdSubscription); // if (/* @var $oSub CSubscription */ $oSub) // { // $aUsage = $oTenantsApi->GetSubscriptionUserUsage($oTenant->IdTenant, // $bCreate ? null : $oAccount->IdUser); // // $iLimit = is_array($aUsage) && isset($aUsage[$oAccount->User->IdSubscription]) // ? $aUsage[$oAccount->User->IdSubscription] : 0; // // if ($iLimit + 1 <= $oSub->Limit) // { // if ($bCreate) // { // $oAccount->User->Capa = $oSub->Capa; // } // // return true; // } // } // // if ($bCreate) // { // throw new CApiManagerException(Errs::TenantsManager_AccountCreateUserLimitReached); // } // else // { // throw new CApiManagerException(Errs::TenantsManager_AccountUpdateUserLimitReached); // } // } // } // } return false; } /** * @param CAccount &$oAccount * @param bool $bWithMailConnection = true * @return bool */ public function CreateAccount(CAccount &$oAccount, $bWithMailConnection = true) { $bResult = false; try { if ($oAccount->Validate()) { if (!$this->AccountExists($oAccount)) { $oAccount->IncomingMailUseSSL = in_array($oAccount->IncomingMailPort, array(993, 995)); $oAccount->OutgoingMailUseSSL = in_array($oAccount->OutgoingMailPort, array(465)); /* @var $oApiLicensingManager CApiLicensingManager */ $oApiLicensingManager = CApi::Manager('licensing'); if ($oApiLicensingManager) { $isValidKey = $oApiLicensingManager->IsValidKey() ; if (!$isValidKey && in_array($oApiLicensingManager->GetLicenseType(), array(11, 13, 14))) { throw new CApiManagerException(Errs::UserManager_LicenseKeyIsOutdated); } else if (!$isValidKey) { throw new CApiManagerException(Errs::UserManager_LicenseKeyInvalid); } if ($oAccount->IsDefaultAccount && !$oApiLicensingManager->IsValidLimit(true)) { throw new CApiManagerException(Errs::UserManager_AccountCreateUserLimitReached); } } if (0 < $oAccount->Domain->IdTenant && CApi::GetConf('tenant', false)) { /* @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 { if (0 < $oTenant->UserCountLimit && $oTenant->UserCountLimit <= $oTenant->GetUserCount()) { throw new CApiManagerException(Errs::TenantsManager_AccountCreateUserLimitReached); } $this->validateAccountSubscriptionLimits($oAccount, $oTenant, true); } if (0 < $oTenant->QuotaInMB) { $iSize = $oTenantsApi->GetTenantAllocatedSize($oTenant->IdTenant); if (((int) ($oAccount->RealQuotaSize() / 1024)) + $iSize > $oTenant->QuotaInMB) { throw new CApiManagerException(Errs::TenantsManager_QuotaLimitExided); } } } } $bConnectValid = true; $aConnectErrors = array(false, false); if ($bWithMailConnection && !$oAccount->IsMailingList && !$oAccount->IsInternal) { $bConnectValid = false; $iConnectTimeOut = CApi::GetConf('socket.connect-timeout', 10); $iSocketTimeOut = CApi::GetConf('socket.get-timeout', 20); CApi::Plugin()->RunHook('webmail-imap-update-socket-timeouts', array(&$iConnectTimeOut, &$iSocketTimeOut)); try { $oImapClient = \MailSo\Imap\ImapClient::NewInstance(); $oImapClient->SetTimeOuts($iConnectTimeOut, $iSocketTimeOut); $oImapClient->SetLogger(\CApi::MailSoLogger()); $oImapClient->Connect($oAccount->IncomingMailServer, $oAccount->IncomingMailPort, $oAccount->IncomingMailUseSSL ? \MailSo\Net\Enumerations\ConnectionSecurityType::SSL : \MailSo\Net\Enumerations\ConnectionSecurityType::NONE); $aConnectErrors[0] = true; $sProxyAuthUser = !empty($oAccount->CustomFields['ProxyAuthUser']) ? $oAccount->CustomFields['ProxyAuthUser'] : ''; $oImapClient->Login($oAccount->IncomingMailLogin, $oAccount->IncomingMailPassword, $sProxyAuthUser); $aConnectErrors[1] = true; $bConnectValid = true; $oImapClient->LogoutAndDisconnect(); } catch (\Exception $oExceprion) {} } if ($bConnectValid) { if (!$this->oStorage->CreateAccount($oAccount)) { throw new CApiManagerException(Errs::UserManager_AccountCreateFailed); } if ($oAccount && $oAccount->IsDefaultAccount) { /* @var $oApiContactsManager CApiContactsManager */ $oApiContactsManager = CApi::Manager('maincontacts'); if ($oApiContactsManager && 'db' === CApi::GetManager()->GetStorageByType('maincontacts')) { $oContact = $oApiContactsManager->NewContactObject(); $oContact->BusinessEmail = $oAccount->Email; $oContact->PrimaryEmail = EPrimaryEmailType::Business; $oContact->FullName = $oAccount->FriendlyName; $oContact->Type = EContactType::GlobalAccounts; $oContact->IdTypeLink = $oAccount->IdUser; $oContact->IdDomain = 0 < $oAccount->IdDomain ? $oAccount->IdDomain : 0; $oContact->IdTenant = $oAccount->Domain ? $oAccount->Domain->IdTenant : 0; $oApiContactsManager->CreateContact($oContact); } } CApi::Plugin()->RunHook('statistics.signup', array(&$oAccount)); } else { if ($aConnectErrors[0]) { throw new CApiManagerException(Errs::UserManager_AccountAuthenticationFailed); } else { throw new CApiManagerException(Errs::UserManager_AccountConnectToMailServerFailed); } } } else { throw new CApiManagerException(Errs::UserManager_AccountAlreadyExists); } } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param array $aAccountsIds * @param bool $bIsEnabled * @return bool */ public function EnableAccounts($aAccountsIds, $bIsEnabled) { $bResult = false; try { $bResult = $this->oStorage->EnableAccounts($aAccountsIds, $bIsEnabled); } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CAccount &$oAccount * @return bool */ public function UpdateAccount(CAccount &$oAccount) { $bResult = false; try { if ($oAccount->Validate()) { $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->RealQuotaSize() / 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->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); } } } $bResult = true; } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CIdentity &$oIdentity * @return bool */ public function UpdateIdentity(CIdentity &$oIdentity) { $bResult = false; try { if ($oIdentity->Validate()) { $bUseOnlyHookUpdate = false; CApi::Plugin()->RunHook('api-update-identity', array(&$oIdentity, &$bUseOnlyHookUpdate)); if ($bUseOnlyHookUpdate) { } else if ($oIdentity->Virtual) { $oAccount = $this->GetAccountById($oIdentity->IdAccount); if ($oAccount && $oIdentity->IdUser === $oAccount->IdUser) { $oAccount->FriendlyName = $oIdentity->FriendlyName; $oAccount->Signature = $oIdentity->Signature; $oAccount->SignatureType = $oIdentity->SignatureType; $oAccount->SignatureOptions = $oIdentity->UseSignature ? EAccountSignatureOptions::AddToAll : EAccountSignatureOptions::DontAdd; $bResult = $this->UpdateAccount($oAccount); } } else if (!$this->oStorage->UpdateIdentity($oIdentity)) { $this->moveStorageExceptionToManager(); throw new CApiManagerException(Errs::UserManager_IdentityUpdateFailed); } } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param int $iUserId * @return bool */ public function UpdateAccountLastLoginAndCount($iUserId) { $bResult = false; try { if (!$this->oStorage->UpdateAccountLastLoginAndCount($iUserId)) { $this->moveStorageExceptionToManager(); throw new CApiManagerException(Errs::UserManager_AccountUpdateFailed); } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CAccount $oAccount * @param int $iAppendSize * @return bool */ public function UpdateAccountFilesQuotaUsage($oAccount, $iAppendSize) { $bResult = false; try { // TODO // if (!$this->oStorage->UpdateAccountLastLoginAndCount($iUserId)) // { // $this->moveStorageExceptionToManager(); // throw new CApiManagerException(Errs::UserManager_AccountUpdateFailed); // } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CAccount $oAccount * @return bool */ public function AccountExists(CAccount $oAccount) { $bResult = false; try { if ($oAccount->IsDefaultAccount) { $bResult = $this->oStorage->AccountExists($oAccount); } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param int $iIdentityId * @return bool */ public function DeleteIdentity($iIdentityId) { $bResult = false; try { if (0 < $iIdentityId) { $bResult = $this->oStorage->DeleteIdentity($iIdentityId); } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param CAccount $oAccount * @return bool */ public function DeleteAccount($oAccount) { $bResult = false; try { if (!$oAccount) { $this->setLastException(new CApiManagerException(Errs::Main_UnknownError)); return false; } if ($oAccount->IsDefaultAccount) { if (0 === $oAccount->IdTenant && \strtolower($oAccount->Email) === \strtolower($this->oSettings->GetConf('Helpdesk/AdminEmailAccount'))) { $this->setLastException(new CApiManagerException(Errs::HelpdeskManager_AccountCannotBeDeleted)); return false; } else if (0 < $oAccount->IdTenant) { $oApiTenantsManager = CApi::Manager('tenants'); /* @var $oApiTenantsManager CApiTenantsManager */ if ($oApiTenantsManager) { $oTenant = $oApiTenantsManager->GetTenantById($oAccount->IdTenant); /* @var $oTenant CTenant */ if (\strtolower($oAccount->Email) === $oTenant->HelpdeskAdminEmailAccount) { $this->setLastException(new CApiManagerException(Errs::HelpdeskManager_AccountCannotBeDeleted)); return false; } } } } if ($oAccount && $this->oStorage->DeleteAccount($oAccount->IdAccount)) { if ($oAccount->IsInternal) { /* @var $oApiMailSuiteManager CApiMailSuiteManager */ $oApiMailSuiteManager = CApi::Manager('mailsuite'); if ($oApiMailSuiteManager) { $oApiMailSuiteManager->DeleteMailAliases($oAccount); $oApiMailSuiteManager->DeleteMailForwards($oAccount); $oApiMailSuiteManager->DeleteMailDir($oAccount); } } if ($oAccount->IsDefaultAccount) { /* @var $oApiContactsManager CApiContactsManager */ $oApiContactsManager = CApi::Manager('contacts'); if ($oApiContactsManager) { $oApiContactsManager->ClearAllContactsAndGroups($oAccount); } /* @var $oApiCalendarManager CApiCalendarManager */ $oApiCalendarManager = CApi::Manager('calendar'); if ($oApiCalendarManager) { $oApiCalendarManager->ClearAllCalendars($oAccount); } /* @var $oApiDavManager CApiDavManager */ $oApiDavManager = CApi::Manager('dav'); if ($oApiDavManager) { $oApiDavManager->DeletePrincipal($oAccount); } /* @var $oApiFilestorageManager CApiFilestorageManager */ $oApiFilestorageManager = CApi::Manager('filestorage'); if ($oApiFilestorageManager) { $oApiFilestorageManager->ClearAllFiles($oAccount); } /* @var $oApiSocialManager CApiSocialManager */ $oApiSocialManager = CApi::Manager('social'); if ($oApiSocialManager) { $oApiSocialManager->DeleteSocialByAccountId($oAccount->IdAccount); } if (0 < $oAccount->User->IdHelpdeskUser) { /* @var $oApiHelpdeskManager CApiHelpdeskManager */ $oApiHelpdeskManager = CApi::Manager('helpdesk'); if ($oApiHelpdeskManager) { $oApiHelpdeskManager->SetUserAsBlocked($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser); } } } CApi::Log('FS: Delete "/mail/" and "/temp/" folders'); // TODO move in storage $sMailRoot = CApi::DataPath().'/mail/'; $sTmpRoot = CApi::DataPath().'/temp/'; $sPath = strtolower($oAccount->Email.'.'.$oAccount->IdAccount); $sPath = $sPath{0}.'/'.$sPath; api_Utils::RecRmdir($sMailRoot.$sPath); api_Utils::RecRmdir($sTmpRoot.$sPath); $bResult = true; } else if (null === $oAccount) { $this->setLastException(new CApiManagerException(Errs::UserManager_AccountDoesNotExist)); } } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param int $iAccountId * @return bool */ public function DeleteAccountById($iAccountId) { $bResult = false; $oAccount = $this->GetAccountById((int) $iAccountId); if ($oAccount) { $bResult = $this->DeleteAccount($oAccount); } else { /* @var $oApiMailSuiteManager CApiMailSuiteManager */ $oApiMailSuiteManager = CApi::Manager('mailsuite'); if ($oApiMailSuiteManager) { $oMailingList = $oApiMailSuiteManager->GetMailingListById((int) $iAccountId); if ($oMailingList) { $bResult = $oApiMailSuiteManager->DeleteMailingList($oMailingList); } } } return $bResult; } /** * @param string $sAccountToDelete * @return bool */ public function DeleteAccountByEmail($sAccountToDelete) { $oAccount = $this->GetAccountOnLogin($sAccountToDelete); return $this->DeleteAccount($oAccount); } /** * @param string $iUserId * @param string $sEmail * @return bool */ public function SetSafetySender($iUserId, $sEmail) { $aResult = false; try { $aResult = $this->oStorage->SetSafetySender($iUserId, $sEmail); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param string $iUserId * @param string $sEmail * @return bool */ public function GetSafetySender($iUserId, $sEmail, $bUseChache = false) { static $aCache = array(); if ($bUseChache && isset($aCache[$sEmail.'/'.$iUserId])) { return $aCache[$sEmail.'/'.$iUserId]; } $bResult = false; try { $bResult = $this->oStorage->GetSafetySender($iUserId, $sEmail); } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } if ($bUseChache) { $aCache[$sEmail.'/'.$iUserId] = $bResult; } return $bResult; } /** * @param string $iUserId * @return bool */ public function ClearSafetySenders($iUserId) { $aResult = false; try { $aResult = $this->oStorage->ClearSafetySenders($iUserId); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iUserId * @return array | false */ public function GetUserIdList($iUserId) { $aResult = false; try { $aResult = $this->oStorage->GetUserIdList($iUserId); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iIdentityId * @return CIdentity | bool */ public function GetIdentity($iIdentityId) { $oResult = false; try { $oResult = $this->oStorage->GetIdentity($iIdentityId); } catch (CApiBaseException $oException) { $oResult = false; $this->setLastException($oException); } return $oResult; } /** * @param CAccount $oAccount * @return array|bool */ public function GetIdentities($oAccount) { $aResult = false; try { $aResult = $this->oStorage->GetIdentities($oAccount); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param CAccount $oAccount * @return array|bool */ public function GetIdentitiesByUserID($oAccount) { $aResult = false; try { $aResult = $this->oStorage->GetIdentitiesByUserID($oAccount); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iUserId * * @return array | false [IdAccount => [IsDefault, Email]] */ public function GetUserAccountListInformation($iUserId) { $aResult = false; try { $aResult = $this->oStorage->GetUserAccountListInformation($iUserId); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iDomainId * @param int $iPage * @param int $iUsersPerPage * @param string $sOrderBy = 'email' * @param bool $bOrderType = true * @param string $sSearchDesc = '' * @return array | false [IdAccount => [IsMailingList, Email, FriendlyName, IsDisabled, IdUser, StorageQuota, LastLogin]] */ public function GetUserList($iDomainId, $iPage, $iUsersPerPage, $sOrderBy = 'email', $bOrderType = true, $sSearchDesc = '') { $aResult = false; try { $aResult = $this->oStorage->GetUserList($iDomainId, $iPage, $iUsersPerPage, $sOrderBy, $bOrderType, $sSearchDesc); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iDomainId * @param int $iPage * @param int $iUsersPerPage * @return array | false */ public function GetUserListIdWithOutOrder($iDomainId, $iPage, $iUsersPerPage) { $aResult = false; try { $aResult = $this->oStorage->GetUserListIdWithOutOrder($iDomainId, $iPage, $iUsersPerPage); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @return array | false */ public function GetUserFullList() { $aResult = false; try { $aResult = $this->oStorage->GetUserFullList(); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @return array|false */ public function GetUserTwilioNumbers($iTenantId) { $aResult = false; try { $aResult = $this->oStorage->GetUserTwilioNumbers($iTenantId); } catch (CApiBaseException $oException) { $aResult = false; $this->setLastException($oException); } return $aResult; } /** * @param int $iDomainId * @param string $sSearchDesc = '' * @return int | false */ public function GetUserCount($iDomainId, $sSearchDesc = '') { $iResult = false; try { $iResult = $this->oStorage->GetUserCount($iDomainId, $sSearchDesc); } catch (CApiBaseException $oException) { $iResult = false; $this->setLastException($oException); } return $iResult; } /** * @param int $iTenantId * @return int | false */ public function GetUserCountByTenantId($iTenantId) { $iResult = false; try { $iResult = $this->oStorage->GetUserCountByTenantId($iTenantId); } catch (CApiBaseException $oException) { $iResult = false; $this->setLastException($oException); } return $iResult; } /** * @param string $sEmail * @return CAccount */ public function GetAppointmentAccount($sEmail) { $oAccount = null; try { CApi::Plugin()->RunHook('api-get-appointment-account-precall', array(&$sEmail, &$oAccount)); if (null === $oAccount) { $oAccount = $this->oStorage->GetAppointmentAccount($sEmail); } CApi::Plugin()->RunHook('api-change-appointment-account', array(&$oAccount)); } catch (CApiBaseException $oException) { $this->setLastException($oException); } return $oAccount; } /** * @return int */ public function GetCurrentNumberOfUsers() { $iResult = 0; try { $iResult = $this->oStorage->GetCurrentNumberOfUsers(); } catch (CApiBaseException $oException) { $this->setLastException($oException); } return $iResult; } /** * @param int $iUserId * @return CCalUser | false */ public function GetCalUserByUserId($iUserId) { $oCalUser = null; try { if (is_numeric($iUserId)) { $iUserId = (int) $iUserId; CApi::Plugin()->RunHook('api-get-cal-user-by-id-precall', array(&$iUserId, &$oCalUser)); if (null === $oCalUser) { $oCalUser = $this->oStorage->GetCalUserByUserId($iUserId); } CApi::Plugin()->RunHook('api-change-cal-user-by-id', array(&$oCalUser)); } else { throw new CApiBaseException(Errs::Validation_InvalidParameters); } } catch (CApiBaseException $oException) { $oCalUser = false; $this->setLastException($oException); } return $oCalUser; } /** * @param CCalUser &$oCalUser * @return bool */ public function CreateCalUser(CCalUser &$oCalUser) { $bResult = false; try { if ($oCalUser->Validate()) { $oExCalUser = $this->GetCalUserByUserId($oCalUser->IdUser); if ($oExCalUser instanceof CCalUser) { throw new CApiManagerException(Errs::UserManager_CalUserCreateFailed); } if (!$this->oStorage->CreateCalUser($oCalUser)) { throw new CApiManagerException(Errs::UserManager_CalUserCreateFailed); } } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param int $iUserId * @return CCalUser | false */ public function GetOrCreateCalUserByUserId($iUserId) { $oCalUser = $this->GetCalUserByUserId($iUserId); if (null === $oCalUser) { $oCalUser = new CCalUser($iUserId); CApi::Plugin()->RunHook('api-create-cal-user', array(&$iUserId, &$oCalUser)); if ($oCalUser && !$this->CreateCalUser($oCalUser)) { $oCalUser = false; } if ($oCalUser) { CApi::Plugin()->RunHook('api-create-cal-user-success', array(&$iUserId, &$oCalUser)); } } return $oCalUser; } /** * @param CCalUser $oCalUser * @return bool */ public function UpdateCalUser(CCalUser $oCalUser) { $bResult = false; try { if ($oCalUser->Validate()) { $bUseOnlyHookUpdate = false; CApi::Plugin()->RunHook('api-update-cal-user', array(&$oCalUser, &$bUseOnlyHookUpdate)); if (!$bUseOnlyHookUpdate) { if (!$this->oStorage->UpdateCalUser($oCalUser)) { $this->moveStorageExceptionToManager(); throw new CApiManagerException(Errs::UserManager_CalUserUpdateFailed); } } } $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } /** * @param int $iUserId * @return bool */ public function DeleteCalUserByUserId($iUserId) { $bResult = false; try { $this->oStorage->DeleteCalUserByUserId($iUserId); $bResult = true; } catch (CApiBaseException $oException) { $bResult = false; $this->setLastException($oException); } return $bResult; } }