X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2FNewEvent.pm;h=8f4d6cef4ed5fa98600f159195477ac0ccb5af92;hp=3eaa5ddbb5c0a34fd23af2651b94f5a39f3f420d;hb=e6c0be9c884c678d048a9a9a569dc1a3f6f83f34;hpb=2d6536cab108c937e2af49f7dcf15f2230f44d1a diff --git a/perl/Sesse/pr0n/NewEvent.pm b/perl/Sesse/pr0n/NewEvent.pm index 3eaa5dd..8f4d6ce 100644 --- a/perl/Sesse/pr0n/NewEvent.pm +++ b/perl/Sesse/pr0n/NewEvent.pm @@ -3,51 +3,37 @@ use strict; use warnings; use Sesse::pr0n::Common qw(error dberror); -use Apache2::Request; sub handler { my $r = shift; - my $apr = Apache2::Request->new($r); my $dbh = Sesse::pr0n::Common::get_dbh(); my $user = Sesse::pr0n::Common::check_access($r); - if (!defined($user)) { - return Apache2::Const::OK; - } - - Sesse::pr0n::Common::header($r, "Legger til ny hendelse"); - - my $ok = 1; - - my $id = $apr->param('id'); - if (!defined($id) || $id =~ /^\s*$/ || $id !~ /^([a-zA-Z0-9-]+)$/) { - $r->print("

Feil: Manglende eller ugyldig ID.

\n"); - $ok = 0; - } + return Sesse::pr0n::Common::generate_401($r) if (!defined($user)); - my $date = $apr->param('date'); - if (!defined($date) || $date =~ /^\s*$/ || $date =~ /[<>&]/ || length($date) > 100) { - $r->print("

Feil: Manglende eller ugyldig dato.

\n"); - $ok = 0; - } + my $res = Plack::Response->new(200); + my $io = IO::String->new; + Sesse::pr0n::Common::header($r, $io, "Legger til ny hendelse"); - my $desc = $apr->param('desc'); - if (!defined($desc) || $desc =~ /^\s*$/ || $desc =~ /[<>&]/ || length($desc) > 100) { - $r->print("

Feil: Manglende eller ugyldig beskrivelse.

\n"); - $ok = 0; - } + my $id = $r->param('id'); + my $date = Encode::decode_utf8($r->param('date')); + my $desc = Encode::decode_utf8($r->param('desc')); + + my @errors = Sesse::pr0n::Common::add_new_event($r, $res, $dbh, $id, $date, $desc); - if ($ok == 0) { - $r->print("

Rett opp i feilene over før du går videre.

\n"); + if (scalar @errors > 0) { + for my $err (@errors) { + $io->print("

Feil: $err

\n"); + } + $io->print("

Rett opp i feilene over før du går videre.

\n"); } else { - $dbh->do("INSERT INTO events (id,date,name,vhost) VALUES (?,?,?,?)", - undef, $id, $date, $desc, $r->get_server_name) - or dberror($r, "Kunne ikke sette inn ny hendelse"); - $r->print("

Hendelsen '$id' lagt til.

"); + $io->print("

Hendelsen '$id' lagt til.

"); } - Sesse::pr0n::Common::footer($r); + Sesse::pr0n::Common::footer($r, $io); - return Apache2::Const::OK; + $io->setpos(0); + $res->body($io); + return $res; } 1;