]>
Commit | Line | Data |
---|---|---|
988d8721 TC |
1 | package BSE::Report; |
2 | use strict; | |
3 | ||
cb7fd78d TC |
4 | our $VERSION = "1.000"; |
5 | ||
988d8721 TC |
6 | use base 'DevHelp::Report'; |
7 | ||
8 | sub new { | |
9 | my ($class, $req_or_cfg) = @_; | |
10 | ||
11 | my ($cfg, $req); | |
12 | if ($req_or_cfg->isa('BSE::Cfg')) { | |
13 | $cfg = $req_or_cfg; | |
14 | } | |
15 | else { | |
16 | $cfg = $req_or_cfg->cfg; | |
17 | $req = $req_or_cfg; | |
18 | } | |
19 | ||
20 | my $work = $class->SUPER::new($cfg, 'reports'); | |
21 | $req and $work->{req} = $req; | |
22 | ||
23 | return $work; | |
24 | } | |
25 | ||
26 | sub list_reports { | |
27 | my ($self) = @_; | |
28 | ||
29 | if ($self->{req}) { | |
30 | my %entries = $self->SUPER::list_reports; | |
31 | my @delete; | |
32 | for my $key (keys %entries) { | |
33 | $self->report_accessible($key) or push @delete, $key; | |
34 | } | |
35 | delete @entries{@delete}; | |
36 | return %entries; | |
37 | } | |
38 | else { | |
39 | return; | |
40 | } | |
41 | } | |
42 | ||
43 | sub report_accessible { | |
44 | my ($self, $report) = @_; | |
45 | ||
46 | $self->{req} or return; | |
47 | ||
48 | my $rights = $self->report_entry($report, 'bse_rights'); | |
49 | defined $rights or $rights = ''; | |
50 | $rights =~ tr/ //d; | |
51 | $rights eq '' and return 1; # no controls | |
52 | for my $set (split /\|/, $rights) { | |
53 | grep $self->{req}->user_can($_, -1), split /[,;]/, $set | |
54 | and return 1; | |
55 | } | |
56 | ||
57 | return; | |
58 | } | |
59 | ||
9615cff6 TC |
60 | sub url_show_args { |
61 | s_show => 1 | |
62 | } | |
63 | ||
988d8721 | 64 | 1; |