Putting 4.2.0 on top of 4.0.17
[usit-rt.git] / lib / RT / CustomFieldValue.pm
CommitLineData
84fb5b46
MKG
1# BEGIN BPS TAGGED BLOCK {{{
2#
3# COPYRIGHT:
4#
403d7b0b 5# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC
84fb5b46
MKG
6# <sales@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., 51 Franklin Street, Fifth Floor, Boston, MA
26# 02110-1301 or visit their web page on the internet at
27# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
28#
29#
30# CONTRIBUTION SUBMISSION POLICY:
31#
32# (The following paragraph is not intended to limit the rights granted
33# to you to modify and distribute this software under the terms of
34# the GNU General Public License and is only of importance to you if
35# you choose to contribute your changes and enhancements to the
36# community by submitting them to Best Practical Solutions, LLC.)
37#
38# By intentionally submitting any modifications, corrections or
39# derivatives to this work, or any other work intended for use with
40# Request Tracker, to Best Practical Solutions, LLC, you confirm that
41# you are the copyright holder for those contributions and you grant
42# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
43# royalty-free, perpetual, license to use, copy, create derivative
44# works based on those contributions, and sublicense and distribute
45# those contributions and any derivatives thereof.
46#
47# END BPS TAGGED BLOCK }}}
48
49use strict;
50use warnings;
51
52package RT::CustomFieldValue;
53
54no warnings qw/redefine/;
55
56
84fb5b46 57use base 'RT::Record';
af59614d 58use RT::CustomField;
84fb5b46
MKG
59
60sub Table {'CustomFieldValues'}
61
62
63=head2 ValidateName
64
65Override the default ValidateName method that stops custom field values
66from being integers.
67
68=cut
69
70sub Create {
71 my $self = shift;
72 my %args = (
73 CustomField => 0,
74 Name => '',
75 Description => '',
76 SortOrder => 0,
77 Category => '',
78 @_,
79 );
80
81 my $cf_id = ref $args{'CustomField'}? $args{'CustomField'}->id: $args{'CustomField'};
82
83 my $cf = RT::CustomField->new( $self->CurrentUser );
84 $cf->Load( $cf_id );
85 unless ( $cf->id ) {
86 return (0, $self->loc("Couldn't load Custom Field #[_1]", $cf_id));
87 }
88 unless ( $cf->CurrentUserHasRight('AdminCustomField') || $cf->CurrentUserHasRight('AdminCustomFieldValues') ) {
89 return (0, $self->loc('Permission Denied'));
90 }
91
92 my ($id, $msg) = $self->SUPER::Create(
93 CustomField => $cf_id,
94 map { $_ => $args{$_} } qw(Name Description SortOrder Category)
95 );
96 return ($id, $msg);
97}
98
99sub ValidateName {
100 return defined $_[1] && length $_[1];
101};
102
84fb5b46
MKG
103sub _Set {
104 my $self = shift;
105
106 my $cf_id = $self->CustomField;
107
108 my $cf = RT::CustomField->new( $self->CurrentUser );
109 $cf->Load( $cf_id );
110
111 unless ( $cf->id ) {
112 return (0, $self->loc("Couldn't load Custom Field #[_1]", $cf_id));
113 }
114
115 unless ($cf->CurrentUserHasRight('AdminCustomField') || $cf->CurrentUserHasRight('AdminCustomFieldValues')) {
116 return (0, $self->loc('Permission Denied'));
117 }
118
119 return $self->SUPER::_Set( @_ );
120}
121
122
123=head2 id
124
125Returns the current value of id.
126(In the database, id is stored as int(11).)
127
128
129=cut
130
131
132=head2 CustomField
133
134Returns the current value of CustomField.
135(In the database, CustomField is stored as int(11).)
136
137
138
139=head2 SetCustomField VALUE
140
141
142Set CustomField to VALUE.
143Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
144(In the database, CustomField will be stored as a int(11).)
145
146
147=cut
148
149
150=head2 CustomFieldObj
151
152Returns the CustomField Object which has the id returned by CustomField
153
154
155=cut
156
157sub CustomFieldObj {
158 my $self = shift;
159 my $CustomField = RT::CustomField->new($self->CurrentUser);
160 $CustomField->Load($self->__Value('CustomField'));
161 return($CustomField);
162}
163
164=head2 Name
165
166Returns the current value of Name.
167(In the database, Name is stored as varchar(200).)
168
169
170
171=head2 SetName VALUE
172
173
174Set Name to VALUE.
175Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
176(In the database, Name will be stored as a varchar(200).)
177
178
179=cut
180
181
182=head2 Description
183
184Returns the current value of Description.
185(In the database, Description is stored as varchar(255).)
186
187
188
189=head2 SetDescription VALUE
190
191
192Set Description to VALUE.
193Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
194(In the database, Description will be stored as a varchar(255).)
195
196
197=cut
198
199
200=head2 SortOrder
201
202Returns the current value of SortOrder.
203(In the database, SortOrder is stored as int(11).)
204
205
206
207=head2 SetSortOrder VALUE
208
209
210Set SortOrder to VALUE.
211Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
212(In the database, SortOrder will be stored as a int(11).)
213
214
215=cut
216
217
218=head2 Category
219
220Returns the current value of Category.
221(In the database, Category is stored as varchar(255).)
222
223
224
225=head2 SetCategory VALUE
226
227
228Set Category to VALUE.
229Returns (1, 'Status message') on success and (0, 'Error Message') on failure.
230(In the database, Category will be stored as a varchar(255).)
231
232
233=cut
234
235
236=head2 Creator
237
238Returns the current value of Creator.
239(In the database, Creator is stored as int(11).)
240
241
242=cut
243
244
245=head2 Created
246
247Returns the current value of Created.
248(In the database, Created is stored as datetime.)
249
250
251=cut
252
253
254=head2 LastUpdatedBy
255
256Returns the current value of LastUpdatedBy.
257(In the database, LastUpdatedBy is stored as int(11).)
258
259
260=cut
261
262
263=head2 LastUpdated
264
265Returns the current value of LastUpdated.
266(In the database, LastUpdated is stored as datetime.)
267
268
269=cut
270
271
272
273sub _CoreAccessible {
274 {
275
276 id =>
277 {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''},
278 CustomField =>
279 {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''},
280 Name =>
281 {read => 1, write => 1, sql_type => 12, length => 200, is_blob => 0, is_numeric => 0, type => 'varchar(200)', default => ''},
282 Description =>
283 {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''},
284 SortOrder =>
285 {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
286 Category =>
287 {read => 1, write => 1, sql_type => 12, length => 255, is_blob => 0, is_numeric => 0, type => 'varchar(255)', default => ''},
288 Creator =>
289 {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
290 Created =>
291 {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''},
292 LastUpdatedBy =>
293 {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'},
294 LastUpdated =>
295 {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''},
296
297 }
298};
299
300
af59614d
MKG
301sub FindDependencies {
302 my $self = shift;
303 my ($walker, $deps) = @_;
304
305 $self->SUPER::FindDependencies($walker, $deps);
306
307 $deps->Add( out => $self->CustomFieldObj );
308}
84fb5b46
MKG
309
310
311RT::Base->_ImportOverlays();
312
3131;