#!/usr/bin/perl
#########################################
# display userlist
#########################################
use localbucky;
use invite;
$dbh = DBI->connect ($dsn);
($USER, $lastlog) = checkin();
logout() if ($USER == -1);
my $users = get_all_users();
my $keywords = get_keywords();
header( $BUCKY_CONFIG->{USERLIST_TITLE} );
menu();
our $command = -1;
print qq(
);
print qq(| \n);
display_user_list($users);
print qq( | \n\n);
invite_result_box($command, $hash, $result) if ($command != -1);
invite_create_box() if ($USER->{'ulevel'} > 1);
grass_box($users);
print qq( |
\n\n);
footer();
sub grass_box
{
my ($users) = @_;
print qq();
print qq(
newest users\n);
my $i = 0;
print "
";
foreach my $duder (sort_by_firstseen(@$users))
{
next if ($duder->{ulevel} < 1);
next if ($duder->{firstseen} == 0);
my $z_date = verbosedate($duder->{firstseen});
my $z_user = $duder->{username};
my $z_grass = $duder->{grass};
print qq( \n |
);
print qq();
print qq(| $z_user | );
print qq($z_date | );
print qq(
);
if (length($z_grass))
{
print qq();
print qq(| );
print "$z_grass";
print qq( | );
print qq(
);
}
last if (++$i == 20);
}
print qq(
\n);
print qq(
\n);
}
sub display_user_list
{
my ($users) = @_;
print qq[];
print qq[\n];
print qq(| | \n);
print <
username |
realname |
idle |
|
userrows
# print qq( | \n) if ($USER->{ulevel} == 3);
print "
\n";
my $r = 0;
my $i = 0;
my $today = 0;
my $neg = 0;
my $show_all = (exists($input->{showall})) ? 1 : 0;
foreach my $duder (sort_by_username(@$users))
{
next if ($duder->{ulevel} < 1);
my $vanished =
(
$duder->{ccount} < 1
&& $duder->{fcount} < 1
&& (time - $duder->{lastseen}) > 14*24*3600
);
if ($vanished && !$show_all)
{
$neg++;
next;
}
print qq[];
print_blank_cell(qq(profile · send message ·), "right", "blank");
my $image = get_profile_image($duder->{username}, $AVATAR_MED_PREFIX);
if ($image != -1)
{
my $av .=
qq().
qq(
).
qq();
print_user_cell($av);
}
else
{
print_user_cell(qq(
));
}
if ($duder->{ulevel} > 1 && $USER->{ulevel} == 3 && $show_all)
{
print_user_cell("· ".$duder->{username});
}
elsif ($vanished)
{
print_user_cell("".$duder->{username}."");
}
else
{
$duder->{username} =~ s/\n/
/g;
print_user_cell($duder->{username});
}
$duder->{realname} =~ s/\s/ /g;
if ($vanished)
{ print_user_cell("".$duder->{realname}.""); }
else
{ print_user_cell($duder->{realname}); }
my $col = carbondate($duder->{lastseen}, 0);
$today++ if ($col eq "new");
if ($vanished)
{
print_user_cell(qq!!.(get_age($duder->{lastseen})).qq! ago!, "right");
}
else
{
print_user_cell(qq!!.(get_age($duder->{lastseen})).qq!!, "right");
}
if ($USER->{ulevel} == 3)
{
if ($duder->{ccount} == 0)
{ print_user_cell(" "); }
else
{ print_user_cell(" ".hushnull($duder->{ccount}, "c", 1)."", "right"); }
if ($duder->{fcount} == 0)
{ print_user_cell(" "); }
else
{ print_user_cell(" ".hushnull($duder->{fcount}, "f", 1)." ", "right"); }
}
my $cell = '';
foreach my $sticky (split_keys($duder->{stickies}))
{
my $key = $keywords->{$sticky};
if ($key->{owner} eq $USER->{username} || check_op($key) || $USER->{ulevel} == 3)
{
$cell .= qq($sticky, );
}
}
$cell =~ s/, $//;
print_user_cell($cell);
print qq[
];
$r = $r ? 0 : 1;
$i++;
}
print qq(| ) .
qq(total: $i users \($today seen today);
print qq(, $neg vanished) if (!$show_all && $USER->{ulevel} > 2);
print qq(\) |
\n);
print <
approvefoot
}
sub print_user_cell
{
my ($v, $align) = @_;
my ($lpx, $rpx) = ("4px", "2px");
($lpx, $rpx) = ("2px", "4px") if ($align eq "right");
$align = "left" unless ($align);
print qq[$v | ];
}
sub print_blank_cell
{
my ($v) = @_;
print qq[$v | ];
}
sub print_sinks
{
$cell = ' ';
foreach my $sticky (split_keys($duder->{sink}))
{
my $key = $keywords->{$sticky};
if ($key->{owner} eq $USER->{username} || check_op($key) || $USER->{ulevel} == 3)
{
$cell .= qq($sticky, );
}
}
$cell =~ s/, $//;
print_user_cell($cell);
}
sub sort_by_username { sort { uc($a->{username}) cmp uc($b->{username}) } @_; }
sub sort_by_firstseen { sort { uc($b->{firstseen}) <=> uc($a->{firstseen}) } @_; }
$dbh->disconnect ();
print "Users: " . &report_time() . "\n" if $timer;