]> git.koha-community.org Git - koha.git/blob - Koha/Config.pm
Bug 11921: Restore memcached infos to koha-conf - Koha::Config
[koha.git] / Koha / Config.pm
1 package Koha::Config;
2
3 use Modern::Perl;
4 use XML::Simple;
5
6 # Default config file, if none is specified
7 use constant CONFIG_FNAME => "/etc/koha/koha-conf.xml";
8
9 # path to config file set by installer
10 # __KOHA_CONF_DIR__ is set by rewrite-confg.PL
11 # when Koha is installed in 'standard' or 'single'
12 # mode.  If Koha was installed in 'dev' mode,
13 # __KOHA_CONF_DIR__ is *not* rewritten; instead
14 # developers should set the KOHA_CONF environment variable
15 my $INSTALLED_CONFIG_FNAME = '__KOHA_CONF_DIR__/koha-conf.xml';
16
17 # Should not be called outside of C4::Context or Koha::Cache
18 # use C4::Context->config instead
19 sub read_from_file {
20     my ( $class, $file ) = @_;
21     return XMLin($file, keyattr => ['id'], forcearray => ['listen', 'server', 'serverinfo'], suppressempty => '');
22 }
23
24 # Koha's main configuration file koha-conf.xml
25 # is searched for according to this priority list:
26 #
27 # 1. Path supplied via use C4::Context '/path/to/koha-conf.xml'
28 # 2. Path supplied in KOHA_CONF environment variable.
29 # 3. Path supplied in INSTALLED_CONFIG_FNAME, as long
30 #    as value has changed from its default of
31 #    '__KOHA_CONF_DIR__/koha-conf.xml', as happens
32 #    when Koha is installed in 'standard' or 'single'
33 #    mode.
34 # 4. Path supplied in CONFIG_FNAME.
35 #
36 # The first entry that refers to a readable file is used.
37
38 sub guess_koha_conf {
39
40     # If the $KOHA_CONF environment variable is set, use
41     # that. Otherwise, use the built-in default.
42     my $conf_fname;
43     if ( exists $ENV{"KOHA_CONF"} and $ENV{'KOHA_CONF'} and -s $ENV{"KOHA_CONF"} ) {
44         $conf_fname = $ENV{"KOHA_CONF"};
45     } elsif ( $INSTALLED_CONFIG_FNAME !~ /__KOHA_CONF_DIR/ and -s $INSTALLED_CONFIG_FNAME ) {
46         # NOTE: be careful -- don't change __KOHA_CONF_DIR in the above
47         # regex to anything else -- don't want installer to rewrite it
48         $conf_fname = $INSTALLED_CONFIG_FNAME;
49     } elsif ( -s CONFIG_FNAME ) {
50         $conf_fname = CONFIG_FNAME;
51     }
52     return $conf_fname;
53 }
54
55 1;