Code refactoring

This commit is contained in:
RainLoop Team 2014-10-15 19:11:50 +04:00
parent 6acba46339
commit 819ba4a2ef
6 changed files with 94 additions and 47 deletions

View file

@ -5,8 +5,13 @@ if (!\defined('RAINLOOP_APP_LIBRARIES_PATH'))
\define('RAINLOOP_APP_LIBRARIES_PATH', \rtrim(\realpath(__DIR__), '\\/').'/libraries/'); \define('RAINLOOP_APP_LIBRARIES_PATH', \rtrim(\realpath(__DIR__), '\\/').'/libraries/');
\define('RAINLOOP_MB_SUPPORTED', \function_exists('mb_strtoupper')); \define('RAINLOOP_MB_SUPPORTED', \function_exists('mb_strtoupper'));
\spl_autoload_register(function ($sClassName) { /**
* @param string $sClassName
*
* @return mixed
*/
function RainLoopSplAutoloadRegisterFunction($sClassName)
{
if (0 === \strpos($sClassName, 'RainLoop') && false !== \strpos($sClassName, '\\')) if (0 === \strpos($sClassName, 'RainLoop') && false !== \strpos($sClassName, '\\'))
{ {
return include RAINLOOP_APP_LIBRARIES_PATH.'RainLoop/'.\str_replace('\\', '/', \substr($sClassName, 9)).'.php'; return include RAINLOOP_APP_LIBRARIES_PATH.'RainLoop/'.\str_replace('\\', '/', \substr($sClassName, 9)).'.php';
@ -31,34 +36,36 @@ if (!\defined('RAINLOOP_APP_LIBRARIES_PATH'))
} }
return false; return false;
}); }
\spl_autoload_register('RainLoopSplAutoloadRegisterFunction', false);
} }
if (\class_exists('RainLoop\Service')) if (\class_exists('RainLoop\Service'))
{ {
$oException = null;
if (!\class_exists('MailSo\Version')) if (!\class_exists('MailSo\Version'))
{ {
try include APP_VERSION_ROOT_PATH.'app/libraries/MailSo/MailSo.php';
{
include APP_VERSION_ROOT_PATH.'app/libraries/MailSo/MailSo.php';
}
catch (\Exception $oException) {}
} }
if (!$oException) if (\class_exists('MailSo\Version'))
{ {
if (isset($_ENV['RAINLOOP_INCLUDE_AS_API']) && $_ENV['RAINLOOP_INCLUDE_AS_API']) if (isset($_ENV['RAINLOOP_INCLUDE_AS_API']) && $_ENV['RAINLOOP_INCLUDE_AS_API'] && !\defined('APP_API_STARTED'))
{ {
$_ENV['RAINLOOP_INCLUDE_AS_API'] = false; \define('APP_API_STARTED', true);
\RainLoop\Api::Handle(); \RainLoop\Api::Handle();
} }
else if (!\defined('APP_STARTED')) else if (!\defined('APP_STARTED'))
{ {
\define('APP_STARTED', true); \define('APP_STARTED', true);
\RainLoop\Service::NewInstance()->Handle(); \RainLoop\Api::Handle();
\RainLoop\Service::Handle();
} }
} }
} }
else if (\function_exists('RainLoopSplAutoloadRegisterFunction'))
{
\spl_autoload_unregister('RainLoopSplAutoloadRegisterFunction');
}
return ''; return '';

View file

@ -7,10 +7,18 @@ if (!\defined('MAILSO_LIBRARY_ROOT_PATH'))
\define('MAILSO_LIBRARY_ROOT_PATH', \defined('MAILSO_LIBRARY_USE_PHAR') \define('MAILSO_LIBRARY_ROOT_PATH', \defined('MAILSO_LIBRARY_USE_PHAR')
? 'phar://mailso.phar/' : \rtrim(\realpath(__DIR__), '\\/').'/'); ? 'phar://mailso.phar/' : \rtrim(\realpath(__DIR__), '\\/').'/');
\spl_autoload_register(function ($sClassName) { /**
* @param string $sClassName
*
* @return mixed
*/
function MailSoSplAutoloadRegisterFunction($sClassName)
{
return (0 === \strpos($sClassName, 'MailSo') && false !== \strpos($sClassName, '\\')) ? return (0 === \strpos($sClassName, 'MailSo') && false !== \strpos($sClassName, '\\')) ?
include MAILSO_LIBRARY_ROOT_PATH.\str_replace('\\', '/', \substr($sClassName, 7)).'.php' : false; include MAILSO_LIBRARY_ROOT_PATH.\str_replace('\\', '/', \substr($sClassName, 7)).'.php' : false;
}); }
\spl_autoload_register('MailSo\MailSoSplAutoloadRegisterFunction', false);
if (\class_exists('MailSo\Base\Loader')) if (\class_exists('MailSo\Base\Loader'))
{ {
@ -18,6 +26,6 @@ if (!\defined('MAILSO_LIBRARY_ROOT_PATH'))
} }
else else
{ {
throw new \Exception('MailSo initialisation error'); \spl_autoload_unregister('MailSo\MailSoSplAutoloadRegisterFunction');
} }
} }

