Refactor event adding out into common code.
authorSteinar H. Gunderson <sesse@debian.org>
Tue, 2 Jan 2007 22:23:59 +0000 (23:23 +0100)
committerSteinar H. Gunderson <sesse@debian.org>
Tue, 2 Jan 2007 22:23:59 +0000 (23:23 +0100)
perl/Sesse/pr0n/Common.pm
perl/Sesse/pr0n/NewEvent.pm

index 2079d6aad69c182bb26c392dec7feaf32f2ed916..2ca54cfa7dedcc19a2b65b15baf37c9689599c57 100644 (file)
@@ -526,6 +526,34 @@ sub gcd {
        return gcd($b, $a % $b);
 }
 
+sub add_new_event {
+       my ($dbh, $id, $date, $desc, $vhost) = @_;
+       my @errors = ();
+
+       if (!defined($id) || $id =~ /^\s*$/ || $id !~ /^([a-zA-Z0-9-]+)$/) {
+               push @errors, "Manglende eller ugyldig ID.";
+       }
+       if (!defined($date) || $date =~ /^\s*$/ || $date =~ /[<>&]/ || length($date) > 100) {
+               push @errors, "Manglende eller ugyldig dato.";
+       }
+       if (!defined($desc) || $desc =~ /^\s*$/ || $desc =~ /[<>&]/ || length($desc) > 100) {
+               push @errors, "Manglende eller ugyldig beskrivelse.";
+       }
+       
+       if (scalar @errors > 0) {
+               return @errors;
+       }
+               
+       $dbh->do("INSERT INTO events (id,date,name,vhost) VALUES (?,?,?,?)",
+               undef, $id, $date, $desc, $vhost)
+               or return ("Kunne ikke sette inn ny hendelse" . $dbh->errstr);
+       $dbh->do("INSERT INTO last_picture_cache (event,last_picture) VALUES (?,NULL)",
+               undef, $id)
+               or return ("Kunne ikke sette inn ny cache-rad" . $dbh->errstr);
+
+       return ();
+}
+
 1;
 
 
index 18faf6a7bef44c5f34e17d01042cab94ff825652..61124536ef2b1c0ddd0f5672f3542c9929551394 100644 (file)
@@ -15,36 +15,19 @@ sub handler {
        }
 
        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("    <p>Feil: Manglende eller ugyldig ID.</p>\n");
-               $ok = 0;
-       }
-
        my $date = $apr->param('date');
-       if (!defined($date) || $date =~ /^\s*$/ || $date =~ /[<>&]/ || length($date) > 100) {
-               $r->print("    <p>Feil: Manglende eller ugyldig dato.</p>\n");
-               $ok = 0;
-       }
-       
        my $desc = $apr->param('desc');
-       if (!defined($desc) || $desc =~ /^\s*$/ || $desc =~ /[<>&]/ || length($desc) > 100) {
-               $r->print("    <p>Feil: Manglende eller ugyldig beskrivelse.</p>\n");
-               $ok = 0;
-       }
+
+       my @errors = Sesse::pr0n::Common::add_new_event($dbh, $id, $date, $desc, $r->get_server_name);
        
-       if ($ok == 0) {
+       if (scalar @errors > 0) {
+               for my $err (@errors) {
+                       $r->print("    <p>Feil: $err</p>\n");
+               }
                $r->print("    <p>Rett opp i feilene over før du går videre.</p>\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");
-               $dbh->do("INSERT INTO last_picture_cache (event,last_picture) VALUES (?,NULL)",
-                       undef, $id)
-                       or dberror($r, "Kunne ikke sette inn ny cache-rad");
                $r->print("    <p>Hendelsen '$id' lagt til.</p>");
        }