The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package CGI::Portal::Scripts::profile;
# Copyright (c) 2008 Alexander David P. All rights reserved.
#
# Profile page

use strict;

use CGI::Portal::Scripts;

use vars qw(@ISA $VERSION);

$VERSION = "0.12";

@ISA = qw(CGI::Portal::Scripts);

my $r;

1;

sub launch {
  my $self = shift;

            # Authenticate
  $self->authenticate_user();
  if ($self->{'user'}){

            # Join user fields for SQL
    my $fields = join(',', @{$self->{'conf'}{'user_additional'}});

            # Select users info
    $r = $self->{'rdb'}->exec("select $fields from $self->{'conf'}{'user_table'} where $self->{'conf'}{'user_user_field'}=" . $self->{'rdb'}->escape($self->{'user'}) . " limit 1")->fetch;

            # Assign template vars
    $self->CGI::Portal::Scripts::profile::input_html();

            # Assign tmpl
    $self->assign_tmpl("profile.html");
  }
}

            # Assign templ vars
sub input_html {
  my $self = shift;
  my @states = qw(Other AL AK AZ AR CA CO CT DC DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VA VT WA WV WI WY);

            # Template vars for user fields
  my $c = 0;
  foreach my $f (@{$self->{'conf'}{'user_additional'}}) {
    my $value = $self->{'in'}{$f} || $r->[$c];
    $self->{'tmpl_vars'}{$f} = $value;
    $c++;
  }

            # Default state
  my $state_input = $self->{'in'}{'state'} || $r->[5];

            # HTML select for state
  my $state = "<select name=state>";
  foreach my $s (@states){
    if ($s ne $state_input){
      $state .=  "<option>$s";
    }else{
      $state .=  "<option selected>$s";
    }
  }
  $state .= "</select>";

            # Assign to template var state
  $self->{'tmpl_vars'}{'state'} = $state;
}