2011-06-26 10:44:28 +00:00
< ? 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 ());
2011-07-12 19:23:27 +00:00
$request [ 'page' ] -> drawTitle ( _ ( 'Create object' ));
2011-06-26 10:44:28 +00:00
$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>' ,
2011-07-13 18:30:14 +00:00
_ ( 'Attribute' ), _ ( 'New value' ), _ ( 'Skip' ));
2011-06-26 10:44:28 +00:00
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' ),
2011-07-21 17:50:57 +00:00
( isAjaxEnabled () ? sprintf ( 'onclick="return ajSUBMIT(\'BODY\',document.getElementById(\'create_form\'),\'%s\');"' , _ ( 'Updating object' )) : '' ));
2011-06-26 10:44:28 +00:00
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>' ;
}
?>