The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Labyrinth::Plugin::Event::Sponsors;

use warnings;
use strict;

use vars qw($VERSION);
$VERSION = '1.05';

=head1 NAME

Labyrinth::Plugin::Event::Sponsors - Event Sponsor handler for the Labyrinth framework.

=head1 DESCRIPTION

Contains all the event sponsor functionality for Labyrinth.

=cut

# -------------------------------------
# Library Modules

use base qw(Labyrinth::Plugin::Base);

use Clone qw(clone);

use Labyrinth::DBUtils;
use Labyrinth::MLUtils;
use Labyrinth::Support;
use Labyrinth::Variables;

# -------------------------------------
# Variables

# type: 0 = optional, 1 = mandatory
# html: 0 = none, 1 = text, 2 = textarea


my %fields = (
    sponsorid   => { type => 0, html => 0 },
    sponsor     => { type => 1, html => 1 },
    sponsorlink => { type => 0, html => 1 },
);

my (@mandatory,@allfields);
for(keys %fields) {
    push @mandatory, $_     if($fields{$_}->{type});
    push @allfields, $_;
}

our $INDEXKEY   = 'sponsorid';
our $LEVEL      = ADMIN;

# -------------------------------------
# The Subs

=head1 PUBLIC INTERFACE METHODS

=over 4

=item SponsorSelect

Provides a dropdown list of sponsors available.

=back

=cut

sub SponsorSelect {
    my ($self,$opt,$blank) = @_;
    $blank ||= 0;

    my @rows = $dbi->GetQuery('hash','AllSponsors');
    my @list;
    for(@rows) { push @list, { id => $_->{sponsorid}, value => $_->{sponsor} }; }
    unshift @list, { id => 0, value => 'Select Sponsor' }   if($blank == 1);
    DropDownRows($opt,$INDEXKEY,'id','value',@list);
}

=head1 ADMIN INTERFACE METHODS

=over 4

=item Admin

Provides list of the sponsors currently available.

=item Add

Add a new sponsor.

=item Edit

Edit an existing sponsor.

=item Save

Save the current sponsor.

=item Delete

Delete a sponsor.

=back

=cut

sub Admin {
    return  unless AccessUser(EDITOR);

    if($cgiparams{doaction}) {
        if($cgiparams{doaction} eq 'Delete') { Delete(); }
    }

    my @rows = $dbi->GetQuery('hash','AllSponsors');
    $tvars{data} = \@rows   if(@rows);
}

sub Add {
    return  unless AccessUser(EDITOR);
    $tvars{data} = {
        sponsor     => 'Sponsor',
        sponsorlink => ''
    };
}

sub Edit {
    return  unless AccessUser(EDITOR);
    return  unless AuthorCheck('GetSponsorByID',$INDEXKEY,EDITOR);
}

sub Save {
    return  unless AccessUser(EDITOR);
    return  unless AuthorCheck('GetSponsorByID',$INDEXKEY,EDITOR);

    return  if FieldCheck(\@allfields,\@mandatory);

    for(keys %fields) {
        next    unless($fields{$_});
           if($fields{$_}->{html} == 1) { $tvars{data}->{$_} = CleanHTML($tvars{data}->{$_}) }
        elsif($fields{$_}->{html} == 2) { $tvars{data}->{$_} = CleanTags($tvars{data}->{$_}) }
    }

    my @fields = (  
        $tvars{data}->{sponsor},
        $tvars{data}->{sponsorlink}
    );

    if($cgiparams{$INDEXKEY})
            { $dbi->DoQuery('SaveSponsor',@fields,$cgiparams{$INDEXKEY}); }
    else    { $cgiparams{$INDEXKEY} = $dbi->IDQuery('AddSponsor',@fields); }
}

sub Delete {
    return  unless AccessUser(ADMIN);
    my @ids = CGIArray('LISTED');

    return  unless @ids;

    $dbi->DoQuery('DeleteSponsors',{ids => join(',',@ids)});
}

1;

__END__

=head1 SEE ALSO

L<Labyrinth>

=head1 AUTHOR

Barbie, <barbie@missbarbell.co.uk> for
Miss Barbell Productions, L<http://www.missbarbell.co.uk/>

=head1 COPYRIGHT & LICENSE

  Copyright (C) 2002-2014 Barbie for Miss Barbell Productions
  All Rights Reserved.

  This module is free software; you can redistribute it and/or
  modify it under the Artistic License 2.0.

=cut