Patch to avoid error when transactions refer to URIs of *purged* tickets

Situation:

if you use the purgedead script to purge deleted tickets entirely from the
database, links and all other stuff related to the ticket are purged also.

BUT:
if some other ticket refers to the purged ticket - even if the link has
been deleted - showing history fails a hard error page, which is resolved
by my attached patch.

EXPLANATION:

the recorded transactions for adding or deleting links to the purged
tickets are not purged (and should not).

When trying to display the Description of the transaction, RT tries to load
the Object, which does not reside in database any more, failing with the
error below. The patch avoids asking the object for its URI, when it is not
found in the database.

error: Can’t call method “Id” on an undefined value at
/export/rt3/lib/RT/URI/fsck_com_rt.pm line 234.

context: …

229: =cut
230:
231: sub AsString {
232: my $self = shift;
233: if ($self->IsLocal) {
234: return $self->loc(“ticket #[_1]”, $self->Object->Id);
235:
236: }
237: else {

code stack:
/export/rt3/lib/RT/URI/fsck_com_rt.pm:233
/export/rt3/lib/RT/Transaction_Overlay.pm:655
/export/rt3/local/html/Ticket/Elements/ShowTransaction:28
/export/rt3/local/html/Ticket/Elements/ShowHistory:79
/export/rt3/local/html/Ticket/Display.html:37
/export/rt3/share/html/autohandler:163

rt_uri.patch (688 Bytes)