| 
									
										
										
										
											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'])) { | 
					
						
							|  |  |  | 	display_main(); | 
					
						
							|  |  |  | 	exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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']; | 
					
						
							|  |  |  | 			if (!in_array($new_dn, $_SESSION['ldap']->search_units($_POST['parentOU']))) { | 
					
						
							|  |  |  | 				// 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) { | 
					
						
							|  |  |  | 			$text = "<br>\n" . | 
					
						
							|  |  |  | 				"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" . | 
					
						
							|  |  |  | 				"<br>\n<p>" . $_POST['deleteableOU'] . "</p>\n" . | 
					
						
							|  |  |  | 				"<br>\n" . | 
					
						
							|  |  |  | 				"<form action=\"ou_edit.php\" method=\"post\">\n" . | 
					
						
							|  |  |  | 				"<input type=\"hidden\" name=\"deleteOU\" value=\"submit\">\n" . | 
					
						
							|  |  |  | 				"<input type=\"hidden\" name=\"deletename\" value=\"" . $_POST['deleteableOU'] . "\">\n" . | 
					
						
							|  |  |  | 				"<input type=\"submit\" name=\"sure\" value=\"" . _("Delete") . "\">\n" . | 
					
						
							|  |  |  | 				"<input type=\"submit\" name=\"abort\" value=\"" . _("Cancel") . "\">\n" . | 
					
						
							|  |  |  | 				"</form>"; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			$error = _("OU is not empty or invalid!"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	// print header
 | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  | 	include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	// display messages
 | 
					
						
							|  |  |  | 	if ($error || $message || $text) { | 
					
						
							|  |  |  | 		if ($text) echo $text; | 
					
						
							|  |  |  | 		elseif ($error) { | 
					
						
							|  |  |  | 			StatusMessage("ERROR", "", $error); | 
					
						
							|  |  |  | 			echo ("<br><a href=\"ou_edit.php\">" . _("Back to OU-Editor") . "</a>\n"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else { | 
					
						
							|  |  |  | 			StatusMessage("INFO", "", $message); | 
					
						
							|  |  |  | 			echo ("<br><a href=\"ou_edit.php\">" . _("Back to OU-Editor") . "</a>\n"); | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo ("</body></html>\n"); | 
					
						
							|  |  |  | exit; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | display_main(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Displays the main page of the OU editor | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | function display_main() { | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 	$types = $_SESSION['config']->get_ActiveTypes(); | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	// display main page
 | 
					
						
							| 
									
										
										
										
											2010-01-01 17:21:46 +00:00
										 |  |  | 	include 'main_header.php'; | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 	echo "<h1>" . _("OU editor") . "</h1>"; | 
					
						
							| 
									
										
										
										
											2003-09-21 18:53:43 +00:00
										 |  |  | 	echo ("<br>\n"); | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 	echo ("<form action=\"ou_edit.php\" method=\"post\">\n"); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	 | 
					
						
							|  |  |  | 	$options = ""; | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 	for ($i = 0; $i < sizeof($types); $i++) { | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 		$options .= "<optgroup label=\"" . getTypeAlias($types[$i]) . "\">\n"; | 
					
						
							| 
									
										
										
										
											2006-01-01 16:30:05 +00:00
										 |  |  | 		$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($types[$i])); | 
					
						
							|  |  |  | 		for ($u = 0; $u < sizeof($units); $u++) { | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 			$options .= "<option>" . $units[$u] . "</option>\n"; | 
					
						
							| 
									
										
										
										
											2005-02-07 19:59:42 +00:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 		$options .= "</optgroup>\n"; | 
					
						
							| 
									
										
										
										
											2003-08-05 18:30:31 +00:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	 | 
					
						
							| 
									
										
										
										
											2008-12-28 13:50:54 +00:00
										 |  |  | 	echo ("<fieldset class=\"useredit\"><legend><b>" . _("OU editor") . "</b></legend><br>\n"); | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	echo ("<table border=0>\n"); | 
					
						
							|  |  |  | 	// new OU
 | 
					
						
							|  |  |  | 	echo ("<tr>\n"); | 
					
						
							|  |  |  | 	echo ("<td><b>" . _("New organizational unit") . "</b></td>\n"); | 
					
						
							|  |  |  | 	echo ("<td> </td>\n"); | 
					
						
							|  |  |  | 	echo ("<td><select size=1 name=\"parentOU\">"); | 
					
						
							|  |  |  | 		echo $options; | 
					
						
							|  |  |  | 	echo ("</select><td>\n"); | 
					
						
							|  |  |  | 	echo ("<td><input type=text name=\"newOU\"></td>\n"); | 
					
						
							|  |  |  | 	echo "<td>"; | 
					
						
							|  |  |  | 		echo "<input type=\"submit\" name=\"createOU\" value=\"" . _("Ok") . "\"> "; | 
					
						
							|  |  |  | 	echo "</td>"; | 
					
						
							| 
									
										
										
										
											2009-02-07 22:56:36 +00:00
										 |  |  | 	echo "<td>"; | 
					
						
							|  |  |  | 		printHelpLink(getHelp('', '601'), '601'); | 
					
						
							|  |  |  | 	echo "</td>\n"; | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	echo ("</tr>\n"); | 
					
						
							|  |  |  | 	echo "<tr><td colspan=5> </td></tr>\n"; | 
					
						
							|  |  |  | 	// delete OU
 | 
					
						
							|  |  |  | 	echo ("<tr>\n"); | 
					
						
							|  |  |  | 	echo ("<td><b>" . _("Delete organizational unit") . "</b></td>\n"); | 
					
						
							|  |  |  | 	echo ("<td> </td>\n"); | 
					
						
							|  |  |  | 	echo ("<td><select size=1 name=\"deleteableOU\">"); | 
					
						
							|  |  |  | 		echo $options; | 
					
						
							|  |  |  | 	echo ("</select><td>\n"); | 
					
						
							|  |  |  | 	echo ("<td> </td>\n"); | 
					
						
							|  |  |  | 	echo "<td>"; | 
					
						
							|  |  |  | 		echo "<input type=\"submit\" name=\"deleteOU\" value=\"" . _("Ok") . "\"> "; | 
					
						
							|  |  |  | 	echo "</td>"; | 
					
						
							| 
									
										
										
										
											2009-02-07 22:56:36 +00:00
										 |  |  | 	echo "<td>"; | 
					
						
							|  |  |  | 		printHelpLink(getHelp('', '602'), '602'); | 
					
						
							|  |  |  | 	echo "</td>\n"; | 
					
						
							| 
									
										
										
										
											2008-12-28 13:43:44 +00:00
										 |  |  | 	echo ("</tr>\n"); | 
					
						
							|  |  |  | 	echo ("</table>\n"); | 
					
						
							|  |  |  | 	echo ("</fieldset>\n"); | 
					
						
							|  |  |  | 	echo ("<br>\n"); | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2003-06-18 18:08:56 +00:00
										 |  |  | 	echo ("</form>\n"); | 
					
						
							|  |  |  | 	echo ("</body></html>\n"); | 
					
						
							| 
									
										
										
										
											2003-07-04 14:35:56 +00:00
										 |  |  | } |