%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/webmail/ |
Current File : //www/varak.net/mail2.varak.net_old/libraries/afterlogic/common/managers/webmail/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 WebMail */ class CApiWebmailManager extends AApiManagerWithStorage { /** * @param CApiGlobalManager &$oManager */ public function __construct(CApiGlobalManager &$oManager, $sForcedStorage = '') { parent::__construct('webmail', $oManager, $sForcedStorage); } /** * @param array $aFiles * @return string */ public function JsPacker($aFiles) { $this->inc('classes.jspacker'); $oJsPacker = new CJsPacker(); return $oJsPacker->JsFilesCompress($aFiles); } /** * @param string $sEmail * @param string $sPassword * @param string $sChangeLang = '' * @param array $aExtValues = null * @param bool $bAllowInternalOnly = false * @return CAccount | false */ public function CreateAccountProcess($sEmail, $sPassword, $sChangeLang = '', $aExtValues = null, $bAllowInternalOnly = false) { $mResult = false; try { /* @var $oApiDomainsManager CApiDomainsManager */ $oApiDomainsManager = CApi::Manager('domains'); /* @var $oApiUsersManager CApiUsersManager */ $oApiUsersManager = CApi::Manager('users'); $sDomainName = api_Utils::GetDomainFromEmail($sEmail); $oDomain = /* @var $oDomain CDomain */ $oApiDomainsManager->GetDomainByName($sDomainName); if (!$oDomain) { $oDomain = $oApiDomainsManager->GetDefaultDomain(); } if ($oDomain && ($oDomain->AllowNewUsersRegister || ($oDomain->IsInternal && $bAllowInternalOnly) || 'nodb' === CApi::GetManager()->GetStorageByType('webmail'))) { /*if ($oDomain && !$oDomain->AllowWebMail) { throw new CApiManagerException(Errs::WebMailManager_AccountWebmailDisabled); } else */if ($oDomain && $oDomain->IsInternal && !$bAllowInternalOnly) { throw new CApiManagerException(Errs::WebMailManager_NewUserRegistrationDisabled); } else if ($oDomain && $bAllowInternalOnly && (!$oDomain->IsInternal || $oDomain->IsDefaultDomain)) { throw new CApiManagerException(Errs::WebMailManager_NewUserRegistrationDisabled); } else if ($oDomain) { $oAccountToCreate = new CAccount($oDomain); $oAccountToCreate->Email = $sEmail; // $oAccountToCreate->IncomingMailLogin = (isset($aExtValues['Login'])) ? $aExtValues['Login'] : // (($this->oSettings->GetConf('WebMail/UseLoginWithoutDomain')) // ? api_Utils::GetAccountNameFromEmail($sEmail) : $sEmail); $oAccountToCreate->IncomingMailLogin = (isset($aExtValues['Login']) ? $aExtValues['Login'] : $sEmail); if ($this->oSettings->GetConf('WebMail/UseLoginWithoutDomain')) { $oAccountToCreate->IncomingMailLogin = api_Utils::GetAccountNameFromEmail($oAccountToCreate->IncomingMailLogin); } $oAccountToCreate->IncomingMailPassword = $sPassword; if (0 < strlen($sChangeLang) && $sChangeLang !== $oAccountToCreate->User->DefaultLanguage) { $oAccountToCreate->User->DefaultLanguage = $sChangeLang; } if ($oDomain->IsDefaultDomain && isset( $aExtValues['IncProtocol'], $aExtValues['IncHost'], $aExtValues['IncPort'], $aExtValues['OutHost'], $aExtValues['OutPort'], $aExtValues['OutAuth'])) { $oAccountToCreate->IncomingMailProtocol = (int) $aExtValues['IncProtocol']; $oAccountToCreate->IncomingMailServer = trim($aExtValues['IncHost']); $oAccountToCreate->IncomingMailPort = (int) trim($aExtValues['IncPort']); $oAccountToCreate->OutgoingMailServer = trim($aExtValues['OutHost']); $oAccountToCreate->OutgoingMailPort = (int) trim($aExtValues['OutPort']); $oAccountToCreate->OutgoingMailAuth = ((bool) $aExtValues['OutAuth']) ? ESMTPAuthType::AuthCurrentUser : ESMTPAuthType::NoAuth; // TODO $oAccountToCreate->IncomingMailUseSSL = in_array($oAccountToCreate->IncomingMailPort, array(993, 995)); $oAccountToCreate->OutgoingMailUseSSL = in_array($oAccountToCreate->OutgoingMailPort, array(465)); } CApi::Plugin()->RunHook('api-pre-create-account-process-call', array(&$oAccountToCreate)); if (isset($aExtValues['FriendlyName'])) { $oAccountToCreate->FriendlyName = $aExtValues['FriendlyName']; } if (isset($aExtValues['Question1'])) { $oAccountToCreate->User->Question1 = $aExtValues['Question1']; } if (isset($aExtValues['Question2'])) { $oAccountToCreate->User->Question2 = $aExtValues['Question2']; } if (isset($aExtValues['Answer1'])) { $oAccountToCreate->User->Answer1 = $aExtValues['Answer1']; } if (isset($aExtValues['Answer2'])) { $oAccountToCreate->User->Answer2 = $aExtValues['Answer2']; } if ($oApiUsersManager->CreateAccount($oAccountToCreate, !($oAccountToCreate->IsInternal || !$oAccountToCreate->Domain->AllowWebMail))) { CApi::Plugin()->RunHook('api-success-post-create-account-process-call', array(&$oAccountToCreate)); $mResult = $oAccountToCreate; } else { $oException = $oApiUsersManager->GetLastException(); CApi::Plugin()->RunHook('api-error-post-create-account-process-call', array(&$oAccountToCreate, &$oException)); throw (is_object($oException)) ? $oException : new CApiManagerException(Errs::WebMailManager_AccountCreateOnLogin); } } else { throw new CApiManagerException(Errs::WebMailManager_DomainDoesNotExist); } } else { throw new CApiManagerException(Errs::WebMailManager_NewUserRegistrationDisabled); } } catch (CApiBaseException $oException) { $mResult = false; $this->setLastException($oException); } return $mResult; } /** * @return array */ public function GetSkinList() { $sList = array(); $sDir = CApi::WebMailPath().'skins'; if (@is_dir($sDir)) { $rDirH = @opendir($sDir); if ($rDirH) { while (($sFile = @readdir($rDirH)) !== false) { if ('.' !== $sFile{0} && @file_exists($sDir.'/'.$sFile.'/styles.css')) { $sList[] = $sFile; } } @closedir($rDirH); } } return $sList; } /** * @param string $sValue * @return string */ protected function jsLanguageQuot($sValue) { return str_replace('\'', '\\\'', str_replace('\\', '\\\\', $sValue)); } /** * @param string $sPassword * @return bool */ public function ValidateMasterPassword($sPassword) { $sSettingsPassword = $this->oSettings->GetConf('Common/AdminPassword'); return $sSettingsPassword === $sPassword || md5($sPassword) === $sSettingsPassword; } /** * @return bool */ public function ClearTempFiles() { $sTempPath = CApi::DataPath().'/temp'; if (@is_dir($sTempPath)) { $iNow = time(); $iTime2Run = CApi::GetConf('temp.cron-time-to-run', 10800); $iTime2Kill = CApi::GetConf('temp.cron-time-to-kill', 10800); $sDataFile = CApi::GetConf('temp.cron-time-file', '.clear.dat'); $iFiletTime = -1; if (@file_exists(CApi::DataPath().'/'.$sDataFile)) { $iFiletTime = (int) @file_get_contents(CApi::DataPath().'/'.$sDataFile); } if ($iFiletTime === -1 || $iNow - $iFiletTime > $iTime2Run) { $this->recTimeDirRemove($sTempPath, $iTime2Kill, $iNow); @file_put_contents( CApi::DataPath().'/'.$sDataFile, $iNow); } } return true; } protected function recTimeDirRemove($sTempPath, $iTime2Kill, $iNow) { $iFileCount = 0; if (@is_dir($sTempPath)) { $rDirH = @opendir($sTempPath); if ($rDirH) { while (($sFile = @readdir($rDirH)) !== false) { if ('.' !== $sFile && '..' !== $sFile) { if (@is_dir($sTempPath.'/'.$sFile)) { $this->recTimeDirRemove($sTempPath.'/'.$sFile, $iTime2Kill, $iNow); } else { $iFileCount++; } } } @closedir($rDirH); } if ($iFileCount > 0) { if ($this->timeFilesRemove($sTempPath, $iTime2Kill, $iNow)) { @rmdir($sTempPath); } } else { @rmdir($sTempPath); } } } protected function timeFilesRemove($sTempPath, $iTime2Kill, $iNow) { $bResult = true; if (@is_dir($sTempPath)) { $rDirH = @opendir($sTempPath); if ($rDirH) { while (($sFile = @readdir($rDirH)) !== false) { if ($sFile !== '.' && $sFile !== '..') { if ($iNow - filemtime($sTempPath.'/'.$sFile) > $iTime2Kill) { @unlink($sTempPath.'/'.$sFile); } else { $bResult = false; } } } @closedir($rDirH); } } return $bResult; } }