File Coverage

blib/lib/App/bif/show/topic.pm
Criterion Covered Total %
statement 15 35 42.8
branch 0 4 0.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 21 45 46.6


line stmt bran cond sub pod time code
1             package App::bif::show::topic;
2 1     1   4898 use strict;
  1         2  
  1         26  
3 1     1   5 use warnings;
  1         2  
  1         39  
4 1     1   5 use Bif::Mo;
  1         2  
  1         7  
5 1     1   750 use DBIx::ThinSQL qw/bv sum case coalesce concat qv sq/;
  1         27163  
  1         7  
6              
7             our $VERSION = '0.1.5_7';
8             extends 'App::bif::show';
9              
10             sub run {
11 1     1 1 2 my $self = shift;
12 1         5 my $opts = $self->opts;
13 1         8 my $db = $self->db;
14              
15 0           $opts->{id} = $self->uuid2id( $opts->{id} );
16              
17 0           my $info = $self->get_node( $opts->{id}, 'topic' );
18 0           my $now = $self->now;
19 0           my @data;
20              
21             my $ref = $db->xhashref(
22             select => [
23             'SUBSTR(n.uuid,1,8) as uuid',
24             'i.title',
25             'n.ctime',
26             'n.ctimetz',
27             'n.ctimetzhm AS ctimetzhm',
28             "$now - n.ctime AS ctime_age",
29             'n.mtime',
30             'n.mtimetz',
31             'n.mtimetzhm AS mtimetzhm',
32             "$now - n.mtime AS mtime_age",
33             'e1.name as creator',
34             'e2.name as updator',
35             ],
36             from => 'nodes n',
37             inner_join => 'changes c1',
38             on => 'c1.id = n.first_change_id',
39             inner_join => 'entities e1',
40             on => 'e2.id = c2.identity_id',
41             inner_join => 'changes c2',
42             on => 'c2.id = n.last_change_id',
43             inner_join => 'entities e2',
44             on => 'e1.id = c1.identity_id',
45             inner_join => 'topics i',
46             on => 'i.id = n.id',
47             where => { 'n.id' => $info->{id} },
48 0           );
49              
50 0           push( @data, $self->header( ' ID', $info->{id}, $ref->{uuid} ), );
51             push( @data,
52             $self->header( ' Created', $self->ctime_ago($ref) ),
53 0           $self->header( ' Created-By', $ref->{creator} ),
54             );
55             push( @data,
56             $self->header( ' Updated', $self->mtime_ago($ref) ),
57             $self->header( ' Updated-By', $ref->{updator} ),
58 0 0         ) unless $ref->{mtime} == $ref->{ctime};
59              
60             my @refs = $db->xhashrefs(
61             select => [
62             't.id AS id',
63             'p.path',
64             'ts.status',
65             'c.mtime AS mtime',
66             'c.mtimetz AS mtimetz',
67             'c.mtimetzhm AS mtimetzhm',
68             "$now - c.mtime AS mtime_age",
69             ],
70             from => 'topics t2',
71             inner_join => 'topics t',
72             on => 't.link_topic_id = t2.link_topic_id',
73             inner_join => 'nodes n',
74             on => 'n.id = t.id',
75             inner_join => 'nodes p',
76             on => 'p.id = t.project_id',
77             inner_join => 'topic_status ts',
78             on => 'ts.id = t.topic_status_id',
79             inner_join => 'changes c',
80             on => 'c.id = n.first_change_id',
81             where => { 't2.id' => $info->{id} },
82 0           order_by => 'p.path',
83             );
84              
85 0           my %seen;
86 0           my $count = @refs;
87 0           my $i = 1;
88 0           foreach my $ref (@refs) {
89 0           my @ago = $self->mtime_ago($ref);
90              
91 0           push(
92             @data,
93             $self->header(
94             ' Status', "$ref->{status} ($ref->{path}/$ref->{id})",
95             $ago[1]
96             ),
97             );
98             }
99              
100 0           $self->start_pager;
101             print $self->render_table( 'l l',
102 0           [ ucfirst( $info->{tkind} ), $ref->{title} ],
103             \@data, 1 );
104              
105 0           print "\n";
106             $self->dispatch( 'App::bif::log::topic', opts => { id => $opts->{id} } )
107 0 0         if $opts->{log};
108              
109 0           $self->ok( 'Show' . ucfirst( $info->{tkind} ), \@data );
110             }
111              
112             1;
113             __END__