#!/usr/bin/perl
#########################################
# profile
# maintain a user's profile
# or print a form
#########################################
use localbucky;
my $pid;
$dbh = DBI->connect ($dsn);
our ($USER, $lastlog) = checkin();
our $loggedin = ($USER != -1);
sub main
{
$input->{username} ||= $input->{object_from_uri} if defined($input->{object_from_uri});
my ($keywords) = get_keywords();
if (exists($input->{c}) && $input->{c} eq "sticky" && defined($input->{keyword}))
{
logout() unless ($loggedin);
my $keyword = $input->{keyword};
print "Switching keyword $keyword for $USER->{username} ..." if ($DEBUG);
my $stkcy = check_key($keyword, $USER->{stickies});
my $newk;
if (exists($input->{chexor}))
{ $newk = add_key($USER->{stickies}, $keyword); }
else
{ $newk = delete_key($USER->{stickies}, $keyword); }
update_user_sticky($USER->{username}, $newk);
redirect("$BUCKY/index");
}
elsif (exists($input->{username}))
{
if ($USER->{username} eq $input->{username})
{
header( {
title => "profile for $input->{username}",
subtitle => qq!edit your profile!
} );
}
elsif ($input->{username} eq "system")
{
$input->{username} = "marc";
header("profile for $input->{username}");
}
elsif (get_uid($input->{username}) == -1)
{ nice_redirect(); }
else
{ header("profile for $input->{username}"); }
menu();
show_profile($input->{username});
}
elsif ($input->{c} eq 'form')
{
logout() unless ($loggedin);
header( {
title => "editing $USER->{username}'s profile",
subtitle => qq!view your profile!
} );
menu();
profile_form($USER->{username});
}
elsif ($input->{c} eq 'update')
{
logout() unless ($loggedin);
my $messages = '';
if (exists($input->{rmpic}) && $input->{rmpic} == 1)
{
system("rm", "-f", "$data_path/profile/$USER->{username}.jpg");
system("rm", "-f", "$data_path/profile/.thumb/$AVATAR_PROFILE_PREFIX$USER->{username}.jpg");
system("rm", "-f", "$data_path/profile/.thumb/$AVATAR_BIG_PREFIX$USER->{username}.jpg");
system("rm", "-f", "$data_path/profile/.thumb/$AVATAR_MED_PREFIX$USER->{username}.jpg");
$messages .= "old profile image deleted
\n";
}
if (exists($input->{pw1}) && exists($input->{pw2}) && $input->{pw1} && $input->{pw2})
{
if ($input->{pw1} eq $input->{pw2})
{
update_password($USER->{username}, crypt($input->{pw1},lc($USER->{username})));
$messages .= qq(password changed -- please log back in
\n);
}
else
{
$messages .= "passwords don't match!
\n";
}
}
if (exists($input->{stickies}))
{
my $s;
$input->{stickies} =~ s/[^A-Za-z0-9 ]//;
foreach my $k (split / /, $input->{stickies})
{
next unless ($keywords->{$k});
$s = add_key($s, lc($k));
}
$input->{stickies} = $s;
}
if (exists($input->{sink}))
{
my $s;
$input->{sink} =~ s/[^A-Za-z0-9 ]//g;
foreach my $k (split / /, $input->{sink})
{
next unless ($keywords->{$k});
$s = add_key($s, lc($k));
}
$input->{sink} = $s;
}
my (@boxes) = qw[welcome bPod radio postform hootbox photostream autoplay showhidden nologout];
my $newboxes = ' ';
foreach my $key (@boxes)
{
if (exists($input->{$key}) && $input->{$key} == 1)
{ $newboxes = add_key($newboxes, $key); }
}
if ($USER->{boxes} ne $newboxes)
{
update_user_boxes($USER->{username}, $newboxes);
$USER->{boxes} = $newboxes;
$messages .= "New box settings: $USER->{boxes}
\n" if ($DEBUG);
}
if ($loggedin && update_profile($USER->{username}, $input))
{
$USER->{timezone} = $input->{timezone};
$dateoffset = -1;
$messages .= "profile updated
"
}
if ($loggedin && update_profile_image($USER->{username}))
{
$messages .= "profile image updated
";
}
header( {
title => "updating profile...",
subtitle => qq!edit your profile!
} );
menu();
print qq(