THIS fixes ticketing main layout problems. whew! RT#6640
[freeside.git] / rt / lib / RT.pm.in
index f0e56e8..77b9d4c 100644 (file)
@@ -180,6 +180,8 @@ L<preloads classes /InitClasses> and L<set up logging /InitLogging>.
 
 sub Init {
 
+    my @arg = @_;
+
     CheckPerlRequirements();
 
     InitPluginPaths();
@@ -188,7 +190,7 @@ sub Init {
     ConnectToDatabase();
     InitSystemObjects();
     InitClasses();
-    InitLogging(); 
+    InitLogging(@arg); 
     InitPlugins();
     RT->Config->PostLoadCheck;
 
@@ -215,6 +217,8 @@ Create the Logger object and set up signal handlers.
 
 sub InitLogging {
 
+    my %arg = @_;
+
     # We have to set the record separator ($, man perlvar)
     # or Log::Dispatch starts getting
     # really pissy, as some other module we use unsets it.
@@ -350,7 +354,12 @@ sub InitLogging {
                          ));
         }
     }
+    InitSignalHandlers(%arg);
+}
 
+sub InitSignalHandlers {
+
+    my %arg = @_;
 
 # Signal handlers
 ## This is the default handling of warnings and die'ings in the code
@@ -358,28 +367,32 @@ sub InitLogging {
 ## Mason).  It will log all problems through the standard logging
 ## mechanism (see above).
 
-    $SIG{__WARN__} = sub {
-        # The 'wide character' warnings has to be silenced for now, at least
-        # until HTML::Mason offers a sane way to process both raw output and
-        # unicode strings.
-        # use 'goto &foo' syntax to hide ANON sub from stack
-        if( index($_[0], 'Wide character in ') != 0 ) {
-            unshift @_, $RT::Logger, qw(level warning message);
-            goto &Log::Dispatch::log;
-        }
-    };
+    unless ( $arg{'NoSignalHandlers'} ) {
 
-#When we call die, trap it and log->crit with the value of the die.
+        $SIG{__WARN__} = sub {
+            # The 'wide character' warnings has to be silenced for now, at least
+            # until HTML::Mason offers a sane way to process both raw output and
+            # unicode strings.
+            # use 'goto &foo' syntax to hide ANON sub from stack
+            if( index($_[0], 'Wide character in ') != 0 ) {
+                unshift @_, $RT::Logger, qw(level warning message);
+                goto &Log::Dispatch::log;
+            }
+        };
 
-    $SIG{__DIE__}  = sub {
-        # if we are not in eval and perl is not parsing code
-        # then rollback transactions and log RT error
-        unless ($^S || !defined $^S ) {
-            $RT::Handle->Rollback(1) if $RT::Handle;
-            $RT::Logger->crit("$_[0]") if $RT::Logger;
-        }
-        die $_[0];
-    };
+        #When we call die, trap it and log->crit with the value of the die.
+
+        $SIG{__DIE__}  = sub {
+            # if we are not in eval and perl is not parsing code
+            # then rollback transactions and log RT error
+            unless ($^S || !defined $^S ) {
+                $RT::Handle->Rollback(1) if $RT::Handle;
+                $RT::Logger->crit("$_[0]") if $RT::Logger;
+            }
+            die $_[0];
+        };
+
+    }
 }
 
 
@@ -422,6 +435,8 @@ Load all modules that define base classes.
 =cut
 
 sub InitClasses {
+    shift if @_%2; # so we can call it as a function or method
+    my %args = (@_);
     require RT::Tickets;
     require RT::Transactions;
     require RT::Attachments;
@@ -466,6 +481,25 @@ sub InitClasses {
         RT::ObjectCustomFieldValue
         RT::Attribute
     );
+
+    if ( $args{'Heavy'} ) {
+        # load scrips' modules
+        my $scrips = RT::Scrips->new($RT::SystemUser);
+        $scrips->Limit( FIELD => 'Stage', OPERATOR => '!=', VALUE => 'Disabled' );
+        while ( my $scrip = $scrips->Next ) {
+            $scrip->LoadModules;
+        }
+
+       foreach my $class ( grep $_, RT->Config->Get('CustomFieldValuesSources') ) {
+            local $@;
+            eval "require $class; 1" or $RT::Logger->error(
+                "Class '$class' is listed in CustomFieldValuesSources option"
+                ." in the config, but we failed to load it:\n$@\n"
+            );
+        }
+
+        RT::I18N->LoadLexicons;
+    }
 }
 
 =head2 InitSystemObjects