1 %# REST/1.0/Forms/ticket/history
10 my $ticket = new RT::Ticket $session{CurrentUser};
11 my ($c, $o, $k, $e) = ("", [], {}, "");
14 unless ($ticket->Id) {
15 return [ "# Ticket $id does not exist.", [], {}, 1 ];
18 my $trans = $ticket->Transactions();
19 my $total = $trans->Count();
22 my @arglist = split('/', $args);
25 if ($arglist[0] eq 'type') {
27 } elsif ($arglist[0] eq 'id') {
34 # Create, Set, Status, Correspond, Comment, Give, Steal, Take, Told
35 # CustomField, AddLink, DeleteLink, AddWatcher, DelWatcher
36 if ($args =~ /^links?$/) {
37 $trans->Limit(FIELD => 'Type', OPERATOR => 'LIKE', VALUE => '%Link');
39 elsif ($args =~ /^watchers?$/) {
40 $trans->Limit(FIELD => 'Type', OPERATOR => 'LIKE', VALUE => '%Watcher');
43 $trans->Limit(FIELD => 'Type', OPERATOR => '=', VALUE => $type);
46 $trans->Limit(FIELD => 'Id', OPERATOR => '=', VALUE => $tid);
51 my $t = new RT::Transaction $session{CurrentUser};
54 push @data, [ id => $t->Id ];
55 push @data, [ EffectiveTicket => $t->EffectiveTicket ]
56 if (!%$fields || exists $fields->{lc 'EffectiveTicket'});
57 push @data, [ Ticket => $t->Ticket ]
58 if (!%$fields || exists $fields->{lc 'Ticket'});
59 push @data, [ TimeTaken => $t->TimeTaken ]
60 if (!%$fields || exists $fields->{lc 'TimeTaken'});
61 push @data, [ Type => $t->Type ]
62 if (!%$fields || exists $fields->{lc 'Type'});
63 push @data, [ Field => $t->Field ]
64 if (!%$fields || exists $fields->{lc 'Field'});
65 push @data, [ OldValue => $t->OldValue ]
66 if (!%$fields || exists $fields->{lc 'OldValue'});
67 push @data, [ NewValue => $t->NewValue ]
68 if (!%$fields || exists $fields->{lc 'NewValue'});
69 push @data, [ Data => $t->Data ]
70 if (!%$fields || exists $fields->{lc 'Data'});
71 push @data, [ Description => $t->Description ]
72 if (!%$fields || exists $fields->{lc 'Description'});
73 push @data, [ Content => $t->Content ]
74 if (!%$fields || exists $fields->{lc 'Content'});
77 if (!%$fields || exists $fields->{lc 'Content'}) {
78 my $creator = new RT::User $session{CurrentUser};
79 $creator->Load($t->Creator);
80 push @data, [ Creator => $creator->Name ];
82 push @data, [ Created => $t->Created ]
83 if (!%$fields || exists $fields->{lc 'Created'});
85 if (!%$fields || exists $fields->{lc 'Attachments'}) {
87 my $attachments = $t->Attachments;
88 while (my $a = $attachments->Next) {
89 my $size = length($a->Content);
90 if ($size > 1024) { $size = int($size/102.4)/10 . "k" }
92 $attachlist .= "\n" . $a->Id.": ".($a->Filename || "untitled")." (".$size.")";
95 push @data, [Attachments => $attachlist];
98 my %k = map {@$_} @data;
99 $o = [ map {$_->[0]} @data ];
105 $format = "l" if (%$fields);
107 while (my $t = $trans->Next) {
110 if ($format eq "l") {
111 $tids .= "," if $tids;
115 $k->{$tid} = $t->Description;
119 if ($format eq "l") {
121 push @tid, "ticket/$id/history/id/$tids";
123 foreach my $key (keys %$fields) {
124 $fieldstring .= "," if $fieldstring;
125 $fieldstring .= $key;
127 my ($content, $forms);
129 $m->subexec("$RT::WebPath/REST/1.0/show",
132 fields => $fieldstring);
133 return [ $c, $o, $k, $e ];
138 my $sub = $trans->Count();
139 $c = "# $sub/$total ($args/total)";
142 return [ $c, $o, $k, $e ];