diff options
author | Yorhel <git@yorhel.nl> | 2008-11-15 13:15:26 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2008-11-15 13:15:26 +0100 |
commit | 4db2d7228c600190c5035e324f0d061891480e8b (patch) | |
tree | 98d88e42bc25fcdd47ef6b3ff2ff2aaa1d3ac2b3 | |
parent | 0c18982e5f21fdf5027a4c079bcbaf7750fe0d1b (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.pm | 17 | ||||
-rw-r--r-- | lib/VNDB/Handler/Misc.pm | 22 |
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.' }, |