144 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			144 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | /** | ||
|  |  * Creates a new object in LDAP. | ||
|  |  * | ||
|  |  * @package phpLDAPadmin | ||
|  |  * @subpackage Page | ||
|  |  */ | ||
|  | 
 | ||
|  | /** | ||
|  |  */ | ||
|  | 
 | ||
|  | require './common.php'; | ||
|  | 
 | ||
|  | $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())) | ||
|  | 	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']) { | ||
|  | 	$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'); | ||
|  | } | ||
|  | 
 | ||
|  | # Check for unique attributes
 | ||
|  | $app['server']->checkUniqueAttrs($request['template']->getDN(),$request['template']->getLDAPadd()); | ||
|  | 
 | ||
|  | $request['page']->drawTitle(_('Create LDAP Entry')); | ||
|  | $request['page']->drawSubTitle(sprintf('%s: <b>%s</b>   %s: <b>%s</b>', | ||
|  | 	_('Server'),$app['server']->getName(),_('Container'),$request['template']->getContainer())); | ||
|  | 
 | ||
|  | # Confirm the creation
 | ||
|  | if (count($request['template']->getLDAPadd(true))) { | ||
|  | 	echo '<div style="text-align: center;">'; | ||
|  | 	echo _('Do you want to create this entry?'); | ||
|  | 	echo '<br /><br />'; | ||
|  | 	echo '</div>'; | ||
|  | 
 | ||
|  | 	echo "\n\n"; | ||
|  | 	echo '<form action="cmd.php" method="post" id="create_form">'; | ||
|  | 	echo '<div>'; | ||
|  | 	echo '<input type="hidden" name="cmd" value="create" />'; | ||
|  | 	printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex()); | ||
|  | 	printf('<input type="hidden" name="container" value="%s" />',$request['template']->getContainerEncode(false)); | ||
|  | 	printf('<input type="hidden" name="template" value="%s" />',$request['template']->getID()); | ||
|  | 	foreach ($request['template']->getRDNAttrs() as $rdn) | ||
|  | 		printf('<input type="hidden" name="rdn_attribute[]" value="%s" />',htmlspecialchars($rdn)); | ||
|  | 	echo "\n"; | ||
|  | 
 | ||
|  | 	$request['page']->drawHiddenAttributes(); | ||
|  | 	echo '</div>'; | ||
|  | 
 | ||
|  | 	echo '<table class="result_table" style="margin-left: auto; margin-right: auto;">'; | ||
|  | 	echo "\n"; | ||
|  | 
 | ||
|  | 	printf('<tr class="heading"><td>%s</td><td>%s</td><td>%s</td></tr>', | ||
|  | 		_('Attribute'),_('New Value'),_('Skip')); | ||
|  | 	echo "\n\n"; | ||
|  | 
 | ||
|  | 	$counter = 0; | ||
|  | 	printf('<tr class="%s"><td colspan="3" style="text-align: center;"><b>%s</b></td></tr>',$counter%2 ? 'even' : 'odd',htmlspecialchars($request['template']->getDN())); | ||
|  | 
 | ||
|  | 	foreach ($request['template']->getLDAPadd(true) as $attribute) { | ||
|  | 		$counter++; | ||
|  | 
 | ||
|  | 		printf('<tr class="%s">',$counter%2 ? 'even' : 'odd'); | ||
|  | 		printf('<td><b>%s</b></td>',$attribute->getFriendlyName()); | ||
|  | 
 | ||
|  | 		# Show NEW Values
 | ||
|  | 		echo '<td><span style="white-space: nowrap;">'; | ||
|  | 		$request['page']->draw('CurrentValues',$attribute); | ||
|  | 		echo '</span></td>'; | ||
|  | 
 | ||
|  | 		# Show SKIP Option
 | ||
|  | 		$input_disabled = ''; | ||
|  | 		$input_onclick = ''; | ||
|  | 
 | ||
|  | 		if ($attribute->isRequired()) | ||
|  | 			$input_disabled = 'disabled="disabled"'; | ||
|  | 
 | ||
|  | 		printf('<td><input name="skip_array[%s]" id="skip_array_%s" type="checkbox" %s %s/></td>', | ||
|  | 			htmlspecialchars($attribute->getName()),htmlspecialchars($attribute->getName()),$input_disabled,$input_onclick); | ||
|  | 		echo '</tr>'; | ||
|  | 		echo "\n\n"; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	echo '</table>'; | ||
|  | 
 | ||
|  | 	echo '<div style="text-align: center;">'; | ||
|  | 	echo '<br />'; | ||
|  | 
 | ||
|  | 	printf('<input type="submit" value="%s" %s/>', | ||
|  | 		_('Commit'), | ||
|  | 		(isAjaxEnabled() ? sprintf('onclick="return ajSUBMIT(\'BODY\',document.getElementById(\'create_form\'),\'%s\');"',_('Updating Object')) : '')); | ||
|  | 
 | ||
|  | 	printf('<input type="submit" name="cancel" value="%s" %s/>', | ||
|  | 		_('Cancel'), | ||
|  | 		(isAjaxEnabled() ? sprintf('onclick="return ajDISPLAY(\'BODY\',\'cmd=template_engine&server_id=%s&container=%s\',\'%s\');"',$app['server']->getIndex(),$request['template']->getContainer(),_('Retrieving DN')) : '')); | ||
|  | 
 | ||
|  | 	echo '</div>'; | ||
|  | 	echo '</form>'; | ||
|  | 	echo '<br />'; | ||
|  | 
 | ||
|  | } else { | ||
|  | 	$href = sprintf('cmd=template_engine&server_id=%s&dn=%s', | ||
|  | 		$app['server']->getIndex(),$request['template']->getDNEncode()); | ||
|  | 
 | ||
|  | 	echo '<div style="text-align: center;">'; | ||
|  | 	echo _('You made no changes'); | ||
|  | 
 | ||
|  | 	if (isAjaxEnabled()) | ||
|  | 		printf(' <a href="cmd.php?%s" onclick="return ajDISPLAY(\'BODY\',\'%s\',\'%s\');">%s</a>.', | ||
|  | 			htmlspecialchars($href),htmlspecialchars($href),_('Retrieving DN'),_('Go back')); | ||
|  | 	else | ||
|  | 		printf(' <a href="cmd.php?%s">%s</a>.',htmlspecialchars($href),_('Go back')); | ||
|  | 
 | ||
|  | 	echo '</div>'; | ||
|  | } | ||
|  | ?>
 |