summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2008-11-15 13:15:26 +0100
committerYorhel <git@yorhel.nl>2008-11-15 13:15:26 +0100
commit4db2d7228c600190c5035e324f0d061891480e8b (patch)
tree98d88e42bc25fcdd47ef6b3ff2ff2aaa1d3ac2b3
parent0c18982e5f21fdf5027a4c079bcbaf7750fe0d1b (diff)
Hidden items filter for history browser
The query is starting to get pretty heavy, might want to cache a few columns to get rid of all those table joins
-rw-r--r--lib/VNDB/DB/Misc.pm17
-rw-r--r--lib/VNDB/Handler/Misc.pm22
2 files changed, 32 insertions, 7 deletions
diff --git a/lib/VNDB/DB/Misc.pm b/lib/VNDB/DB/Misc.pm
index df3d7790..1a3fdc0e 100644
--- a/lib/VNDB/DB/Misc.pm
+++ b/lib/VNDB/DB/Misc.pm
@@ -82,12 +82,13 @@ sub dbItemInsert {
}
-# Options: type, iid, uid, auto, page, results
+# Options: type, iid, uid, auto, hidden page, results
sub dbRevisionGet {
my($self, %o) = @_;
$o{results} ||= 10;
$o{page} ||= 1;
- $o{auto} ||= 0; # 0: show, -1:only, 1:hide
+ $o{auto} ||= 0; # 0:show, -1:only, 1:hide
+ $o{hidden} ||= 0;
my %where = (
$o{type} ? (
@@ -98,14 +99,24 @@ sub dbRevisionGet {
'c.requester = ?' => $o{uid} ) : (),
$o{auto} ? (
'c.requester !s 1' => $o{auto} < 0 ? '=' : '<>' ) : (),
+ $o{hidden} == 1 ? (
+ '(v.hidden IS NOT NULL AND v.hidden = FALSE OR r.hidden IS NOT NULL AND r.hidden = FALSE OR p.hidden IS NOT NULL AND p.hidden = FALSE)' => 1,
+ ) : $o{hidden} == -1 ? (
+ '(v.hidden IS NOT NULL AND v.hidden = TRUE OR r.hidden IS NOT NULL AND r.hidden = TRUE OR p.hidden IS NOT NULL AND p.hidden = TRUE)' => 1,
+ ) : (),
);
my @join = (
- $o{iid} || $o{what} =~ /item/ ? (
+ $o{iid} || $o{what} =~ /item/ || $o{hidden} ? (
'LEFT JOIN vn_rev vr ON c.type = 0 AND c.id = vr.id',
'LEFT JOIN releases_rev rr ON c.type = 1 AND c.id = rr.id',
'LEFT JOIN producers_rev pr ON c.type = 2 AND c.id = pr.id',
) : (),
+ $o{hidden} ? (
+ 'LEFT JOIN vn v ON c.type = 0 AND vr.vid = v.id',
+ 'LEFT JOIN releases r ON c.type = 1 AND rr.rid = r.id',
+ 'LEFT JOIN producers p ON c.type = 2 AND pr.pid = p.id',
+ ) : (),
$o{what} =~ /user/ ? 'JOIN users u ON c.requester = u.id' : (),
);
diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm
index 330701bb..33851ad0 100644
--- a/lib/VNDB/Handler/Misc.pm
+++ b/lib/VNDB/Handler/Misc.pm
@@ -35,6 +35,7 @@ sub history {
my $f = $self->formValidate(
{ name => 'p', required => 0, default => 1, template => 'int' },
{ name => 'm', required => 0, default => 0, enum => [ 0, 1 ] },
+ { name => 'h', required => 0, default => 1, enum => [ -1..1 ] },
);
return 404 if $f->{_err};
@@ -53,26 +54,39 @@ sub history {
page => $f->{p},
results => 50,
auto => $f->{m},
+ hidden => $f->{h},
);
$self->htmlHeader(title => $title);
$self->htmlMainTabs($type, $obj, 'hist') if $type;
- my $baseurl = ($type ? "/$type$id" : '').'/hist';
+ my $u = sub {
+ my($n, $v) = @_;
+ $n ||= '';
+ local $_ = ($type ? "/$type$id" : '').'/hist';
+ $_ .= '?m='.($n eq 'm' ? $v : $f->{m});
+ $_ .= '&h='.($n eq 'h' ? $v : $f->{h});
+ };
div class => 'mainbox';
h1 $title;
p class => 'browseopts';
- a !$f->{m} ? (class => 'optselected') : (), href => "$baseurl?m=0", 'Show automated edits';
- a $f->{m} ? (class => 'optselected') : (), href => "$baseurl?m=1", 'Hide automated edits';
+ a !$f->{m} ? (class => 'optselected') : (), href => $u->(m => 0), 'Show automated edits';
+ a $f->{m} ? (class => 'optselected') : (), href => $u->(m => 1), 'Hide automated edits';
end;
+ if($self->authCan('del')) {
+ p class => 'browseopts';
+ a $f->{h} == 1 ? (class => 'optselected') : (), href => $u->(h => 1), 'Hide deleted items';
+ a $f->{h} == -1 ? (class => 'optselected') : (), href => $u->(h => -1), 'Show deleted items';
+ end;
+ }
end;
$self->htmlBrowse(
items => $list,
options => $f,
nextpage => $np,
- pageurl => "$baseurl?m=$f->{m}",
+ pageurl => $u->(),
class => 'history',
header => [
sub { td colspan => 2, class => 'tc1', 'Rev.' },