1# BEGIN BPS TAGGED BLOCK {{{ 2# 3# COPYRIGHT: 4# 5# This software is Copyright (c) 1996-2021 Best Practical Solutions, LLC 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::ObjectScrip; 53use base 'RT::Record::AddAndSort'; 54 55use RT::Scrip; 56use RT::ObjectScrips; 57use Scalar::Util 'blessed'; 58 59=head1 NAME 60 61RT::ObjectScrip - record representing addition of a scrip to a queue 62 63=head1 DESCRIPTION 64 65This record is created if you want to add a scrip to a queue or globally. 66 67Inherits methods from L<RT::Record::AddAndSort>. 68 69For most operations it's better to use methods in L<RT::Scrip>. 70 71=head1 METHODS 72 73=head2 Table 74 75Returns table name for records of this class. 76 77=cut 78 79sub Table {'ObjectScrips'} 80 81=head2 ObjectCollectionClass 82 83Returns class name of collection of records scrips can be added to. 84Now it's only L<RT::Queue>, so 'RT::Queues' is returned. 85 86=cut 87 88sub ObjectCollectionClass {'RT::Queues'} 89 90=head2 ScripObj 91 92Returns the Scrip Object which has the id returned by Scrip 93 94=cut 95 96sub ScripObj { 97 my $self = shift; 98 my $id = shift || $self->Scrip; 99 my $obj = RT::Scrip->new( $self->CurrentUser ); 100 $obj->Load( $id ); 101 return $obj; 102} 103 104=head2 Neighbors 105 106Stage splits scrips into neighborhoods. See L<RT::Record::AddAndSort/Neighbors and Siblings>. 107 108=cut 109 110sub Neighbors { 111 my $self = shift; 112 my %args = @_; 113 114 my $res = $self->CollectionClass->new( $self->CurrentUser ); 115 $res->Limit( FIELD => 'Stage', VALUE => $args{'Stage'} || $self->Stage ); 116 return $res; 117} 118 119=head2 id 120 121Returns the current value of id. 122(In the database, id is stored as int(11).) 123 124 125=cut 126 127 128=head2 Scrip 129 130Returns the current value of Scrip. 131(In the database, Scrip is stored as int(11).) 132 133=head2 FriendlyStage 134 135Returns a localized human-readable version of the stage. 136 137=cut 138 139sub FriendlyStage { 140 my $self = shift; 141 my $scrip_class = blessed($self->ScripObj); 142 return $scrip_class->FriendlyStage($self->Stage); 143} 144 145=head2 SetScrip VALUE 146 147 148Set Scrip to VALUE. 149Returns (1, 'Status message') on success and (0, 'Error Message') on failure. 150(In the database, Scrip will be stored as a int(11).) 151 152=head2 Stage 153 154Returns the current value of Stage. 155(In the database, Stage is stored as varchar(32).) 156 157=head2 SetStage VALUE 158 159Set Stage to VALUE. 160Returns (1, 'Status message') on success and (0, 'Error Message') on failure. 161(In the database, Stage will be stored as a varchar(32).) 162 163=head2 ObjectId 164 165Returns the current value of ObjectId. 166(In the database, ObjectId is stored as int(11).) 167 168 169 170=head2 SetObjectId VALUE 171 172 173Set ObjectId to VALUE. 174Returns (1, 'Status message') on success and (0, 'Error Message') on failure. 175(In the database, ObjectId will be stored as a int(11).) 176 177 178=cut 179 180 181=head2 SortOrder 182 183Returns the current value of SortOrder. 184(In the database, SortOrder is stored as int(11).) 185 186 187 188=head2 SetSortOrder VALUE 189 190 191Set SortOrder to VALUE. 192Returns (1, 'Status message') on success and (0, 'Error Message') on failure. 193(In the database, SortOrder will be stored as a int(11).) 194 195 196=cut 197 198 199=head2 Creator 200 201Returns the current value of Creator. 202(In the database, Creator is stored as int(11).) 203 204 205=cut 206 207 208=head2 Created 209 210Returns the current value of Created. 211(In the database, Created is stored as datetime.) 212 213 214=cut 215 216 217=head2 LastUpdatedBy 218 219Returns the current value of LastUpdatedBy. 220(In the database, LastUpdatedBy is stored as int(11).) 221 222 223=cut 224 225 226=head2 LastUpdated 227 228Returns the current value of LastUpdated. 229(In the database, LastUpdated is stored as datetime.) 230 231 232=cut 233 234 235 236sub _CoreAccessible { 237 { 238 239 id => 240 {read => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, 241 Scrip => 242 {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, 243 Stage => 244 {read => 1, write => 1, sql_type => 12, length => 32, is_blob => 0, is_numeric => 0, type => 'varchar(32)', default => 'TransactionCreate'}, 245 ObjectId => 246 {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => ''}, 247 SortOrder => 248 {read => 1, write => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, 249 Creator => 250 {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, 251 Created => 252 {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, 253 LastUpdatedBy => 254 {read => 1, auto => 1, sql_type => 4, length => 11, is_blob => 0, is_numeric => 1, type => 'int(11)', default => '0'}, 255 LastUpdated => 256 {read => 1, auto => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''}, 257 258 } 259}; 260 261sub FindDependencies { 262 my $self = shift; 263 my ($walker, $deps) = @_; 264 265 $self->SUPER::FindDependencies($walker, $deps); 266 267 $deps->Add( out => $self->ScripObj ); 268 if ($self->ObjectId) { 269 my $obj = RT::Queue->new( $self->CurrentUser ); 270 $obj->Load( $self->ObjectId ); 271 $deps->Add( out => $obj ); 272 } 273} 274 275sub Serialize { 276 my $self = shift; 277 my %args = (@_); 278 my %store = $self->SUPER::Serialize(@_); 279 280 if ($store{ObjectId}) { 281 my $obj = RT::Queue->new( RT->SystemUser ); 282 $obj->Load( $store{ObjectId} ); 283 $store{ObjectId} = \($obj->UID); 284 } 285 return %store; 286} 287 288RT::Base->_ImportOverlays(); 289 2901; 291