View file

@ -11,6 +11,34 @@ class Api
{ {
} }
/**
* @return bool
*/
public static function RunResult()
{
return true;
}
/**
* @staticvar bool $bOne
* @return bool
*/
public static function Handle()
{
static $bOne = null;
if (null === $bOne)
{
$bOne = \class_exists('MailSo\Version');
if ($bOne)
{
\RainLoop\Api::SetupDefaultMailSoConfig();
$bOne = \RainLoop\Api::RunResult();
}
}
return $bOne;
}
/** /**
* @return \RainLoop\Actions * @return \RainLoop\Actions
*/ */
@ -41,28 +69,6 @@ class Api
return \RainLoop\Api::Actions()->Logger(); return \RainLoop\Api::Actions()->Logger();
} }
/**
* @return bool
*/
public static function Handle()
{
static $bOne = null;
if ($bOne)
{
return true;
}
if (!\class_exists('MailSo\Version'))
{
return false;
}
\RainLoop\Api::SetupDefaultMailSoConfig();
$bOne = true;
return true;
}
/** /**
* @return string * @return string
*/ */
@ -193,6 +199,6 @@ class Api
public static function LogoutCurrentLogginedUser() public static function LogoutCurrentLogginedUser()
{ {
\RainLoop\Utils::ClearCookie('rlsession'); \RainLoop\Utils::ClearCookie('rlsession');
return false; return true;
} }
} }

View file

@ -18,4 +18,11 @@ interface SettingsInterface
* @return bool * @return bool
*/ */
public function Save(\RainLoop\Account $oAccount, array $aSettings); public function Save(\RainLoop\Account $oAccount, array $aSettings);
/**
* @param string $sEmail
*
* @return bool
*/
public function ClearByEmail($sEmail);
} }

View file

@ -35,8 +35,6 @@ class Service
\ini_set('display_errors', 1); \ini_set('display_errors', 1);
} }
\RainLoop\Api::SetupDefaultMailSoConfig();
$sServer = \trim($this->oActions->Config()->Get('security', 'custom_server_signature', '')); $sServer = \trim($this->oActions->Config()->Get('security', 'custom_server_signature', ''));
if (0 < \strlen($sServer)) if (0 < \strlen($sServer))
{ {
@ -54,20 +52,43 @@ class Service
@\header('Location: https://'.$this->oHttp->GetHost(false, false).$this->oHttp->GetUrl(), true); @\header('Location: https://'.$this->oHttp->GetHost(false, false).$this->oHttp->GetUrl(), true);
exit(); exit();
} }
$this->localHandle();
} }
/** /**
* @return \RainLoop\Service * @return bool
*/ */
public static function NewInstance() public function RunResult()
{ {
return new self(); return true;
}
/**
* @staticvar bool $bOne
* @return bool
*/
public static function Handle()
{
static $bOne = null;
if (null === $bOne)
{
$oService = null;
if (\class_exists('MailSo\Version'))
{
$oService = new self();
}
$bOne = $oService->RunResult();
}
return $bOne;
} }
/** /**
* @return \RainLoop\Service * @return \RainLoop\Service
*/ */
public function Handle() private function localHandle()
{ {
if (!\class_exists('MailSo\Version')) if (!\class_exists('MailSo\Version'))
{ {

View file

@ -941,8 +941,6 @@ class ServiceActions
$sEmail = \trim($this->oHttp->GetRequest('Email', '')); $sEmail = \trim($this->oHttp->GetRequest('Email', ''));
$sPassword = $this->oHttp->GetRequest('Password', ''); $sPassword = $this->oHttp->GetRequest('Password', '');
\RainLoop\Api::Handle();
$sResult = \RainLoop\Api::GetUserSsoHash($sEmail, $sPassword); $sResult = \RainLoop\Api::GetUserSsoHash($sEmail, $sPassword);
$bLogout = 0 === \strlen($sResult); $bLogout = 0 === \strlen($sResult);