Hey again,
any other input, maybe from an OXID core developer? :)
I don't think it is a problem with setShopId(), since it worked pretty
well up to OXID 5.3.x ...
How would I activate modules in multiple subshops in a loop, without
getting that
ERROR_METADATA_CONTROLLERS_NOT_UNIQUE
error in Oxid 6?
Thank you very much,
best regards,
Stefan
Am 06.02.18 um 18:29 schrieb K1 G.:
Hi Stefan,
only a guess by having a quick look at the code you showed:
config->setShopId is not a good idea. It will not reload the config
object for current the process. So you will have a mix config objects
and configuration values from different shops.
I know that oxid console is using something like "shopspecificconfig"
class to ensure loading the correct config for a given shop id but
even with that you need often to call setConfig on different objects
and the registry.
I would suggest to debug and check the config objects to ensure you
have the correct config loaded.
best regards
K1
Am 06.02.2018 13:22 schrieb "Stefan Moises" <moi...@shoptimax.de
<mailto:moi...@shoptimax.de>>:
Hi there,
in OXID EE 5.3.x we were using a util class to activate modules
based on whitelist/blacklist for multiple subshops.
For OXID 6, that is not working 100% anymore, if a module defines
its own "controllers" in metadata.php, e.g.
https://github.com/OXIDprojects/oxid-module-internals
<https://github.com/OXIDprojects/oxid-module-internals>
'controllers'=> [
'module_internals_metadata'=>
\OxidCommunity\ModuleInternals\Controller\Admin\Metadata::class,
'module_internals_state'=>
\OxidCommunity\ModuleInternals\Controller\Admin\State::class,
'module_internals_utils'=>
\OxidCommunity\ModuleInternals\Controller\Admin\Utils::class,
],
Now if I use this class
https://github.com/shoptimax/ioly_installer/blob/master/IolyInstallerCore.php#L450
<https://github.com/shoptimax/ioly_installer/blob/master/IolyInstallerCore.php#L450>
and ModuleInstaller::activate($oModule):
/ foreach ($aShopIds as $shopId) {//
// try {//
//$oConfig->setShopId($shopId);//
// $oModule = oxNew('oxModule');//
// if ($oModule->load($sModuleId)) {//
// $oModuleCache = oxNew('oxModuleCache',
$oModule);//
// $oModuleInstaller =
oxNew('oxModuleInstaller', $oModuleCache);//
//*if ($oModuleInstaller->activate($oModule)) {*/
...
to activate the module for multiple subshops, I get an *exception*
after the first subshop, e.g.
/Loaded moduleinternals module, trying to activate ...//
//Error activating module 'moduleinternals': Fehler: Modul nicht
aktiviert.<br />In einem Shop oder Sub-Shop müssen Schüssel und
Werte für "controllers" eindeutig sein.<br />Folgende Schlüssel
oder Werte für "controllers", die in der Datei metadata.php dieses
Moduls definiert sind, existieren schon im Shop:<br />
OxidCommunity\ModuleInternals\Controller\Admin\Metadata,OxidCommunity\ModuleInternals\Controller\Admin\State,OxidCommunity\ModuleInternals\Controller\Admin\Utils//
//#0 /var/www/html/demo-oxid6/source/oxfunctions.php(103):
OxidEsales\EshopCommunity\Core\UtilsObject->oxNew('OxidEsales\\Esho...')//
//#1
/var/www/html/demo-oxid6/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleInstaller.php(100):
oxNew('OxidEsales\\Esho...')//
//#2
/var/www/html/demo-oxid6/vendor/ioly/installer/IolyInstallerCore.php(450):
OxidEsales\EshopCommunity\Core\Module\ModuleInstaller->activate(Object(OxidCommunity\ModuleInternals\Core\Module))//
//#3
/var/www/html/demo-oxid6/vendor/ioly/installer/IolyInstallerCore.php(417):
ioly\IolyInstallerCore::activateModule('moduleinternals', '1')//
//#4
/var/www/html/demo-oxid6/vendor/ioly/installer/IolyInstallerCore.php(184):
ioly\IolyInstallerCore::activateModulesWhitelisted()//
//#5 /var/www/html/demo-oxid6/source/install.php(27):
ioly\IolyInstallerCore::run('/var/www/html/g...', false, false,
false)//
//#6 {main}/
So it seems to work for the first subshop, but then the check for
"duplicate" controllers throws an Exception.
Any idea how to fix this? It seems that the ModuleInstaller isn't
aware of the different subshop ... I've also tried to set the
Config with e.g.
$oModuleInstaller->setConfig($oConfig);
etc., but that didn't help either.
Thanks,
Stefan
--
--
************************************
Stefan Moises
Manager Research & Development
shoptimax GmbH
Ulmenstraße 52 H 90443 Nürnberg
<https://maps.google.com/?q=Ulmenstra%C3%9Fe+52+H+90443+N%C3%BCrnberg&entry=gmail&source=g>
Tel.: 0911/25566-0
Fax: 0911/25566-29
moi...@shoptimax.de <mailto:moi...@shoptimax.de>
http://www.shoptimax.de
Geschäftsführung: Friedrich Schreieck
Ust.-IdNr.: DE 814340642
Amtsgericht Nürnberg HRB 21703
************************************
--
--
************************************
Stefan Moises
Manager Research & Development
shoptimax GmbH
Ulmenstraße 52 H
90443 Nürnberg
Tel.: 0911/25566-0
Fax: 0911/25566-29
moi...@shoptimax.de
http://www.shoptimax.de
Geschäftsführung: Friedrich Schreieck
Ust.-IdNr.: DE 814340642
Amtsgericht Nürnberg HRB 21703
************************************