AUTH => $::auth,
FLASH => $::form->{FLASH},
FORM => $::form,
+ INSTANCE_CONF => $::instance_conf,
LOCALE => $::locale,
LXCONFIG => \%::lx_office_conf,
LXDEBUG => $::lxdebug,
use SL::Common;
use SL::Form;
use SL::Helper::DateTime;
+use SL::InstanceConfiguration;
use SL::Template::Plugin::HTMLFixes;
# Trailing new line is added so that Perl will not add the line
$::locale = Locale->new($::lx_office_conf{system}->{language});
$::form = Form->new;
%::called_subs = ();
+ $::instance_conf = SL::InstanceConfiguration->new;
my $session_result = $::auth->restore_session;
$::auth->create_or_refresh_session;
delete $::form->{password};
if ($action) {
+ $::instance_conf->init;
+
map { $::form->{$_} = $::myconfig{$_} } qw(stylesheet charset)
unless $action eq 'save' && $::form->{type} eq 'preferences';
$additional_params->{"conf_parts_image_css"} = $::lx_office_conf{features}->{parts_image_css};
$additional_params->{"conf_parts_listing_images"} = $::lx_office_conf{features}->{parts_listing_images};
$additional_params->{"conf_parts_show_image"} = $::lx_office_conf{features}->{parts_show_image};
+ $additional_params->{"INSTANCE_CONF"} = $::instance_conf;
if (%main::debug_options) {
map { $additional_params->{'DEBUG_' . uc($_)} = $main::debug_options{$_} } keys %main::debug_options;
--- /dev/null
+package SL::InstanceConfiguration;
+
+use strict;
+
+use SL::DBUtils;
+
+sub new {
+ my ($class) = @_;
+
+ return bless {}, $class;
+}
+
+sub init {
+ my ($self) = @_;
+
+ $self->{data} = selectfirst_hashref_query($::form, $::form->get_standard_dbh, qq|SELECT * FROM defaults|);
+
+ my $curr = $self->{data}->{curr} || '';
+ $curr =~ s/\s+//g;
+ $self->{currencies} = [ split m/:/, $curr ];
+
+ return $self;
+}
+
+sub get_default_currency {
+ my ($self) = @_;
+
+ return ($self->get_currencies)[0];
+}
+
+sub get_currencies {
+ my ($self) = @_;
+
+ return $self->{currencies} ? @{ $self->{currencies} } : ();
+}
+
+1;
+
+__END__
+
+=pod
+
+=encoding utf8
+
+=head1 NAME
+
+SL::InstanceConfiguration - Provide instance-specific configuration data
+
+=head1 SYNOPSIS
+
+Lx-Office has two configuration levels: installation specific
+(provided by the global variable C<%::lxoffice_conf>) and instance
+specific. The latter is provided by a global instance of this class,
+C<$::instance_conf>.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item C<new>
+
+Creates a new instance. Does not read the configuration.
+
+=item C<init>
+
+Reads the configuration from the database. Returns C<$self>.
+
+=item C<get_currencies>
+
+Returns an array of configured currencies.
+
+=item C<get_default_currency>
+
+Returns the default currency or undef if no currency has been
+configured.
+
+=back
+
+=head1 BUGS
+
+Updates to the I<defaults> table require that the instance
+configuration is re-read. This has not been implemented yet.
+
+=head1 AUTHOR
+
+Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
+
+=cut
use SL::Auth;
use SL::Form;
use SL::Helper::DateTime;
+use SL::InstanceConfiguration;
use SL::Locale;
use SL::LXDebug;
use Data::Dumper;
$::cgi = CGI->new qw();
$::form = Form->new;
$::auth = SL::Auth->new;
+ $::instance_conf = SL::InstanceConfiguration->new;
die 'cannot reach auth db' unless $::auth->session_tables_present;
die "cannot find locale for user $login" unless $::locale = Locale->new($::myconfig{countrycode});
+ $::instance_conf->init;
return "logged in as $login";
}