134 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			134 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>';
							 | 
						||
| 
								 | 
							
								?>
							 |