%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/users/classes/ |
Current File : //www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/users/classes/account.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. */ /** * @property int $IdAccount * @property int $IdUser * @property int $IdDomain * @property int $IdTenant * @property bool $IsInternal * @property bool $IsDisabled * @property bool $IsDefaultAccount * @property bool $IsMailingList * @property int $StorageQuota * @property int $StorageUsedSpace * @property string $Email * @property string $FriendlyName * @property int $IncomingMailProtocol * @property string $IncomingMailServer * @property int $IncomingMailPort * @property string $IncomingMailLogin * @property string $IncomingMailPassword * @property bool $IncomingMailUseSSL * @property string $PreviousMailPassword * @property string $OutgoingMailServer * @property int $OutgoingMailPort * @property string $OutgoingMailLogin * @property string $OutgoingMailPassword * @property int $OutgoingMailAuth * @property bool $OutgoingMailUseSSL * @property int $OutgoingSendingMethod * @property bool $HideInGAB * @property string $Signature * @property int $SignatureType * @property int $SignatureOptions * @property int $GlobalAddressBook * @property bool $AllowCompose * @property bool $AllowReply * @property bool $AllowForward * @property bool $DetectSpecialFoldersWithXList * @property mixed $CustomFields * @property bool $ForceSaveOnLogin * * @package Users * @subpackage Classes */ class CAccount extends api_AContainer { const ChangePasswordExtension = 'AllowChangePasswordExtension'; const AutoresponderExtension = 'AllowAutoresponderExtension'; const SpamFolderExtension = 'AllowSpamFolderExtension'; const DisableAccountDeletion = 'DisableAccountDeletion'; const DisableManageFolders = 'DisableManageFolders'; const SieveFiltersExtension = 'AllowSieveFiltersExtension'; const ForwardExtension = 'AllowForwardExtension'; const DisableManageSubscribe = 'DisableManageSubscribe'; const DisableFoldersManualSort = 'DisableFoldersManualSort'; const IgnoreSubscribeStatus = 'IgnoreSubscribeStatus'; /** * @var CUser */ public $User; /** * @var CDomain */ public $Domain; /** * @var array */ protected $aExtension; /** * @param CDomain $oDomain * @return void */ public function __construct($oDomain) { parent::__construct(get_class($this), 'IdAccount'); $this->Domain = $oDomain; $this->User = new CUser($oDomain); $this->aExtension = array(); $this->SetTrimer(array('Email', 'FriendlyName', 'IncomingMailServer', 'IncomingMailLogin', 'IncomingMailPassword', 'PreviousMailPassword', 'OutgoingMailServer', 'OutgoingMailLogin')); $this->SetLower(array(/*'Email', */'IncomingMailServer', /*'IncomingMailLogin',*/ 'OutgoingMailServer', /*'OutgoingMailLogin'*/)); $this->SetDefaults(array( 'IdAccount' => 0, 'IdUser' => 0, 'IdDomain' => $oDomain->IdDomain, 'IdTenant' => $oDomain->IdTenant, 'IsDefaultAccount' => true, 'IsInternal' => $oDomain->IsInternal, 'IsDisabled' => false, 'IsMailingList' => false, 'StorageQuota' => $oDomain->UserQuota, 'StorageUsedSpace' => 0, 'Email' => '', 'FriendlyName' => '', 'IncomingMailProtocol' => $oDomain->IncomingMailProtocol, 'IncomingMailServer' => $oDomain->IncomingMailServer, 'IncomingMailPort' => $oDomain->IncomingMailPort, 'IncomingMailLogin' => '', 'IncomingMailPassword' => '', 'IncomingMailUseSSL' => $oDomain->IncomingMailUseSSL, 'PreviousMailPassword' => '', 'OutgoingMailServer' => $oDomain->OutgoingMailServer, 'OutgoingMailPort' => $oDomain->OutgoingMailPort, 'OutgoingMailLogin' => '', 'OutgoingMailPassword' => '', 'OutgoingMailAuth' => $oDomain->OutgoingMailAuth, 'OutgoingMailUseSSL' => $oDomain->OutgoingMailUseSSL, 'OutgoingSendingMethod' => $oDomain->OutgoingSendingMethod, 'HideInGAB' => false, 'Signature' => '', 'SignatureType' => EAccountSignatureType::Html, 'SignatureOptions' => EAccountSignatureOptions::DontAdd, 'GlobalAddressBook' => $oDomain->GlobalAddressBook, 'AllowCompose' => true, 'AllowReply' => true, 'AllowForward' => true, 'DetectSpecialFoldersWithXList' => $oDomain->DetectSpecialFoldersWithXList, 'CustomFields' => '', 'ForceSaveOnLogin' => false, )); CApi::Plugin()->RunHook('api-account-construct', array(&$this)); } /** * @param CDomain $oDomain * @return CAccount */ public static function NewInstance($oDomain) { return new CAccount($oDomain); } /** * @return int */ public function GetDefaultTimeOffset() { return api_Utils::GetTimeOffset($this->User->DefaultTimeZone, $this->User->ClientTimeZone); } /** * @return string */ public function GetDefaultStrTimeZone() { return api_Utils::GetStrTimeZone($this->User->DefaultTimeZone, $this->User->ClientTimeZone); } /** * @param string $sExtensionName */ public function EnableExtension($sExtensionName) { $this->aExtension[] = $sExtensionName; $this->aExtension = array_unique($this->aExtension); } /** * @param string $sExtensionName */ public function DisableExtension($sExtensionName) { $aNewExtension = array(); $aExtension = $this->aExtension; foreach ($aExtension as $sExt) { if ($sExt !== $sExtensionName) { $aNewExtension[] = $sExt; } } $this->aExtension = array_unique($aNewExtension); } /** * @return bool */ public function IsEnabledExtension($sExtensionName) { return in_array($sExtensionName, $this->aExtension); } /** * @return array */ public function GetExtensions() { return $this->aExtension; } /** * @param string $sLogin * @param string $sAtChar = '@' */ public function InitLoginAndEmail($sLogin, $sAtChar = '@') { $this->Email = ''; $this->IncomingMailLogin = $sLogin; $sLoginPart = api_Utils::GetAccountNameFromEmail($sLogin); $sDomainPart = api_Utils::GetDomainFromEmail($sLogin); $sDomainName = (!$this->Domain->IsDefaultDomain) ? $this->Domain->Name : $sDomainPart; if (!empty($sDomainName)) { $this->Email = $sLoginPart.$sAtChar.$sDomainName; if ($this->Domain && $this->Domain->IsInternal && 0 < strlen($this->Domain->Name)) { $this->IncomingMailLogin = $sLoginPart.$sAtChar.$this->Domain->Name; } } } /** * @param stdClass $oRow */ public function InitByDbRow($oRow) { parent::InitByDbRow($oRow); if (!$this->Domain->IsDefaultDomain) { $this->IncomingMailProtocol = $this->Domain->IncomingMailProtocol; $this->IncomingMailServer = $this->Domain->IncomingMailServer; $this->IncomingMailPort = $this->Domain->IncomingMailPort; $this->IncomingMailUseSSL = $this->Domain->IncomingMailUseSSL; $this->OutgoingMailServer = $this->Domain->OutgoingMailServer; $this->OutgoingMailPort = $this->Domain->OutgoingMailPort; $this->OutgoingMailAuth = $this->Domain->OutgoingMailAuth; $this->OutgoingMailUseSSL = $this->Domain->OutgoingMailUseSSL; $this->OutgoingSendingMethod = $this->Domain->OutgoingSendingMethod; if (ESMTPAuthType::AuthSpecified === $this->OutgoingMailAuth) { $this->OutgoingMailLogin = $this->Domain->OutgoingMailLogin; $this->OutgoingMailPassword = $this->Domain->OutgoingMailPassword; } } if ($this->IsMailingList) { $this->IdUser = 0; } if ($this->IsInternal) { if ((int) CApi::GetConf('labs.unlim-quota-limit-size-in-kb', 104857600) <= $this->StorageQuota) { $this->StorageQuota = 0; $this->FlushObsolete('StorageQuota'); } $oApiUsersManager = /* @var $oApiUsersManager CApiUsersManager */ CApi::Manager('users'); if ($oApiUsersManager) { $this->StorageUsedSpace = $oApiUsersManager->GetAccountUsedSpaceInKBytesByEmail($this->Email); $this->FlushObsolete('StorageUsedSpace'); } } } public function InitBeforeChange() { parent::InitBeforeChange(); $bObsolete = null !== $this->GetObsoleteValue('StorageQuota'); $this->StorageQuota = 0 === $this->StorageQuota ? (int) CApi::GetConf('labs.unlim-quota-limit-size-in-kb', 104857600) : $this->StorageQuota; if (!$bObsolete) { $this->FlushObsolete('StorageQuota'); } } /** * @return string */ public function GetFriendlyEmail() { return (0 < strlen($this->FriendlyName)) ? '"'.$this->FriendlyName.'" <'.$this->Email.'>' : $this->Email; } /** * @return bool */ public function IsGmailAccount() { return 'imap.gmail.com' === strtolower($this->IncomingMailServer) || 'googlemail.com' === strtolower($this->IncomingMailServer); } /** * @return bool */ public function Validate() { switch (true) { case !api_Validate::Port($this->IncomingMailPort): throw new CApiValidationException(Errs::Validation_InvalidPort, null, array( '{{ClassName}}' => 'CAccount', '{{ClassField}}' => 'IncomingMailPort')); case !api_Validate::Port($this->OutgoingMailPort): throw new CApiValidationException(Errs::Validation_InvalidPort, null, array( '{{ClassName}}' => 'CAccount', '{{ClassField}}' => 'OutgoingMailPort')); case api_Validate::IsEmpty($this->Email): throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array( '{{ClassName}}' => 'CAccount', '{{ClassField}}' => 'Email')); case api_Validate::IsEmpty($this->IncomingMailLogin): throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array( '{{ClassName}}' => 'CAccount', '{{ClassField}}' => 'IncomingMailLogin')); } return true; } /** * @return array */ public function GetMap() { return self::GetStaticMap(); } /** * @return int */ public function RealQuotaSize() { return 0 === $this->StorageQuota ? (int) CApi::GetConf('labs.unlim-quota-limit-size-in-kb', 104857600) : $this->StorageQuota; } /** * @return array */ public static function GetStaticMap() { return array( 'IdAccount' => array('int', 'id_acct', false, false), 'IdUser' => array('int', 'id_user'), 'IdDomain' => array('int', 'id_domain'), 'IdTenant' => array('int', 'id_tenant', true, false), 'IsInternal' => array('bool'), 'IsDisabled' => array('bool', 'deleted'), 'IsDefaultAccount' => array('bool', 'def_acct'), 'IsMailingList' => array('bool', 'mailing_list'), 'StorageQuota' => array('int', 'quota'), 'StorageUsedSpace' => array('int'), 'Email' => array('string(255)', 'email', true, false), 'FriendlyName' => array('string(255)', 'friendly_nm'), 'IncomingMailProtocol' => array('int', 'mail_protocol'), 'IncomingMailServer' => array('string(255)', 'mail_inc_host'), 'IncomingMailPort' => array('int', 'mail_inc_port'), 'IncomingMailLogin' => array('string(255)', 'mail_inc_login'), 'IncomingMailPassword' => array('password', 'mail_inc_pass'), 'IncomingMailUseSSL' => array('bool', 'mail_inc_ssl'), 'PreviousMailPassword' => array('string'), 'OutgoingMailServer' => array('string(255)', 'mail_out_host'), 'OutgoingMailPort' => array('int', 'mail_out_port'), 'OutgoingMailLogin' => array('string(255)', 'mail_out_login'), 'OutgoingMailPassword' => array('password', 'mail_out_pass'), 'OutgoingMailAuth' => array('int', 'mail_out_auth'), 'OutgoingMailUseSSL' => array('bool', 'mail_out_ssl'), 'OutgoingSendingMethod' => array('int'), 'HideInGAB' => array('bool', 'hide_in_gab'), 'Signature' => array('string', 'signature'), 'SignatureType' => array('int', 'signature_type'), 'SignatureOptions' => array('int', 'signature_opt'), 'GlobalAddressBook' => array('int'), 'AllowCompose' => array('bool'), 'AllowReply' => array('bool'), 'AllowForward' => array('bool'), 'DetectSpecialFoldersWithXList' => array('bool'), 'CustomFields' => array('serialize', 'custom_fields'), 'ForceSaveOnLogin' => array('bool'), ); } }