%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/adminpanel/core/ |
Current File : //www/varak.net/mail2.varak.net_old/adminpanel/core/cadminpanel.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. */ class CAdminPanel { /** * @var bool */ public $PType; /** * @var bool */ public $LType; /** * @var bool */ public $XType; /** * @var bool */ public $RType; /** * @var bool */ public $AType; /** * @var array */ protected $aModules; /** * @var object */ protected $oCurrentScreen; /** * @var array */ protected $aJsFiles; /** * @var array */ protected $aCssFiles; /** * @var array */ protected $aInitJsText; /** * @var bool */ protected $bIsAuth; /** * @var int */ protected $iAuthType; /** * @var array */ protected $aAuthDomains; /** * @var int */ protected $iTenantId; /** * @var array */ protected $aTabs; /** * @var string */ protected $sTabsInfo; /** * @var string */ protected $sTab; /** * @var bool */ protected $bShowScreen; /** * @var array */ protected $aMainObjectList; /** * @var array */ protected $aTabsSort; /** * @var string */ protected $sHelpUrl; /** * @return CAdminPanel */ public function __construct($sIndexFileName = null) { $GLOBALS['WM-ADMINPANEL-RUN'] = true; // TODO global is evil $this->aModules = array(); $this->bShowScreen = true; $this->bIsAuth = false; $this->PType = false; $this->XType = false; $this->LType = false; $this->RType = false; $this->AType = false; $this->sHelpUrl = ''; $this->iAuthType = null; $this->aAuthDomains = null; $this->iTenantId = 0; $this->bSessionIsStarted = false; $this->aCssFiles = array(); $this->aJsFiles = array(); $this->aInitJsText = array(); $this->aTabs = array(); $this->aModules = array(); $this->sTab = ''; $this->sTabsInfo = ''; $this->aMainObjectList = array(); $this->aTabsSort = array(); if (null !== $sIndexFileName) { $sIndexFileName = basename($sIndexFileName); if (strlen($sIndexFileName) > 3) { define('AP_INDEX_FILE', $sIndexFileName); } } defined('AP_INDEX_FILE') || define('AP_INDEX_FILE', 'index.php'); $this->bSessionIsStarted = self::initInclude(); self::initDataPath(); $this->initAdminPanel(); } public function Title() { echo CApi::I18N('ADMIN_PANEL/TITLE'); } public function End() { return $this; } public function Run() { @ob_start(); if ($this->bShowScreen) { include self::RootPath().'core/templates/main.php'; } return $this; } /** * @return void */ protected function resortTabs() { $bResult = $aTemp = array(); foreach ($this->aTabs as $aTab) { $aTemp[$aTab[1]] = $aTab; } foreach ($this->aTabsSort as $sTab) { if (in_array($sTab, array_keys($aTemp))) { $bResult[] = $aTemp[$sTab]; } } $this->aTabs = $bResult; } /** * @return object */ protected function initScreen($sTab) { $oScreen = null; if ($this->IsAuth()) { $aScreenMap = array( AP_TAB_COMMON => 'ap_Standard_Screen', AP_TAB_DOMAINS => 'ap_Table_Screen', AP_TAB_USERS => 'ap_Table_Screen', AP_TAB_TENANTS => 'ap_Table_Screen', AP_TAB_CHANNELS => 'ap_Table_Screen', AP_TAB_SYSTEM => 'ap_Standard_Screen' ); if (isset($aScreenMap[$sTab])) { $oScreen = new $aScreenMap[$sTab]($this); $oScreen->SetScreenName('screen'.ucfirst($sTab)); } if (empty($_COOKIE['FTE_'])) { if (@is_dir(self::GetWebMailPath().'install')) { $this->JsAddInitText('OnlineMsgError(\''.CApi::I18N('ADMIN_PANEL/MSG_INSTALLER_FOUND').'\');'); } $oLicApiManager = /* @var $oLicApiManager CApiLicensingManager */ CApi::Manager('licensing'); if ($oLicApiManager && $oLicApiManager->IsValidKey()) { $iType = $oLicApiManager->GetLicenseType(); $iExpiredSeconds = 0; if (!$oLicApiManager->IsValidLimit(true)) { $this->JsAddInitText('OnlineMsgError(\''.CApi::I18N('ADMIN_PANEL/MSG_LICENSE_USER_LIMIT').'\');'); } else if (in_array($iType, array(3, 10)) && $oLicApiManager->IsAboutToExpire($iExpiredSeconds)) { $this->JsAddInitText('OnlineMsgError(\''. sprintf(CApi::I18N('ADMIN_PANEL/MSG_LICENSE_TRIAL_ENDS'), ceil($iExpiredSeconds / 60 / 60 / 24)). '\');'); } } @setcookie('FTE_', true, time() + 600); } } else { include_once self::RootPath().'core/screens/login.php'; $oScreen = new ap_Login_Screen($this); $oScreen->SetScreenName('screenLogin'); } return $oScreen; } /** * @return void */ public function IncludeScreen() { if (!$this->oCurrentScreen) { $this->oCurrentScreen = new ap_Simple_Screen($this, 'error.php'); $this->oCurrentScreen->Data->SetValue('ErrorDesc', 'Admin Panel internal error.'); } if (0 < strlen(CSession::Get('SESSION_LOGIN_WARNING', ''))) { $this->oCurrentScreen = new ap_Simple_Screen($this, 'login-warning.php'); $this->oCurrentScreen->Data->SetValue('TxtDesc', CSession::Get('SESSION_LOGIN_WARNING', '')); CSession::Set('SESSION_LOGIN_WARNING', ''); } $this->oCurrentScreen->Run(); } /** * @return void */ public function IncludeCss() { foreach ($this->aCssFiles as $sCssFile) { echo '<link href="'.$sCssFile.'?'.$this->ClearAdminVersion().'" rel="stylesheet" type="text/css" />'; } } /** * @return void */ public function IncludeJs() { $aLang = include self::RootPath().'core/lang2js.php'; echo '<script type="text/javascript">var Lang = {};'; if (is_array($aLang)) { $sJs = ''; foreach ($aLang as $sKey => $sValue) { $sJs .= 'Lang[\''.ap_Utils::ReBuildStringToJavaScript($sKey, '\'').'\'] = \''.ap_Utils::ReBuildStringToJavaScript($sValue, '\'').'\';'; } echo $sJs; } echo '</script>'; echo AP_CRLF; foreach ($this->aJsFiles as $sJsFile) { echo '<script type="text/javascript" src="'.$sJsFile.'?'.$this->ClearAdminVersion().'"></script>'; } echo '<script type="text/javascript">$(function(){'; foreach ($this->aInitJsText as $sJsText) { echo $sJsText; } echo '});</script>'.AP_CRLF; } /** * @param string $sJsFile */ public function CssAddFile($sCssFile) { $this->aCssFiles[] = $sCssFile; } /** * @param string $sJsFile */ public function JsAddFile($sJsFile) { $this->aJsFiles[] = $sJsFile; } /** * @param string $sJsInitText */ public function JsAddInitText($sJsInitText) { $this->aInitJsText[] = $sJsInitText; } public function WriteTabs() { echo '<div class="wm_tabslist" id="accountslist">'; $this->resortTabs(); $bIsFirst = true; foreach ($this->aTabs as $aTab) { $sClassToAdd = ''; if (true === $bIsFirst) { $sClassToAdd = ' first'; $bIsFirst = false; } $sClass = ($this->sTab == $aTab[1]) ? 'wm_tabslist_item wm_active_tab' : 'wm_tabslist_item'; $sClass .= $sClassToAdd; echo '<div class="'.$sClass.'"><a href="'.AP_INDEX_FILE.'?tab='.$aTab[1].'">'.$aTab[0].'</a></div>'; } if (0 < strlen($this->sTabsInfo)) { echo $this->sTabsInfo; } echo '<div class="wm_tabslist_item_small last"><a href="'.AP_INDEX_FILE.'?logout">'.CApi::I18N('ADMIN_PANEL/TABMISC_LOGOUT').'</a></div>'; if (0 < strlen($this->sHelpUrl)) { echo '<div class="wm_tabslist_item_small"><a href="'.AP_INDEX_FILE.'?help" target="_blank">'.CApi::I18N('ADMIN_PANEL/TABMISC_HELP').'</a></div>'; } echo '</div>'; } /** * @param CTenant $oTenant */ public function SetTenantTabsInfo($oTenant) { $this->sTabsInfo = ''; if ($oTenant) { $this->sTabsInfo = '<div class="tabs_info">'; $this->sTabsInfo .= CApi::I18N('ADMIN_PANEL/RESOURCES_USAGE').': '.CApi::I18N('ADMIN_PANEL/RESOURCES_USERS').' - '; $this->sTabsInfo .= $oTenant->GetUserCount(); if (0 < $oTenant->UserCountLimit) { $this->sTabsInfo .= ' '.sprintf(CApi::I18N('ADMIN_PANEL/RESOURCES_USERS_MAX'),$oTenant->UserCountLimit); } $iUsed = 0; if (0 < $oTenant->QuotaInMB) { $iUsed = floor(($oTenant->AllocatedSpaceInMB / $oTenant->QuotaInMB) * 100); $this->sTabsInfo .='; '.CApi::I18N('ADMIN_PANEL/RESOURCES_DISK').' - '. $iUsed.'% ('.$oTenant->AllocatedSpaceInMB.' MB) '.CApi::I18N('ADMIN_PANEL/RESOURCES_DISK_OF').' '.$oTenant->QuotaInMB.' MB '.CApi::I18N('ADMIN_PANEL/RESOURCES_DISK_ALLOC'); } else { $this->sTabsInfo .='; '.CApi::I18N('ADMIN_PANEL/RESOURCES_DISK').' - '. $oTenant->AllocatedSpaceInMB.' MB '.CApi::I18N('ADMIN_PANEL/RESOURCES_DISK_ALLOC'); } $this->sTabsInfo .= '</div>'; } } /** * @return string */ public function Tab() { return $this->sTab; } /** * @return array */ public function &GetTabs() { return $this->aTabs; } /** * @return array */ public function RemoveTabs($aTabNames) { if (is_array($aTabNames)) { $aNewTabs = array(); $aTabs =& $this->aTabs; foreach ($aTabs as $aTabItem) { if (!in_array($aTabItem[1], $aTabNames)) { $aNewTabs[] = $aTabItem; } } $this->aTabs = $aNewTabs; } } /** * @return void */ protected function initAdminPanel() { $this->RType = (bool) CApi::GetConf('tenant', false); $this->AType = !!CApi::Manager('collaboration'); $this->aTabsSort = array( AP_TAB_COMMON, AP_TAB_DOMAINS, AP_TAB_USERS, AP_TAB_TENANTS, AP_TAB_CHANNELS, AP_TAB_SYSTEM ); $GLOBALS[AP_START_TIME] = ap_Utils::Microtime(); $GLOBALS[AP_DB_COUNT] = 0; if (isset($_GET['logout'])) { CSession::ClearAll(); CApi::Location(AP_INDEX_FILE.'?login'); } if (isset($_GET['tab']) && strlen($_GET['tab']) > 0) { CSession::Set(AP_SESS_TAB, $_GET['tab']); } else { CSession::Set(AP_SESS_TAB, CSession::Get(AP_SESS_TAB, AP_TAB_DEFAULT)); } $this->sTab = CSession::Get(AP_SESS_TAB, AP_TAB_DEFAULT); try { $this->CssAddFile('static/styles/style.css'); $this->JsAddFile('static/js/common.js'); $this->JsAddFile('static/js/jquery.js'); if (!CApi::IsValid()) { return false; } $this->initModules(); $this->initType(); $this->initAuth(); $this->sHelpUrl = ''; $sUrl = $this->IsTenantAuthType() ? (string) CApi::GetConf('labs.custom-tenant-help-url', '') : (string) CApi::GetConf('labs.custom-admin-help-url', ''); if (0 < strlen($sUrl)) { $this->sHelpUrl = $sUrl; } else { if ($this->AType) { $this->sHelpUrl = 'http://www.afterlogic.com/wiki/Aurora_documentation'; } else if ($this->PType) { $this->sHelpUrl = 'http://www.afterlogic.com/wiki/WebMail_Pro_documentation'; } else { $this->sHelpUrl = 'http://www.afterlogic.com/wiki/WebMail_Lite_documentation'; } } if (isset($_GET['help'])) { if (0 < strlen($this->sHelpUrl)) { CApi::Location($this->sHelpUrl); } else { CApi::Location('?root'); } } $bResetToDefault = true; foreach ($this->aTabs as $aTab) { if (isset($aTab[1]) && (string) $aTab[1] === (string) $this->sTab) { $bResetToDefault = false; break; } } if ($bResetToDefault) { $this->sTab = $this->IsTenantAuthType() ? AP_TAB_TENANT_DEFAULT : AP_TAB_DEFAULT; CSession::Set(AP_SESS_TAB, $this->sTab); } if (isset($_GET['submit']) && isset($_POST) && 0 < count($_POST)) { $this->bShowScreen = false; $sReturnRef = $this->initPostActionModules($this->sTab); CApi::Location(AP_INDEX_FILE.$sReturnRef); } else if (isset($_GET['pop'])) { $this->bShowScreen = false; $this->initPopActionModules($this->sTab); } else if (isset($_GET['blank'])) { $this->bShowScreen = false; $this->initBlankActionModules($this->sTab); } else if (isset($_GET['ajax'])) { $this->bShowScreen = false; $this->initAjaxActionModules($this->sTab); } else { $this->oCurrentScreen = $this->initScreen($this->sTab); if ($this->oCurrentScreen) { $this->oCurrentScreen->PreModuleInit(); $this->initCurrentScreenByModules('first', $this->sTab, $this->oCurrentScreen); $this->oCurrentScreen->MiddleModuleInit(); $this->initCurrentScreenByModules('second', $this->sTab, $this->oCurrentScreen); $this->oCurrentScreen->EndModuleInit(); $this->initCurrentScreenByModules('third', $this->sTab, $this->oCurrentScreen); } if (CSession::Has(AP_SESS_ERROR)) { $this->JsAddInitText('OnlineMsgError("'. ap_Utils::ReBuildStringToJavaScript( nl2br(CSession::Get(AP_SESS_ERROR, '')), '"').'");'); CSession::Clear(AP_SESS_ERROR); } else if (CSession::Has(AP_SESS_MESSAGE)) { $this->JsAddInitText('OnlineMsgInfo("'. ap_Utils::ReBuildStringToJavaScript( nl2br(CSession::Get(AP_SESS_MESSAGE, '')), '"').'");'); CSession::Clear(AP_SESS_MESSAGE); } } } catch (Exception $oExeption) { $this->oCurrentScreen = new ap_Simple_Screen($this, 'error.php', array( 'ErrorDesc' => 'Admin Panel internal error.' )); } } /** * @return void */ protected function initAuth() { $this->iAuthType = AP_SESS_AUTH_TYPE_NONE; if ((isset($_GET['login']) || isset($_POST['login'])) && (CPost::Has('AdmloginInput') || CGet::Has('AdmloginInput')) &&CPost::Has('AdmpasswordInput')) { $sAdmloginInput = CPost::Get('AdmloginInput'); if (CGet::Has('AdmloginInput')) { $sAdmloginInput = CGet::Get('AdmloginInput'); } $sLoginSuffix = CPost::Get('LoginSuffix', ''); if (CGet::Has('LoginSuffix')) { $sLoginSuffix = CGet::Get('LoginSuffix', ''); } if ($this->CallModuleFunction('CCommonModule', 'AuthLogin', array($sAdmloginInput.$sLoginSuffix, CPost::Get('AdmpasswordInput')))) { CApi::Location(AP_INDEX_FILE.'?enter'); } else { CSession::Destroy(); CApi::Location(AP_INDEX_FILE.'?auth_error'); } exit(); } else { if ($this->bSessionIsStarted) { $this->CallModuleFunction('CCommonModule', 'AuthCheckSet'); if ($this->IsTenantAuthType()) { $aTabs =& $this->GetTabs(); $aNewTabs = array(); foreach ($aTabs as $aTabValue) { if (in_array($aTabValue[0], array(CApi::I18N('ADMIN_PANEL/TABNAME_COMMON'), CApi::I18N('ADMIN_PANEL/TABNAME_DOMAINS'), CApi::I18N('ADMIN_PANEL/TABNAME_USERS')))) { $aNewTabs[] = $aTabValue; } } $aTabs = $aNewTabs; } } else { CSession::Destroy(); CApi::Location(AP_INDEX_FILE.'?sess_error'); exit(); } } } /** * @return void */ protected function initType() { $this->CallModuleFunction('CProModule', 'InitAdminPanel', array(&$this)); $this->CallModuleFunction('CBundleModule', 'InitAdminPanel', array(&$this)); } /** * @return void */ protected function initModules() { $aLocalModules = array(); $this->aModules = array(); $sModulePath = self::RootPath().'modules/'; if (is_dir($sModulePath)) { if (false !== ($rDirHandle = opendir($sModulePath))) { $bIsMailSuite = (bool) CApi::GetConf('mailsuite', false); while (false !== ($sFile = readdir($rDirHandle))) { if ('.' !== $sFile{0} && @file_exists($sModulePath.$sFile.'/index.php')) { if (!$bIsMailSuite && 'bundle' === $sFile) { continue; } $bDisabled = false; $iSortIndex = null; $sCurrentModule = null; include $sModulePath.$sFile.'/index.php'; if (!$bDisabled && null !== $sCurrentModule && null !== $iSortIndex && class_exists($sCurrentModule)) { while (isset($aLocalModules[$iSortIndex])) { $iSortIndex++; } $aLocalModules[$iSortIndex] = new $sCurrentModule($this, $sModulePath.$sFile); } } } closedir($rDirHandle); } } ksort($aLocalModules); foreach ($aLocalModules as $oModule) { $this->aModules[get_class($oModule)] = $oModule; } } /** * @param int $iDomainId * @return bool */ public function HasAccessDomain($iDomainId) { static $aCache = array(); $iDomainId = '' === $iDomainId ? 0 : (int) $iDomainId; if (isset($aCache[$iDomainId])) { return $aCache[$iDomainId]; } $iTenantId = $this->TenantId(); $bResult = false; if (AP_SESS_AUTH_TYPE_SUPER_ADMIN_ONLYREAD === $this->iAuthType) { CApi::Plugin()->RunHook('adminpanel-demo-domain-access', array($iDomainId, &$bResult)); } else if ((0 < $iDomainId && 0 < $iTenantId) || 0 === $iTenantId) { if (0 < $iTenantId) { $oDomainsApi = /* @var $oDomainsApi CApiDomainsManager */ CApi::Manager('domains'); $oDomain = /* @var $oDomain CDomain */$oDomainsApi->GetDomainById($iDomainId); if ($oDomain && $iTenantId === $oDomain->IdTenant) { $bResult = true; } } else { $bResult = true; } } $aCache[$iDomainId] = $bResult; return $bResult; } /** * @param string $sName * @return mixed */ public function &GetMainObject($sName) { $oResult = null; if ($this->IsMainObjectExist($sName)) { $oResult =& $this->aMainObjectList[$sName]; } else { CApi::Log('Main object not exist ["'.$sName.'"]'); } return $oResult; } /** * @param string $sName * @param bool */ public function IsMainObjectExist($sName) { return isset($this->aMainObjectList[$sName]); } /** * @param string $sName * @param mixed $oObject */ public function SetMainObject($sName, &$oObject) { CApi::Log('Set main object ["'.$sName.'", '.get_class($oObject).' $oObject]'); $this->aMainObjectList[$sName] = $oObject; } /** * @param string $sName */ public function DeleteMainObject($sName) { if (isset($this->aMainObjectList[$sName])) { CApi::Log('Delete main object ["'.$sName.'"]'); unset($this->aMainObjectList[$sName]); } } /** * @param string $sInitType * @param string $sTab * @param ap_Screen $oScreen * @return void */ protected function initCurrentScreenByModules($sInitType, $sTab, ap_Screen &$oScreen) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->InitScreen($sInitType, $oScreen); } } } /** * @param string $sTab * @return string */ protected function initPostActionModules($sTab) { $sResult = '?root'; if (!$this->IsOnlyReadAuthType()) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $sModuleResult = $oModule->InitPostAction($sTab); if (false !== $sModuleResult) { $sResult = $sModuleResult; } } } } else { $this->ShowError(AP_LANG_ADMIN_ONLY_READ); } return $sResult; } /** * @param string $sTab * @return void */ protected function initPopActionModules($sTab) { if ($this->IsAuth()) { if (!$this->IsOnlyReadAuthType()) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->InitPopAction($sTab); } } } else { echo AP_LANG_ADMIN_ONLY_READ; } } else { echo AP_LANG_LOGIN_ACCESS_ERROR; } } /** * @param string $sTab * @return void */ protected function initBlankActionModules($sTab) { if ($this->IsAuth()) { if (!$this->IsOnlyReadAuthType()) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->initBlankAction($sTab); } } } else { echo AP_LANG_ADMIN_ONLY_READ; } } else { echo AP_LANG_LOGIN_ACCESS_ERROR; } } /** * @param string $sTab * @return void */ protected function initAjaxActionModules($sTab) { $sError = ''; $sMessage = ''; $sRef = ''; if ($this->IsAuth()) { if (!$this->IsOnlyReadAuthType()) { try { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->InitAjaxAction('Pre', $sTab, $sMessage, $sError, $sRef); } } if (empty($sError)) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->InitAjaxAction('', $sTab, $sMessage, $sError, $sRef); } } } if (empty($sError)) { foreach ($this->aModules as /* @var $oModule ap_Module */ $oModule) { if ($oModule->IsInTab($sTab)) { $oModule->InitAjaxAction('Post', $sTab, $sMessage, $sError, $sRef); } } } } catch (Exception $oException) { if (empty($sError)) { $sError = $oException->getMessage(); } } } else { $sError = AP_LANG_ADMIN_ONLY_READ; } } else { $sError = AP_LANG_LOGIN_ACCESS_ERROR; } $sOb = @ob_get_contents(); @ob_clean(); if (0 < strlen($sOb)) { CApi::Log(AP_CRLF.$sOb, ELogLevel::Error); if (!empty($sError)) { $sError = 'Json parse error'; } } $sAjaxResult = '{ "null": "null"'; if (!empty($sError)) { $sAjaxResult .= ', "error": "'.ap_Utils::ReBuildStringToJavaScript($sError, '"').'"'; } else if (!empty($sMessage)) { $sAjaxResult .= ', "message": "'.ap_Utils::ReBuildStringToJavaScript($sMessage, '"').'"'; } if (!empty($sRef)) { $sAjaxResult .= ', "ref": "'.ap_Utils::ReBuildStringToJavaScript($sRef, '"').'"'; if (!empty($sError)) { $this->ShowError($sError); } else if (!empty($sMessage)) { $this->ShowMessage($sMessage); } } $sAjaxResult .= ' }'; echo $sAjaxResult; CApi::Log('AJAX: '.$sAjaxResult); } /** * @param string $sModuleName * @param string $sModulFunction * @param array $aArg = array() * @return mixed */ public function CallModuleFunction($sModuleName, $sModulFunction, $aArg = array()) { $mResult = false; if (isset($this->aModules[$sModuleName]) && is_callable(array(&$this->aModules[$sModuleName], $sModulFunction))) { $mResult = call_user_func_array(array(&$this->aModules[$sModuleName], $sModulFunction), $aArg); } return $mResult; } /** * @param string $sModuleName * @return bool */ public function IsModuleInit($sModuleName) { return isset($this->aModules[$sModuleName]); } /** * @return bool */ protected static function initInclude() { static $bIsInclude = false; $bResult = true; if (!$bIsInclude) { $sRp = self::RootPath(); include_once $sRp.'/../libraries/afterlogic/api.php'; CSession::$sSessionName = 'PHPWMADMINSESSID'; include_once $sRp.'/core/constants.php'; include_once $sRp.'/core/utils.php'; include_once $sRp.'/core/modules.php'; include_once $sRp.'/core/screens.php'; include_once $sRp.'/core/screens/simple.php'; include_once $sRp.'/core/screens/standard.php'; include_once $sRp.'/core/screens/table.php'; $sApVersion = @file_get_contents(self::RootPath().'VERSION'); define('AP_VERSION', (false === $sApVersion) ? '0.0.0' : $sApVersion); $bIsInclude = true; $bResult = true; } return $bResult; } /** * @return void */ protected static function initDataPath() { $dataPath = 'data'; if (!defined('AP_DATA_FOLDER') && @file_exists(self::GetWebMailPath().'inc_settings_path.php')) { include self::GetWebMailPath().'inc_settings_path.php'; } if (!defined('AP_DATA_FOLDER') && null !== $dataPath) { define('AP_DATA_FOLDER', ap_Utils::GetFullPath($dataPath, self::GetWebMailPath())); } } /** * @param string $sDesc */ public function ShowMessage($sDesc) { CSession::Set(AP_SESS_MESSAGE, $sDesc); } /** * @param string $sDesc */ public function ShowError($sDesc) { CSession::Set(AP_SESS_ERROR, $sDesc); } /** * @return bool */ public function IsAuth() { return $this->bIsAuth; } /** * @param bool $bIsAuth */ public function SetIsAuth($bIsAuth) { $this->bIsAuth = $bIsAuth; } /** * @return int */ public function AuthType() { return $this->iAuthType; } /** * @return int */ public function TenantId() { return $this->iTenantId; } /** * @return bool */ public function IsSuperAdminAuthType() { return AP_SESS_AUTH_TYPE_SUPER_ADMIN === $this->iAuthType; } /** * @return bool */ public function IsTenantAuthType() { return AP_SESS_AUTH_TYPE_TENANT === $this->iAuthType; } /** * @return bool */ public function IsOnlyReadAuthType() { return AP_SESS_AUTH_TYPE_SUPER_ADMIN_ONLYREAD === $this->iAuthType; } /** * @param int $iAuthType */ public function SetAuthType($iAuthType) { $this->iAuthType = $iAuthType; if (!$this->IsSuperAdminAuthType()) { $this->RemoveTabs( array(AP_TAB_TENANTS, AP_TAB_CHANNELS) ); } } /** * @param array $aDomainsIds */ public function SetAuthDomains($aDomainsIds) { $this->aAuthDomains = $aDomainsIds; } /** * @param int $iTenantId */ public function SetAuthTenantId($iTenantId) { $this->iTenantId = $iTenantId; } /** * @return string | false */ public static function AdminDataFolder() { return defined('AP_DATA_FOLDER') ? AP_DATA_FOLDER : false; } /** * @return string */ public static function ClearAdminVersion() { return preg_replace('/[^\d]/', '', AP_VERSION); } /** * @return string */ public static function GetWebMailPath() { return self::RootPath().'/../'; } /** * @return string */ public static function RootPath() { defined('AP_ROOTPATH') || define('AP_ROOTPATH', rtrim(dirname(__FILE__).'/../', '/\\').'/'); return AP_ROOTPATH; } /** * @return bool */ public function PType() { return $this->PType; } /** * @return bool */ public function XType() { return $this->XType; } /** * @return bool */ public function RType() { return $this->RType; } }