1 # BEGIN BPS TAGGED BLOCK {{{
5 # This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC
6 # <jesse@bestpractical.com>
8 # (Except where explicitly superseded by other copyright notices)
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
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.
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/copyleft/gpl.html.
30 # CONTRIBUTION SUBMISSION POLICY:
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.)
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.
47 # END BPS TAGGED BLOCK }}}
50 RT::Handle - RT's database handle
60 ok(require RT::Handle);
73 eval "use DBIx::SearchBuilder::Handle::$RT::DatabaseType;
74 \@ISA= qw(DBIx::SearchBuilder::Handle::$RT::DatabaseType);";
77 die "Unable to load DBIx::SearchBuilder database handle for '$RT::DatabaseType'.".
79 "Perhaps you've picked an invalid database type or spelled it incorrectly.".
85 Connects to RT's database handle.
86 Takes nothing. Calls SUPER::Connect with the needed args
93 if ($RT::DatabaseType eq 'Oracle') {
94 $ENV{'NLS_LANG'} = "AMERICAN_AMERICA.AL32UTF8";
95 $ENV{'NLS_NCHAR'} = "AL32UTF8";
99 $self->SUPER::Connect(
100 User => $RT::DatabaseUser,
101 Password => $RT::DatabasePassword,
104 $self->dbh->{LongReadLen} = $RT::MaxAttachmentSize;
110 Build the DSN for the RT database. doesn't take any parameters, draws all that
111 from the config file.
119 # Unless the database port is a positive integer, we really don't want to pass it.
120 $RT::DatabasePort = undef unless (defined $RT::DatabasePort && $RT::DatabasePort =~ /^(\d+)$/);
121 $RT::DatabaseHost = undef unless (defined $RT::DatabaseHost && $RT::DatabaseHost ne '');
122 $RT::DatabaseName = File::Spec->catfile($RT::VarPath, $RT::DatabaseName)
123 if ($RT::DatabaseType eq 'SQLite') and
124 not File::Spec->file_name_is_absolute($RT::DatabaseName);
127 $self->SUPER::BuildDSN(Host => $RT::DatabaseHost,
128 Database => $RT::DatabaseName,
129 Port => $RT::DatabasePort,
130 Driver => $RT::DatabaseType,
131 RequireSSL => $RT::DatabaseRequireSSL,
132 DisconnectHandleOnDestroy => 1
138 eval "require RT::Handle_Vendor";
139 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Vendor.pm});
140 eval "require RT::Handle_Local";
141 die $@ if ($@ && $@ !~ qr{^Can't locate RT/Handle_Local.pm});