From 31f1e75bebf7946e65ba5096aa298b7fb2e017a9 Mon Sep 17 00:00:00 2001 From: Roland Gruber Date: Sat, 21 Feb 2004 17:23:41 +0000 Subject: [PATCH] check for base module, dependency/conflict checks moved to modules.inc --- lam/templates/config/confmodules.php | 366 ++++++++++++--------------- 1 file changed, 164 insertions(+), 202 deletions(-) diff --git a/lam/templates/config/confmodules.php b/lam/templates/config/confmodules.php index b15a4ed1..ddbd8d8e 100644 --- a/lam/templates/config/confmodules.php +++ b/lam/templates/config/confmodules.php @@ -44,9 +44,11 @@ if ($passwd != $conf->get_Passwd()) { // user pressed submit/abort button if ($_POST['submit']) { + //selection ok, back to other settings metarefresh('confmain.php?modulesback=true&moduleschanged=true'); } elseif ($_POST['abort']) { + // no changes metarefresh('confmain.php?modulesback=true'); } @@ -62,17 +64,13 @@ echo ("

" echo ("

\n"); echo "

" . _("Module selection") . "

"; -// module dependencies -$user_deps = getModulesDependencies('user'); -$group_deps = getModulesDependencies('group'); -$host_deps = getModulesDependencies('host'); // user modules $selected_users_temp = $_SESSION['conf_usermodules']; $available_users = array(); $available_users = getAvailableModules('user'); $selected_users = array(); -// only use available modules +// only use available modules as selected for ($i = 0; $i < sizeof($selected_users_temp); $i++) { if (in_array($selected_users_temp[$i], $available_users)) $selected_users[] = $selected_users_temp[$i]; } @@ -88,6 +86,7 @@ if ($_POST['user_selected'] && ($_POST['user_remove'])) { $selected_users = $new_selected_users; $_SESSION['conf_usermodules'] = $selected_users; } + // add modules to selection elseif ($_POST['user_available'] && ($_POST['user_add'])) { $new_selected_users = $selected_users; @@ -98,12 +97,13 @@ elseif ($_POST['user_available'] && ($_POST['user_add'])) { $_SESSION['conf_usermodules'] = $selected_users; } + // group modules $selected_groups_temp = $_SESSION['conf_groupmodules']; $available_groups = array(); $available_groups = getAvailableModules('group'); $selected_groups = array(); -// only use available modules +// only use available modules as selected for ($i = 0; $i < sizeof($selected_groups_temp); $i++) { if (in_array($selected_groups_temp[$i], $available_groups)) $selected_groups[] = $selected_groups_temp[$i]; } @@ -119,6 +119,7 @@ if ($_POST['group_selected'] && ($_POST['group_remove'])) { $selected_groups = $new_selected_groups; $_SESSION['conf_groupmodules'] = $selected_groups; } + // add modules to selection elseif ($_POST['group_available'] && ($_POST['group_add'])) { $new_selected_groups = $selected_groups; @@ -129,12 +130,13 @@ elseif ($_POST['group_available'] && ($_POST['group_add'])) { $_SESSION['conf_groupmodules'] = $selected_groups; } + // host modules $selected_hosts_temp = $_SESSION['conf_hostmodules']; $available_hosts = array(); $available_hosts = getAvailableModules('host'); $selected_hosts = array(); -// only use available modules +// only use available modules as selected for ($i = 0; $i < sizeof($selected_hosts_temp); $i++) { if (in_array($selected_hosts_temp[$i], $available_hosts)) $selected_hosts[] = $selected_hosts_temp[$i]; } @@ -150,6 +152,7 @@ if ($_POST['host_selected'] && ($_POST['host_remove'])) { $selected_hosts = $new_selected_hosts; $_SESSION['conf_hostmodules'] = $selected_hosts; } + // add modules to selection elseif ($_POST['host_available'] && ($_POST['host_add'])) { $new_selected_hosts = $selected_hosts; @@ -160,45 +163,68 @@ elseif ($_POST['host_available'] && ($_POST['host_add'])) { $_SESSION['conf_hostmodules'] = $selected_hosts; } + // show user modules echo "
" . _("User modules") . "\n"; echo "\n"; // select boxes echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Selected user modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; + echo "\n"; echo "

"; echo ""; echo "
"; echo ""; echo "

\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Available user modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; -$user_depends = user_depends($selected_users); + +// check dependencies +$user_depends = check_module_depends($selected_users, getModulesDependencies('user')); if ($user_depends != false) { $no_depends_user = false; echo "

\n"; @@ -208,7 +234,9 @@ if ($user_depends != false) { } echo "

\n"; } -$user_conflicts = user_conflicts($selected_users); + +// check conflicts +$user_conflicts = check_module_conflicts($selected_users, getModulesDependencies('user')); if ($user_conflicts != false) { $no_conflicts_user = false; echo "

\n"; @@ -218,49 +246,87 @@ if ($user_conflicts != false) { } echo "

\n"; } + +// check for base module +$found = false; +for ($i = 0; $i < sizeof($selected_users); $i++) { + if (is_base_module($selected_users[$i], "user")) { + $found = true; + break; + } +} +if (! $found) { + echo "

\n"; + echo "" . _("No base module selected!") . "
\n"; + echo "

\n"; +} + echo "

\n"; echo "

\n"; + // show group modules echo "
" . _("Group modules") . "\n"; echo "\n"; // select boxes echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Selected group modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; + echo "\n"; echo "

"; echo ""; echo "
"; echo ""; echo "

\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Available group modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; -$group_depends = group_depends($selected_groups); + +// check dependencies +$group_depends = check_module_depends($selected_groups, getModulesDependencies('group')); if ($group_depends != false) { $no_depends_group = false; echo "

\n"; @@ -270,7 +336,9 @@ if ($group_depends != false) { } echo "

\n"; } -$group_conflicts = group_conflicts($selected_groups); + +// check conflicts +$group_conflicts = check_module_conflicts($selected_groups, getModulesDependencies('group')); if ($group_conflicts != false) { $no_conflicts_group = false; echo "

\n"; @@ -280,49 +348,87 @@ if ($group_conflicts != false) { } echo "

\n"; } + +// check for base module +$found = false; +for ($i = 0; $i < sizeof($selected_groups); $i++) { + if (is_base_module($selected_groups[$i], "group")) { + $found = true; + break; + } +} +if (! $found) { + echo "

\n"; + echo "" . _("No base module selected!") . "
\n"; + echo "

\n"; +} + echo "

\n"; echo "

\n"; + // show host modules echo "
" . _("Host modules") . "\n"; echo "\n"; // select boxes echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Selected host modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; + echo "\n"; echo "

"; echo ""; echo "
"; echo ""; echo "

\n"; echo "
  \n"; + echo "\n"; echo "
\n"; echo "" . _("Available host modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; -$host_depends = host_depends($selected_hosts); + +// check dependencies +$host_depends = check_module_depends($selected_hosts, getModulesDependencies('host')); if ($host_depends != false) { $no_depends_host = false; echo "

\n"; @@ -332,7 +438,9 @@ if ($host_depends != false) { } echo "

\n"; } -$host_conflicts = host_conflicts($selected_hosts); + +// check conflicts +$host_conflicts = check_module_conflicts($selected_hosts, getModulesDependencies('host')); if ($host_conflicts != false) { $no_conflicts_host = false; echo "

\n"; @@ -342,8 +450,24 @@ if ($host_conflicts != false) { } echo "

\n"; } + +// check for base module +$found = false; +for ($i = 0; $i < sizeof($selected_hosts); $i++) { + if (is_base_module($selected_hosts[$i], "host")) { + $found = true; + break; + } +} +if (! $found) { + echo "

\n"; + echo "" . _("No base module selected!") . "
\n"; + echo "

\n"; +} + echo "

\n"; + // submit buttons echo "

\n"; // disable button if there are conflicts/depends @@ -361,168 +485,6 @@ echo "

\n"; echo "\n"; echo "\n"; -// checks if there are missing dependencies between user modules -// $selected is an array of selected module names -// returns false if no misssing dependency was found -// returns an array of array(selected module, depending module) if missing dependencies were found -function user_depends($selected) { -global $user_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($user_deps[$selected[$m]]['depends']); $i++) { - // check if we have OR-combined modules - if (is_array($user_deps[$selected[$m]]['depends'][$i])) { - // one of the elements is needed - $found = false; - $depends = $user_deps[$selected[$m]]['depends'][$i]; - for ($d = 0; $d < sizeof($depends); $d++) { - if (in_array($depends[$d], $selected)) { - $found = true; - break; - } - } - if (! $found) { - $ret[] = array($selected[$m], implode(" || ", $depends)); - } - } - else { - // single dependency - if (! in_array($user_deps[$selected[$m]]['depends'][$i], $selected)) { - $ret[] = array($selected[$m], $user_deps[$selected[$m]]['depends'][$i]); - } - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -// checks if there are conflicts between user modules -// $selected is an array of selected module names -// returns false if no conflict was found -// returns an array of array(selected module, conflicting module) if conflicts were found -function user_conflicts($selected) { -global $user_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($user_deps[$selected[$m]]['conflicts']); $i++) { - if (in_array($user_deps[$selected[$m]]['conflicts'][$i], $selected)) { - $ret[] = array($selected[$m], $user_deps[$selected[$m]]['conflicts'][$i]); - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -// checks if there are missing dependencies between group modules -// $selected is an array of selected module names -// returns false if no misssing dependency was found -// returns an array of array(selected module, depending module) if missing dependencies were found -function group_depends($selected) { -global $group_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($group_deps[$selected[$m]]['depends']); $i++) { - // check if we have OR-combined modules - if (is_array($group_deps[$selected[$m]]['depends'][$i])) { - // one of the elements is needed - $found = false; - $depends = $group_deps[$selected[$m]]['depends'][$i]; - for ($d = 0; $d < sizeof($depends); $d++) { - if (in_array($depends[$d], $selected)) { - $found = true; - break; - } - } - if (! $found) { - $ret[] = array($selected[$m], implode(" || ", $depends)); - } - } - else { - // single dependency - if (! in_array($group_deps[$selected[$m]]['depends'][$i], $selected)) { - $ret[] = array($selected[$m], $group_deps[$selected[$m]]['depends'][$i]); - } - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -// checks if there are conflicts between group modules -// $selected is an array of selected module names -// returns false if no conflict was found -// returns an array of array(selected module, conflicting module) if conflicts were found -function group_conflicts($selected) { -global $group_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($group_deps[$selected[$m]]['conflicts']); $i++) { - if (in_array($group_deps[$selected[$m]]['conflicts'][$i], $selected)) { - $ret[] = array($selected[$m], $group_deps[$selected[$m]]['conflicts'][$i]); - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -// checks if there are missing dependencies between host modules -// $selected is an array of selected module names -// returns false if no misssing dependency was found -// returns an array of array(selected module, depending module) if missing dependencies were found -function host_depends($selected) { -global $host_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($host_deps[$selected[$m]]['depends']); $i++) { - // check if we have OR-combined modules - if (is_array($host_deps[$selected[$m]]['depends'][$i])) { - // one of the elements is needed - $found = false; - $depends = $host_deps[$selected[$m]]['depends'][$i]; - for ($d = 0; $d < sizeof($depends); $d++) { - if (in_array($depends[$d], $selected)) { - $found = true; - break; - } - } - if (! $found) { - $ret[] = array($selected[$m], implode(" || ", $depends)); - } - } - else { - // single dependency - if (! in_array($host_deps[$selected[$m]]['depends'][$i], $selected)) { - $ret[] = array($selected[$m], $host_deps[$selected[$m]]['depends'][$i]); - } - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - -// checks if there are conflicts between host modules -// $selected is an array of selected module names -// returns false if no conflict was found -// returns an array of array(selected module, conflicting module) if conflicts were found -function host_conflicts($selected) { -global $host_deps; - $ret = array(); - for ($m = 0; $m < sizeof($selected); $m++) { - for ($i = 0; $i < sizeof($host_deps[$selected[$m]]['conflicts']); $i++) { - if (in_array($host_deps[$selected[$m]]['conflicts'][$i], $selected)) { - $ret[] = array($selected[$m], $host_deps[$selected[$m]]['conflicts'][$i]); - } - } - } - if (sizeof($ret) > 0) return $ret; - else return false; -} - ?>