X-Git-Url: https://git.cweiske.de/bdrem.git/blobdiff_plain/e946d300f1c3c0d5c5805cd73c035fde0a4d0de2..5c88f5e19a69485da44e132e0b102b835eee7f05:/src/bdrem/Config.php diff --git a/src/bdrem/Config.php b/src/bdrem/Config.php index 37c4c64..693307e 100644 --- a/src/bdrem/Config.php +++ b/src/bdrem/Config.php @@ -1,34 +1,163 @@ + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @link http://cweiske.de/bdrem.htm + */ namespace bdrem; +/** + * Configuration options for bdrem + * + * @category Tools + * @package Bdrem + * @author Christian Weiske + * @copyright 2014 Christian Weiske + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3 + * @version Release: @package_version@ + * @link http://cweiske.de/bdrem.htm + */ class Config { - public $source; + /** + * Current date, YYYY-MM-DD + * @var string + */ public $date; + + /** + * Days to show before $date + * @var integer + */ public $daysPrev; + + /** + * Days to show after $date + * @var integer + */ public $daysNext; + + /** + * Development helper + * @var boolean + */ + public $debug; + + /** + * Locale to render the dates in, e.g. "de_DE.UTF-8" + * @var string + */ public $locale; + + /** + * Renderer name to use (e.g. "console") + * @var string + */ + public $renderer; + + /** + * Event source configuration. + * - First value is source name ("Ldap", "Sql") + * - Second value is the source configuration + * @var array + */ + public $source; + + /** + * Do not output anything if there are no events to show + * @var boolean + */ public $stopOnEmpty; + /** + * List of config file paths that were tried to load + * @var array + */ + public $cfgFiles = array(); + + /** + * If a configuration file could be found + * @var boolean + */ + public $cfgFileExists; + + + + /** + * Init configuration file path loading + */ + public function __construct() + { + $this->loadConfigFilePaths(); + } + + /** + * Load the configuration from the first configuration file found. + * + * @return void + */ public function load() { - $f = __DIR__ . '/../../data/bdrem.config.php'; - if (file_exists($f)) { - return $this->loadFile($f); + foreach ($this->cfgFiles as $file) { + if (file_exists($file)) { + $this->cfgFileExists = true; + return $this->loadFile($file); + } } + $this->cfgFileExists = false; + } + + /** + * Load possible configuration file paths into $this->cfgFiles. + * + * @return void + */ + protected function loadConfigFilePaths() + { + $pharFile = \Phar::running(); + if ($pharFile == '') { + $this->cfgFiles[] = __DIR__ . '/../../data/bdrem.config.php'; + } else { + //remove phar:// from the path + $this->cfgFiles[] = substr($pharFile, 7) . '.config.php'; + } + + //TODO: add ~/.config/bdrem.php - throw new \Exception('No config file found'); + $this->cfgFiles[] = '/etc/bdrem.php'; } + /** + * Load a single configuration file and set the config class variables + * + * @param string $filename Configuration file path + * + * @return void + */ protected function loadFile($filename) { include $filename; $vars = get_defined_vars(); foreach ($vars as $k => $value) { - $this->$k = $value; + if (!isset($this->$k) || $this->$k === null) { + $this->$k = $value; + } } } + /** + * Load a event source from $this->source. + * Class name has to be \bdrem\Source_$source + * + * @return object Source object + */ public function loadSource() { if ($this->source === null) { @@ -41,6 +170,13 @@ class Config return new $class($settings[0]); } + /** + * Set the current date + * + * @param string $date Date in any format + * + * @return void + */ public function setDate($date) { if ($date === null) { @@ -51,6 +187,15 @@ class Config } } + /** + * Get a configuration variable + * + * @param string $varname Configuration variable name + * @param string $default Default value in case the variable is not set + * or is empty + * + * @return mixed Configuration value or default + */ public function get($varname, $default = '') { if (!isset($this->$varname) || $this->$varname == '') {