chiark
/
gitweb
/
~mdw
/
odin-cgi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bin/pastebin.userv, lib/Odin.pm: Centralize language-tag checking.
[odin-cgi]
/
lib
/
Odin.pm
diff --git
a/lib/Odin.pm
b/lib/Odin.pm
index 154fae0b1c9511cde89593cb42cf4cb0bf34fdb7..bc5947e5a21c7b36a7189f460945caed94697784 100644
(file)
--- 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;
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) = @_;
sub new_pastebin (\%) {
my ($new) = @_;
@@
-384,6
+394,7
@@
sub new_pastebin (\%) {
my $tag;
merge_hash %$new, %PASTEBIN_DEFAULTS;
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",
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;
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) {
xact {
get_pastebin_check_editkey_or_owner $db, $tag, $editkey, my %old;
for my $p (@PASTEBIN_PROPS) {