%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/domains/classes/ |
| Current File : //www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/domains/classes/domain.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 $IdDomain
* @property int $IdTenant
* @property bool $IsDisabled
* @property string $Name
* @property string $Url
* @property bool $OverrideSettings
* @property bool $IsInternal
* @property bool $IsDefaultDomain
* @property string $SiteName
* @property string $DefaultLanguage
* @property int $DefaultTimeZone
* @property int $DefaultTimeFormat
* @property int $DefaultDateFormat
* @property bool $AllowRegistration
* @property bool $AllowPasswordReset
* @property int $IncomingMailProtocol
* @property string $IncomingMailServer
* @property int $IncomingMailPort
* @property bool $IncomingMailUseSSL
* @property string $OutgoingMailServer
* @property int $OutgoingMailPort
* @property int $OutgoingMailAuth
* @property string $OutgoingMailLogin
* @property string $OutgoingMailPassword
* @property bool $OutgoingMailUseSSL
* @property int $OutgoingSendingMethod
* @property int $UserQuota
* @property int $AutoCheckMailInterval
* @property string $DefaultSkin
* @property int $MailsPerPage
* @property bool $AllowUsersChangeInterfaceSettings
* @property bool $AllowUsersChangeEmailSettings
* @property bool $AllowUsersAddNewAccounts
* @property bool $AllowNewUsersRegister
* @property bool $AllowOpenPGP
* @property int $Layout
* @property int $SaveMail
* @property int $ContactsPerPage
* @property int $GlobalAddressBook
* @property bool $CalendarShowWeekEnds
* @property int $CalendarWorkdayStarts
* @property int $CalendarWorkdayEnds
* @property bool $CalendarShowWorkDay
* @property int $CalendarWeekStartsOn
* @property int $CalendarDefaultTab
* @property bool $DetectSpecialFoldersWithXList
* @property string $ExternalHostNameOfLocalImap
* @property string $ExternalHostNameOfLocalSmtp
* @property string $ExternalHostNameOfDAVServer
* @property bool $UseThreads
* @property bool $AllowWebMail
* @property bool $AllowContacts
* @property bool $AllowCalendar
* @property bool $AllowFiles
* @property bool $AllowHelpdesk
* @property string $DefaultTab
* @property string $PasswordMinLength
* @property bool $PasswordMustBeComplex
*
* @package Domains
* @subpackage Classes
*/
class CDomain extends api_AContainer
{
/**
* @var array
*/
protected $aFolders;
/**
* @param string $sName = ''
* @param string $sUrl = null
* @param int $iTenantId = 0
*/
public function __construct($sName = '', $sUrl = null, $iTenantId = 0)
{
parent::__construct(get_class($this), 'IdDomain');
$oSettings =& CApi::GetSettings();
$aDefaults = array(
'IdDomain' => 0,
'IdTenant' => $iTenantId,
'IsDisabled' => false,
'Name' => trim($sName),
'Url' => (null === $sUrl) ? '' : trim($sUrl),
'IsDefaultDomain' => false,
'IsInternal' => false,
'UseThreads' => true,
'OverrideSettings' => true
);
$aSettingsMap = $this->GetSettingsMap();
foreach ($aSettingsMap as $sProperty => $sSettingsName)
{
$aDefaults[$sProperty] = $oSettings->GetConf($sSettingsName);
}
$this->__USE_TRIM_IN_STRINGS__ = true;
$this->SetDefaults($aDefaults);
$this->aFolders = array(
EFolderType::Inbox => array('INBOX', 'Inbox'),
EFolderType::Drafts => array('Drafts', 'Draft'),
EFolderType::Sent => array('Sent', 'Sent Items', 'Sent Mail'),
EFolderType::Spam => array('Spam', 'Junk', 'Junk Mail', 'Junk E-mail', 'Bulk Mail'),
EFolderType::Trash => array('Trash', 'Bin', 'Deleted', 'Deleted Items'),
);
$this->SetLower(array('Name', 'IncomingMailServer',/* 'IncomingMailLogin',*/
'OutgoingMailServer'/*, 'OutgoingMailLogin'*/));
CApi::Plugin()->RunHook('api-domain-construct', array(&$this));
}
/**
* @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 (!$this->IsDefaultDomain && api_Validate::IsEmpty($this->Name)):
throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array(
'{{ClassName}}' => 'CDomain', '{{ClassField}}' => 'Name'));
case api_Validate::IsEmpty($this->IncomingMailServer):
throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array(
'{{ClassName}}' => 'CDomain', '{{ClassField}}' => 'IncomingMailServer'));
case api_Validate::IsEmpty($this->OutgoingMailServer):
throw new CApiValidationException(Errs::Validation_FieldIsEmpty, null, array(
'{{ClassName}}' => 'CDomain', '{{ClassField}}' => 'OutgoingMailServer'));
}
return true;
}
/**
* @return array
*/
public function GetMap()
{
return self::GetStaticMap();
}
/**
* @return array
*/
public static function GetStaticMap()
{
return array(
'IdDomain' => array('int', 'id_domain', false, false),
'IdTenant' => array('int', 'id_tenant'),
'IsDisabled' => array('bool', 'disabled'),
'Name' => array('string(255)', 'name', true, false),
'Url' => array('string(255)', 'url'),
'OverrideSettings' => array('bool', 'override_settings'),
'IsInternal' => array('bool', 'is_internal'),
'IsDefaultDomain' => array('bool'),
// Common
'SiteName' => array('string(255)', 'site_name'),
'DefaultLanguage' => array('string(255)', 'lang'),
'DefaultTimeZone' => array('int', 'def_user_timezone'),
'DefaultTimeFormat' => array('int', 'def_user_timeformat'),
'DefaultDateFormat' => array('string(50)', 'def_user_dateformat'),
'AllowRegistration' => array('bool', 'allow_registration'),
'AllowPasswordReset' => array('bool', 'allow_pass_reset'),
// 'PasswordMinLength' => array('int', 'password_min_length'),
// 'PasswordMustBeComplex' => array('bool', 'password_must_be_complex'),
// WebMail
'AllowWebMail' => array('bool', 'allow_webmail'),
'IncomingMailProtocol' => array('int', 'mail_protocol'),
'IncomingMailServer' => array('string(255)', 'mail_inc_host'),
'IncomingMailPort' => array('int', 'mail_inc_port'),
'IncomingMailUseSSL' => array('bool', 'mail_inc_ssl'),
'OutgoingMailServer' => array('string(255)', 'mail_out_host'),
'OutgoingMailPort' => array('int', 'mail_out_port'),
'OutgoingMailAuth' => array('int', 'mail_out_auth'),
'OutgoingMailLogin' => array('string(255)', 'mail_out_login'),
'OutgoingMailPassword' => array('password', 'mail_out_pass'),
'OutgoingMailUseSSL' => array('bool', 'mail_out_ssl'),
'OutgoingSendingMethod' => array('int', 'mail_out_method'),
'ExternalHostNameOfLocalImap' => array('string(255)'),// 'ext_imap_host'),
'ExternalHostNameOfLocalSmtp' => array('string(255)'),// 'ext_smtp_host'),
'ExternalHostNameOfDAVServer' => array('string(255)'),// 'ext_dav_host'),
'UserQuota' => array('int'), // user_quota // TODO
'AutoCheckMailInterval' => array('int', 'check_interval'),
'DefaultSkin' => array('string(255)', 'skin'),
'MailsPerPage' => array('int', 'msgs_per_page'),
'AllowUsersChangeInterfaceSettings' => array('bool', 'allow_change_interface_settings'),
'AllowUsersChangeEmailSettings' => array('bool', 'allow_change_account_settings'),
'AllowUsersAddNewAccounts' => array('bool', 'allow_users_add_acounts'),
'AllowNewUsersRegister' => array('bool', 'allow_new_users_register'),
'AllowOpenPGP' => array('bool', 'allow_open_pgp'),
'Layout' => array('int', 'layout'),
'DetectSpecialFoldersWithXList' => array('int', 'xlist'),
'UseThreads' => array('bool', 'use_threads'),
// Contacts
'AllowContacts' => array('bool', 'allow_contacts'),
'ContactsPerPage' => array('int', 'contacts_per_page'),
'GlobalAddressBook' => array('int', 'global_addr_book'),
// Calendar
'AllowCalendar' => array('bool', 'allow_calendar'),
'CalendarShowWeekEnds' => array('bool', 'cal_show_weekends'),
'CalendarWorkdayStarts' => array('int', 'cal_workday_starts'),
'CalendarWorkdayEnds' => array('int', 'cal_workday_ends'),
'CalendarShowWorkDay' => array('bool', 'cal_show_workday'),
'CalendarWeekStartsOn' => array('int', 'cal_week_starts_on'),
'CalendarDefaultTab' => array('int', 'cal_default_tab'),
'AllowFiles' => array('bool', 'allow_files'),
'AllowHelpdesk' => array('bool', 'allow_helpdesk'),
'DefaultTab' => array('string(100)', 'default_tab')
);
}
/**
* @return bool
*/
public function InitBeforeChange()
{
parent::InitBeforeChange();
if (0 < $this->IdTenant)
{
$this->OverrideSettings = true;
}
if (!$this->OverrideSettings && !$this->IsDefaultDomain)
{
/* @var $oApiDomainsManager CApiDomainsManager */
$oApiDomainsManager = CApi::Manager('domains');
$oDefDomain = $oApiDomainsManager->GetDefaultDomain();
$aOverridenSettingsMap = $this->GetOverridenSettingsMap();
foreach ($aOverridenSettingsMap as $sName)
{
$this->{$sName} = $oDefDomain->{$sName};
}
}
return true;
}
/**
* @param stdClass $oRow
*/
public function InitByDbRow($oRow)
{
parent::InitByDbRow($oRow);
$this->InitBeforeChange();
$this->FlushObsolete();
}
/**
* @return array
*/
public function &GetFoldersMap()
{
return $this->aFolders;
}
/**
* @return array
*/
public function GetOverridenSettingsMap()
{
return array(
'SiteName',
'DefaultLanguage',
'DefaultTimeZone',
'DefaultTimeFormat',
'DefaultDateFormat',
'AllowRegistration',
'AllowPasswordReset',
// 'PasswordMinLength',
// 'PasswordMustBeComplex',
'AllowWebMail',
// 'UserQuota', // TODO
'AutoCheckMailInterval',
'DefaultSkin',
'MailsPerPage',
'AllowUsersChangeInterfaceSettings',
'AllowUsersChangeEmailSettings',
'AllowUsersAddNewAccounts',
'AllowNewUsersRegister',
'AllowOpenPGP',
'ExternalHostNameOfLocalImap',
'ExternalHostNameOfLocalSmtp',
'ExternalHostNameOfDAVServer',
'Layout',
'DetectSpecialFoldersWithXList',
'AllowContacts',
'ContactsPerPage',
'GlobalAddressBook',
'AllowCalendar',
'CalendarShowWeekEnds',
'CalendarWorkdayStarts',
'CalendarWorkdayEnds',
'CalendarShowWorkDay',
'CalendarWeekStartsOn',
'CalendarDefaultTab',
'AllowFiles',
'AllowHelpdesk',
'DefaultTab'
);
}
/**
* @return array
*/
public function GetSettingsMap()
{
return array(
'SiteName' => 'Common/SiteName',
'DefaultLanguage' => 'Common/DefaultLanguage',
'DefaultTimeZone' => 'Common/DefaultTimeZone',
'DefaultDateFormat' => 'Common/DefaultDateFormat',
'DefaultTimeFormat' => 'Common/DefaultTimeFormat',
'AllowRegistration' => 'Common/AllowRegistration',
'AllowPasswordReset' => 'Common/AllowPasswordReset',
'DefaultTab' => 'Common/DefaultTab',
// 'PasswordMinLength' => 'Common/PasswordMinLength',
// 'PasswordMustBeComplex' => 'Common/PasswordMustBeComplex',
'IncomingMailProtocol' => 'WebMail/IncomingMailProtocol',
'IncomingMailServer' => 'WebMail/IncomingMailServer',
'IncomingMailPort' => 'WebMail/IncomingMailPort',
'IncomingMailUseSSL' => 'WebMail/IncomingMailUseSSL',
'OutgoingMailServer' => 'WebMail/OutgoingMailServer',
'OutgoingMailPort' => 'WebMail/OutgoingMailPort',
'OutgoingMailAuth' => 'WebMail/OutgoingMailAuth',
'OutgoingMailLogin' => 'WebMail/OutgoingMailLogin',
'OutgoingMailPassword' => 'WebMail/OutgoingMailPassword',
'OutgoingMailUseSSL' => 'WebMail/OutgoingMailUseSSL',
'OutgoingSendingMethod' => 'WebMail/OutgoingSendingMethod',
'UserQuota' => 'WebMail/UserQuota',
'AutoCheckMailInterval' => 'WebMail/AutoCheckMailInterval',
'DefaultSkin' => 'WebMail/DefaultSkin',
'MailsPerPage' => 'WebMail/MailsPerPage',
'AllowUsersChangeInterfaceSettings' => 'WebMail/AllowUsersChangeInterfaceSettings',
'AllowUsersChangeEmailSettings' => 'WebMail/AllowUsersChangeEmailSettings',
'AllowUsersAddNewAccounts' => 'WebMail/AllowUsersAddNewAccounts',
'AllowNewUsersRegister' => 'WebMail/AllowNewUsersRegister',
'AllowOpenPGP' => 'WebMail/AllowOpenPGP',
'ExternalHostNameOfDAVServer' => 'WebMail/ExternalHostNameOfDAVServer',
'ExternalHostNameOfLocalImap' => 'WebMail/ExternalHostNameOfLocalImap',
'ExternalHostNameOfLocalSmtp' => 'WebMail/ExternalHostNameOfLocalSmtp',
'Layout' => 'WebMail/Layout',
'DetectSpecialFoldersWithXList' => 'WebMail/DetectSpecialFoldersWithXList',
'ContactsPerPage' => 'Contacts/ContactsPerPage',
'GlobalAddressBook' => 'Contacts/GlobalAddressBookVisibility',
'CalendarShowWeekEnds' => 'Calendar/ShowWeekEnds',
'CalendarWorkdayStarts' => 'Calendar/WorkdayStarts',
'CalendarWorkdayEnds' => 'Calendar/WorkdayEnds',
'CalendarShowWorkDay' => 'Calendar/ShowWorkDay',
'CalendarWeekStartsOn' => 'Calendar/WeekStartsOn',
'CalendarDefaultTab' => 'Calendar/DefaultTab',
'AllowWebMail' => 'WebMail/AllowWebMail',
'AllowContacts' => 'Contacts/AllowContacts',
'AllowCalendar' => 'Calendar/AllowCalendar',
'AllowFiles' => 'Files/AllowFiles',
'AllowHelpdesk' => 'Helpdesk/AllowHelpdesk',
);
}
}