]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Enable configuration files in /etc/laconica/
authorEvan Prodromou <evan@controlyourself.ca>
Sat, 31 Jan 2009 14:38:39 +0000 (09:38 -0500)
committerEvan Prodromou <evan@controlyourself.ca>
Sat, 31 Jan 2009 14:38:39 +0000 (09:38 -0500)
Enable storing config files in /etc/laconica/, which makes it much
easier to have a single installation with multiple mublogs supported.

README
lib/common.php

diff --git a/README b/README
index 334e95b89fe4ff4f8f7d45cd7988e1cb7473ac71..ba0deb2c3d76173bbf7c1de43bca0c0d7f7bef0d 100644 (file)
--- a/README
+++ b/README
@@ -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:
index a2f9b9bfe73f1fdf5deed09fc892997f2144ba4c..825ba0ff75d10b99aae6de7ab3fb41f9508246a1 100644 (file)
@@ -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');