From 954ebf6caa93c355f10849f7138dd8e05307ac06 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Tue, 20 May 2025 13:28:33 +0900 Subject: [PATCH] Automaticallly fill default values if addon is turned on without saving config --- modules/addon/addon.admin.controller.php | 23 +++++++++++++++++++++++ modules/addon/addon.controller.php | 24 +++++++++++++++++++++--- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/modules/addon/addon.admin.controller.php b/modules/addon/addon.admin.controller.php index e6cdb3b2b..6d4cc630f 100644 --- a/modules/addon/addon.admin.controller.php +++ b/modules/addon/addon.admin.controller.php @@ -237,6 +237,29 @@ class addonAdminController extends addonController */ function doInsert($addon, $site_srl = 0, $gtype = 'site', $isUsed = 'N', $extra_vars = null) { + if (!is_object($extra_vars)) + { + $extra_vars = new stdClass(); + } + if (!isset($extra_vars->xe_run_method)) + { + $extra_vars->xe_run_method = 'run_selected'; + } + if (!isset($extra_vars->mid_list) || !is_array($extra_vars->mid_list)) + { + $extra_vars->mid_list = []; + } + + $xml_file = RX_BASEDIR . 'addons/' . $addon . '/conf/info.xml'; + $addon_info = Rhymix\Framework\Parsers\AddonInfoParser::loadXML($xml_file, $addon); + foreach ($addon_info->extra_vars as $key => $val) + { + if (!isset($extra_vars->$key)) + { + $extra_vars->$key = $val->default; + } + } + $args = new stdClass; $args->addon = $addon; if (strlen($isUsed) == 2) diff --git a/modules/addon/addon.controller.php b/modules/addon/addon.controller.php index 95b5c3c9e..c8225c69a 100644 --- a/modules/addon/addon.controller.php +++ b/modules/addon/addon.controller.php @@ -111,7 +111,7 @@ class addonController extends addon $buff[] = sprintf('$addon_file = RX_BASEDIR . \'addons/%s/%s.addon.php\';', $addon, $addon); // Addon configuration - $buff[] = '$addon_info = unserialize(' . var_export(serialize($extra_vars), true) . ');'; + $buff[] = '$addon_info = ' . var_export($extra_vars, true) . ';'; // Decide whether to run in this mid if ($run_method === 'no_run_selected') @@ -159,9 +159,27 @@ class addonController extends addon */ function doSetup($addon, $extra_vars, $site_srl = 0, $gtype = 'site') { - if(!is_array($extra_vars->mid_list)) + if (!is_object($extra_vars)) { - unset($extra_vars->mid_list); + $extra_vars = new stdClass(); + } + if (!isset($extra_vars->xe_run_method)) + { + $extra_vars->xe_run_method = 'run_selected'; + } + if (!isset($extra_vars->mid_list) || !is_array($extra_vars->mid_list)) + { + $extra_vars->mid_list = []; + } + + $xml_file = RX_BASEDIR . 'addons/' . $addon . '/conf/info.xml'; + $addon_info = Rhymix\Framework\Parsers\AddonInfoParser::loadXML($xml_file, $addon); + foreach ($addon_info->extra_vars as $key => $val) + { + if (!isset($extra_vars->$key) && isset($val->default)) + { + $extra_vars->$key = $val->default; + } } $args = new stdClass();