import of rt 3.0.4
[freeside.git] / rt / lib / RT / Base.pm
1 # BEGIN LICENSE BLOCK
2
3 # Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
4
5 # (Except where explictly superceded by other copyright notices)
6
7 # This work is made available to you under the terms of Version 2 of
8 # the GNU General Public License. A copy of that license should have
9 # been provided with this software, but in any event can be snarfed
10 # from www.gnu.org.
11
12 # This work is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # General Public License for more details.
16
17 # Unless otherwise specified, all modifications, corrections or
18 # extensions to this work which alter its source code become the
19 # property of Best Practical Solutions, LLC when submitted for
20 # inclusion in the work.
21
22
23 # END LICENSE BLOCK
24 package RT::Base;
25 use Carp;
26
27 use strict;
28 use vars qw(@EXPORT);
29
30 @EXPORT=qw(loc CurrentUser);
31
32 =head1 FUNCTIONS
33
34
35
36 # {{{ sub CurrentUser 
37
38 =head2 CurrentUser
39
40 If called with an argument, sets the current user to that user object.
41 This will affect ACL decisions, etc.  
42 Returns the current user
43
44 =cut
45
46 sub CurrentUser {
47     my $self = shift;
48
49     if (@_) {
50         $self->{'user'} = shift;
51     }
52
53     unless ( $self->{'user'} ) {
54         $RT::Logger->err(
55                   "$self was created without a CurrentUser\n" . Carp::cluck() );
56         return (0);
57         die;
58     }
59     return ( $self->{'user'} );
60 }
61
62 # }}}
63
64
65
66 =item loc LOC_STRING
67
68 l is a method which takes a loc string
69 to this object's CurrentUser->LanguageHandle for localization. 
70
71 you call it like this:
72
73     $self->loc("I have [quant,_1,concrete mixer].", 6);
74
75 In english, this would return:
76     I have 6 concrete mixers.
77
78
79 =cut
80
81 sub loc {
82     my $self = shift;
83     unless ($self->CurrentUser) {
84         use Carp;
85         Carp::confess("No currentuser");
86         return ("Critical error:$self has no CurrentUser", $self);
87     }
88     return($self->CurrentUser->loc(@_));
89 }
90
91 eval "require RT::Base_Vendor";
92 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Vendor.pm});
93 eval "require RT::Base_Local";
94 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Base_Local.pm});
95
96
97 1;