Better Setting model which will lookup the settings and env

This commit is contained in:
James Brooks
2014-11-22 14:37:44 +00:00
parent faf710eeeb
commit 784b0df10c
2 changed files with 36 additions and 5 deletions

View File

@@ -1,13 +1,44 @@
<?php
use \BadConfigKeyException;
class Setting extends Eloquent {
public static function get($settingName) {
/**
* Returns a setting from the database.
* @param string $settingName
* @param bool $checkEnv
* @return string
*/
public static function get($settingName, $checkEnv = true) {
// Default setting value.
$setting = null;
// First try finding the setting in the database.
try {
$setting = self::where('name', $settingName)->first()->value;
} catch (ErrorException $e) {
$setting = null;
$setting = self::whereName($settingName)->first()->value;
} catch (\ErrorException $e) {
// If we don't have a setting, check the env (fallback for original version)
if ($checkEnv) {
if (!($setting = getenv(strtoupper($settingName)))) {
self::unknownSettingException($settingName);
}
} else {
self::unknownSettingException($settingName);
}
}
return $setting;
}
/**
* Throws an BadConfigKeyException
* @param string $setting
* @throws BadConfigKeyException
* @return void
*/
public static function unknownSettingException($setting) {
throw new BadConfigKeyException(
sprintf('Unknown setting %s', $settingName)
);
}
}

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{ getenv('APP_NAME') }} | Cachet</title>
<title>{{ Setting::get('app_name') }} | Cachet</title>
<!-- Set the viewport width to device width for mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="http://james-brooks.uk">