| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | namespace LAM\CONFIG; | 
					
						
							|  |  |  | use \htmlTable; | 
					
						
							|  |  |  | use \htmlOutputText; | 
					
						
							|  |  |  | use \htmlHelpLink; | 
					
						
							|  |  |  | use \htmlHiddenInput; | 
					
						
							|  |  |  | use \htmlButton; | 
					
						
							|  |  |  | use \htmlSpacer; | 
					
						
							|  |  |  | use \htmlElement; | 
					
						
							|  |  |  | use \htmlImage; | 
					
						
							|  |  |  | use \htmlSortableList; | 
					
						
							|  |  |  | use \htmlSubTitle; | 
					
						
							|  |  |  | use \htmlDiv; | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | use \htmlResponsiveRow; | 
					
						
							|  |  |  | use \htmlGroup; | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2009-10-27 18:47:12 +00:00
										 |  |  |   This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) | 
					
						
							| 
									
										
										
										
											2018-03-10 17:48:11 +00:00
										 |  |  |   Copyright (C) 2004 - 2018  Roland Gruber | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |   it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |   the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |   (at your option) any later version. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |   but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |   GNU General Public License for more details. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |   along with this program; if not, write to the Free Software | 
					
						
							|  |  |  |   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-02 12:48:54 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-02 12:48:54 +00:00
										 |  |  |  /** | 
					
						
							|  |  |  | * confmodules lets the user select the account modules | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * @package configuration | 
					
						
							|  |  |  | * @author Roland Gruber | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2004-06-02 12:48:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** Access to config functions */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once('../../lib/config.inc'); | 
					
						
							| 
									
										
										
										
											2004-06-02 12:48:54 +00:00
										 |  |  | /** Access to module lists */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once('../../lib/modules.inc'); | 
					
						
							| 
									
										
										
										
											2017-11-11 15:39:53 +00:00
										 |  |  | /** common functions */ | 
					
						
							|  |  |  | include_once '../../lib/configPages.inc'; | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // start session
 | 
					
						
							| 
									
										
										
										
											2009-07-08 18:03:28 +00:00
										 |  |  | if (strtolower(session_module_name()) == 'files') { | 
					
						
							|  |  |  | 	session_save_path("../../sess"); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-03-10 17:48:11 +00:00
										 |  |  | lam_start_session(); | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | setlanguage(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-31 16:57:12 +00:00
										 |  |  | // check if config is set
 | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | // if not: load login page
 | 
					
						
							| 
									
										
										
										
											2006-01-31 16:57:12 +00:00
										 |  |  | if (!isset($_SESSION['conf_config'])) { | 
					
						
							| 
									
										
										
										
											2004-06-02 12:48:54 +00:00
										 |  |  | 	/** go back to login if password is invalid */ | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 	require('conflogin.php'); | 
					
						
							|  |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | // check if user canceled editing
 | 
					
						
							|  |  |  | if (isset($_POST['cancelSettings'])) { | 
					
						
							|  |  |  | 	metaRefresh("../login.php"); | 
					
						
							|  |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-31 16:57:12 +00:00
										 |  |  | $conf = &$_SESSION['conf_config']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | $errorsToDisplay = checkInput(); | 
					
						
							| 
									
										
										
										
											2006-01-31 16:57:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | // check if button was pressed and if we have to save the settings or go to another tab
 | 
					
						
							| 
									
										
										
										
											2009-10-03 15:44:38 +00:00
										 |  |  | if (isset($_POST['saveSettings']) || isset($_POST['editmodules']) | 
					
						
							|  |  |  | 	|| isset($_POST['edittypes']) || isset($_POST['generalSettingsButton']) | 
					
						
							| 
									
										
										
										
											2015-06-09 19:02:24 +00:00
										 |  |  | 	|| isset($_POST['moduleSettings']) || isset($_POST['jobs'])) { | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 	if (sizeof($errorsToDisplay) == 0) { | 
					
						
							|  |  |  | 		// go to final page
 | 
					
						
							|  |  |  | 		if (isset($_POST['saveSettings'])) { | 
					
						
							|  |  |  | 			metaRefresh("confsave.php"); | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-10-03 15:44:38 +00:00
										 |  |  | 		// go to types page
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		elseif (isset($_POST['edittypes'])) { | 
					
						
							|  |  |  | 			metaRefresh("conftypes.php"); | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-10-03 15:44:38 +00:00
										 |  |  | 		// go to general page
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		elseif (isset($_POST['generalSettingsButton'])) { | 
					
						
							|  |  |  | 			metaRefresh("confmain.php"); | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-10-03 15:44:38 +00:00
										 |  |  | 		// go to module settings page
 | 
					
						
							|  |  |  | 		elseif (isset($_POST['moduleSettings'])) { | 
					
						
							|  |  |  | 			metaRefresh("moduleSettings.php"); | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-06-09 19:02:24 +00:00
										 |  |  | 		// go to jobs page
 | 
					
						
							|  |  |  | 		elseif (isset($_POST['jobs'])) { | 
					
						
							|  |  |  | 			metaRefresh("jobs.php"); | 
					
						
							|  |  |  | 			exit; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo $_SESSION['header']; | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | printHeaderContents(_("LDAP Account Manager Configuration"), '../..'); | 
					
						
							|  |  |  | echo "</head><body class=\"admin\">\n"; | 
					
						
							| 
									
										
										
										
											2010-01-01 17:39:38 +00:00
										 |  |  | // include all JavaScript files
 | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | printJsIncludes('../..'); | 
					
						
							| 
									
										
										
										
											2017-11-11 15:39:53 +00:00
										 |  |  | printConfigurationPageHeaderBar($conf); | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // print error messages
 | 
					
						
							|  |  |  | for ($i = 0; $i < sizeof($errorsToDisplay); $i++) call_user_func_array('StatusMessage', $errorsToDisplay[$i]); | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-24 19:58:49 +00:00
										 |  |  | echo ("<form id=\"inputForm\" action=\"confmodules.php\" method=\"post\" onSubmit=\"saveScrollPosition('inputForm')\">\n"); | 
					
						
							| 
									
										
										
										
											2010-08-28 09:34:00 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-11 15:39:53 +00:00
										 |  |  | printConfigurationPageTabs(ConfigurationPageTab::MODULES); | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | $typeManager = new \LAM\TYPES\TypeManager($conf); | 
					
						
							|  |  |  | $types = $typeManager->getConfiguredTypes(); | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | $container = new htmlResponsiveRow(); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | foreach ($types as $type) { | 
					
						
							|  |  |  | 	config_showAccountModules($type, $container); | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | $legendContainer = new htmlGroup(); | 
					
						
							| 
									
										
										
										
											2011-01-01 19:46:44 +00:00
										 |  |  | $legendContainer->addElement(new htmlOutputText("(*) " . _("Base module"))); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | $legendContainer->addElement(new \htmlSpacer('2rem', null)); | 
					
						
							| 
									
										
										
										
											2011-01-01 19:46:44 +00:00
										 |  |  | $legendContainer->addElement(new htmlHelpLink('237')); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | $container->add($legendContainer, 12); | 
					
						
							|  |  |  | $container->add(new htmlHiddenInput('postAvailable', 'yes'), 12); | 
					
						
							| 
									
										
										
										
											2004-02-21 17:23:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-01 19:46:44 +00:00
										 |  |  | $tabindex = 1; | 
					
						
							|  |  |  | parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							| 
									
										
										
										
											2004-02-21 17:23:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-08 19:44:08 +00:00
										 |  |  | echo "</div></div>"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $buttonContainer = new htmlTable(); | 
					
						
							|  |  |  | $buttonContainer->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | $saveButton = new htmlButton('saveSettings', _('Save')); | 
					
						
							|  |  |  | $saveButton->setIconClass('saveButton'); | 
					
						
							|  |  |  | $buttonContainer->addElement($saveButton); | 
					
						
							|  |  |  | $cancelButton = new htmlButton('cancelSettings', _('Cancel')); | 
					
						
							|  |  |  | $cancelButton->setIconClass('cancelButton'); | 
					
						
							|  |  |  | $buttonContainer->addElement($cancelButton, true); | 
					
						
							|  |  |  | $buttonContainer->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | parseHtml(null, $buttonContainer, array(), false, $tabindex, 'user'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-07-24 19:58:49 +00:00
										 |  |  | if ((sizeof($errorsToDisplay) == 0) && isset($_POST['scrollPositionTop']) && isset($_POST['scrollPositionLeft'])) { | 
					
						
							|  |  |  | 	// scroll to last position
 | 
					
						
							|  |  |  | 	echo '<script type="text/javascript"> | 
					
						
							|  |  |  | 		jQuery(document).ready(function() { | 
					
						
							|  |  |  | 			jQuery(window).scrollTop(' . $_POST['scrollPositionTop'] . '); | 
					
						
							|  |  |  | 			jQuery(window).scrollLeft('. $_POST['scrollPositionLeft'] . '); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	</script>'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-08 19:44:08 +00:00
										 |  |  | echo "</form>\n"; | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | echo "</body>\n"; | 
					
						
							|  |  |  | echo "</html>\n"; | 
					
						
							| 
									
										
										
										
											2004-02-21 17:23:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * Displays the module selection boxes and checks if dependencies are fulfilled. | 
					
						
							|  |  |  | * | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | * @param \LAM\TYPES\ConfiguredType $type account type | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | * @param htmlResponsiveRow $container meta HTML container | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | function config_showAccountModules($type, &$container) { | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 	// account modules
 | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 	$available = getAvailableModules($type->getScope(), true); | 
					
						
							| 
									
										
										
										
											2017-03-12 11:12:11 +00:00
										 |  |  | 	$selected = $type->getModules(); | 
					
						
							| 
									
										
										
										
											2010-04-04 12:47:15 +00:00
										 |  |  | 	$sortedAvailable = array(); | 
					
						
							|  |  |  | 	for ($i = 0; $i < sizeof($available); $i++) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 		$sortedAvailable[$available[$i]] = getModuleAlias($available[$i], $type->getScope()); | 
					
						
							| 
									
										
										
										
											2010-04-04 12:47:15 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	natcasesort($sortedAvailable); | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	// build options for selected and available modules
 | 
					
						
							|  |  |  | 	$selOptions = array(); | 
					
						
							|  |  |  | 	for ($i = 0; $i < sizeof($selected); $i++) { | 
					
						
							|  |  |  | 		if (in_array($selected[$i], $available)) {  // selected modules must be available
 | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			if (is_base_module($selected[$i], $type->getScope())) {  // mark base modules
 | 
					
						
							|  |  |  | 				$selOptions[getModuleAlias($selected[$i], $type->getScope()) . " (" . $selected[$i] .  ")(*)"] = $selected[$i]; | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			else { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 				$selOptions[getModuleAlias($selected[$i], $type->getScope()) . " (" . $selected[$i] .  ")"] = $selected[$i]; | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	$availOptions = array(); | 
					
						
							|  |  |  | 	foreach ($sortedAvailable as $key => $value) { | 
					
						
							|  |  |  | 		if (! in_array($key, $selected)) {  // display non-selected modules
 | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			if (is_base_module($key, $type->getScope())) {  // mark base modules
 | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 				$availOptions[$value . " (" . $key .  ")(*)"] = $key; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			else { | 
					
						
							|  |  |  | 				$availOptions[$value . " (" . $key .  ")"] = $key; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	// add account module selection
 | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 	$container->add(new htmlSubTitle($type->getAlias(), '../../graphics/' . $type->getIcon()), 12); | 
					
						
							| 
									
										
										
										
											2017-12-04 17:31:19 +00:00
										 |  |  | 	if (sizeof($selOptions) > 0) { | 
					
						
							|  |  |  | 		$container->add(new htmlOutputText(_("Selected modules")), 12, 6); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if (sizeof($availOptions) > 0) { | 
					
						
							|  |  |  | 		$container->add(new htmlOutputText(_("Available modules")), 0, 6); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 	$container->addVerticalSpacer('1rem'); | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	// selected modules
 | 
					
						
							|  |  |  | 	if (sizeof($selOptions) > 0) { | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		$listElements = array(); | 
					
						
							|  |  |  | 		foreach ($selOptions as $key => $value) { | 
					
						
							|  |  |  | 			$el = new htmlTable('100%'); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			$mod = new $value($type->getScope()); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 			$availModImage = new htmlImage('../../graphics/' . $mod->getIcon()); | 
					
						
							|  |  |  | 			$availModImage->setCSSClasses(array('size16', 'margin-right5-mobile-only')); | 
					
						
							|  |  |  | 			$el->addElement($availModImage); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 			$el->addElement(new htmlOutputText($key)); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			$delButton = new htmlButton('del_' . $type->getId() . '_' . $value, 'del.png', true); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 			$delButton->alignment = htmlElement::ALIGN_RIGHT; | 
					
						
							|  |  |  | 			$el->addElement($delButton); | 
					
						
							|  |  |  | 			$listElements[] = $el; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 		$selSortable = new htmlSortableList($listElements, $type->getId() . '_selected', null); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		$selSortable->alignment = htmlElement::ALIGN_TOP; | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 		$selSortable->setOnUpdate('updateModulePositions(\'positions_' . $type->getId() . '\', ui.item.data(\'posOrig\'), ui.item.index());'); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 		$container->add($selSortable, 12, 6); | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 		$container->add(new htmlOutputText(''), 12, 6); | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	// available modules
 | 
					
						
							|  |  |  | 	if (sizeof($availOptions) > 0) { | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 		$container->add(new htmlSpacer(null, '2rem'), 12, 0, 0, 'hide-on-tablet'); | 
					
						
							|  |  |  | 		$container->add(new htmlOutputText(_("Available modules")), 12, 0, 0, 'hide-on-tablet'); | 
					
						
							|  |  |  | 		$container->add(new htmlSpacer(null, '1rem'), 12, 0, 0, 'hide-on-tablet'); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		$availTable = new htmlTable(); | 
					
						
							|  |  |  | 		foreach ($availOptions as $text => $key) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			$mod = new $key($type->getScope()); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 			$availModImage = new htmlImage('../../graphics/' . $mod->getIcon()); | 
					
						
							|  |  |  | 			$availModImage->setCSSClasses(array('size16', 'margin10')); | 
					
						
							|  |  |  | 			$availTable->addElement($availModImage); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 			$availTable->addElement(new htmlOutputText($text)); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			$addButton = new htmlButton('add_' . $type->getId() . '_' . $key, 'add.png', true); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 			$addButton->alignment = htmlElement::ALIGN_RIGHT; | 
					
						
							|  |  |  | 			$availTable->addElement($addButton, true); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		$availDiv = new htmlDiv(null, $availTable); | 
					
						
							|  |  |  | 		$availDiv->alignment = htmlElement::ALIGN_TOP; | 
					
						
							|  |  |  | 		$availDiv->setCSSClasses(array('confModList')); | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 		$container->add($availDiv, 12, 6); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2014-11-02 19:16:18 +00:00
										 |  |  | 	$positions = array(); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 	for ($i = 0; $i < sizeof($selOptions); $i++) { | 
					
						
							|  |  |  | 		$positions[] = $i; | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 	$container->add(new htmlHiddenInput('positions_' . $type->getId(), implode(',', $positions)), 12); | 
					
						
							| 
									
										
										
										
											2010-11-14 20:35:34 +00:00
										 |  |  | 	// spacer to next account type
 | 
					
						
							| 
									
										
										
										
											2017-11-05 17:47:15 +00:00
										 |  |  | 	$container->addVerticalSpacer('2rem'); | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Checks user input and saves the entered settings. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @return array list of errors | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | function checkInput() { | 
					
						
							|  |  |  | 	if (!isset($_POST['postAvailable'])) { | 
					
						
							|  |  |  | 		return array(); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	$errors = array(); | 
					
						
							|  |  |  | 	$conf = &$_SESSION['conf_config']; | 
					
						
							|  |  |  | 	$typeSettings = $conf->get_typeSettings(); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 	$typeManager = new \LAM\TYPES\TypeManager($conf); | 
					
						
							|  |  |  | 	$accountTypes = $typeManager->getConfiguredTypes(); | 
					
						
							|  |  |  | 	foreach ($accountTypes as $type) { | 
					
						
							|  |  |  | 		$scope = $type->getScope(); | 
					
						
							|  |  |  | 		$typeId = $type->getId(); | 
					
						
							| 
									
										
										
										
											2012-07-22 18:10:44 +00:00
										 |  |  | 		$available = getAvailableModules($scope, true); | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 		$selected_temp = (isset($typeSettings['modules_' . $typeId])) ? $typeSettings['modules_' . $typeId] : ''; | 
					
						
							| 
									
										
										
										
											2014-11-02 19:16:18 +00:00
										 |  |  | 		$selected_temp = explode(',', $selected_temp); | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		$selected = array(); | 
					
						
							|  |  |  | 		// only use available modules as selected
 | 
					
						
							|  |  |  | 		for ($i = 0; $i < sizeof($selected_temp); $i++) { | 
					
						
							|  |  |  | 			if (in_array($selected_temp[$i], $available)) { | 
					
						
							|  |  |  | 				$selected[] = $selected_temp[$i]; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		// reorder based on sortable list
 | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 		$sorting = $_POST['positions_' . $typeId]; | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		if (!empty($sorting)) { | 
					
						
							|  |  |  | 			$sorting = explode(',', $sorting); | 
					
						
							|  |  |  | 			$sortTmp = array(); | 
					
						
							|  |  |  | 			foreach ($sorting as $pos) { | 
					
						
							|  |  |  | 				$sortTmp[] = $selected[$pos]; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			$selected = $sortTmp; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		// remove modules from selection
 | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		$new_selected = array(); | 
					
						
							|  |  |  | 		for ($i = 0; $i < sizeof($selected); $i++) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			if (!isset($_POST['del_' . $typeId . '_' . $selected[$i]])) { | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 				$new_selected[] = $selected[$i]; | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		$selected = $new_selected; | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 		$typeSettings['modules_' . $typeId] = implode(',', $selected); | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		// add modules to selection
 | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 		foreach ($available as $modName) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			if (isset($_POST['add_' . $typeId . '_' . $modName])) { | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 				$selected[] = $modName; | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 				$typeSettings['modules_' . $typeId] = implode(',', $selected); | 
					
						
							| 
									
										
										
										
											2014-10-26 16:24:44 +00:00
										 |  |  | 				break; | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		// check dependencies
 | 
					
						
							|  |  |  | 		$depends = check_module_depends($selected, getModulesDependencies($scope)); | 
					
						
							|  |  |  | 		if ($depends != false) { | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 			for ($i = 0; $i < sizeof($depends); $i++) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 				$errors[] = array('ERROR', $type->getAlias(), _("Unsolved dependency:") . ' ' . | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 					$depends[$i][0] . " (" . $depends[$i][1] . ")"); | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		// check conflicts
 | 
					
						
							|  |  |  | 		$conflicts = check_module_conflicts($selected, getModulesDependencies($scope)); | 
					
						
							|  |  |  | 		if ($conflicts != false) { | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 			for ($i = 0; $i < sizeof($conflicts); $i++) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 				$errors[] = array('ERROR', $type->getAlias(), _("Conflicting module:") . ' ' . | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 					$conflicts[$i][0] . " (" . $conflicts[$i][1] . ")"); | 
					
						
							| 
									
										
										
										
											2005-01-10 10:41:38 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 		// check for base module
 | 
					
						
							|  |  |  | 		$baseCount = 0; | 
					
						
							|  |  |  | 		for ($i = 0; $i < sizeof($selected); $i++) { | 
					
						
							|  |  |  | 			if (is_base_module($selected[$i], $scope)) { | 
					
						
							|  |  |  | 				$baseCount++; | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		if ($baseCount != 1) { | 
					
						
							| 
									
										
										
										
											2016-12-28 18:53:49 +00:00
										 |  |  | 			$errors[] = array('ERROR', $type->getAlias(), _("No or more than one base module selected!")); | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 	$conf->set_typeSettings($typeSettings); | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-12 17:41:44 +00:00
										 |  |  | 	return $errors; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2004-02-01 12:33:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ?>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 |