#!/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
\n); display_user_list($users); print qq(\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(); print qq(); print qq(); print qq(); print qq(); if (length($z_grass)) { print qq(); print qq(); print qq(); } last if (++$i == 20); } print qq(

\n
$z_user$z_date
); print "$z_grass"; print qq(
\n); print qq(
\n); } sub display_user_list { my ($users) = @_; print qq[]; print qq[\n]; print qq(\n); print <  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(\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[]; } sub print_blank_cell { my ($v) = @_; print qq[]; } 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;
 username realname idle   
) . qq(total: $i users \($today seen today); print qq(, $neg vanished) if (!$show_all && $USER->{ulevel} > 2); print qq(\) 
$v$v