<?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>'; ?>