# ================================================================== # Gossamer Forum - Advanced web community # # Website : http://gossamer-threads.com/ # Support : http://gossamer-threads.com/scripts/support/ # Revision : $Id: User.pm,v 1.24.2.7 2003/07/04 20:37:48 jagerman Exp $ # # Copyright (c) 2003 Gossamer Threads Inc. All Rights Reserved. # Redistribution in part or in whole strictly prohibited. Please # see LICENSE file for full details. # ================================================================== package GForum::HTML::User; # ================================================================== # Handles displaying of forms and HTML. # use strict; use GForum qw/$DB $CFG $IN/; use GT::SQL::Display::HTML::Table; use vars qw/@ISA %DISPLAY %FORM/; @ISA = qw/GT::SQL::Display::HTML::Table/; sub display { # ------------------------------------------------------------------- # Displays a user, but passes through the plugin system. # my $self = shift; my $param = ref $_[0] eq 'HASH' ? shift : {@_}; GT::Plugins->dispatch($CFG->{admin_root_path} . '/Plugins/GForum', 'display_user', sub { return $self->_plg_display(@_) }, $param); } sub _plg_display { my ($self, $opts) = @_; for (grep !exists $DISPLAY{$_}, keys %FORM) { delete $self->{code}->{$_}; } for (keys %DISPLAY) { $self->{code}->{$_} = $DISPLAY{$_} if ref $DISPLAY{$_} eq 'CODE'; } my $return = $self->SUPER::display($opts); $return .= qq|
{font}>Groups {font}>\n|; my $uid = $self->{values}->{user_id}; my $sth = $DB->table('UserGroup' => 'Grouping')->select(group_name => { user_id_fk => $uid }); $return .= join $CFG->{user_group_display_separator}, $sth->fetchall_list; $return .= "
"; my $payment = $DB->table('Payment'); $payment->select_options('ORDER BY payment_last DESC'); my $payments = $DB->table('Payment')->select({ user_id_fk => $uid })->fetchall_hashref; if (@$payments) { $return .= qq|
{font}>Payments {font}>\n|; for (@$payments) { my $date = ${GForum::date($_->{payment_last})}; $return .= qq|$date - |; $return .= $_->{payment_status} eq 0 ? 'Pending' : $_->{payment_status} eq 1 ? 'Completed' : $_->{payment_status} eq 2 ? 'Declined' : $_->{payment_status} eq 3 ? 'Error' : ''; $return .= qq|
|; } $return .= '
'; } return $return; } sub form { # ------------------------------------------------------------------- # Displays a user form, passing it through the plugin system. # my $self = shift; my $param = ref $_[0] eq 'HASH' ? shift : {@_}; GT::Plugins->dispatch($CFG->{admin_root_path} . '/Plugins/GForum', 'form_user', sub { return $self->_plg_form(@_) }, $param); } sub _plg_form { my ($self, $opts) = @_; my $user_id = $opts->{values}->{user_id} || $self->{input}->{user_id}; for (grep !exists $FORM{$_}, keys %DISPLAY) { delete $self->{code}->{$_}; } for (keys %FORM) { if (ref $FORM{$_} eq 'CODE' and ($_ ne 'user_do_after_post' or $self->{input}->{do} !~ /search/ or $self->{db}->{last_hits})) { $self->{code}->{$_} = $FORM{$_}; } } my $return = $self->SUPER::form($opts); return $return if not $DB->table('Grouping')->count(GT::SQL::Condition->new( group_id => IN => \("(" . join(",", @$CFG{qw/id_group_guest id_group_not_validated id_group_registered id_group_moderator/}) . ")") )->not); $return .= qq|

