#!/usr/bin/perl
-
-use List::MoreUtils qw(any);
-
use strict;
my $exe_dir;
BEGIN {
use FindBin;
- use lib "$FindBin::Bin/..";
-
- use SL::System::Process;
- $exe_dir = SL::System::Process::exe_dir;
- unshift @INC, "${exe_dir}/modules/override"; # Use our own versions of various modules (e.g. YAML).
- push @INC, "${exe_dir}/modules/fallback"; # Only use our own versions of modules if there's no system version.
- unshift @INC, $exe_dir;
-
- chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n";
+ unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML).
+ push (@INC, $FindBin::Bin . '/..'); # '.' will be removed from @INC soon.
+ push (@INC, $FindBin::Bin . '/../modules/fallback'); # Only use our own versions of modules if there's no system version.
}
use CGI qw( -no_xhtml);
use Daemon::Generic;
use Data::Dumper;
use DateTime;
-use Encode qw();
use English qw(-no_match_vars);
use File::Spec;
+use List::MoreUtils qw(any);
use List::Util qw(first);
-use POSIX qw(setuid setgid);
+use POSIX qw(setlocale setuid setgid);
use SL::Auth;
use SL::DBUpgrade2;
use SL::DB::AuthClient;
use SL::LxOfficeConf;
use SL::Locale;
use SL::Mailer;
+use SL::System::Process;
use SL::System::TaskServer;
use Template;
package main;
- Form::disconnect_standard_dbh;
$::lxdebug = LXDebug->new;
$::locale = Locale->new($::lx_office_conf{system}->{language});
$::form = Form->new;
}
sub cleanup_kivitendo {
- eval { SL::DB::Auth->new->db->dbh->rollback; };
- eval { SL::DB::BackgroundJob->new->db->dbh->rollback; };
+ eval { SL::DB->client->dbh->rollback; };
$::auth->save_session;
$::auth->expire_sessions;
}
sub clean_before_sleeping {
- Form::disconnect_standard_dbh;
SL::DBConnect::Cache->disconnect_all_and_clear;
SL::DB->db_cache->clear;
EVAL_PERL => 0,
ABSOLUTE => 1,
CACHE_SIZE => 0,
+ ENCODING => 'utf8',
});
return debug("Could not create Template instance") unless $template;
subject => $cfg->{email_subject},
content_type => 'text/plain',
charset => 'utf-8',
- message => Encode::decode('utf-8', $body),
+ message => $body,
)->send;
1;
sub gd_preconfig {
my $self = shift;
+ # Initialize character type locale to be UTF-8 instead of C:
+ foreach my $locale (qw(de_DE.UTF-8 en_US.UTF-8)) {
+ last if setlocale('LC_CTYPE', $locale);
+ }
+
SL::LxOfficeConf->read($self->{configfile});
die "Missing section [task_server] in config file" unless $lx_office_conf{task_server};
my $history = $job->run;
+ debug(" Executed job " . $job->package_name .
+ "; result: " . (!$history ? "no return value" : $history->has_failed ? "failed" : "succeeded") .
+ ($history && $history->has_failed ? "; error: " . $history->error_col : ""));
+
notify_on_failure(history => $history) if $history && $history->has_failed;
}
}
}
-sub end_of_request {
- $main::lxdebug->show_backtrace();
- die <<EOF;
-Job called ::end_of_request()!
-
-This usually indicates success but should not be used by background jobs. A
-backtrace has been logged. Please tell the job author to have a look at it.
-EOF
-
-}
-
-chdir $exe_dir;
+$exe_dir = SL::System::Process->exe_dir;
+chdir($exe_dir) || die "Cannot change directory to ${exe_dir}\n";
mkdir SL::System::TaskServer::PID_BASE() if !-d SL::System::TaskServer::PID_BASE();