/** * @return void */ protected function __construct() { $this->oModuleManager = \CApi::GetModuleManager(); // \MailSo\Config::$FixIconvByMbstring = false; \MailSo\Config::$SystemLogger = \CApi::MailSoLogger(); \MailSo\Config::$PreferStartTlsIfAutoDetect = !!\CApi::GetConf('labs.prefer-starttls', true); }
public static function Login($sUserName, $sPassword) { $mResult = false; $aArguments = array('Login' => $sUserName, 'Password' => $sPassword, 'SignMe' => false); \CApi::GetModuleManager()->broadcastEvent('Dav', 'Login', $aArguments, $mResult); if (isset($mResult['id'])) { $oManagerApi = \CApi::GetSystemManager('eav', 'db'); $oEntity = $oManagerApi->getEntityById((int) $mResult['id']); $mResult = $oEntity->sUUID; } else { $mResult = false; } return $mResult; }
public static function Init($bGrantAdminPrivileges = false) { include_once self::LibrariesPath() . 'autoload.php'; if ($bGrantAdminPrivileges) { \CApi::$aUserSession['UserId'] = -1; \CApi::$aUserSession['AuthToken'] = ''; } CApi::$aI18N = null; CApi::$aClientI18N = array(); CApi::$aSecretWords = array(); CApi::$bUseDbLog = false; if (!is_object(CApi::$oManager)) { CApi::IncArray(array('functions', 'constants', 'enum', 'exception', 'utils', 'crypt', 'container', 'eav', 'manager', 'module', 'response', 'xml', 'utils.get', 'utils.post', 'utils.session', 'http', 'db.storage', 'user-session')); $sSalt = ''; $sSaltFile = CApi::DataPath() . '/salt.php'; if (!@file_exists($sSaltFile)) { $sSaltDesc = '<?php #' . md5(microtime(true) . rand(1000, 9999)) . md5(microtime(true) . rand(1000, 9999)); @file_put_contents($sSaltFile, $sSaltDesc); } else { $sSalt = '$2y$07$' . md5(file_get_contents($sSaltFile)) . '$'; } CApi::$sSalt = $sSalt; CApi::$aConfig = (include CApi::RootPath() . 'config.php'); $sSettingsFile = CApi::DataPath() . '/settings/config.php'; if (@file_exists($sSettingsFile)) { $aAppConfig = (include $sSettingsFile); if (is_array($aAppConfig)) { CApi::$aConfig = array_merge(CApi::$aConfig, $aAppConfig); } } $sHost = \MailSo\Base\Http::SingletonInstance()->GetHost(); if (0 < \strlen($sHost)) { $sDomainSettingsFile = CApi::DataPath() . '/settings/' . $sHost . '.config.php'; if (@file_exists($sDomainSettingsFile)) { $aDomainAppConfig = (include $sDomainSettingsFile); if (is_array($aDomainAppConfig)) { CApi::$aConfig = array_merge(CApi::$aConfig, $aDomainAppConfig); } } } CApi::$oManager = new CApiGlobalManager(); CApi::$bIsValid = CApi::validateApi(); CApi::GetModuleManager(); CApi::$oManager->PrepareStorageMap(); CApi::$aModuleDecorators = array(); } }
/** * @return bool */ public function isDavSupported() { return $this->isNotLite() && !!CApi::GetModuleManager()->ModuleExists('Dav'); }
/** * * @param string $sMethod * @param array $aArguments * @param boolean $bWebApi * @return mixed */ public function CallMethod($sMethod, $aArguments = array(), $bWebApi = false) { $mResult = false; try { if (method_exists($this, $sMethod) && !($bWebApi && $this->isCallbackMethod($sMethod))) { if ($bWebApi && !isset($aArguments['UserId'])) { $aArguments['UserId'] = \CApi::getAuthenticatedUserId(); } // prepare arguments for before event $aMethodArgs = $this->prepareMethodArguments($sMethod, $aArguments, $bWebApi); $bEventResult = $this->broadcastEvent($sMethod . \AApiModule::$Delimiter . 'before', $aArguments, $mResult); // prepare arguments for main action after event $aMethodArgs = $this->prepareMethodArguments($sMethod, $aArguments, $bWebApi); if (!$bEventResult) { try { $mMethodResult = call_user_func_array(array($this, $sMethod), $aMethodArgs); if (is_array($mMethodResult) && is_array($mResult)) { $mResult = array_merge($mMethodResult, $mResult); } else { if ($mMethodResult !== null) { $mResult = $mMethodResult; } } } catch (\Exception $oException) { \CApi::GetModuleManager()->AddResult($this->GetName(), $sMethod, $mResult, $oException->getCode()); if (!$oException instanceof \System\Exceptions\AuroraApiException) { throw new \System\Exceptions\AuroraApiException($oException->getCode(), $oException, $oException->getMessage()); } else { throw $oException; } } } $this->broadcastEvent($sMethod . \AApiModule::$Delimiter . 'after', $aArguments, $mResult); \CApi::GetModuleManager()->AddResult($this->GetName(), $sMethod, $mResult); } } catch (\Exception $oException) { if (!$oException instanceof \System\Exceptions\AuroraApiException) { throw new \System\Exceptions\AuroraApiException($oException->getCode(), $oException, $oException->getMessage()); } else { throw $oException; } } return $mResult; }
/** * @return string */ public function compileTemplates() { $sHash = \CApi::GetModuleManager()->Hash(); $sCacheFileName = ''; if (CApi::GetConf('labs.cache.templates', $this->bCache)) { $sCacheFileName = 'templates-' . md5(CApi::Version() . $sHash) . '.cache'; $sCacheFullFileName = \CApi::DataPath() . '/cache/' . $sCacheFileName; if (file_exists($sCacheFullFileName)) { return file_get_contents($sCacheFullFileName); } } $sResult = ''; $sPath = CApi::WebMailPath() . 'modules'; $aFolderItems = scandir($sPath); foreach ($aFolderItems as $sItemName) { if ($sItemName === '.' or $sItemName === '..') { continue; } $sDirName = $sPath . '/' . $sItemName . '/templates'; $iDirNameLen = strlen($sDirName); if (is_dir($sDirName)) { $aList = $this->folderFiles($sDirName, '.html'); foreach ($aList as $sFileName) { $sName = ''; $iPos = strpos($sFileName, $sDirName); if ($iPos === 0) { $sName = substr($sFileName, $iDirNameLen + 1); } else { $sName = '@errorName' . md5(rand(10000, 20000)); } $sTemplateID = $sItemName . '_' . preg_replace('/[^a-zA-Z0-9_]/', '', str_replace(array('/', '\\'), '_', substr($sName, 0, -5))); $sTemplateHtml = file_get_contents($sFileName); $sTemplateHtml = \CApi::GetModuleManager()->ParseTemplate($sTemplateID, $sTemplateHtml); $sTemplateHtml = preg_replace('/\\{%INCLUDE-START\\/[a-zA-Z\\-_]+\\/INCLUDE-END%\\}/', '', $sTemplateHtml); $sTemplateHtml = str_replace('%ModuleName%', $sItemName, $sTemplateHtml); $sTemplateHtml = str_replace('%MODULENAME%', strtoupper($sItemName), $sTemplateHtml); $sTemplateHtml = preg_replace('/<script([^>]*)>/', '<script$1>', $sTemplateHtml); $sTemplateHtml = preg_replace('/<\\/script>/', '</script>', $sTemplateHtml); $sResult .= '<script id="' . $sTemplateID . '" type="text/html">' . preg_replace('/[\\r\\n\\t]+/', ' ', $sTemplateHtml) . '</script>'; } } } $sResult = trim($sResult); if (CApi::GetConf('labs.cache.templates', $this->bCache)) { if (!is_dir(dirname($sCacheFullFileName))) { mkdir(dirname($sCacheFullFileName), 0777, true); } $sResult = '<!-- ' . $sCacheFileName . ' -->' . $sResult; file_put_contents($sCacheFullFileName, $sResult); } return $sResult; }