| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | $Id$ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-27 18:47:12 +00:00
										 |  |  |   This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  |   Copyright (C) 2003 - 2010  Roland Gruber | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-20 18:07:10 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-20 18:07:10 +00:00
										 |  |  | /** | 
					
						
							|  |  |  | * This is an editor for organizational units. | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * @author Roland Gruber | 
					
						
							|  |  |  | * @package tools | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | /** security functions */ | 
					
						
							|  |  |  | include_once("../lib/security.inc"); | 
					
						
							| 
									
										
										
										
											2005-07-20 18:07:10 +00:00
										 |  |  | /** access to configuration data */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/config.inc"); | 
					
						
							| 
									
										
										
										
											2005-07-20 18:07:10 +00:00
										 |  |  | /** access LDAP server */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/ldap.inc"); | 
					
						
							| 
									
										
										
										
											2005-07-20 18:07:10 +00:00
										 |  |  | /** used to print status messages */ | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | include_once("../lib/status.inc"); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // start session
 | 
					
						
							| 
									
										
										
										
											2006-03-26 17:51:25 +00:00
										 |  |  | startSecureSession(); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-30 13:15:39 +00:00
										 |  |  | // die if no write access
 | 
					
						
							|  |  |  | if (!checkIfWriteAccessIsAllowed()) die(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | setlanguage(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | $types = $_SESSION['config']->get_ActiveTypes(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | // check if deletion was canceled
 | 
					
						
							|  |  |  | if (isset($_POST['abort'])) { | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	display_main(null, null); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | $error = null; | 
					
						
							|  |  |  | $message = null; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | // check if submit button was pressed
 | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | if (isset($_POST['createOU']) || isset($_POST['deleteOU'])) { | 
					
						
							|  |  |  | 	// new ou
 | 
					
						
							|  |  |  | 	if (isset($_POST['createOU'])) { | 
					
						
							|  |  |  | 		// create ou if valid
 | 
					
						
							| 
									
										
										
										
											2009-08-14 18:06:15 +00:00
										 |  |  | 		if (preg_match("/^[a-z0-9 _\\-]+$/i", $_POST['newOU'])) { | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 			// check if ou already exists
 | 
					
						
							|  |  |  | 			$new_dn = "ou=" . $_POST['newOU'] . "," . $_POST['parentOU']; | 
					
						
							| 
									
										
										
										
											2011-04-25 18:01:11 +00:00
										 |  |  | 			$found = ldapGetDN($new_dn); | 
					
						
							|  |  |  | 			if ($found == null) { | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 				// add new ou
 | 
					
						
							|  |  |  | 				$ou = array(); | 
					
						
							|  |  |  | 				$ou['objectClass'] = "organizationalunit"; | 
					
						
							|  |  |  | 				$ou['ou'] = $_POST['newOU']; | 
					
						
							|  |  |  | 				$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou); | 
					
						
							|  |  |  | 				if ($ret) { | 
					
						
							|  |  |  | 					$message = _("New OU created successfully."); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				else { | 
					
						
							|  |  |  | 					$error = _("Unable to create new OU!"); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 			else $error = _("OU already exists!"); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 		// show errormessage if ou is invalid
 | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			$error = _("OU is invalid!") . "<br>" . $_POST['newOU']; | 
					
						
							| 
									
										
										
										
											2003-08-05 18:30:31 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	// delete ou, user was sure
 | 
					
						
							|  |  |  | 	elseif (isset($_POST['deleteOU']) && isset($_POST['sure'])) { | 
					
						
							|  |  |  | 		$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['deletename']); | 
					
						
							|  |  |  | 		if ($ret) { | 
					
						
							|  |  |  | 			$message = _("OU deleted successfully."); | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 		else { | 
					
						
							|  |  |  | 			$error = _("Unable to delete OU!"); | 
					
						
							| 
									
										
										
										
											2003-08-05 18:30:31 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	// ask if user is sure to delete
 | 
					
						
							|  |  |  | 	elseif (isset($_POST['deleteOU'])) { | 
					
						
							|  |  |  | 		// check for sub entries
 | 
					
						
							|  |  |  | 		$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['deleteableOU'], "ObjectClass=*", array("")); | 
					
						
							|  |  |  | 		$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr); | 
					
						
							|  |  |  | 		if ($sr && $info['count'] == 0) { | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | 			// print header
 | 
					
						
							|  |  |  | 			include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 			echo '<div class="userlist-bright smallPaddingContent">'; | 
					
						
							|  |  |  | 			echo "<form action=\"ou_edit.php\" method=\"post\">\n"; | 
					
						
							|  |  |  | 			$tabindex = 1; | 
					
						
							|  |  |  | 			$container = new htmlTable(); | 
					
						
							|  |  |  | 			$label = new htmlOutputText(_("Do you really want to delete this OU?")); | 
					
						
							|  |  |  | 			$label->colspan = 5; | 
					
						
							|  |  |  | 			$container->addElement($label, true); | 
					
						
							|  |  |  | 			$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | 			$dnLabel = new htmlOutputText(getAbstractDN($_POST['deleteableOU'])); | 
					
						
							|  |  |  | 			$dnLabel->colspan = 5; | 
					
						
							|  |  |  | 			$container->addElement($dnLabel, true); | 
					
						
							|  |  |  | 			$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | 			$container->addElement(new htmlButton('sure', _("Delete")));			 | 
					
						
							|  |  |  | 			$container->addElement(new htmlButton('abort', _("Cancel"))); | 
					
						
							|  |  |  | 			$container->addElement(new htmlHiddenInput('deleteOU', 'submit'));		 | 
					
						
							|  |  |  | 			$container->addElement(new htmlHiddenInput('deletename', $_POST['deleteableOU']));		 | 
					
						
							|  |  |  | 			parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							|  |  |  | 			echo "</form>"; | 
					
						
							|  |  |  | 			echo '</div>'; | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 			include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | 			exit(); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			$error = _("OU is not empty or invalid!"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | display_main($message, $error); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Displays the main page of the OU editor | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  |  *  | 
					
						
							|  |  |  |  * @param String $message info message | 
					
						
							|  |  |  |  * @param String $error error message | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | function display_main($message, $error) { | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	// display main page
 | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  | 	include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	echo '<div class="userlist-bright smallPaddingContent">'; | 
					
						
							|  |  |  | 	echo ("<form action=\"ou_edit.php\" method=\"post\">\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$tabindex = 1; | 
					
						
							|  |  |  | 	$container = new htmlTable(); | 
					
						
							|  |  |  | 	$container->addElement(new htmlSubTitle(_("OU editor")), true); | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | 	if (isset($error)) { | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 		$msg = new htmlStatusMessage("ERROR", "", $error); | 
					
						
							|  |  |  | 		$msg->colspan = 5; | 
					
						
							|  |  |  | 		$container->addElement($msg, true); | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	elseif (isset($message)) { | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 		$msg = new htmlStatusMessage("INFO", "", $message); | 
					
						
							|  |  |  | 		$msg->colspan = 5; | 
					
						
							|  |  |  | 		$container->addElement($msg, true); | 
					
						
							| 
									
										
										
										
											2010-05-26 19:47:02 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2010-05-19 19:22:29 +00:00
										 |  |  | 	$types = array(); | 
					
						
							|  |  |  | 	$typeList = $_SESSION['config']->get_ActiveTypes(); | 
					
						
							|  |  |  | 	for ($i = 0; $i < sizeof($typeList); $i++) { | 
					
						
							|  |  |  | 		$types[$typeList[$i]] = getTypeAlias($typeList[$i]); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	natcasesort($types); | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	$options = array(); | 
					
						
							| 
									
										
										
										
											2010-05-19 19:22:29 +00:00
										 |  |  | 	foreach ($types as $name => $title) { | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 		$elements = array(); | 
					
						
							| 
									
										
										
										
											2011-04-25 18:01:11 +00:00
										 |  |  | 		$units = searchLDAPByAttribute(null, null, 'organizationalunit', array('dn'), array($name)); | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 		for ($u = 0; $u < sizeof($units); $u++) { | 
					
						
							| 
									
										
										
										
											2011-04-25 18:01:11 +00:00
										 |  |  | 			$elements[getAbstractDN($units[$u]['dn'])] = $units[$u]['dn']; | 
					
						
							| 
									
										
										
										
											2005-02-07 19:59:42 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 		$options[$title] = $elements; | 
					
						
							| 
									
										
										
										
											2003-08-05 18:30:31 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	// new OU
 | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	$container->addElement(new htmlOutputText(_("New organizational unit"))); | 
					
						
							|  |  |  | 	$parentOUSelect = new htmlSelect('parentOU', $options, array()); | 
					
						
							|  |  |  | 	$parentOUSelect->setContainsOptgroups(true); | 
					
						
							|  |  |  | 	$parentOUSelect->setHasDescriptiveElements(true); | 
					
						
							|  |  |  | 	$parentOUSelect->setRightToLeftTextDirection(true); | 
					
						
							|  |  |  | 	$parentOUSelect->setSortElements(false); | 
					
						
							|  |  |  | 	$container->addElement($parentOUSelect); | 
					
						
							|  |  |  | 	$container->addElement(new htmlInputField('newOU')); | 
					
						
							|  |  |  | 	$container->addElement(new htmlButton('createOU', _("Ok"))); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('601'), true); | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  | 	$container->addElement(new htmlSpacer(null, '10px'), true); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	// delete OU
 | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	$container->addElement(new htmlOutputText(_("Delete organizational unit"))); | 
					
						
							|  |  |  | 	$deleteableOUSelect = new htmlSelect('deleteableOU', $options, array()); | 
					
						
							|  |  |  | 	$deleteableOUSelect->setContainsOptgroups(true); | 
					
						
							|  |  |  | 	$deleteableOUSelect->setHasDescriptiveElements(true); | 
					
						
							|  |  |  | 	$deleteableOUSelect->setRightToLeftTextDirection(true); | 
					
						
							|  |  |  | 	$deleteableOUSelect->setSortElements(false); | 
					
						
							|  |  |  | 	$container->addElement($deleteableOUSelect); | 
					
						
							|  |  |  | 	$container->addElement(new htmlOutputText('')); | 
					
						
							|  |  |  | 	$container->addElement(new htmlButton('deleteOU', _("Ok"))); | 
					
						
							|  |  |  | 	$container->addElement(new htmlHelpLink('602'), true); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	parseHtml(null, $container, array(), false, $tabindex, 'user'); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	echo ("</form>\n"); | 
					
						
							| 
									
										
										
										
											2010-10-12 17:49:18 +00:00
										 |  |  | 	echo '</div>'; | 
					
						
							| 
									
										
										
										
											2010-08-21 09:43:52 +00:00
										 |  |  | 	include 'main_footer.php'; | 
					
						
							| 
									
										
										
										
											2003-07-04 14:35:56 +00:00
										 |  |  | } |