"; $return; }, user_password => sub { my ($self, $col, $rec) = @_; my $disp_name = $col->{form_display} || 'Password'; return "\n"; }, user_temp_pass => sub { my ($self, $col, $rec) = @_; my $disp_name = $col->{form_display} || 'Temp. Password'; return "\n"; }, user_registered => sub { my ($self, $col, $rec) = @_; require GT::Date; my $disp_name = $col->{form_display} || 'Registered'; return "\n\n"; }, user_last_logon => sub { my ($self, $col, $rec) = @_; require GT::Date; my $disp_name = $col->{form_display} || 'Last Logon'; return "\n\n"; }, user_last_seen => sub { my ($self, $col, $rec) = @_; require GT::Date; my $disp_name = $col->{form_display} || 'Last seen'; return "\n\n"; }, user_payment_expiry => sub { my ($self, $col, $rec) = @_; require GT::Date; my $disp_name = $col->{form_display} || 'Signup Payment Expiry'; return "\n\n"; }, user_title => sub { my ($self, $col, $rec) = @_; my $disp_name = $col->{form_display} || 'Title'; if (defined $rec->{user_title} and length $rec->{user_title}) { return "\n\n"; } else { my $title; for (sort { $a <=> $b } keys %{$CFG->{user_post_title}}) { $rec->{user_posts} >= $_ and $title = $CFG->{user_post_title}->{$_}, next; last; } $title = "Unknown" unless defined $title; return "\n\n"; } }, user_hidden_cats => sub { "" } ); %FORM = ( user_signature => sub { my ($self, $col, $rec) = @_; my $disp_name = $col->{form_display} || 'Signature'; my $output = "\n\n"; $output; }, user_registered => sub { my ($self, $col, $rec) = @_; my $todo = $self->{input}->{todo} || $self->{input}->{do} || ''; my $output = ""; unless ($self->{db}->{last_hits} or $todo =~ /add_/) { my $disp_name = $col->{form_display} || 'Date Registered'; $output .= "\n\n|; unless ($self->{db}->{last_hits}) { $output .= qq||; } } $output; }, user_payment_expiry => sub { my ($self, $col, $rec) = @_; my $output = ""; my $disp_name = $col->{form_display} || 'Payment Expiry'; $output .= "\n\n|; my $todo = $self->{input}->{todo} || $self->{input}->{do} || ''; unless ($self->{db}->{last_hits} or $todo =~ /add_/) { $output .= qq||; } $output; }, user_do_after_post => sub { my ($self, $col, $rec) = @_; my $disp_name = $col->{form_display} || 'After post action'; my $text_field = my $output = qq| \n"; $output; }, user_last_logon => sub { my ($self, $col, $rec) = @_; my $todo = $self->{input}->{todo} || $self->{input}->{do} || ''; my $output = ""; unless ($self->{db}->{last_hits} or $todo =~ /add_/) { my $disp_name = $col->{form_display} || 'Last Logon'; $output .= "\n\n|; unless ($self->{db}->{last_hits}) { $output .= qq||; } } $output; } ); # Returns a list of all the groups the passed in user is a member of. sub get_all_groups { my $self = shift; defined(my $user_id = shift) or $self->error('BADARGS', 'FATAL', 'No user ID passed to get_all_groups()!'); my $sth = $DB->table('UserGroup')->select({ user_id_fk => $user_id }, 'group_id_fk'); return map $_->[0], @{$sth->fetchall_arrayref}; } 1;
{font}>Groups {font}>
{font}>$disp_name {font}>$rec->{user_username}|; if ($CFG->{admin_show_user_login}) { require GForum::Authenticate; if (GForum::Authenticate::auth(enabled_user => $rec)) { $return .= qq|\n(| . GForum::language('BECOME_USER') . qq|)|; } } $return .= "
{font}>$disp_name{font}><" . (defined $rec->{user_password} ? "encrypted" : "none") . ">
{font}>$disp_name{font}><" . (defined $rec->{user_temp_pass} ? "encrypted" : "none") . ">
{font}>$disp_name{font}>" . GForum::date($rec->{user_registered}, 1) . "
{font}>$disp_name{font}>" . ($rec->{user_last_logon} ? GForum::date($rec->{user_last_logon}, 1) : "never logged on") . "
{font}>$disp_name{font}>" . ($rec->{user_last_seen} ? GForum::date($rec->{user_last_seen}, 1) : "never logged on") . "
{font}>$disp_name{font}>" . ($rec->{user_payment_expiry} > 0 ? GForum::date($rec->{user_payment_expiry}, 1) : $rec->{user_payment_expiry} ? 'No payment received' : 'Unlimited') . "
{font}>$disp_name{font}>$rec->{user_title}
{font}>$disp_name{font}>$title (Autogenerated from # of posts)
{font}>$disp_name{font}>"; $output .= "
{font}>$disp_name{font}>"; my $form_size = $col->{form_size} || 30; require GT::Date; my $value = (defined $rec->{user_registered} and length $rec->{user_registered}) ? GForum::date($rec->{user_registered}, 1) : ""; $output .= qq|{font}>
{font}>$disp_name{font}>"; my $form_size = $col->{form_size} || 30; require GT::Date; my $value = ($rec->{user_payment_expiry} && $rec->{user_payment_expiry} > 0) ? GForum::date($rec->{user_payment_expiry}, 1) : ""; $output .= qq| |; $output .= qq|{user_payment_expiry}; $output .= qq|> Unlimited{font}>
{font}>$disp_name{font}>|; $output .= $self->text({ def => $col, name => 'user_do_after_post', ($rec->{user_do_after_post} ? (value => $rec->{user_do_after_post}) : ()) }); $output .= "
"; for (@{$CFG->{admin_do_after_post_options}}) { # This isn't directly settable, but a plugin could alter it $output .= qq| $_|; } $output .= "
{font}>$disp_name{font}>"; my $form_size = $col->{form_size} || 30; require GT::Date; my $value = (defined $rec->{user_last_logon} and length $rec->{user_last_logon}) ? GForum::date($rec->{user_last_logon}, 1) : ""; $output .= qq|{font}>