summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VNWeb/Discussions/Board.pm2
-rw-r--r--lib/VNWeb/Discussions/Search.pm4
-rw-r--r--lib/VNWeb/Discussions/UPosts.pm2
-rw-r--r--lib/VNWeb/Misc/History.pm12
-rw-r--r--lib/VNWeb/User/List.pm10
-rw-r--r--lib/VNWeb/User/Lists.pm12
-rw-r--r--lib/VNWeb/User/Notifications.pm4
-rw-r--r--lib/VNWeb/VN/Votes.pm8
-rw-r--r--lib/VNWeb/Validation.pm4
9 files changed, 29 insertions, 29 deletions
diff --git a/lib/VNWeb/Discussions/Board.pm b/lib/VNWeb/Discussions/Board.pm
index 0af7f2cc..edce6789 100644
--- a/lib/VNWeb/Discussions/Board.pm
+++ b/lib/VNWeb/Discussions/Board.pm
@@ -7,7 +7,7 @@ use VNWeb::Discussions::Lib;
TUWF::get qr{/t/(all|$BOARD_RE)}, sub {
my($type, $id) = tuwf->capture(1) =~ /^([^0-9]+)([0-9]*)$/;
- my $page = eval { tuwf->validate(get => p => { upage => 1 })->data } || 1;
+ my $page = tuwf->validate(get => p => { upage => 1 })->data;
my $obj = !$id ? undef :
$type eq 'v' ? tuwf->dbRowi('SELECT id, title, original, hidden AS entry_hidden, locked AS entry_locked FROM vn WHERE id =', \$id) :
diff --git a/lib/VNWeb/Discussions/Search.pm b/lib/VNWeb/Discussions/Search.pm
index 511267b0..06366caf 100644
--- a/lib/VNWeb/Discussions/Search.pm
+++ b/lib/VNWeb/Discussions/Search.pm
@@ -7,11 +7,11 @@ use VNWeb::Discussions::Lib;
sub filters_ {
state $schema = tuwf->compile({ type => 'hash', keys => {
bq => { required => 0, default => '' },
- b => { type => 'array', scalar => 1, required => 0, default => [keys %BOARD_TYPE], values => { enum => \%BOARD_TYPE } },
+ b => { type => 'array', scalar => 1, onerror => [keys %BOARD_TYPE], values => { enum => \%BOARD_TYPE } },
t => { anybool => 1 },
p => { page => 1 },
}});
- my $filt = eval { tuwf->validate(get => $schema)->data } || tuwf->pass;
+ my $filt = tuwf->validate(get => $schema)->data;
my %boards = map +($_,1), $filt->{b}->@*;
form_ method => 'get', action => tuwf->reqPath(), sub {
diff --git a/lib/VNWeb/Discussions/UPosts.pm b/lib/VNWeb/Discussions/UPosts.pm
index ead0ac7f..45be3f0b 100644
--- a/lib/VNWeb/Discussions/UPosts.pm
+++ b/lib/VNWeb/Discussions/UPosts.pm
@@ -38,7 +38,7 @@ TUWF::get qr{/$RE{uid}/posts}, sub {
my $u = tuwf->dbRowi('SELECT id, ', sql_user(), 'FROM users u WHERE id =', \tuwf->capture('id'));
return tuwf->resNotFound if !$u->{id};
- my $page = eval { tuwf->validate(get => p => { upage => 1 })->data } || 1;
+ my $page = tuwf->validate(get => p => { upage => 1 })->data;
my $from_and_where = sql
'FROM threads_posts tp
diff --git a/lib/VNWeb/Misc/History.pm b/lib/VNWeb/Misc/History.pm
index d3caf4a9..26ef5f48 100644
--- a/lib/VNWeb/Misc/History.pm
+++ b/lib/VNWeb/Misc/History.pm
@@ -103,14 +103,14 @@ sub filters_ {
state $schema = tuwf->compile({ type => 'hash', keys => {
# Types
- t => { type => 'array', scalar => 1, required => 0, default => [map $_->[0], @types], values => { enum => [(map $_->[0], @types), 'a'] } },
- m => { required => 0, enum => [ 0, 1 ] }, # Automated edits
- h => { required => 0, default => 0, enum => [ -1..1 ] }, # Hidden items
- e => { required => 0, default => 0, enum => [ -1..1 ] }, # Existing/new items
- r => { required => 0, default => 0, enum => [ 0, 1 ] }, # Include releases
+ t => { type => 'array', scalar => 1, onerror => [map $_->[0], @types], values => { enum => [(map $_->[0], @types), 'a'] } },
+ m => { onerror => undef, enum => [ 0, 1 ] }, # Automated edits
+ h => { onerror => 0, enum => [ -1..1 ] }, # Hidden items
+ e => { onerror => 0, enum => [ -1..1 ] }, # Existing/new items
+ r => { onerror => 0, enum => [ 0, 1 ] }, # Include releases
p => { page => 1 },
}});
- my $filt = eval { tuwf->validate(get => $schema)->data } || tuwf->pass;
+ my $filt = tuwf->validate(get => $schema)->data;
$filt->{m} //= $type ? 0 : 1; # Exclude automated edits by default on the main 'recent changes' view.
diff --git a/lib/VNWeb/User/List.pm b/lib/VNWeb/User/List.pm
index 72da203d..7d5311a2 100644
--- a/lib/VNWeb/User/List.pm
+++ b/lib/VNWeb/User/List.pm
@@ -54,12 +54,12 @@ sub listing_ {
TUWF::get qr{/u/(?<char>[0a-z]|all)}, sub {
my $char = tuwf->capture('char');
- my $opt = eval { tuwf->validate(get =>
+ my $opt = tuwf->validate(get =>
p => { upage => 1 },
- s => { required => 0, default => 'registered', enum => [qw[username registered vns votes wish changes tags]] },
- o => { required => 0, default => 'd', enum => [qw[a d]] },
- q => { required => 0, default => '' },
- )->data } || return tuwf->resNotFound;
+ s => { onerror => 'registered', enum => [qw[username registered vns votes wish changes tags]] },
+ o => { onerror => 'd', enum => [qw[a d]] },
+ q => { onerror => '' },
+ )->data;
my @where = (
$char eq 'all' ? () : $char eq '0' ? "ascii(username) not between ascii('a') and ascii('z')" : "username like '$char%'",
diff --git a/lib/VNWeb/User/Lists.pm b/lib/VNWeb/User/Lists.pm
index 2c0548c1..980bd807 100644
--- a/lib/VNWeb/User/Lists.pm
+++ b/lib/VNWeb/User/Lists.pm
@@ -278,14 +278,14 @@ sub opt {
tuwf->reqGet('votes') ? { p => 1, l => [7], s => 'voted', o => 'd', c => [qw/vote voted/] } :
tuwf->reqGet('wishlist') ? { p => 1, l => [5], s => 'title', o => 'a', c => [qw/added/] } :
# Full options
- eval { tuwf->validate(get =>
+ tuwf->validate(get =>
p => { upage => 1 },
- l => { type => 'array', scalar => 1, required => 0, default => [], values => { int => 1 } },
- s => { required => 0, default => 'title', enum => [qw[ title label vote voted added modified started finished rel rating ]] },
- o => { required => 0, default => 'a', enum => ['a', 'd'] },
- c => { type => 'array', scalar => 1, required => 0, default => [], values => { enum => [qw[ vote voted added modified started finished rel rating ]] } },
+ l => { onerror => [], type => 'array', scalar => 1, values => { int => 1 } },
+ s => { onerror => 'title', enum => [qw[ title label vote voted added modified started finished rel rating ]] },
+ o => { onerror => 'a', enum => ['a', 'd'] },
+ c => { onerror => [], type => 'array', scalar => 1, values => { enum => [qw[ vote voted added modified started finished rel rating ]] } },
q => { required => 0 },
- )->data } || { p => 1, l => [], s => 'title', o => 'a', c => [] };
+ )->data;
# $labels only includes labels we are allowed to see, getting rid of any labels in 'l' that aren't in $labels ensures we only filter on visible labels
my %accessible_labels = map +($_->{id}, 1), @$filtlabels;
diff --git a/lib/VNWeb/User/Notifications.pm b/lib/VNWeb/User/Notifications.pm
index 4f45e0b3..c74cc1a8 100644
--- a/lib/VNWeb/User/Notifications.pm
+++ b/lib/VNWeb/User/Notifications.pm
@@ -90,10 +90,10 @@ TUWF::get qr{/$RE{uid}/notifies}, sub {
my $id = tuwf->capture('id');
return tuwf->resNotFound if !auth || $id != auth->uid;
- my $opt = eval { tuwf->validate(get =>
+ my $opt = tuwf->validate(get =>
p => { page => 1 },
r => { anybool => 1 },
- )->data } || { p => 1, r => 0 };
+ )->data;
my $where = sql_and(
sql('uid =', \$id),
diff --git a/lib/VNWeb/VN/Votes.pm b/lib/VNWeb/VN/Votes.pm
index 1d4fe774..00ea04b6 100644
--- a/lib/VNWeb/VN/Votes.pm
+++ b/lib/VNWeb/VN/Votes.pm
@@ -34,11 +34,11 @@ TUWF::get qr{/$RE{vid}/votes}, sub {
my $v = tuwf->dbRowi('SELECT id, title, hidden AS entry_hidden, locked AS entry_locked FROM vn WHERE id =', \$id);
return tuwf->resNotFound if !$v->{id} || $v->{hidden};
- my $opt = eval { tuwf->validate(get =>
+ my $opt = tuwf->validate(get =>
p => { page => 1 },
- o => { required => 0, default => 'd', enum => ['a','d'] },
- s => { required => 0, default => 'date', enum => ['date', 'title', 'vote' ] }
- )->data } || { p => 1, o => 'd', s => 'date' };
+ o => { onerror => 'd', enum => ['a','d'] },
+ s => { onerror => 'date', enum => ['date', 'title', 'vote' ] }
+ )->data;
my $fromwhere = sql
'FROM ulist_vns uv
diff --git a/lib/VNWeb/Validation.pm b/lib/VNWeb/Validation.pm
index 3cec3385..c506903a 100644
--- a/lib/VNWeb/Validation.pm
+++ b/lib/VNWeb/Validation.pm
@@ -22,8 +22,8 @@ our @EXPORT = qw/
TUWF::set custom_validations => {
id => { uint => 1, max => 1<<40 },
editsum => { required => 1, length => [ 2, 5000 ] },
- page => { uint => 1, min => 1, max => 1000, required => 0, default => 1 },
- upage => { uint => 1, min => 1, required => 0, default => 1 }, # pagination without a maximum
+ page => { uint => 1, min => 1, max => 1000, required => 0, default => 1, onerror => 1 },
+ upage => { uint => 1, min => 1, required => 0, default => 1, onerror => 1 }, # pagination without a maximum
username => { regex => qr/^(?!-*[a-z][0-9]+-*$)[a-z0-9-]*$/, minlength => 2, maxlength => 15 },
password => { length => [ 4, 500 ] },
language => { enum => \%LANGUAGE },