import rt 3.4.4
[freeside.git] / rt / lib / RT / ObjectCustomFieldValue_Overlay.pm
1 # BEGIN BPS TAGGED BLOCK {{{
2
3 # COPYRIGHT:
4 #  
5 # This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC 
6 #                                          <jesse@bestpractical.com>
7
8 # (Except where explicitly superseded by other copyright notices)
9
10
11 # LICENSE:
12
13 # This work is made available to you under the terms of Version 2 of
14 # the GNU General Public License. A copy of that license should have
15 # been provided with this software, but in any event can be snarfed
16 # from www.gnu.org.
17
18 # This work is distributed in the hope that it will be useful, but
19 # WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21 # General Public License for more details.
22
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
27
28 # CONTRIBUTION SUBMISSION POLICY:
29
30 # (The following paragraph is not intended to limit the rights granted
31 # to you to modify and distribute this software under the terms of
32 # the GNU General Public License and is only of importance to you if
33 # you choose to contribute your changes and enhancements to the
34 # community by submitting them to Best Practical Solutions, LLC.)
35
36 # By intentionally submitting any modifications, corrections or
37 # derivatives to this work, or any other work intended for use with
38 # Request Tracker, to Best Practical Solutions, LLC, you confirm that
39 # you are the copyright holder for those contributions and you grant
40 # Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
41 # royalty-free, perpetual, license to use, copy, create derivative
42 # works based on those contributions, and sublicense and distribute
43 # those contributions and any derivatives thereof.
44
45 # END BPS TAGGED BLOCK }}}
46 package RT::ObjectCustomFieldValue;
47
48 use strict;
49 no warnings qw(redefine);
50
51
52 sub Create {
53     my $self = shift;
54     my %args = (
55                 CustomField => '0',
56                 ObjectType => '',
57                 ObjectId => '0',
58                 Disabled => '0',
59                 Content => '',
60                 LargeContent => '',
61                 ContentType => '',
62                 ContentEncoding => '',
63
64           @_);
65
66    
67     if( $args{'Content'} && length($args{'Content'}) > 255 && !$args{'LargeContent'} ) {
68
69         $args{'LargeContent'} = $args{'Content'};
70         $args{'Content'} = '';
71         $args{'ContentType'} = 'text/plain';
72     }
73
74     ( $args{'ContentEncoding'}, $args{'LargeContent'} ) =
75       $self->_EncodeLOB( $args{'LargeContent'}, $args{'ContentType'} )
76       if ( $args{'LargeContent'} );
77
78     $self->SUPER::Create(
79                          CustomField => $args{'CustomField'},
80                          ObjectType => $args{'ObjectType'},
81                          ObjectId => $args{'ObjectId'},
82                          Disabled => $args{'Disabled'},
83                          Content => $args{'Content'},
84                          LargeContent => $args{'LargeContent'},
85                          ContentType => $args{'ContentType'},
86                          ContentEncoding => $args{'ContentEncoding'},
87 );
88
89
90
91 }
92
93
94 sub LargeContent {
95     my $self = shift;
96     $self->_DecodeLOB( $self->ContentType, $self->ContentEncoding,
97         $self->_Value( 'LargeContent', decode_utf8 => 0 ) );
98
99 }
100
101
102
103
104 =head2 LoadByTicketContentAndCustomField { Ticket => TICKET, CustomField => CUSTOMFIELD, Content => CONTENT }
105
106 Loads a custom field value by Ticket, Content and which CustomField it's tied to
107
108 =cut
109
110
111 sub LoadByTicketContentAndCustomField {
112     my $self = shift;
113     my %args = ( Ticket => undef,
114                 CustomField => undef,
115                 Content => undef,
116                 @_
117                 );
118
119
120     $self->LoadByCols( Content => $args{'Content'},
121                          CustomField => $args{'CustomField'},
122                          ObjectType => 'RT::Ticket',
123                          ObjectId => $args{'Ticket'},
124                          Disabled => 0
125                          );
126
127     
128 }
129
130 sub LoadByObjectContentAndCustomField {
131     my $self = shift;
132     my %args = ( Object => undef,
133                 CustomField => undef,
134                 Content => undef,
135                 @_
136                 );
137
138     my $obj = $args{'Object'} or return;
139
140     $self->LoadByCols( Content => $args{'Content'},
141                          CustomField => $args{'CustomField'},
142                          ObjectType => ref($obj),
143                          ObjectId => $obj->Id,
144                          Disabled => 0
145                          );
146
147 }
148
149
150 =head2 Content
151
152 Return this custom field's content. If there's no "regular"
153 content, try "LargeContent"
154
155 =cut
156
157
158 sub Content {
159     my $self = shift;
160     my $content = $self->SUPER::Content;
161     if (!$content && $self->ContentType eq 'text/plain') {
162        return $self->LargeContent(); 
163     } else {
164         return $content;
165     }
166 }
167
168
169 sub Delete {
170     my $self = shift;
171     $self->SetDisabled(1);
172 }
173
174 1;