diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-01-31 09:38:39 -0500 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-01-31 09:38:39 -0500 |
commit | 74bf2bf672b147888a42fafd7ae5d86c600cf3a8 (patch) | |
tree | 42df9afae8d4a55ec3a9166ba56fa0e634c234ce | |
parent | 37a769205387c0f9c41f60a675e963678d9a966f (diff) |
Enable configuration files in /etc/laconica/
Enable storing config files in /etc/laconica/, which makes it much
easier to have a single installation with multiple mublogs supported.
-rw-r--r-- | README | 9 | ||||
-rw-r--r-- | lib/common.php | 32 |
2 files changed, 38 insertions, 3 deletions
@@ -745,6 +745,15 @@ edit any other file in the directory, like lib/common.php (where most of the defaults are defined), you will lose your configuration options in any upgrade, and you will wish that you had been more careful. +Starting with version 0.7.1, you can put config files in the +/etc/laconica/ directory on your server, if it exists. Config files +will be included in this order: + +* /etc/laconica/laconica.php - server-wide config +* /etc/laconica/<servername>.php - for a virtual host +* /etc/laconica/<servername>_<pathname>.php - for a path +* INSTALLDIR/config.php - for a particular implementation + Almost all configuration options are made through a two-dimensional associative array, cleverly named $config. A typical configuration line will be: diff --git a/lib/common.php b/lib/common.php index a2f9b9bfe..825ba0ff7 100644 --- a/lib/common.php +++ b/lib/common.php @@ -50,14 +50,23 @@ require_once('DB/DataObject/Cast.php'); # for dates require_once(INSTALLDIR.'/lib/language.php'); +// try to figure out where we are + +$_server = array_key_exists('SERVER_NAME', $_SERVER) ? + strtolower($_SERVER['SERVER_NAME']) : + null; +$_path = array_key_exists('SCRIPT_NAME', $_SERVER) ? + substr($_SERVER['SCRIPT_NAME'], 1, strrpos($_SERVER['SCRIPT_NAME'], '/') - 1) : + null; + // default configuration, overwritten in config.php $config = array('site' => array('name' => 'Just another Laconica microblog', - 'server' => 'localhost', + 'server' => $_server, 'theme' => 'default', - 'path' => '/', + 'path' => $_path, 'logfile' => null, 'fancy' => false, 'locale_path' => INSTALLDIR.'/locale', @@ -150,7 +159,24 @@ if (function_exists('date_default_timezone_set')) { date_default_timezone_set('UTC'); } -require_once(INSTALLDIR.'/config.php'); +// From most general to most specific: +// server-wide, then vhost-wide, then for a path, +// finally for a dir (usually only need one of the last two). + +$_config_files = array('/etc/laconica/laconica.php', + '/etc/laconica/'.$_server.'.php'); + +if (strlen($_path) > 0) { + $_config_files[] = '/etc/laconica/'.$_server.'_'.$_path.'.php'; +} + +$_config_files[] = INSTALLDIR.'/config.php'; + +foreach ($_config_files as $_config_file) { + if (file_exists($_config_file)) { + include_once($_config_file); + } +} require_once('Validate.php'); require_once('markdown.php'); |