2011-06-26 10:44:28 +00:00
< ? php
/**
* Displays a form to allow the user to enter a new value to add
* to the existing list of values for a multi - valued attribute .
*
* @ package phpLDAPadmin
* @ subpackage Page
*/
/**
*/
require './common.php' ;
# The DN and ATTR we are working with.
$request = array ();
$request [ 'dn' ] = get_request ( 'dn' , 'GET' , true );
$request [ 'attr' ] = get_request ( 'attr' , 'GET' , true );
# Check if the entry exists.
if ( ! $request [ 'dn' ] || ! $app [ 'server' ] -> dnExists ( $request [ 'dn' ]))
2018-03-12 18:08:39 +00:00
error ( sprintf ( _ ( 'The entry (%s) does not exist.' ), htmlspecialchars ( $request [ 'dn' ])), 'error' , 'index.php' );
2011-06-26 10:44:28 +00:00
$request [ 'page' ] = new TemplateRender ( $app [ 'server' ] -> getIndex (), get_request ( 'template' , 'REQUEST' , false , null ));
$request [ 'page' ] -> setDN ( $request [ 'dn' ]);
$request [ 'page' ] -> accept ( true );
$request [ 'template' ] = $request [ 'page' ] -> getTemplate ();
/*
if ( $request [ 'attribute' ] -> isReadOnly ())
error ( sprintf ( _ ( 'The attribute (%s) is in readonly mode.' ), $request [ 'attr' ]), 'error' , 'index.php' );
*/
# Render the form
if ( ! strcasecmp ( $request [ 'attr' ], 'objectclass' ) || get_request ( 'meth' , 'REQUEST' ) != 'ajax' ) {
# Render the form.
2012-03-03 19:33:26 +00:00
$request [ 'page' ] -> drawTitle ( sprintf ( _ ( 'Add new <b>%s</b> value to <b>%s</b>' ), htmlspecialchars ( $request [ 'attr' ]), htmlspecialchars ( get_rdn ( $request [ 'dn' ]))));
2011-06-26 10:44:28 +00:00
$request [ 'page' ] -> drawSubTitle ();
if ( ! strcasecmp ( $request [ 'attr' ], 'objectclass' )) {
echo '<form action="cmd.php" method="post" class="new_value" id="entry_form">' ;
echo '<div>' ;
echo '<input type="hidden" name="cmd" value="add_oclass_form" />' ;
} else {
echo '<form action="cmd.php" method="post" class="new_value" id="entry_form" enctype="multipart/form-data" onsubmit="return submitForm(this)">' ;
echo '<div>' ;
if ( $_SESSION [ APPCONFIG ] -> getValue ( 'confirm' , 'update' ))
echo '<input type="hidden" name="cmd" value="update_confirm" />' ;
else
echo '<input type="hidden" name="cmd" value="update" />' ;
}
printf ( '<input type="hidden" name="server_id" value="%s" />' , $app [ 'server' ] -> getIndex ());
printf ( '<input type="hidden" name="dn" value="%s" />' , htmlspecialchars ( $request [ 'dn' ]));
echo '</div>' ;
echo '<table class="forminput" border="0" style="margin-left: auto; margin-right: auto;">' ;
echo '<tr>' ;
$request [ 'attribute' ] = $request [ 'template' ] -> getAttribute ( $request [ 'attr' ]);
$request [ 'count' ] = $request [ 'attribute' ] -> getValueCount ();
if ( $request [ 'count' ]) {
2011-07-13 18:30:14 +00:00
printf ( '<td class="top">' . _ ( 'Current list of <b>%s</b> values for attribute <b>%s</b>:' ) . '</td>' ,
$request [ 'count' ], $request [ 'attribute' ] -> getFriendlyName ());
2011-06-26 10:44:28 +00:00
echo '<td>' ;
# Display current attribute values
echo '<table border="0"><tr><td>' ;
for ( $i = 0 ; $i < $request [ 'count' ]; $i ++ ) {
if ( $i > 0 )
echo '<br/>' ;
$request [ 'page' ] -> draw ( 'CurrentValue' , $request [ 'attribute' ], $i );
$request [ 'page' ] -> draw ( 'HiddenValue' , $request [ 'attribute' ], $i );
}
echo '</td></tr></table>' ;
echo '</td>' ;
} else {
2011-07-13 18:30:14 +00:00
printf ( '<td>' . _ ( 'No current value for attribute <b>%s</b>.' ) . '</td>' ,
$request [ 'attribute' ] -> getFriendlyName ());
2011-06-26 10:44:28 +00:00
echo '<td><br /><br /></td>' ;
}
echo '</tr>' ;
echo '<tr>' ;
2012-02-05 19:15:50 +00:00
printf ( '<td class="top">%s</td>' , _ ( 'Enter the values you would like to add:' ));
2011-06-26 10:44:28 +00:00
echo '<td>' ;
if ( ! strcasecmp ( $request [ 'attr' ], 'objectclass' )) {
# If our attr is an objectClass, fetch all available objectClasses and remove those from the list that are already defined in the entry
$socs = $app [ 'server' ] -> SchemaObjectClasses ();
foreach ( $request [ 'attribute' ] -> getValues () as $oclass )
unset ( $socs [ strtolower ( $oclass )]);
# Draw objectClass selection
echo '<table border="0">' ;
echo '<tr><td>' ;
echo '<select name="new_values[objectclass][]" multiple="multiple" size="15">' ;
foreach ( $socs as $name => $oclass ) {
# Exclude any structural ones, that are not in the heirachy, as they'll only generate an LDAP_OBJECT_CLASS_VIOLATION
if (( $oclass -> getType () == 'structural' ) && ! $oclass -> isRelated ( $request [ 'attribute' ] -> getValues ()))
2018-03-12 18:08:39 +00:00
continue ;
2011-06-26 10:44:28 +00:00
printf ( '<option value="%s">%s</option>' , $oclass -> getName ( false ), $oclass -> getName ( false ));
}
echo '</select>' ;
echo '</td></tr><tr><td>' ;
echo '<br />' ;
printf ( '<input id="save_button" type="submit" value="%s" %s />' ,
2011-07-12 19:23:27 +00:00
_ ( 'Add new object class' ),
2011-07-21 17:50:57 +00:00
( isAjaxEnabled () ? sprintf ( 'onclick="return ajSUBMIT(\'BODY\',document.getElementById(\'entry_form\'),\'%s\');"' , _ ( 'Updating object' )) : '' ));
2011-06-26 10:44:28 +00:00
echo '</td></tr></table>' ;
echo '</td>' ;
echo '</tr>' ;
if ( $_SESSION [ APPCONFIG ] -> getValue ( 'appearance' , 'show_hints' ))
printf ( '<tr><td colspan="2"><small><br /><img src="%s/light.png" alt="Hint" /><span class="hint">%s</span></small></td></tr>' ,
2012-02-08 19:12:00 +00:00
IMGDIR , _ ( 'Note: You may be required to enter new attributes that these object classes require' ));
2011-06-26 10:44:28 +00:00
echo '</table>' ;
echo '</form>' ;
} else {
# Draw a blank field
echo '<table border="0"><tr><td>' ;
$request [ 'page' ] -> draw ( 'FormValue' , $request [ 'attribute' ], $request [ 'count' ]);
echo '</td></tr><tr><td>' ;
$sattr = $app [ 'server' ] -> getSchemaAttribute ( $request [ 'attr' ]);
if ( $sattr -> getDescription ())
printf ( '<small><b>%s:</b> %s</small><br />' , _ ( 'Description' ), $sattr -> getDescription ());
if ( $sattr -> getType ())
printf ( '<small><b>%s:</b> %s</small><br />' , _ ( 'Syntax' ), $sattr -> getType ());
if ( $sattr -> getMaxLength ())
2011-07-13 18:30:14 +00:00
printf ( '<small>' . _ ( '<b>Maximum length:</b> %s characters' ) . '</small><br />' ,
number_format ( $sattr -> getMaxLength ()));
2011-06-26 10:44:28 +00:00
echo '<br />' ;
2011-07-12 19:23:27 +00:00
printf ( '<input type="submit" id="save_button" name="submit" value="%s" />' , _ ( 'Add value' ));
2011-06-26 10:44:28 +00:00
echo '</td></tr></table>' ;
echo '</td></tr>' ;
echo '</table>' ;
echo '</form>' ;
}
} else {
if ( is_null ( $attribute = $request [ 'template' ] -> getAttribute ( $request [ 'attr' ]))) {
$request [ 'template' ] -> addAttribute ( $request [ 'attr' ], array ( 'values' => array ()));
$attribute = $request [ 'template' ] -> getAttribute ( $request [ 'attr' ]);
$attribute -> show ();
echo '<table class="entry" cellspacing="0" align="center" border="0">' ;
$request [ 'page' ] -> draw ( 'Template' , $attribute );
$request [ 'page' ] -> draw ( 'Javascript' , $attribute );
echo '</table>' ;
} else {
$request [ 'count' ] = $attribute -> getValueCount ();
$request [ 'page' ] -> draw ( 'FormReadWriteValue' , $attribute , $request [ 'count' ]);
}
}
?>