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'); $attr = get_request('attr','GET'); $dn = get_request('dn','GET'); $encoded_dn = rawurlencode($dn); $encoded_attr = rawurlencode($attr); if (! is_null($dn)) $rdn = get_rdn($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; usort($current_members,'pla_compare_dns'); # Loop through all base dn's and search possible member entries foreach ($ldapserver->getBaseDN() as $base_dn) { # Get all entries that can be added to the group 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')))); } if ($possible_values) $num_possible_values = (is_array($possible_values) ? count($possible_values) : 1); else $num_possible_values = 0; sort($possible_values); include './header.php'; echo ''; printf('

%s %s

',_('Modify group'),htmlspecialchars($rdn)); printf('

%s %s     %s: %s

', _('Server'),$ldapserver->name,_('Distinguished Name'),htmlspecialchars($dn)); printf('%s %s %s %s:', _('There are'),$num_current_members,_('members in group'),htmlspecialchars($rdn)); $possible_members = array(); for ($i=0; $iGetValue('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')]; } 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 */ # Modifications will be sent to update_confirm which takes care of rest of the processing echo '
'; echo '
'; echo '
'; echo ''; echo ''; echo ''; printf('',IMGDIR,_('Available members')); printf('',IMGDIR,_('Group members')); echo ''; # Generate select box from all possible members echo ''; echo ''; # Generate select box from all current members echo ''; echo ''; # Show buttons which move users from left to right and vice versa echo ''; echo ''; echo ''; echo ''; echo ''; echo '
Users %sMembers %s
'; echo ''; echo ''; echo ''; echo '
'; printf(' ', _('Add selected'),_('Add all')); echo ''; printf(' ', _('Remove selected'),('Remove all')); echo '
'; # Hidden attributes for update_confirm.php printf('',$ldapserver->server_id); printf('',$dn); printf('',$encoded_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++) printf('', htmlspecialchars($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 */ echo '
'; printf('',htmlspecialchars($attr)); echo '
'; # Submit values to update_confirm.php and when clicked, run addSelected printf('',_('Save changes'),$attr); echo '
'; echo '
'; # Variables for Javascript function that moves members from left to right echo ''; echo ''; ?>