get_Passwd()) { require('conflogin.php'); exit; } // user pressed submit/abort button if ($_POST['submit']) { metarefresh('confmain.php?modulesback=true&moduleschanged=true'); } elseif ($_POST['abort']) { metarefresh('confmain.php?modulesback=true'); } echo $_SESSION['header']; echo "" . _("LDAP Account Manager Configuration") . "\n"; echo "\n"; echo "\n"; echo ("

". "\"LDAP



\n"); 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 for ($i = 0; $i < sizeof($selected_users_temp); $i++) { if (in_array($selected_users_temp[$i], $available_users)) $selected_users[] = $selected_users_temp[$i]; } $no_conflicts_user = true; $no_depends_user = true; // remove modules from selection if ($_POST['user_selected'] && ($_POST['user_remove'])) { $new_selected_users = array(); for ($i = 0; $i < sizeof($selected_users); $i++) { if (! in_array($selected_users[$i], $_POST['user_selected'])) $new_selected_users[] = $selected_users[$i]; } $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; for ($i = 0; $i < sizeof($_POST['user_available']); $i++) { if (! in_array($_POST['user_available'][$i], $selected_users)) $new_selected_users[] = $_POST['user_available'][$i]; } $selected_users = $new_selected_users; $_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 for ($i = 0; $i < sizeof($selected_groups_temp); $i++) { if (in_array($selected_groups_temp[$i], $available_groups)) $selected_groups[] = $selected_groups_temp[$i]; } $no_conflicts_group = true; $no_depends_group = true; // remove modules from selection if ($_POST['group_selected'] && ($_POST['group_remove'])) { $new_selected_groups = array(); for ($i = 0; $i < sizeof($selected_groups); $i++) { if (! in_array($selected_groups[$i], $_POST['group_selected'])) $new_selected_groups[] = $selected_groups[$i]; } $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; for ($i = 0; $i < sizeof($_POST['group_available']); $i++) { if (! in_array($_POST['group_available'][$i], $selected_groups)) $new_selected_groups[] = $_POST['group_available'][$i]; } $selected_groups = $new_selected_groups; $_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 for ($i = 0; $i < sizeof($selected_hosts_temp); $i++) { if (in_array($selected_hosts_temp[$i], $available_hosts)) $selected_hosts[] = $selected_hosts_temp[$i]; } $no_conflicts_host = true; $no_depends_host = true; // remove modules from selection if ($_POST['host_selected'] && ($_POST['host_remove'])) { $new_selected_hosts = array(); for ($i = 0; $i < sizeof($selected_hosts); $i++) { if (! in_array($selected_hosts[$i], $_POST['host_selected'])) $new_selected_hosts[] = $selected_hosts[$i]; } $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; for ($i = 0; $i < sizeof($_POST['host_available']); $i++) { if (! in_array($_POST['host_available'][$i], $selected_hosts)) $new_selected_hosts[] = $_POST['host_available'][$i]; } $selected_hosts = $new_selected_hosts; $_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 "" . _("Selected user modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; echo "

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

\n"; echo "
  \n"; echo "
\n"; echo "" . _("Available user modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; $user_depends = user_depends($selected_users); if ($user_depends != false) { $no_depends_user = false; echo "

\n"; for ($i = 0; $i < sizeof($user_depends); $i++) { echo "" . _("Unsolved dependency: ") . "" . $user_depends[$i][0] . " (" . $user_depends[$i][1] . ")" . "
\n"; } echo "

\n"; } $user_conflicts = user_conflicts($selected_users); if ($user_conflicts != false) { $no_conflicts_user = false; echo "

\n"; for ($i = 0; $i < sizeof($user_conflicts); $i++) { echo "" . _("Conflicting module: ") . "" . $user_conflicts[$i][0] . " (" . $user_conflicts[$i][1] . ")" . "
\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 "" . _("Selected group modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; echo "

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

\n"; echo "
  \n"; echo "
\n"; echo "" . _("Available group modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; $group_depends = group_depends($selected_groups); if ($group_depends != false) { $no_depends_group = false; echo "

\n"; for ($i = 0; $i < sizeof($group_depends); $i++) { echo "" . _("Unsolved dependency: ") . "" . $group_depends[$i][0] . " (" . $group_depends[$i][1] . ")" . "
\n"; } echo "

\n"; } $group_conflicts = group_conflicts($selected_groups); if ($group_conflicts != false) { $no_conflicts_group = false; echo "

\n"; for ($i = 0; $i < sizeof($group_conflicts); $i++) { echo "" . _("Conflicting module: ") . "" . $group_conflicts[$i][0] . " (" . $group_conflicts[$i][1] . ")" . "
\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 "" . _("Selected host modules") . "\n"; echo "\n"; echo "
\n"; echo "
  \n"; echo "

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

\n"; echo "
  \n"; echo "
\n"; echo "" . _("Available host modules") . "\n"; echo "\n"; echo "
\n"; echo "
  
\n"; $host_depends = host_depends($selected_hosts); if ($host_depends != false) { $no_depends_host = false; echo "

\n"; for ($i = 0; $i < sizeof($host_depends); $i++) { echo "" . _("Unsolved dependency: ") . "" . $host_depends[$i][0] . " (" . $host_depends[$i][1] . ")" . "
\n"; } echo "

\n"; } $host_conflicts = host_conflicts($selected_hosts); if ($host_conflicts != false) { $no_conflicts_host = false; echo "

\n"; for ($i = 0; $i < sizeof($host_conflicts); $i++) { echo "" . _("Conflicting module: ") . "" . $host_conflicts[$i][0] . " (" . $host_conflicts[$i][1] . ")" . "
\n"; } echo "

\n"; } echo "

\n"; // submit buttons echo "

\n"; // disable button if there are conflicts/depends if ($no_conflicts_user && $no_conflicts_group && $no_conflicts_host && $no_depends_user && $no_depends_group && $no_depends_host) { echo "\n"; } else { echo "\n"; } echo " "; echo "\n"; echo "

\n"; 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; } ?>