addTplParam('d3ViewObject', $this);
$this->addTplParam('d3ViewConfObject', Registry::get(ViewConfig::class));
$this->addTplParam('d3ManagerTypeArray', oxNew(ManagerTypes::class)->getManagerList());
$this->addTplParam('d3CurrentCMP', oxNew(ManagerHandler::class)->getActManager());
$tmpArray = [];
try {
$moduleConfiguration = ContainerFactory::getInstance()
->getContainer()
->get(ModuleConfigurationDaoBridgeInterface::class)
->get(Constants::OXID_MODULE_ID);
if (!empty($moduleConfiguration->getModuleSettings())) {
$formatModuleSettings = $this
->d3FormatModuleSettingsForTemplate($moduleConfiguration->getModuleSettings());
$tmpArray["var_constraints"] = $formatModuleSettings['constraints'];
$tmpArray["var_grouping"] = $formatModuleSettings['grouping'];
foreach ($this->_aConfParams as $sType => $sParam) {
$tmpArray[$sParam] = $formatModuleSettings['vars'][$sType] ?? null;
}
}
} catch (\Throwable $throwable) {
Registry::getUtilsView()->addErrorToDisplay($throwable);
Registry::getLogger()->error($throwable->getMessage());
}
$module = oxNew(Module::class);
$module->load(Constants::OXID_MODULE_ID);
dumpVar($module->getModuleData()['settings']);
echo "
";
dumpVar($tmpArray);
die;
return $return;
}
private function d3FormatModuleSettingsForTemplate(array $moduleSettings): array
{
$confVars = [
'bool' => [],
'str' => [],
'arr' => [],
'aarr' => [],
'select' => [],
'password' => [],
];
$constraints = [];
$grouping = [];
foreach ($moduleSettings as $setting) {
$name = $setting->getName();
$valueType = $setting->getType();
$value = null;
if ($setting->getValue() !== null) {
switch ($setting->getType()) {
case 'arr':
$value = $this->arrayToMultiline($setting->getValue());
break;
case 'aarr':
$value = $this->aarrayToMultiline($setting->getValue());
break;
case 'bool':
$value = filter_var($setting->getValue(), FILTER_VALIDATE_BOOLEAN);
break;
default:
$value = $setting->getValue();
break;
}
$value = Str::getStr()->htmlentities($value);
}
$group = $setting->getGroupName();
$confVars[$valueType][$name] = $value;
$constraints[$name] = $setting->getConstraints() ?? '';
if ($group) {
if (!isset($grouping[$group])) {
$grouping[$group] = [$name => $valueType];
} else {
$grouping[$group][$name] = $valueType;
}
}
}
return [
'vars' => $confVars,
'constraints' => $constraints,
'grouping' => $grouping,
];
}
public function save()
{
parent::save();
$aParams = Registry::getRequest()->getRequestEscapedParameter('editval');
$aCheckBoxParams = [
'_blEnableGa4',
'_blEnableDebug',
'_blEnableConsentMode',
'_blEnableOwnCookieManager',
'_blUseRealCategoyTitles',
'_blEnableMeasurementCapabilities',
'_blEnableUsercentricsConsentModeApi',
'_blViewItemAddVariants',
];
foreach ($aCheckBoxParams as $checkBoxName){
if (isset($aParams['bool'][$checkBoxName])){
$aParams['bool'][$checkBoxName] = true;
}else{
$aParams['bool'][$checkBoxName] = false;
}
}
$this->d3SaveShopConfigVars($aParams);
}
/**
* @return ModuleSettingService
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
*/
public function d3GetModuleSettings() :ModuleSettingService
{
return ContainerFactory::getInstance()
->getContainer()
->get(ModuleSettingServiceInterface::class);
}
/**
* @param string $sSettingName
* @return bool
* @throws \Psr\Container\ContainerExceptionInterface
* @throws \Psr\Container\NotFoundExceptionInterface
*/
public function d3SettingExists(string $sSettingName) :bool
{
return $this->d3GetModuleSettings()
->exists(Constants::OXID_MODULE_ID.$sSettingName, Constants::OXID_MODULE_ID);
}
/**
* @param array $aParams
* @return void
*/
protected function d3SaveShopConfigVars(array $aParams)
{
foreach ($aParams as $sConfigType => $aConfigParams) {
foreach ($aConfigParams as $sSettingName => $sSettingValue){
try {
//if($this->d3GetModuleConfigParam($sSettingName) !== $sSettingValue){}
if ($this->d3SettingExists($sSettingName)){
$sSettingName = Constants::OXID_MODULE_ID.$sSettingName;
// converting select to str
if ($sConfigType === "select"){
$sConfigType = "str";
}
switch ($sConfigType){
case 'str':
$this->d3GetModuleSettings()->saveString($sSettingName, $sSettingValue,Constants::OXID_MODULE_ID);
break;
case 'bool':
$this->d3GetModuleSettings()->saveBoolean($sSettingName, $sSettingValue,Constants::OXID_MODULE_ID);
break;
default:
Registry::getLogger()->error(
'No given datatype defined!',
[Constants::OXID_MODULE_ID." -> ".__METHOD__.": ".__LINE__." with '".$sSettingName."'"]
);
}
}
} catch (\Throwable $throwable) {
Registry::getUtilsView()->addErrorToDisplay($throwable);
Registry::getLogger()->error($throwable->getMessage());
}
}
}
}
/**
* @param string $configParamName
* @return mixed
*/
public function d3GetModuleConfigParam(string $configParamName)
{
$container = ContainerFactory::getInstance()->getContainer();
$moduleConfiguration = $container->get(ModuleConfigurationDaoBridgeInterface::class)->get($moduleId);
return Registry::get(ViewConfig::class)->d3GetModuleConfigParam($configParamName);
}
private function d3convertSettingsToArray(\OxidEsales\EshopCommunity\Internal\Framework\Module\Configuration\DataObject\ModuleConfiguration $moduleConfiguration): array
{
$data = [];
foreach ($moduleConfiguration->getModuleSettings() as $index => $setting) {
if ($setting->getGroupName()) {
$data[$index]['group'] = $setting->getGroupName();
}
if ($setting->getName()) {
$data[$index]['name'] = $setting->getName();
}
if ($setting->getType()) {
$data[$index]['type'] = $setting->getType();
}
$data[$index]['value'] = $setting->getValue();
if (!empty($setting->getConstraints())) {
$data[$index]['constraints'] = $setting->getConstraints();
}
if ($setting->getPositionInGroup() > 0) {
$data[$index]['position'] = $setting->getPositionInGroup();
}
}
return $data;
}
}