]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Bug.pm
add Debbugs::Bug::Tag, list of tags
[debbugs.git] / Debbugs / Bug.pm
index bff73c7aaaabfb1affd033836655b3023b75439d..411e9babc80e9dca812b4cfddb785b34ffd85734 100644 (file)
@@ -72,6 +72,31 @@ sub _build_status {
     return $status;
 }
 
+has log => (is => 'bare', isa => 'Debbugs::Log',
+            lazy => 1,
+            builder => '_build_log',
+            handles => {_read_record => 'read_record',
+                        log_records => 'read_all_records',
+                       },
+           );
+
+sub _build_log {
+    my $self = shift;
+    return Debbugs::Log->new(bug_num => $self->id,
+                             inner_file => 1,
+                            );
+}
+
+has spam => (is => 'bare', isa => 'Debbugs::Log::Spam',
+             lazy => 1,
+             builder => '_build_spam',
+             handles => ['is_spam'],
+            );
+sub _build_spam {
+    my $self = shift;
+    return Debbugs::Log::Spam->new(bug_num => $self->id);
+}
+
 has 'package_collection' => (is => 'ro',
                             isa => 'Debbugs::Collection::Package',
                             builder => '_build_package_collection',
@@ -421,13 +446,18 @@ sub _build_archived {
     return $_[0]->location eq 'archived'?1:0;
 }
 
-has tags => (is => 'ro', isa => 'Object',
+has tags => (is => 'ro',
+             isa => 'Debbugs::Bug::Tag',
             clearer => '_clear_tags',
             builder => '_build_tags',
             lazy => 1,
            );
 sub _build_tags {
-    return Debbugs::Bug::Tag->new($_[0]->status->{keywords});
+    my $self = shift;
+    return Debbugs::Bug::Tag->new(keywords => $self->status->{keywords},
+                                  bug => $self,
+                                  users => $self->bug_collection->users,
+                                 );
 }
 
 =item buggy
@@ -652,11 +682,45 @@ sub matches {
     return 0;
 }
 
+sub email {
+    my $self = shift;
+    return $self->id.'@'.$config{email_domain};
+}
+
+sub subscribe_email {
+    my $self = shift;
+    return $self->id.'-subscribe@'.$config{email_domain};
+}
+
 sub url {
     my $self = shift;
     return $config{web_domain}.'/'.$self->id;
 }
 
+sub mbox_url {
+    my $self = shift;
+    return $config{web_domain}.'/mbox:'.$self->id;
+}
+
+sub mbox_status_url {
+    my $self = shift;
+    return $self->mbox_url.'?mboxstatus=yes';
+}
+
+sub mbox_maint_url {
+    my $self = shift;
+    $self->mbox_url.'?mboxmaint=yes';
+}
+
+sub version_url {
+    my $self = shift;
+    return version_url(package => $self->package,
+                       found => [$self->found->members],
+                       fixed => [$self->fixed->members],
+                       @_,
+                      );
+}
+
 sub related_packages_and_versions {
     my $self = shift;
     my @packages;