Instance($server_id_src); if ( ! $ldapserver_src->haveAuthInfo()) pla_error($lang['not_enough_login_info']); $ldapserver_dst = $ldapservers->Instance($server_id_dst); if ( ! $ldapserver_src->haveAuthInfo()) pla_error($lang['not_enough_login_info']); dn_exists($ldapserver_src,$dn_src) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_src))); dn_exists($ldapserver_dst,$dn_dst) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_dst))); $friendly_attrs = process_friendly_attr_table(); $attrs_src = get_object_attrs($ldapserver_src,$dn_src,false,$config->GetValue('deref','view')); $attrs_dst = get_object_attrs($ldapserver_dst,$dn_dst,false,$config->GetValue('deref','view')); # Get a list of all attributes. $attrs_all = array_keys($attrs_src); foreach ($attrs_dst as $key => $val) if (! in_array($key,$attrs_all)) $attrs_all[] = $key; include './header.php'; ?> ',$lang['no_attributes']); print '


 

: name; ?>
:

: name; ?>
:

(%s)
'; print ''; die(); } sort($attrs_all); # Work through each of the attributes. foreach ($attrs_all as $attr) { flush(); # If this is the DN, get the next attribute. if (! strcasecmp($attr,'dn')) continue; # Has the config.php specified that this attribute is to be hidden or shown? if (is_attr_hidden($ldapserver_src,$attr) || is_attr_hidden($ldapserver_dst,$attr)) continue; ?> isReadOnly()) { ?>
getSchemaAttribute($attr,$dn_src); $schema_attr_dst = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst); # Setup the $attr_note, which will be displayed to the right of the attr name (if any) $attr_note = ''; $required_note = ''; # is there a user-friendly translation available for this attribute? if (isset($friendly_attrs[strtolower($attr)])) { $attr_display = $friendly_attrs[strtolower($attr)]; $attr_note = sprintf('alias',sprintf($lang['alias_for'],$attr_display,$attr)); } else { $attr_note = ''; $attr_display = $attr; } # is this attribute required by an objectClass? $required_by = ''; switch ($side) { case 'src': $ldapserver = $ldapserver_src; if ($schema_attr_src) foreach ($schema_attr_src->getRequiredByObjectClasses() as $required) if (isset($attrs_src['objectClass']) && in_array(strtolower($required),arrayLower($attrs_src['objectClass']))) $required_by .= $required . ' '; # It seems that some LDAP servers (Domino) returns attributes in lower case? elseif( isset($attrs_src['objectclass']) && in_array(strtolower($required),arrayLower($attrs_src['objectclass']))) $required_by .= $required . ' '; break; case 'dst': $ldapserver = $ldapserver_dst; if ($schema_attr_dst) foreach ($schema_attr_dst->getRequiredByObjectClasses() as $required) if (isset($attrs_dst['objectClass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectClass']))) $required_by .= $required . ' '; # It seems that some LDAP servers (Domino) returns attributes in lower case? elseif (isset($attrs_dst['objectclass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectclass']))) $required_by .= $required . ' '; break; } if ($side == 'src') { ?> %s',sprintf($lang['required_for'],$required_by),$lang['required']); ?>   ()  '; if (! isset($attrs_src[$attr])) { echo "<". $lang['no_value'].">"; $toJump = 1; continue; } else $vals = $attrs_src[$attr]; $ldapserver = $ldapserver_src; break; case 'dst': print ' '; if (! isset($attrs_dst[$attr])) { echo "<". $lang['no_value'].">"; $toJump = 1; continue; } else $vals = $attrs_dst[$attr]; $ldapserver = $ldapserver_dst; break; } if ($toJump) continue; /* * Is this attribute a jpegPhoto? */ if (is_jpeg_photo($ldapserver,$attr)) { switch ($side) { case 'src': // Don't draw the delete buttons if there is more than one jpegPhoto // (phpLDAPadmin can't handle this case yet) draw_jpeg_photos( $ldapserver, $dn_src, $attr, false ); break; case 'dst': if( $ldapserver_dst->isReadOnly() || is_attr_read_only( $ldapserver_dst, $attr ) ) draw_jpeg_photos( $ldapserver, $dn_dst, $attr, false ); else draw_jpeg_photos( $ldapserver, $dn_dst, $attr, true ); break; } // proceed to the next attribute echo "\n"; continue; } /* * Is this attribute binary? */ if( is_attr_binary( $ldapserver, $attr ) ) { switch ($side) { case 'src': $href = sprintf("download_binary_attr.php?server_id=%s&dn=%s&attr=%s",$ldapserver->server_id,$encoded_dn_src,$attr); break; case 'dst': $href = sprintf("download_binary_attr.php?server_id=%s&dn=%s&attr=%s",$ldapserver->server_id,$encoded_dn_dst,$attr); break; } ?>
1 ) { for( $i=1; $i<=count($vals); $i++ ) { ?> "> ()

isReadOnly() && ! is_attr_read_only( $ldapserver, $attr ) ) { ?>
isReadOnly() || is_attr_read_only( $ldapserver, $attr )) ) { if( is_array( $vals ) ) { foreach( $vals as $i => $val ) { if( trim( $val ) == "" ) echo "[" . $lang['empty'] . "]
\n"; elseif( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display')) echo preg_replace( '/./', '*', $val ) . "
"; else echo htmlspecialchars( $val ) . "
"; } } else { if( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display')) echo preg_replace( '/./', '*', $vals ) . "
"; else echo $vals . "
"; } echo ""; continue; } /* * Is this a userPassword attribute? */ if( ! strcasecmp( $attr, 'userpassword' ) ) { $user_password = $vals[0]; $enc_type = get_enc_type( $user_password ); // Set the default hashing type if the password is blank (must be newly created) if( $user_password == '' ) { $enc_type = get_default_hash( $server_id ); } if ($side == 'dst') { ?>

$val ) { if ($side == 'dst') { $input_name = "new_values[" . htmlspecialchars( $attr ) . "][$i]"; // We smack an id="..." tag in here that doesn't have [][] in it to allow the // draw_chooser_link() to identify it after the user clicks. $input_id = "new_values_" . htmlspecialchars($attr) . "_" . $i; ?> getSchemaObjectClass($val); if ($schema_object->getType() == 'structural') { echo "$val (" . $lang['structural'] . ")
"; if ($side == 'dst') {?> server_id ) ) { if ($side == 'dst') {?>
isReadOnly()) { // First check if the required objectClass is in this DN $isOK = 0; $src_oclass = array(); $attr_object = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst); foreach ($attr_object->used_in_object_classes as $oclass) { if (in_array(strtolower($oclass),arrayLower($attrs_dst['objectClass']))) { $isOK = 1; break; } else { // Find oclass that the source has that provides this attribute. if (in_array($oclass,$attrs_src['objectClass'])) $src_oclass[] = $oclass; } } print "  "; if (! $isOK) { if (count($src_oclass) == 1) { $add_href = "add_oclass_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&new_oclass=$src_oclass[0]"; } else { $add_href = "add_value_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&attr=objectClass"; } if ($attr == 'objectClass') printf('
(%s)
',$add_href,$lang['add_oclass_and_attrs'],$lang['add_value']); else printf('
(%s)
',$add_href,sprintf($lang['need_oclass'], implode(" ",$src_oclass)),$lang['add_new_objectclass']); } else { if(! $schema_attr_dst->getIsSingleValue() || (! isset($vals))) { $add_href = "add_value_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&attr=" . rawurlencode( $attr ); printf('
(%s)
', $add_href,sprintf($lang['add_value_tooltip'],$attr),$lang['add_value']); } } } print ""; ?> $vals ) */ if( ! $ldapserver_dst->isReadOnly( ) ) { ?>