@@ -511,11 +518,11 @@ EOF
EOF
if ($UserID)
{
- print qq(\t\t\t\t | \n);
+ print qq(\t\t\t\t | \n);
}
else
{
- print qq(\t\t\t\t$firstname | \n);
+ print qq(\t\t\t\t$firstname_html | \n);
}
print "\t\t\t\n";
@@ -601,7 +608,7 @@ EOF
sub action_save
{
- my $cn = $UserID ? param ('cn') : $UserCN;
+ my $cn = $UserID ? param_utf8 ('cn') : $UserCN;
if (verify_fields ())
{
@@ -617,7 +624,7 @@ sub action_save
die unless ($UserID);
- my $button = lc (param ('button'));
+ my $button = lc (param_utf8 ('button'));
$button ||= 'save';
if ($button eq 'cancel')
@@ -626,15 +633,15 @@ sub action_save
return;
}
- if (!param ('lastname') or !param ('firstname'))
+ if (!param_utf8 ('lastname') or !param_utf8 ('firstname'))
{
print qq(\tYou have to give both, first and lastname, to identify this record.
\n);
action_edit (cn => '');
return;
}
- my $lastname = param ('lastname');
- my $firstname = param ('firstname');
+ my $lastname = param_utf8 ('lastname');
+ my $firstname = param_utf8 ('firstname');
my $contacts = get_contacts ();
@@ -648,7 +655,7 @@ sub action_save
$cn = $person->name ();
- for (param ('group'))
+ for (param_utf8 ('group'))
{
my $group_name = $_;
my $group = LiCoM::Group->load ($group_name);
@@ -664,10 +671,10 @@ sub action_save
}
}
- if (param ('newgroup'))
+ if (param_utf8 ('newgroup'))
{
# FIXME add error handling
- my $group_name = param ('newgroup');
+ my $group_name = param_utf8 ('newgroup');
LiCoM::Group->create ($group_name, '', $cn);
}
@@ -683,12 +690,12 @@ sub action_save
sub action_update
{
- my $cn = $UserID ? param ('cn') : $UserCN;
- my $person = LiCoM::Person->load ($cn);
+ my $cn = $UserID ? param_utf8 ('cn') : $UserCN;
- die unless ($person);
+ my $person = LiCoM::Person->load ($cn);
+ die ("Unable to load CN `$cn'") unless ($person);
- my $button = lc (param ('button'));
+ my $button = lc (param_utf8 ('button'));
$button ||= 'save';
if ($UserID and $button eq 'cancel')
@@ -699,17 +706,39 @@ sub action_update
if ($UserID)
{
- my $lastname = param ('lastname');
- my $firstname = param ('firstname');
+ my $lastname = param_utf8 ('lastname');
+ my $firstname = param_utf8 ('firstname');
+
+ my $old_cn = $person->name ();
+
+ print <
+ \$lastname = $lastname
+ \$firstname = $firstname
+ \$old_cn = $old_cn
+
+HTML
$person->lastname ($lastname) if ($lastname and $lastname ne $person->lastname ());
$person->firstname ($firstname) if ($firstname and $firstname ne $person->firstname ());
$cn = $person->name ();
- # FIXME Fix groups:
- # Each group is one entry of type (objectClass=groupOfNames)
- # with one or more `member' attributes. These attributes are
- # the `dn' (distinguished name) of the member entries.
+
+ # Change the cn's saved in the groups
+ if ($old_cn ne $cn)
+ {
+ my @groups = LiCoM::Group->load_by_member ($old_cn);
+ for (@groups)
+ {
+ # ->del_members automatically deleted the
+ # group, if no more members exist. So this
+ # order is important.
+ print "\$cn = " . encode_entities ($cn) . "; "
+ . "\$old_cn = " . encode_entities ($old_cn) . ";
\n";
+ $_->add_members ($cn);
+ $_->del_members ($old_cn);
+ }
+ } # if ($old_cn ne $cn)
}
my $contacts = get_contacts ();
@@ -734,7 +763,7 @@ sub action_update
# only `authorized' users may see and change groups
if ($UserID)
{
- my %changed_groups = map { $_ => 1 } (param ('group'));
+ my %changed_groups = map { $_ => 1 } (param_utf8 ('group'));
my @current_groups = LiCoM::Group->load_by_member ($cn);
for (@current_groups)
@@ -759,10 +788,10 @@ sub action_update
$group_obj->add_members ($cn);
}
- if (param ('newgroup'))
+ if (param_utf8 ('newgroup'))
{
# FIXME add error handling
- my $group_name = param ('newgroup');
+ my $group_name = param_utf8 ('newgroup');
LiCoM::Group->create ($group_name, '', $cn);
}
}
@@ -788,7 +817,7 @@ HTML
sub action_vcard
{
- my $cn = param ('cn');
+ my $cn = param_utf8 ('cn');
$cn = shift if (@_);
die unless ($cn);
@@ -808,7 +837,7 @@ sub action_vcard
my $sn = $person->lastname ();
my $gn = $person->firstname ();
- my $cn_esc = uri_escape ($cn);
+ my $cn_esc = uri_escape_utf8 ($cn);
print <get ('mail');
if (!$owner_mail)
{
- my $cn_uri = uri_escape ($UserCN);
+ my $cn_uri = uri_escape_utf8 ($UserCN);
print qq(\t\tYou have no email set in your own profile.
Edit it now!
\n);
return (0);
}
@@ -954,13 +983,13 @@ EOM
sub action_ask_del
{
- my $cn = param ('cn');
+ my $cn = param_utf8 ('cn');
$cn or die;
my $person = LiCoM::Person->load ($cn);
$person or die;
- my $cn_uri = uri_escape ($cn);
+ my $cn_uri = uri_escape_utf8 ($cn);
my $cn_html = encode_entities ($cn);
print <Edit contact group "$group_name_html"
-