133 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.4 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'));
 | 
						|
 | 
						|
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>';
 | 
						|
?>
 |