Putting 4.2.0 on top of 4.0.17
[usit-rt.git] / docs / incremental-export / Record_Local.pm
1 use strict;
2 use warnings;
3
4 package RT::Record;
5 no warnings 'redefine';
6
7 my ($update, $create, $delete);
8 BEGIN {
9     $update = RT::Record->can("__Set");
10     $create = RT::Record->can("Create");
11     $delete = RT::Record->can("Delete");
12 }
13
14
15 sub __Set {
16     my $self = shift;
17     my %args = @_;
18     my $ret = $update->($self, @_);
19
20     my $class = ref($self);
21     return ( $ret->return_value ) unless $RT::IncrementalExport;
22     return ( $ret->return_value ) unless $ret;
23     return ( $ret->return_value ) if $class eq "RT::CachedGroupMember";
24
25     $self->_Handle->SimpleQuery( <<EOQ, $class, $self->__Value("Id") );
26 INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
27                   VALUES (?, ?, 1, NOW())
28        ON DUPLICATE KEY UPDATE
29           AlteredAt = AlteredAt
30 EOQ
31
32     return ( $ret->return_value );
33 }
34
35
36 sub Create {
37     my $self = shift;
38     my ($id, $msg) = $create->($self, @_);
39
40     if ($RT::IncrementalExport and $id and ref($self) ne "RT::CachedGroupMember") {
41         $self->_Handle->SimpleQuery( <<EOQ, ref($self), $id );
42 INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
43                   VALUES (?, ?, 2, NOW())
44 EOQ
45     }
46
47     if (wantarray) {
48         return ( $id, $msg );
49     } else {
50         return ( $id );
51     }
52 }
53
54 sub Delete {
55     my $self = shift;
56     my ($ok, $msg) = $delete->($self,@_);
57
58     if ($RT::IncrementalExport and $ok and ref($self) ne "RT::CachedGroupMember") {
59         $self->_Handle->SimpleQuery( <<EOQ, ref($self), $self->__Value("Id") );
60 INSERT INTO IncrementalRecords (ObjectType, ObjectId, UpdateType, AlteredAt)
61                   VALUES (?, ?, 3, NOW())
62        ON DUPLICATE KEY UPDATE
63           UpdateType = UpdateType + 2
64 EOQ
65     }
66
67     if (wantarray) {
68         return ( $ok, $msg );
69     } else {
70         return ( $ok );
71     }
72 }
73
74 1;