container changes

This commit is contained in:
Yuri Kuznetsov
2020-06-21 19:41:54 +03:00
parent bc9395029b
commit 8b9e376609
6 changed files with 54 additions and 61 deletions

View File

@@ -29,6 +29,7 @@
namespace Espo\Core;
use Espo\Core\InjectableFactory;
use Espo\Entities\User;
/**
@@ -156,12 +157,14 @@ class Container
return $this->get('metadata')->get(['app', 'containerServices', $name, 'dependencyList']) ?? null;
}
protected function getServiceClassName(string $name, ?string $default = null)
protected function getServiceClassName(string $name) : ?string
{
$metadata = $this->get('metadata');
$className = $metadata->get(['app', 'containerServices', $name, 'className']) ??
$metadata->get(['app', 'serviceContainer', 'classNames', $name], $default);
$className =
$metadata->get(['app', 'containerServices', $name, 'className']) ??
$metadata->get(['app', 'serviceContainer', 'classNames', $name]) ?? // deprecated
null;
return $className;
}
@@ -282,7 +285,7 @@ class Container
protected function loadAclManager()
{
$className = $this->getServiceClassName('aclManager', '\\Espo\\Core\\AclManager');
$className = $this->getServiceClassName('aclManager') ?? 'Espo\\Core\\AclManager';
return new $className(
$this->get('container')
);
@@ -295,7 +298,7 @@ class Container
protected function loadAcl()
{
$className = $this->getServiceClassName('acl', '\\Espo\\Core\\Acl');
$className = $this->getServiceClassName('acl') ?? 'Espo\\Core\\Acl';
return new $className(
$this->get('aclManager'),
$this->get('user')
@@ -397,17 +400,9 @@ class Container
);
}
protected function loadThemeManager()
{
return new \Espo\Core\Utils\ThemeManager(
$this->get('config'),
$this->get('metadata')
);
}
protected function loadInjectableFactory()
{
return new \Espo\Core\InjectableFactory(
return new InjectableFactory(
$this
);
}

View File

@@ -29,50 +29,52 @@
namespace Espo\Core\Portal;
use Espo\Entities\Portal as PortalEntity;
class Container extends \Espo\Core\Container
{
protected function getServiceClassName(string $name, ?string $default = null)
protected function getServiceClassName(string $name) : ?string
{
return $this->get('metadata')->get(['app', 'portalContainerServices', $name, 'className']) ??
parent::getServiceClassName($name, $default);
}
protected function getServicePortalClassName(string $name, ?string $default = null)
{
$metadata = $this->get('metadata');
return $metadata->get(['app', 'portalContainerServices', $name, 'className'], $default);
return
$this->get('metadata')->get(['app', 'portalContainerServices', $name, 'className']) ??
parent::getServiceClassName($name) ??
null;
}
protected function getServiceDependencyList(string $name) : ?array
{
return $this->get('metadata')->get(['app', 'portalContainerServices', $name, 'dependencyList']) ??
return
$this->get('metadata')->get(['app', 'portalContainerServices', $name, 'dependencyList']) ??
parent::getServiceDependencyList($name);
}
protected function getServiceMainClassName(string $name, ?string $default = null)
protected function getServicePortalClassName(string $name) : ?string
{
return parent::getServiceClassName($name, $default);
return $this->get('metadata')->get(['app', 'portalContainerServices', $name, 'className']) ?? null;
}
protected function getServiceMainClassName(string $name) : ?string
{
return parent::getServiceClassName($name);
}
protected function loadAclManager()
{
$className = $this->getServicePortalClassName('aclManager', '\\Espo\\Core\\Portal\\AclManager');
$mainClassName = $this->getServiceMainClassName('aclManager', '\\Espo\\Core\\AclManager');
$className = $this->getServicePortalClassName('aclManager') ?? 'Espo\\Core\\Portal\\AclManager';
$internalAclManager = $this->get('internalAclManager');
$obj = new $className(
$aclManager = new $className(
$this->get('container')
);
$objMain = new $mainClassName(
$this->get('container')
);
$obj->setMainManager($objMain);
return $obj;
$aclManager->setMainManager($internalAclManager);
return $aclManager;
}
protected function loadInternalAclManager()
{
$className = $this->getServiceMainClassName('aclManager', '\\Espo\\Core\\AclManager');
$className = $this->getServiceMainClassName('aclManager') ?? 'Espo\\Core\\AclManager';
return new $className(
$this->get('container')
);
@@ -80,22 +82,13 @@ class Container extends \Espo\Core\Container
protected function loadAcl()
{
$className = $this->getServicePortalClassName('acl', '\\Espo\\Core\\Portal\\Acl');
$className = $this->getServicePortalClassName('acl') ?? 'Espo\\Core\\Portal\\Acl';
return new $className(
$this->get('aclManager'),
$this->get('user')
);
}
protected function loadThemeManager()
{
return new \Espo\Core\Portal\Utils\ThemeManager(
$this->get('config'),
$this->get('metadata'),
$this->get('portal')
);
}
protected function loadLanguage()
{
$language = new \Espo\Core\Portal\Utils\Language(
@@ -108,7 +101,7 @@ class Container extends \Espo\Core\Container
return $language;
}
public function setPortal(\Espo\Entities\Portal $portal)
public function setPortal(PortalEntity $portal)
{
$this->set('portal', $portal);

View File

@@ -29,12 +29,12 @@
namespace Espo\Core\Portal\Utils;
use \Espo\Entities\Portal;
use Espo\Core\Utils\Config;
use Espo\Core\Utils\Metadata;
use Espo\Entities\Portal;
use Espo\Core\Utils\ThemeManager as BaseThemeManager;
use \Espo\Core\Utils\Config;
use \Espo\Core\Utils\Metadata;
class ThemeManager extends \Espo\Core\Utils\ThemeManager
class ThemeManager extends BaseThemeManager
{
public function __construct(Config $config, Metadata $metadata, Portal $portal)
{
@@ -52,5 +52,3 @@ class ThemeManager extends \Espo\Core\Utils\ThemeManager
return $theme;
}
}

View File

@@ -29,6 +29,10 @@
namespace Espo\Core\Utils;
use Espo\Core\Utils\File\Manager as FileManager;
use Espo\Core\Utils\Metadata;
use Espo\Entities\User;
class Layout
{
private $fileManager;
@@ -47,7 +51,7 @@ class Layout
'customPath' => 'custom/Espo/Custom/Resources/layouts',
];
public function __construct(\Espo\Core\Utils\File\Manager $fileManager, \Espo\Core\Utils\Metadata $metadata, \Espo\Entities\User $user)
public function __construct(FileManager $fileManager, Metadata $metadata, User $user)
{
$this->fileManager = $fileManager;
$this->metadata = $metadata;

View File

@@ -1,13 +1,14 @@
{
"notificatorFactory": {
"className": "\\Espo\\Core\\NotificatorFactory"
"className": "Espo\\Core\\NotificatorFactory"
},
"clientManager": {
"className": "\\Espo\\Core\\Utils\\ClientManager",
"dependencyList": ["config", "themeManager", "metadata"]
"className": "Espo\\Core\\Utils\\ClientManager"
},
"layout": {
"className": "\\Espo\\Core\\Utils\\Layout",
"dependencyList": ["fileManager", "metadata", "user"]
"className": "Espo\\Core\\Utils\\Layout"
},
"themeManager": {
"className": "Espo\\Core\\Utils\\ThemeManager"
}
}

View File

@@ -1,6 +1,8 @@
{
"layout": {
"className": "\\Espo\\Core\\Portal\\Utils\\Layout",
"dependencyList": ["fileManager", "metadata", "user"]
"className": "Espo\\Core\\Portal\\Utils\\Layout"
},
"themeManager": {
"className": "Espo\\Core\\Portal\\Utils\\ThemeManager"
}
}