| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2016-12-26 09:02:08 +00:00
										 |  |  | namespace LAM\TOOLS\PROFILE_EDITOR; | 
					
						
							|  |  |  | use \htmlTable; | 
					
						
							|  |  |  | use \htmlTitle; | 
					
						
							|  |  |  | use \htmlStatusMessage; | 
					
						
							|  |  |  | use \LAMCfgMain; | 
					
						
							|  |  |  | use \htmlSubTitle; | 
					
						
							|  |  |  | use \htmlSpacer; | 
					
						
							|  |  |  | use \htmlSelect; | 
					
						
							|  |  |  | use \htmlButton; | 
					
						
							|  |  |  | use \htmlImage; | 
					
						
							|  |  |  | use \htmlLink; | 
					
						
							|  |  |  | use \htmlOutputText; | 
					
						
							|  |  |  | use \htmlHelpLink; | 
					
						
							|  |  |  | use \htmlHiddenInput; | 
					
						
							|  |  |  | use \htmlInputField; | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | use \LAM\TYPES\TypeManager; | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | /* | 
					
						
							|  |  |  | $Id$ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 18:47:12 +00:00
										 |  |  |   This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) | 
					
						
							| 
									
										
										
										
											2017-02-11 16:11:37 +00:00
										 |  |  |   Copyright (C) 2003 - 2017  Roland Gruber | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +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-10 22:13:39 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-10 22:13:39 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * This is the main window of the profile editor. | 
					
						
							|  |  |  | * | 
					
						
							| 
									
										
										
										
											2004-10-09 11:04:20 +00:00
										 |  |  | * @package profiles | 
					
						
							| 
									
										
										
										
											2004-06-10 22:13:39 +00:00
										 |  |  | * @author Roland Gruber | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | /** security functions */ | 
					
						
							|  |  |  | include_once("../../lib/security.inc"); | 
					
						
							| 
									
										
										
										
											2004-06-10 22:13:39 +00:00
										 |  |  | /** helper functions for profiles */ | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | include_once("../../lib/profiles.inc"); | 
					
						
							| 
									
										
										
										
											2004-06-10 22:13:39 +00:00
										 |  |  | /** access to LDAP server */ | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | include_once("../../lib/ldap.inc"); | 
					
						
							| 
									
										
										
										
											2004-06-10 22:13:39 +00:00
										 |  |  | /** access to configuration options */ | 
					
						
							| 
									
										
										
										
											2003-08-03 11:05:40 +00:00
										 |  |  | include_once("../../lib/config.inc"); | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // start session
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | startSecureSession(); | 
					
						
							| 
									
										
										
										
											2017-02-11 16:11:37 +00:00
										 |  |  | enforceUserIsLoggedIn(); | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-30 13:15:39 +00:00
										 |  |  | // die if no write access
 | 
					
						
							|  |  |  | if (!checkIfWriteAccessIsAllowed()) die(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-22 10:37:01 +00:00
										 |  |  | checkIfToolIsActive('toolProfileEditor'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-03 11:05:40 +00:00
										 |  |  | setlanguage(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-15 19:16:46 +00:00
										 |  |  | if (!empty($_POST)) { | 
					
						
							|  |  |  | 	validateSecurityToken(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | $typeManager = new TypeManager(); | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | $types = $typeManager->getConfiguredTypes(); | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | $profileClasses = array(); | 
					
						
							| 
									
										
										
										
											2010-05-19 19:22:29 +00:00
										 |  |  | $profileClassesTemp = array(); | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | foreach ($types as $type) { | 
					
						
							|  |  |  | 	if ($type->isHidden() || !checkIfWriteAccessIsAllowed($type->getId())) { | 
					
						
							| 
									
										
										
										
											2013-01-01 20:46:28 +00:00
										 |  |  | 		continue; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-12-13 09:59:16 +00:00
										 |  |  | 	$profileList = \LAM\PROFILES\getAccountProfiles($type->getId()); | 
					
						
							|  |  |  | 	natcasesort($profileList); | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 	$profileClassesTemp[$type->getAlias()] = array( | 
					
						
							|  |  |  | 		'typeId' => $type->getId(), | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		'scope' => $type->getScope(), | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 		'title' => $type->getAlias(), | 
					
						
							| 
									
										
										
										
											2017-07-05 15:44:18 +00:00
										 |  |  | 		'icon' => $type->getIcon(), | 
					
						
							| 
									
										
										
										
											2017-12-13 09:59:16 +00:00
										 |  |  | 		'profiles' => $profileList); | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-05-19 19:22:29 +00:00
										 |  |  | $profileClassesKeys = array_keys($profileClassesTemp); | 
					
						
							|  |  |  | natcasesort($profileClassesKeys); | 
					
						
							|  |  |  | $profileClassesKeys = array_values($profileClassesKeys); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | foreach ($profileClassesKeys as $profileClassesKey) { | 
					
						
							|  |  |  | 	$profileClasses[] = $profileClassesTemp[$profileClassesKey]; | 
					
						
							| 
									
										
										
										
											2010-05-19 19:22:29 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2004-12-12 11:27:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | // check if user is logged in, if not go to login
 | 
					
						
							|  |  |  | if (!$_SESSION['ldap'] || !$_SESSION['ldap']->server()) { | 
					
						
							| 
									
										
										
										
											2003-08-28 12:41:47 +00:00
										 |  |  | 	metaRefresh("../login.php"); | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 16:52:20 +00:00
										 |  |  | // check if new profile should be created
 | 
					
						
							|  |  |  | elseif (isset($_POST['createProfileButton'])) { | 
					
						
							| 
									
										
										
										
											2012-03-20 20:44:24 +00:00
										 |  |  | 	metaRefresh("profilepage.php?type=" . htmlspecialchars($_POST['createProfile'])); | 
					
						
							| 
									
										
										
										
											2005-11-06 16:35:39 +00:00
										 |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2008-12-16 16:52:20 +00:00
										 |  |  | // check if a profile should be edited
 | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | foreach ($profileClasses as $profileClass) { | 
					
						
							|  |  |  | 	if (isset($_POST['editProfile_' . $profileClass['typeId']]) || isset($_POST['editProfile_' . $profileClass['typeId'] . '_x'])) { | 
					
						
							|  |  |  | 		metaRefresh("profilepage.php?type=" . htmlspecialchars($profileClass['typeId']) . | 
					
						
							|  |  |  | 					"&edit=" . htmlspecialchars($_POST['profile_' . $profileClass['typeId']])); | 
					
						
							| 
									
										
										
										
											2008-12-16 16:52:20 +00:00
										 |  |  | 		exit; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | include '../main_header.php'; | 
					
						
							| 
									
										
										
										
											2013-01-19 13:18:52 +00:00
										 |  |  | echo "<div class=\"user-bright smallPaddingContent\">\n"; | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | echo "<form name=\"profilemainForm\" action=\"profilemain.php\" method=\"post\">\n"; | 
					
						
							| 
									
										
										
										
											2015-05-15 19:16:46 +00:00
										 |  |  | echo '<input type="hidden" name="' . getSecurityTokenName() . '" value="' . getSecurityTokenValue() . '">'; | 
					
						
							| 
									
										
										
										
											2013-01-12 13:58:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | $container = new htmlTable(); | 
					
						
							|  |  |  | $container->addElement(new htmlTitle(_("Profile editor")), true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (isset($_POST['deleteProfile']) && ($_POST['deleteProfile'] == 'true')) { | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 	$type = $typeManager->getConfiguredType($_POST['profileDeleteType']); | 
					
						
							|  |  |  | 	if ($type->isHidden()) { | 
					
						
							| 
									
										
										
										
											2013-01-01 20:46:28 +00:00
										 |  |  | 		logNewMessage(LOG_ERR, 'User tried to delete hidden account type profile: ' . $_POST['profileDeleteType']); | 
					
						
							|  |  |  | 		die(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 	// delete profile
 | 
					
						
							| 
									
										
										
										
											2017-01-06 12:56:17 +00:00
										 |  |  | 	if (\LAM\PROFILES\delAccountProfile($_POST['profileDeleteName'], $_POST['profileDeleteType'])) { | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 		$message = new htmlStatusMessage('INFO', _('Deleted profile.'), $type->getAlias() . ': ' . htmlspecialchars($_POST['profileDeleteName'])); | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 		$message->colspan = 10; | 
					
						
							|  |  |  | 		$container->addElement($message, true); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	else { | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 		$message = new htmlStatusMessage('ERROR', _('Unable to delete profile!'), $type->getAlias() . ': ' . htmlspecialchars($_POST['profileDeleteName'])); | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 		$message->colspan = 10; | 
					
						
							|  |  |  | 		$container->addElement($message, true); | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | $configProfiles = getConfigProfiles(); | 
					
						
							|  |  |  | $serverProfiles = array(); | 
					
						
							|  |  |  | foreach ($configProfiles as $profileName) { | 
					
						
							|  |  |  | 	$serverProfiles[$profileName] = new \LAMConfig($profileName); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // import profiles
 | 
					
						
							|  |  |  | if (!empty($_POST['import'])) { | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	$cfg = new LAMCfgMain(); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	// check master password
 | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 	$errMessage = null; | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	if (!$cfg->checkPassword($_POST['passwd_i_' . $_POST['typeId']])) { | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage = new htmlStatusMessage('ERROR', _('Master password is wrong!')); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	elseif (!empty($_POST['importProfiles'])) { | 
					
						
							|  |  |  | 		$options = array(); | 
					
						
							|  |  |  | 		foreach ($_POST['importProfiles'] as $importProfiles) { | 
					
						
							|  |  |  | 			$parts = explode('##', $importProfiles); | 
					
						
							|  |  |  | 			$options[] = array('conf' => $parts[0], 'typeId' => $parts[1], 'name' => $parts[2]); | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage = importProfiles($_POST['typeId'], $options, $serverProfiles, $typeManager); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-09-18 17:39:08 +00:00
										 |  |  | 	if ($errMessage !== null) { | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage->colspan = 10; | 
					
						
							|  |  |  | 		$container->addElement($errMessage, true); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | // export profiles
 | 
					
						
							|  |  |  | if (!empty($_POST['export'])) { | 
					
						
							|  |  |  | 	$cfg = new LAMCfgMain(); | 
					
						
							|  |  |  | 	// check master password
 | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 	$errMessage = null; | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	if (!$cfg->checkPassword($_POST['passwd_e_' . $_POST['typeId']])) { | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage = new htmlStatusMessage('ERROR', _('Master password is wrong!')); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	elseif (!empty($_POST['exportProfiles'])) { | 
					
						
							|  |  |  | 		$options = array(); | 
					
						
							|  |  |  | 		foreach ($_POST['exportProfiles'] as $importProfiles) { | 
					
						
							|  |  |  | 			$parts = explode('##', $importProfiles); | 
					
						
							|  |  |  | 			$options[] = array('conf' => $parts[0], 'typeId' => $parts[1]); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		$typeId = $_POST['typeId']; | 
					
						
							|  |  |  | 		$name = $_POST['name_' . $typeId]; | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage = exportProfiles($typeId, $name, $options, $serverProfiles, $typeManager); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-09-18 17:39:08 +00:00
										 |  |  | 	if ($errMessage !== null) { | 
					
						
							| 
									
										
										
										
											2017-01-05 20:05:17 +00:00
										 |  |  | 		$errMessage->colspan = 10; | 
					
						
							|  |  |  | 		$container->addElement($errMessage, true); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-26 17:30:55 +00:00
										 |  |  | if (isset($_GET['savedSuccessfully'])) { | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$message = new htmlStatusMessage("INFO", _("Profile was saved."), htmlspecialchars($_GET['savedSuccessfully'])); | 
					
						
							|  |  |  | 	$message->colspan = 10; | 
					
						
							|  |  |  | 	$container->addElement($message, true); | 
					
						
							| 
									
										
										
										
											2010-05-26 17:30:55 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-16 16:52:20 +00:00
										 |  |  | // new profile
 | 
					
						
							| 
									
										
										
										
											2014-01-15 20:48:52 +00:00
										 |  |  | if (!empty($profileClasses)) { | 
					
						
							|  |  |  | 	$container->addElement(new htmlSubTitle(_('Create a new profile')), true); | 
					
						
							|  |  |  | 	$sortedTypes = array(); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 	foreach ($profileClasses as $profileClass) { | 
					
						
							|  |  |  | 		$sortedTypes[$profileClass['title']] = $profileClass['typeId']; | 
					
						
							| 
									
										
										
										
											2014-01-15 20:48:52 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	natcasesort($sortedTypes); | 
					
						
							|  |  |  | 	$newContainer = new htmlTable(); | 
					
						
							|  |  |  | 	$newProfileSelect = new htmlSelect('createProfile', $sortedTypes); | 
					
						
							|  |  |  | 	$newProfileSelect->setHasDescriptiveElements(true); | 
					
						
							|  |  |  | 	$newProfileSelect->setWidth('15em'); | 
					
						
							|  |  |  | 	$newContainer->addElement($newProfileSelect); | 
					
						
							|  |  |  | 	$newContainer->addElement(new htmlSpacer('10px', null)); | 
					
						
							|  |  |  | 	$newContainer->addElement(new htmlButton('createProfileButton', _('Create')), true); | 
					
						
							|  |  |  | 	$container->addElement($newContainer, true); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							| 
									
										
										
										
											2008-12-16 16:52:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // existing profiles
 | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | $container->addElement(new htmlSubTitle(_('Manage existing profiles')), true); | 
					
						
							|  |  |  | $existingContainer = new htmlTable(); | 
					
						
							|  |  |  | $existingContainer->colspan = 5; | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | foreach ($profileClasses as $profileClass) { | 
					
						
							|  |  |  | 	$existingContainer->addElement(new htmlImage('../../graphics/' . $profileClass['icon'])); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$existingContainer->addElement(new htmlSpacer('3px', null)); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 	$existingContainer->addElement(new htmlOutputText($profileClass['title'])); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$existingContainer->addElement(new htmlSpacer('3px', null)); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 	$select = new htmlSelect('profile_' . $profileClass['typeId'], $profileClass['profiles']); | 
					
						
							| 
									
										
										
										
											2010-10-18 19:46:21 +00:00
										 |  |  | 	$select->setWidth('15em'); | 
					
						
							|  |  |  | 	$existingContainer->addElement($select); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$existingContainer->addElement(new htmlSpacer('3px', null)); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 	$editButton = new htmlButton('editProfile_' . $profileClass['typeId'], 'edit.png', true); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$editButton->setTitle(_('Edit')); | 
					
						
							|  |  |  | 	$existingContainer->addElement($editButton); | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 	$deleteLink = new htmlLink(null, '#', '../../graphics/delete.png'); | 
					
						
							|  |  |  | 	$deleteLink->setTitle(_('Delete')); | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 	$deleteLink->setOnClick("profileShowDeleteDialog('" . _('Delete') . "', '" . _('Ok') . "', '" . _('Cancel') . "', '" . $profileClass['typeId'] . "', '" . 'profile_' . $profileClass['typeId'] . "');"); | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 	$existingContainer->addElement($deleteLink); | 
					
						
							| 
									
										
										
										
											2012-10-28 15:06:33 +00:00
										 |  |  | 	if (count($configProfiles) > 1) { | 
					
						
							|  |  |  | 		$importLink = new htmlLink(null, '#', '../../graphics/import.png'); | 
					
						
							|  |  |  | 		$importLink->setTitle(_('Import profiles')); | 
					
						
							|  |  |  | 		$importLink->setOnClick("showDistributionDialog('" . _("Import profiles") . "', '" . | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 								_('Ok') . "', '" . _('Cancel') . "', '" . $profileClass['typeId'] . "', 'import');"); | 
					
						
							| 
									
										
										
										
											2012-10-28 15:06:33 +00:00
										 |  |  | 		$existingContainer->addElement($importLink); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2012-10-28 15:03:36 +00:00
										 |  |  | 	$exportLink = new htmlLink(null, '#', '../../graphics/export.png'); | 
					
						
							|  |  |  | 	$exportLink->setTitle(_('Export profile')); | 
					
						
							|  |  |  | 	$exportLink->setOnClick("showDistributionDialog('" . _("Export profile") . "', '" . | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 							_('Ok') . "', '" . _('Cancel') . "', '" . $profileClass['typeId'] . "', 'export', '" . 'profile_' . $profileClass['typeId'] . "');"); | 
					
						
							| 
									
										
										
										
											2012-10-28 15:03:36 +00:00
										 |  |  | 	$existingContainer->addElement($exportLink); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 	$existingContainer->addNewLine(); | 
					
						
							| 
									
										
										
										
											2004-12-12 11:27:57 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | $container->addElement($existingContainer); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | $container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // generate content
 | 
					
						
							|  |  |  | $tabindex = 1; | 
					
						
							|  |  |  | parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-12 11:27:57 +00:00
										 |  |  | echo "</form>\n"; | 
					
						
							| 
									
										
										
										
											2010-10-16 17:52:08 +00:00
										 |  |  | echo "</div>\n"; | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | foreach ($profileClasses as $profileClass) { | 
					
						
							|  |  |  | 	$typeId = $profileClass['typeId']; | 
					
						
							|  |  |  | 	$scope = $profileClass['scope']; | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$importOptions = array(); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	foreach ($configProfiles as $profile) { | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | 		$typeManagerImport = new TypeManager($serverProfiles[$profile]); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		$typesImport = $typeManagerImport->getConfiguredTypesForScope($scope); | 
					
						
							|  |  |  | 		foreach ($typesImport as $typeImport) { | 
					
						
							|  |  |  | 			if (($profile != $_SESSION['config']->getName()) || ($typeImport->getId() != $typeId)) { | 
					
						
							| 
									
										
										
										
											2017-01-06 12:56:17 +00:00
										 |  |  | 				$accountProfiles = \LAM\PROFILES\getAccountProfiles($typeImport->getId(), $profile); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 				if (!empty($accountProfiles)) { | 
					
						
							| 
									
										
										
										
											2017-11-04 18:27:02 +00:00
										 |  |  | 					foreach ($accountProfiles as $accountProfile) { | 
					
						
							|  |  |  | 						$importOptions[$profile][$typeImport->getAlias() . ': ' . $accountProfile] = $profile . '##' . $typeImport->getId() . '##' . $accountProfile; | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 					} | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	//import dialog
 | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 	echo "<div id=\"importDialog_$typeId\" class=\"hidden\">\n"; | 
					
						
							|  |  |  | 	echo "<form id=\"importDialogForm_$typeId\" method=\"post\" action=\"profilemain.php\">\n"; | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	$container = new htmlTable(); | 
					
						
							|  |  |  | 	$container->addElement(new htmlOutputText(_('Profiles')), true); | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$select = new htmlSelect('importProfiles', $importOptions, array(), count($importOptions, 1) < 15 ? count($importOptions, 1) : 15); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	$select->setMultiSelect(true); | 
					
						
							|  |  |  | 	$select->setHasDescriptiveElements(true); | 
					
						
							|  |  |  | 	$select->setContainsOptgroups(true); | 
					
						
							|  |  |  | 	$select->setWidth('290px'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$container->addElement($select); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('362'), true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$container->addElement(new htmlOutputText(_("Master password")), true); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$exportPasswd = new htmlInputField('passwd_i_' . $typeId); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	$exportPasswd->setIsPassword(true); | 
					
						
							|  |  |  | 	$container->addElement($exportPasswd); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('236')); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container->addElement(new htmlHiddenInput('import', '1')); | 
					
						
							| 
									
										
										
										
											2016-12-25 17:46:41 +00:00
										 |  |  | 	$container->addElement(new htmlHiddenInput('typeId', $typeId), true); | 
					
						
							| 
									
										
										
										
											2015-05-15 19:16:46 +00:00
										 |  |  | 	addSecurityTokenToMetaHTML($container); | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 	parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	echo '</form>'; | 
					
						
							|  |  |  | 	echo "</div>\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	//export dialog
 | 
					
						
							|  |  |  | 	echo "<div id=\"exportDialog_$typeId\" class=\"hidden\">\n"; | 
					
						
							|  |  |  | 	echo "<form id=\"exportDialogForm_$typeId\" method=\"post\" action=\"profilemain.php\">\n"; | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container = new htmlTable(); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container->addElement(new htmlOutputText(_("Target server profile")), true); | 
					
						
							|  |  |  | 	$exportOptions = array(); | 
					
						
							|  |  |  | 	foreach ($configProfiles as $profile) { | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | 		$typeManagerExport = new TypeManager($serverProfiles[$profile]); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		$typesExport = $typeManagerExport->getConfiguredTypesForScope($scope); | 
					
						
							|  |  |  | 		foreach ($typesExport as $typeExport) { | 
					
						
							|  |  |  | 			if (($profile != $_SESSION['config']->getName()) || ($typeExport->getId() != $typeId)) { | 
					
						
							|  |  |  | 				$exportOptions[$typeManagerExport->getConfig()->getName()][$typeExport->getAlias()] = $profile . '##' . $typeExport->getId(); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	$exportOptions['*' . _('Global templates')][_('Global templates')] = 'templates*##'; | 
					
						
							| 
									
										
										
										
											2016-12-19 20:32:08 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-06 09:11:29 +00:00
										 |  |  | 	$select = new htmlSelect('exportProfiles', $exportOptions, array(), count($exportOptions) < 10 ? count($exportOptions, 1) : 10); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$select->setHasDescriptiveElements(true); | 
					
						
							|  |  |  | 	$select->setContainsOptgroups(true); | 
					
						
							|  |  |  | 	$select->setMultiSelect(true); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container->addElement($select); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('363'), true); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$container->addElement(new htmlOutputText(_("Master password")), true); | 
					
						
							|  |  |  | 	$exportPasswd = new htmlInputField('passwd_e_' . $typeId); | 
					
						
							|  |  |  | 	$exportPasswd->setIsPassword(true); | 
					
						
							|  |  |  | 	$container->addElement($exportPasswd); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('236')); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHiddenInput('export', '1'), true); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHiddenInput('typeId', $typeId), true); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHiddenInput('name_' . $typeId, '_'), true); | 
					
						
							|  |  |  | 	addSecurityTokenToMetaHTML($container); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	echo '</form>'; | 
					
						
							|  |  |  | 	echo "</div>\n"; | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2012-10-28 14:37:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | // form for delete action
 | 
					
						
							|  |  |  | echo '<div id="deleteProfileDialog" class="hidden"><form id="deleteProfileForm" action="profilemain.php" method="post">'; | 
					
						
							|  |  |  | 	echo _("Do you really want to delete this profile?"); | 
					
						
							|  |  |  | 	echo '<br><br><div class="nowrap">'; | 
					
						
							|  |  |  | 	echo _("Profile name") . ': <div id="deleteText" style="display: inline;"></div></div>'; | 
					
						
							|  |  |  | 	echo '<input id="profileDeleteType" type="hidden" name="profileDeleteType" value="">'; | 
					
						
							|  |  |  | 	echo '<input id="profileDeleteName" type="hidden" name="profileDeleteName" value="">'; | 
					
						
							|  |  |  | 	echo '<input type="hidden" name="deleteProfile" value="true">'; | 
					
						
							| 
									
										
										
										
											2015-05-15 19:16:46 +00:00
										 |  |  | 	echo '<input type="hidden" name="' . getSecurityTokenName() . '" value="' . getSecurityTokenValue() . '">'; | 
					
						
							| 
									
										
										
										
											2011-04-25 18:00:47 +00:00
										 |  |  | echo '</form></div>'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | include '../main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-05-25 10:57:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Imports the selected account profiles. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param string $typeId type id | 
					
						
							|  |  |  |  * @param array $options options | 
					
						
							|  |  |  |  * @param \LAMConfig[] $serverProfiles server profiles (name => profile object) | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  |  * @param TypeManager $typeManager type manager | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  |  * @return \htmlStatusMessage message or null | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | function importProfiles($typeId, $options, &$serverProfiles, TypeManager &$typeManager) { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	foreach ($options as $option) { | 
					
						
							|  |  |  | 		$sourceConfName = $option['conf']; | 
					
						
							|  |  |  | 		$sourceTypeId = $option['typeId']; | 
					
						
							|  |  |  | 		$sourceName = $option['name']; | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | 		$sourceTypeManager = new TypeManager($serverProfiles[$sourceConfName]); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		$sourceType = $sourceTypeManager->getConfiguredType($sourceTypeId); | 
					
						
							|  |  |  | 		$targetType = $typeManager->getConfiguredType($typeId); | 
					
						
							| 
									
										
										
										
											2017-09-18 17:39:08 +00:00
										 |  |  | 		if (($sourceType !== null) && ($targetType !== null)) { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 			try { | 
					
						
							| 
									
										
										
										
											2017-01-06 12:56:17 +00:00
										 |  |  | 				\LAM\PROFILES\copyAccountProfile($sourceType, $sourceName, $targetType); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			catch (\LAMException $e) { | 
					
						
							|  |  |  | 				return new \htmlStatusMessage('ERROR', $e->getTitle(), $e->getMessage()); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return new \htmlStatusMessage('INFO', _('Import successful')); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Exports the selected account profile. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param string $typeId source type id | 
					
						
							|  |  |  |  * @param string $name profile name | 
					
						
							|  |  |  |  * @param array $options options | 
					
						
							|  |  |  |  * @param \LAMConfig[] $serverProfiles server profiles (name => profile object) | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  |  * @param TypeManager $typeManager type manager | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  |  * @return \htmlStatusMessage message or null | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | function exportProfiles($typeId, $name, $options, &$serverProfiles, TypeManager &$typeManager) { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 	$sourceType = $typeManager->getConfiguredType($typeId); | 
					
						
							| 
									
										
										
										
											2017-09-18 17:39:08 +00:00
										 |  |  | 	if ($sourceType === null) { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 		return null; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	foreach ($options as $option) { | 
					
						
							|  |  |  | 		$targetConfName = $option['conf']; | 
					
						
							|  |  |  | 		if ($targetConfName == 'templates*') { | 
					
						
							|  |  |  | 			try { | 
					
						
							| 
									
										
										
										
											2017-01-06 12:56:17 +00:00
										 |  |  | 				\LAM\PROFILES\copyAccountProfileToTemplates($sourceType, $name); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			catch (\LAMException $e) { | 
					
						
							|  |  |  | 				return new \htmlStatusMessage('ERROR', $e->getTitle(), $e->getMessage()); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			$targetTypeId = $option['typeId']; | 
					
						
							| 
									
										
										
										
											2017-09-17 08:17:13 +00:00
										 |  |  | 			$targetTypeManager = new TypeManager($serverProfiles[$targetConfName]); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 			$targetType = $targetTypeManager->getConfiguredType($targetTypeId); | 
					
						
							| 
									
										
										
										
											2017-09-18 17:39:08 +00:00
										 |  |  | 			if ($targetType !== null) { | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 				try { | 
					
						
							| 
									
										
										
										
											2017-01-06 12:56:17 +00:00
										 |  |  | 					\LAM\PROFILES\copyAccountProfile($sourceType, $name, $targetType); | 
					
						
							| 
									
										
										
										
											2017-01-03 19:02:29 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 				catch (\LAMException $e) { | 
					
						
							|  |  |  | 					return new \htmlStatusMessage('ERROR', $e->getTitle(), $e->getMessage()); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return new \htmlStatusMessage('INFO', _('Export successful')); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-12 11:27:57 +00:00
										 |  |  | ?>
 |