first(); if (!$record) { return static::$cache[$key] = $default; } return static::$cache[$key] = $record->value; } /** * Stores a setting value to the database. * @param string $key Specifies the setting key value, for example 'system:updates.check' * @param mixed $value The setting value to store, serializable. */ public static function set($key, $value = null) { if (is_array($key)) { foreach ($key as $_key => $_value) { static::set($_key, $_value); } return true; } $record = static::findRecord($key)->first(); if (!$record) { $record = new static; list($namespace, $group, $item) = $record->parseKey($key); $record->namespace = $namespace; $record->group = $group; $record->item = $item; } $record->value = $value; $record->save(); static::$cache[$key] = $value; return true; } /** * Scope to find a setting record for the specified module (or plugin) name and setting name. * @param string $key Specifies the setting key value, for example 'system:updates.check' * @param mixed $default The default value to return if the setting doesn't exist in the DB. * @return mixed Returns the found record or null. */ public function scopeFindRecord($query, $key) { list($namespace, $group, $item) = $this->parseKey($key); $query = $query ->where('namespace', $namespace) ->where('group', $group) ->where('item', $item); return $query; } }