2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? 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 ())  
						 
					
						
							
								
									
										
										
										
											2011-08-09 17:09:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									error ( _ ( 'The RDN field is empty.' ), 'error' , 'index.php' ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-21 17:50:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$create_message  =  sprintf ( _ ( 'Creation successful. DN <b>%s</b> has been created.' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$request [ 'template' ] -> getDN ()); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( isAjaxEnabled ()) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$redirect_url  .=  sprintf ( '&refresh=SID_%s_nodes&noheader=1' , $app [ 'server' ] -> getIndex ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										system_message ( array ( 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-12 19:23:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											'title' => _ ( 'Create object' ), 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											'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>.' , 
							 
						 
					
						
							
								
									
										
										
										
											2011-07-13 18:30:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											htmlspecialchars ( $href ), rawurlencode ( $request [ 'template' ] -> getDN ()), _ ( 'Display the created entry' )); 
							 
						 
					
						
							
								
									
										
										
										
											2011-06-26 10:44:28 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										echo  '<br />' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										printf ( '<a href="cmd.php?%s&container=%s">%s</a>.' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											htmlspecialchars ( $href ), rawurlencode ( $request [ 'template' ] -> getContainer ()), _ ( 'Create another entry' )); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  '</center>' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								?>