diff options
Diffstat (limited to 'rt/lib/RT.pm')
| -rw-r--r-- | rt/lib/RT.pm | 191 | 
1 files changed, 21 insertions, 170 deletions
| diff --git a/rt/lib/RT.pm b/rt/lib/RT.pm index 90c332bc0..1cfc428ee 100644 --- a/rt/lib/RT.pm +++ b/rt/lib/RT.pm @@ -1,82 +1,11 @@ -# BEGIN LICENSE BLOCK -#  -# Copyright (c) 1996-2002 Jesse Vincent <jesse@bestpractical.com> -#  -# (Except where explictly superceded by other copyright notices) -#  -# This work is made available to you under the terms of Version 2 of -# the GNU General Public License. A copy of that license should have -# been provided with this software, but in any event can be snarfed -# from www.gnu.org -#  -# This work is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -# General Public License for more details. -#  -#  -# Unless otherwise specified, all modifications, corrections or -# extensions to this work which alter its source code become the -# property of Best Practical Solutions, LLC when submitted for -# inclusion in the work. -#  -#  -# END LICENSE BLOCK - -  package RT; -use strict; -use RT::I18N; +use RT::Handle;  use RT::CurrentUser; -use RT::System; - -use vars qw($VERSION $System $SystemUser $Nobody $Handle $Logger -        $CORE_CONFIG_FILE -        $SITE_CONFIG_FILE -        $VENDOR_CONFIG_FILE -        $BasePath -        $EtcPath -        $VarPath -        $LocalPath -        $LocalEtcPath -        $LocalLexiconPath -        $LogDir -        $MasonComponentRoot -        $MasonLocalComponentRoot -        $MasonDataDir -        $MasonSessionDir -); - -$VERSION = '3.0.4'; -$CORE_CONFIG_FILE = "/opt/rt3/etc/RT_Config.pm"; -$SITE_CONFIG_FILE = "/opt/rt3/etc/RT_SiteConfig.pm"; - -$BasePath = '/opt/rt3'; - -$EtcPath = '/opt/rt3/etc'; -$VarPath = '/opt/rt3/var'; -$LocalPath = '/opt/rt3/local'; -$LocalEtcPath = '/opt/rt3/local/etc'; -$LocalLexiconPath = '/opt/rt3/local/po'; - -# $MasonComponentRoot is where your rt instance keeps its mason html files - -$MasonComponentRoot = '/opt/rt3/share/html'; - -# $MasonLocalComponentRoot is where your rt instance keeps its site-local -# mason html files. - -$MasonLocalComponentRoot = '/opt/rt3/local/html'; - -# $MasonDataDir Where mason keeps its datafiles - -$MasonDataDir = '/opt/rt3/var/mason_data'; - -# RT needs to put session data (for preserving state between connections -# via the web interface) -$MasonSessionDir = '/opt/rt3/var/session_data'; +use strict; +use vars qw($VERSION $SystemUser $Nobody $Handle $Logger); +$VERSION = '!!RT_VERSION!!';  =head1 NAME @@ -85,45 +14,19 @@ $MasonSessionDir = '/opt/rt3/var/session_data';  =head1 SYNOPSIS  	A fully featured request tracker package +	  =head1 DESCRIPTION  =cut -=item LoadConfig - -Load RT's config file. First, go after the core config file.  -After that, try to load the vendor config. -After that, go after the site config. - -=cut - -sub LoadConfig { -     local *Set = sub { $_[0] = $_[1] unless defined $_[0] };  -    if ( -f "$SITE_CONFIG_FILE" ) { -        require $SITE_CONFIG_FILE -          || die ("Couldn't load RT config file  '$SITE_CONFIG_FILE'\n$@"); -    } -    require $CORE_CONFIG_FILE -      || die ("Couldn't load RT config file '$CORE_CONFIG_FILE'\n$@"); -    RT::I18N->Init; -} - -=item Init - -    Conenct to the database, set up logging. -     -=cut -  sub Init { -    require RT::Handle;      #Get a database connection -        unless ($Handle && $Handle->dbh->ping) { -    $Handle = RT::Handle->new(); -        }  +    $Handle = new RT::Handle($RT::DatabaseType);      $Handle->Connect(); +          #RT's system user is a genuine database user. its id lives here      $SystemUser = new RT::CurrentUser();      $SystemUser->LoadByName('RT_System'); @@ -131,9 +34,7 @@ sub Init {      #RT's "nobody user" is a genuine database user. its ID lives here.      $Nobody = new RT::CurrentUser();      $Nobody->LoadByName('Nobody'); -   -    $System = RT::System->new(); - +        InitLogging();   } @@ -150,81 +51,30 @@ sub InitLogging {      $, = '';      use Log::Dispatch 1.6; +    use Log::Dispatch::File; +    use Log::Dispatch::Screen; -    unless ($RT::Logger) { - -    $RT::Logger=Log::Dispatch->new(); +    $Logger=Log::Dispatch->new();      if ($RT::LogToFile) { +	my $filename = $RT::LogToFileNamed || "$RT::LogDir/rt.log"; -    unless (-d $RT::LogDir && -w $RT::LogDir) { -        # localizing here would be hard when we don't have a current user yet -        # die $self->loc("Log directory [_1] not found or couldn't be written.\n RT can't run.", $RT::LogDir); -        die ("Log directory $RT::LogDir not found or couldn't be written.\n RT can't run."); -    } - -	my $filename; -	if ($RT::LogToFileNamed =~ m![/\\]!) { -	    # looks like an absolute path. -	    $filename = $RT::LogToFileNamed; -	} -	else { -	    $filename = "$RT::LogDir/$RT::LogToFileNamed"; -	} -    require Log::Dispatch::File; - - -	  $RT::Logger->add(Log::Dispatch::File->new +	  $Logger->add(Log::Dispatch::File->new  		       ( name=>'rtlog',  			 min_level=> $RT::LogToFile,  			 filename=> $filename,  			 mode=>'append', -			 callbacks => sub { my %p = @_; -                                my ($package, $filename, $line) = caller(5); -                                return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n"} -              -              -              +            callbacks => sub {my %p=@_; return "[".gmtime(time)."] [".$p{level}."]: $p{message}\n"} +  		       ));      }      if ($RT::LogToScreen) { -	require Log::Dispatch::Screen; -	$RT::Logger->add(Log::Dispatch::Screen->new +	$Logger->add(Log::Dispatch::Screen->new  		     ( name => 'screen',  		       min_level => $RT::LogToScreen, -			 callbacks => sub { my %p = @_; -                                my ($package, $filename, $line) = caller(5); -                                return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n" -				}, -              -		       stderr => 1 -		     )); -    } -    if ($RT::LogToSyslog) { -	require Log::Dispatch::Syslog; -	$RT::Logger->add(Log::Dispatch::Syslog->new -		     ( name => 'syslog', -                       ident => 'RT', -		       min_level => $RT::LogToSyslog, -			 callbacks => sub { my %p = @_; -                                my ($package, $filename, $line) = caller(5); - -				# syswrite() cannot take utf8; turn it off here. -				Encode::_utf8_off($p{message}); - -				if ($p{level} eq 'debug') { - -                                return "$p{message}\n" } -				else { -                                return "$p{message} ($filename:$line)\n"} -				}, -               		       stderr => 1  		     ));      } - -    } -  # {{{ Signal handlers  ## This is the default handling of warnings and die'ings in the code @@ -238,7 +88,6 @@ $SIG{__WARN__} = sub {$RT::Logger->warning($_[0])};  $SIG{__DIE__}  = sub {      unless ($^S || !defined $^S ) { -        $RT::Handle->Rollback();          $RT::Logger->crit("$_[0]");          exit(-1);      } @@ -278,6 +127,10 @@ sub DropSetGIDPermissions {  } +=head1 NAME + +RT - Request Tracker +  =head1 SYNOPSIS  =head1 BUGS @@ -287,6 +140,7 @@ sub DropSetGIDPermissions {  =begin testing +ok (require RT::TestHarness);  ok ($RT::Nobody->Name() eq 'Nobody', "Nobody is nobody");  ok ($RT::Nobody->Name() ne 'root', "Nobody isn't named root"); @@ -298,7 +152,4 @@ ok ($RT::SystemUser->Name() ne 'noname', "The system user isn't noname");  =cut -eval "require RT_Local"; -die $@ if ($@ && $@ !~ qr{^Can't locate RT_Local.pm}); -  1; | 
