Latest SANDPIT - MERGE from CVS (MERGE-GIT)

This commit is contained in:
Deon George
2009-07-01 16:09:17 +10:00
parent 388783fc84
commit ea17aadef4
210 changed files with 37284 additions and 52716 deletions

View File

@@ -1,112 +1,90 @@
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/modify_member_form.php,v 1.5.2.6 2008/12/12 12:20:22 wurley Exp $
// $Header$
/**
* Displays a form to allow the user to modify group members.
*
* Variables that come in via common.php
* - server_id
* Variables that come in as GET vars:
* - dn (rawurlencoded)
* - attr (rawurlencoded) the attribute to which we are adding a value
*
* @package phpLDAPadmin
* @subpackage Page
*/
/**
*/
require './common.php';
if ($ldapserver->isReadOnly())
error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
if (! $ldapserver->haveAuthInfo())
error(_('Not enough information to login to server. Please check your configuration.'),'error','index.php');
# The DN we are working with
$request = array();
$request['dn'] = get_request('dn','GET');
$request['attr'] = get_request('attr','GET');
$attr = get_request('attr','GET');
$dn = get_request('dn','GET');
$encoded_dn = rawurlencode($dn);
$encoded_attr = rawurlencode($attr);
$request['page'] = new TemplateRender($app['server']->getIndex(),get_request('template','REQUEST',false,'none'));
$request['page']->setDN($request['dn']);
$request['page']->accept(true);
$request['template'] = $request['page']->getTemplate();
if (! is_null($dn))
$rdn = get_rdn($dn);
if (! is_null($request['dn']))
$rdn = get_rdn($request['dn']);
else
$rdn = null;
# Get all current group members
$current_members = $ldapserver->getDNAttr($dn,$attr);
if ($current_members)
$num_current_members = (is_array($current_members) ? count($current_members) : 1);
else
$num_current_members = 0;
$current_members = $app['server']->getDNAttrValue($request['dn'],$request['attr']);
usort($current_members,'pla_compare_dns');
# Loop through all base dn's and search possible member entries
foreach ($ldapserver->getBaseDN() as $base_dn) {
$query = array();
# Get all entries that can be added to the group
# Get all entries that can be added to the group
if (preg_match("/^".$request['attr']."$/i",$_SESSION[APPCONFIG]->getValue('modify_member','posixgroupattr'))) {
$query['filter'] = $_SESSION[APPCONFIG]->getValue('modify_member','posixfilter');
$attr = $_SESSION[APPCONFIG]->getValue('modify_member','posixattr');
if (preg_match("/^$attr$/i",$_SESSION[APPCONFIG]->GetValue('modify_member','posixgroupattr')))
$possible_values = array_merge($ldapserver->search(null,$base_dn,
$_SESSION[APPCONFIG]->GetValue('modify_member','posixfilter'),
array($_SESSION[APPCONFIG]->GetValue('modify_member','posixattr'))));
else
$possible_values = array_merge($ldapserver->search(null,$base_dn,
$_SESSION[APPCONFIG]->GetValue('modify_member','filter'),
array($_SESSION[APPCONFIG]->GetValue('modify_member','attr'))));
} else {
$query['filter'] = $_SESSION[APPCONFIG]->getValue('modify_member','filter');
$attr = $_SESSION[APPCONFIG]->getValue('modify_member','attr');
}
if ($possible_values)
$num_possible_values = (is_array($possible_values) ? count($possible_values) : 1);
else
$num_possible_values = 0;
$query['attrs'] = array($attr);
sort($possible_values);
$possible_values = array();
foreach ($app['server']->getBaseDN() as $base) {
$query['base'] = $base;
include './header.php';
$possible_values = array_merge($possible_values,$app['server']->query($query,null));
}
echo '<body>';
printf('<h3 class="title">%s <b>%s</b></h3>',_('Modify group'),htmlspecialchars($rdn));
usort($possible_values,'pla_compare_dns');
printf('<h3 class="subtitle">%s <b>%s</b> &nbsp;&nbsp;&nbsp; %s: <b>%s</b></h3>',
_('Server'),$ldapserver->name,_('Distinguished Name'),htmlspecialchars($dn));
$request['page']->drawTitle(sprintf('%s <b>%s</b>',_('Modify group'),get_rdn($request['dn'])));
$request['page']->drawSubTitle();
printf('%s <b>%s</b> %s <b>%s</b>:',
_('There are'),$num_current_members,_('members in group'),htmlspecialchars($rdn));
_('There are'),count($current_members),_('members in group'),htmlspecialchars(get_rdn($request['dn'])));
$possible_members = array();
for ($i=0; $i<count($possible_values); $i++) {
if (preg_match("/^$attr$/i",$_SESSION[APPCONFIG]->GetValue('modify_member','posixgroupattr')))
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','posixattr')];
for ($i=0;$i<count($possible_values);$i++) {
if (preg_match("/^".$request['attr']."$/i",$_SESSION[APPCONFIG]->getValue('modify_member','posixgroupattr')))
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->getValue('modify_member','posixattr')];
else
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->GetValue('modify_member','attr')];
$possible_members[$i] = $possible_values[$i][$_SESSION[APPCONFIG]->getValue('modify_member','attr')];
}
# Show only user that are not already in group.
$possible_members = array_diff($possible_members,$current_members);
usort($possible_members,'pla_compare_dns');
/*
* Show only user that are not already in group.
* This loop removes existing users from possible members
*/
foreach ($possible_members as $pkey => $possible) {
foreach ($current_members as $current) {
if (preg_match("/^$current$/i","$possible_members[$pkey]")) {
unset($possible_members[$pkey]);
break;
}
}
}
/*
* Draw form with select boxes, left for all possible members and
* right one for those that belong to group
*/
/* Draw form with select boxes, left for all possible members and
* right one for those that belong to group */
# Modifications will be sent to update_confirm which takes care of rest of the processing
echo '<br />';
echo '<br />';
echo '<form action="cmd.php" method="post" class="add_value" name="member">';
echo '<input type="hidden" name="cmd" value="update_confirm" />';
if ($_SESSION[APPCONFIG]->getValue('confirm','update'))
echo '<input type="hidden" name="cmd" value="update_confirm" />';
else
echo '<input type="hidden" name="cmd" value="update" />';
echo '<table class="modify_members">';
@@ -153,28 +131,25 @@ echo '</tr>';
echo '<tr><td colspan="2">';
# Hidden attributes for update_confirm.php
printf('<input type="hidden" name="server_id" value="%s" />',$ldapserver->server_id);
printf('<input type="hidden" name="dn" value="%s" />',$dn);
printf('<input type="hidden" name="attr" value="%s" />',$encoded_attr);
printf('<input type="hidden" name="server_id" value="%s" />',$app['server']->getIndex());
printf('<input type="hidden" name="dn" value="%s" />',rawurlencode($request['dn']));
printf('<input type="hidden" name="attr" value="%s" />',$request['attr']);
/*
* Generate array of input text boxes from current members.
* update_confirm.php will see this as old_values[member-attribute][item]
*/
for ($i=0; $i<$num_current_members; $i++)
/* Generate array of input text boxes from current members.
* update_confirm.php will see this as old_values[member-attribute][item] */
for ($i=0; $i<count($current_members); $i++)
printf('<input type="hidden" name="old_values[%s][%s]" value="%s" />',
htmlspecialchars($attr),$i,htmlspecialchars($current_members[$i]));
/*
* Javascript generates array of input text boxes from new members.
htmlspecialchars($request['attr']),$i,htmlspecialchars($current_members[$i]));
/* Javascript generates array of input text boxes from new members.
* update_confirm.php will see this as new_values[member-attribute][item]
* Input text boxes will be generated to div=dnu
*/
* Input text boxes will be generated to div=dnu */
echo '<div id="dnu">';
printf('<input type="hidden" name="new_values[%s][]" value="" />',htmlspecialchars($attr));
printf('<input type="hidden" name="new_values[%s][]" value="" />',htmlspecialchars($request['attr']));
echo '</div>';
# Submit values to update_confirm.php and when clicked, run addSelected
printf('<input type="submit" name="save" value="%s" onClick="update_new_values(\'%s\',\'modifymember\')" />',_('Save changes'),$attr);
printf('<input type="submit" name="save" value="%s" onClick="update_new_values(\'%s\',\'modifymember\')" />',_('Save changes'),$request['attr']);
echo '</td></tr>';
echo '</table>';
@@ -185,6 +160,7 @@ echo '<script type="text/javascript" language="javascript">';
echo 'var m1 = document.member.notmembers;';
echo 'var m2 = document.member.members;';
echo '</script>';
printf('<script type="text/javascript" src="%smodify_member.js"></script>',JSDIR);
echo '</body></html>';
?>