X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/odin-cgi/blobdiff_plain/5dbae673c9b8a426f4dd0d57a8e203fdf46b2936..49e1be4cc948adf83e0e0024ee8b5a15890e0a7c:/lib/Odin.pm diff --git a/lib/Odin.pm b/lib/Odin.pm index 154fae0..bc5947e 100644 --- a/lib/Odin.pm +++ b/lib/Odin.pm @@ -376,6 +376,16 @@ our @PASTEBIN_PROPS = keys %PASTEBIN_DEFAULTS; our $PASTEBIN_PROPCOLS = join ", ", @PASTEBIN_PROPS; our $PASTEBIN_PROPPLACES = join ", ", map "?", @PASTEBIN_PROPS; +sub check_lang ($) { + my ($lang) = @_; + + return unless defined $lang; + my $db = open_db; + @{$db->selectall_arrayref + ("SELECT lang FROM odin_pastebin_lang WHERE lang = ?", undef, $lang)} + or fail "unknown language `$lang'"; +} + sub new_pastebin (\%) { my ($new) = @_; @@ -384,6 +394,7 @@ sub new_pastebin (\%) { my $tag; merge_hash %$new, %PASTEBIN_DEFAULTS; + check_lang $new->{lang}; xact { $tag = encode_tag next_seq $db, "odin_pastebin_seq"; insert_record $db, "odin_pastebin", @@ -455,6 +466,7 @@ sub update_pastebin ($$\%) { my $db = open_db; my $editp = 0; + check_lang $new->{lang}; xact { get_pastebin_check_editkey_or_owner $db, $tag, $editkey, my %old; for my $p (@PASTEBIN_PROPS) {