105 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Creates a new object in LDAP.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @package phpLDAPadmin
							 | 
						||
| 
								 | 
							
								 * @subpackage Page
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require './common.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If cancel was selected, we'll redirect
							 | 
						||
| 
								 | 
							
								if (get_request('cancel','REQUEST')) {
							 | 
						||
| 
								 | 
							
									header('Location: index.php');
							 | 
						||
| 
								 | 
							
									die();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$request = array();
							 | 
						||
| 
								 | 
							
								$request['redirect'] = get_request('redirect','POST',false,false);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$request['page'] = new PageRender($app['server']->getIndex(),get_request('template','REQUEST',false,'none'));
							 | 
						||
| 
								 | 
							
								$request['page']->setContainer(get_request('container','REQUEST',true));
							 | 
						||
| 
								 | 
							
								$request['page']->accept();
							 | 
						||
| 
								 | 
							
								$request['template'] = $request['page']->getTemplate();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ((! $request['template']->getContainer() || ! $app['server']->dnExists($request['template']->getContainer())) && ! get_request('create_base'))
							 | 
						||
| 
								 | 
							
									error(sprintf(_('The container you specified (%s) does not exist. Please try again.'),$request['template']->getContainer()),'error','index.php');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Check if the container is a leaf - we shouldnt really return a hit here, the template engine shouldnt have allowed a user to attempt to create an entry...
							 | 
						||
| 
								 | 
							
								$tree = get_cached_item($app['server']->getIndex(),'tree');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								$request['container'] = $tree->getEntry($request['template']->getContainer());
							 | 
						||
| 
								 | 
							
								if (! $request['container'] && ! get_request('create_base')) {
							 | 
						||
| 
								 | 
							
									$tree->addEntry($request['template']->getContainer());
							 | 
						||
| 
								 | 
							
									$request['container'] = $tree->getEntry($request['template']->getContainer());
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Check our RDN
							 | 
						||
| 
								 | 
							
								if (! count($request['template']->getRDNAttrs()))
							 | 
						||
| 
								 | 
							
									error(_('The were no attributes marked as an RDN attribute.'),'error','index.php');
							 | 
						||
| 
								 | 
							
								if (! $request['template']->getRDN())
							 | 
						||
| 
								 | 
							
									error(_('The RDN field is empty.'),'error','index.php');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Some other attribute checking...
							 | 
						||
| 
								 | 
							
								foreach ($request['template']->getAttributes() as $attribute) {
							 | 
						||
| 
								 | 
							
									# Check that our Required Attributes have a value - we shouldnt really return a hit here, the template engine shouldnt have allowed this to slip through.
							 | 
						||
| 
								 | 
							
									# @todo this isIgnoredAttr() function is missing?
							 | 
						||
| 
								 | 
							
									if ($attribute->isRequired() && ! count($attribute->getValues()) && ! $app['server']->isIgnoredAttr($attr->getName()))
							 | 
						||
| 
								 | 
							
										error(sprintf(_('You left the value blank for required attribute (%s).'),
							 | 
						||
| 
								 | 
							
											$attribute->getName(false)),'error','index.php');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Create the entry
							 | 
						||
| 
								 | 
							
								$add_result = $app['server']->add($request['template']->getDN(),$request['template']->getLDAPadd());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ($add_result) {
							 | 
						||
| 
								 | 
							
									$action_number = $_SESSION[APPCONFIG]->getValue('appearance','action_after_creation');
							 | 
						||
| 
								 | 
							
									$href = sprintf('cmd=template_engine&server_id=%s',$app['server']->getIndex());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if ($request['redirect'])
							 | 
						||
| 
								 | 
							
										$redirect_url = $request['redirect'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									else if ($action_number == 2)
							 | 
						||
| 
								 | 
							
										$redirect_url = sprintf('cmd.php?%s&template=%s&container=%s',
							 | 
						||
| 
								 | 
							
											$href,'default',$request['template']->getContainerEncode());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									else
							 | 
						||
| 
								 | 
							
										$redirect_url = sprintf('cmd.php?%s&template=%s&dn=%s',
							 | 
						||
| 
								 | 
							
											$href,'default',$request['template']->getDNEncode());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if ($action_number == 1 || $action_number == 2)
							 | 
						||
| 
								 | 
							
										printf('<meta http-equiv="refresh" content="0; url=%s" />',$redirect_url);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if ($action_number == 1 || $action_number == 2) {
							 | 
						||
| 
								 | 
							
										$create_message = sprintf(_('Creation successful. DN <b>%s</b> has been created.'),
							 | 
						||
| 
								 | 
							
											$request['template']->getDN());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (isAjaxEnabled())
							 | 
						||
| 
								 | 
							
											$redirect_url .= sprintf('&refresh=SID_%s_nodes&noheader=1',$app['server']->getIndex());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										system_message(array(
							 | 
						||
| 
								 | 
							
											'title'=>_('Create object'),
							 | 
						||
| 
								 | 
							
											'body'=>$create_message,
							 | 
						||
| 
								 | 
							
											'type'=>'info'),
							 | 
						||
| 
								 | 
							
											$redirect_url);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										$request['page']->drawTitle(_('Entry created'));
							 | 
						||
| 
								 | 
							
										$request['page']->drawSubTitle(sprintf('%s: <b>%s</b>',
							 | 
						||
| 
								 | 
							
											_('DN'),$request['template']->getDN()));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										echo '<br />';
							 | 
						||
| 
								 | 
							
										echo '<center>';
							 | 
						||
| 
								 | 
							
										printf('<a href="cmd.php?%s&dn=%s">%s</a>.',
							 | 
						||
| 
								 | 
							
											htmlspecialchars($href),rawurlencode($request['template']->getDN()),_('Display the created entry'));
							 | 
						||
| 
								 | 
							
										echo '<br />';
							 | 
						||
| 
								 | 
							
										printf('<a href="cmd.php?%s&container=%s">%s</a>.',
							 | 
						||
| 
								 | 
							
											htmlspecialchars($href),rawurlencode($request['template']->getContainer()),_('Create another entry'));
							 | 
						||
| 
								 | 
							
										echo '</center>';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								?>
							 |