phpldapadmin/htdocs/mass_edit.php

145 lines
3.5 KiB
PHP

<?php
/**
* Main command page for phpLDAPadmin
* Enable mass editing of Attribute values from a list of DNs.
*
* @package phpLDAPadmin
* @subpackage Page
*/
/**
*/
require_once './common.php';
# The DN we are working with
$request = array();
$request['dn'] = get_request('dn','REQUEST');
$request['attrs'] = get_request('attrs','REQUEST');
# Check if the entries exist.
$counter = 0;
$attrcols = array();
foreach ($request['dn'] as $dn) {
# Check if the entry exists.
if (! $dn || ! $app['server']->dnExists($dn)) {
system_message(array(
'title'=>_('Entry does not exist'),
'body'=>sprintf('%s (%s/%s)',_('The entry does not exist and will be ignored'),$dn),
'type'=>'error'));
continue;
}
$request['page'][$counter] = new MassRender($app['server']->getIndex(),'none');
$request['page'][$counter]->setDN($dn);
$request['page'][$counter]->accept(true);
$template = $request['page'][$counter]->getTemplate();
# Mark our attributes to edit as shown.
foreach ($template->getAttributes(true) as $attribute) {
if ($attribute->isInternal())
{
continue;
}
if (in_array_ignore_case($attribute->getName(),$request['attrs']) || in_array('*',$request['attrs'])) {
$attribute->show();
# Get a list of our columns (we are not interested in these attribute values)
if (! isset($attrcols[$attribute->getName()]))
{
$attrcols[$attribute->getName()] = $attribute;
}
}
}
$counter++;
}
usort($attrcols,'sortAttrs');
if (! count($request['page']))
{
header('Location: index.php');
}
# We'll render this forms Title with the first DN's object.
$request['page'][0]->drawTitle(_('Bulk edit the following DNs'));
$request['page'][0]->drawSubTitle(sprintf('%s: <b>%s</b>',_('Server'),$app['server']->getName()));
echo '<form action="cmd.php" method="post">';
echo '<div>';
echo '<input type="hidden" name="cmd" value="mass_update" />';
printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex());
foreach ($request['page'] as $j => $page)
{
printf('<input type='hidden' name='dn[%s]' value=' % s' />',$j,$page->getTemplate()->getDN()); }
echo '</div>';
echo '<table class="result_table" border="0">';
echo '<tr class="heading">';
echo '<td>DN</td>';
foreach ($attrcols as $attribute) {
echo '<td>';
$request['page'][0]->draw('Name',$attribute);
echo '</td>';
}
echo '</tr>';
$counter = 0;
foreach ($request['page'] as $j => $page) {
$template = $page->getTemplate();
printf('<tr class="%s">',$counter++%2==0?'even':'odd');
printf('<td><span style="white-space: nowrap;"><acronym title="%s"><b>%s</b>...</acronym></span></td>',
$template->getDN(),substr($template->getDN(),0,20));
foreach ($attrcols as $attrcol) {
$attribute = $template->getAttribute($attrcol->getName());
echo '<td>';
if ($attribute) {
foreach ($attribute->getValues() as $i => $val)
{
$page->draw('MassFormReadWriteValue', $attribute, $i, $j);
}
# The attribute doesnt exist. If it is available by the shema, we can draw an empty input box.
} else {
$match = false;
foreach ($template->getAvailAttrs() as $attribute) {
if ($attrcol->getName() == $attribute->getName()) {
$page->draw('MassFormReadWriteValue',$attribute,0,$j);
$match = true;
break;
}
}
if (! $match)
{
printf('<center><small>%s</small></center>', _('Attribute not available'));
}
}
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
echo '<div>';
echo '<br/>';
printf('<input type="submit" id="save_button" name="submit" value="%s" />',_('Update Values'));
echo '</div>';
echo '</form>';