File: mass_edit.php

package info (click to toggle)
phpldapadmin 1.2.0.5-2%2Bsqueeze1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 6,248 kB
  • ctags: 3,066
  • sloc: php: 16,758; xml: 1,494; sh: 322; makefile: 50
file content (128 lines) | stat: -rw-r--r-- 3,494 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?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 '<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 '<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 '<br/>';
printf('<input type="submit" id="save_button" name="submit" value="%s" />',_('Update Values'));
echo '</form>';
?>