diff --git a/application/Espo/Core/Container.php b/application/Espo/Core/Container.php index ea4770689e..2caeda6b68 100644 --- a/application/Espo/Core/Container.php +++ b/application/Espo/Core/Container.php @@ -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 ); } diff --git a/application/Espo/Core/Portal/Container.php b/application/Espo/Core/Portal/Container.php index aa64592b09..604df5988b 100644 --- a/application/Espo/Core/Portal/Container.php +++ b/application/Espo/Core/Portal/Container.php @@ -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); diff --git a/application/Espo/Core/Portal/Utils/ThemeManager.php b/application/Espo/Core/Portal/Utils/ThemeManager.php index 58e949e588..f9118fe556 100644 --- a/application/Espo/Core/Portal/Utils/ThemeManager.php +++ b/application/Espo/Core/Portal/Utils/ThemeManager.php @@ -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; } } - - diff --git a/application/Espo/Core/Utils/Layout.php b/application/Espo/Core/Utils/Layout.php index 2ed37340e8..1865180f8a 100644 --- a/application/Espo/Core/Utils/Layout.php +++ b/application/Espo/Core/Utils/Layout.php @@ -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; diff --git a/application/Espo/Resources/metadata/app/containerServices.json b/application/Espo/Resources/metadata/app/containerServices.json index 24836055f0..8012f5aa32 100644 --- a/application/Espo/Resources/metadata/app/containerServices.json +++ b/application/Espo/Resources/metadata/app/containerServices.json @@ -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" } } \ No newline at end of file diff --git a/application/Espo/Resources/metadata/app/portalContainerServices.json b/application/Espo/Resources/metadata/app/portalContainerServices.json index 40490fe486..00f6bf87d3 100644 --- a/application/Espo/Resources/metadata/app/portalContainerServices.json +++ b/application/Espo/Resources/metadata/app/portalContainerServices.json @@ -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" } } \ No newline at end of file