mirror of
https://github.com/CachetHQ/Cachet.git
synced 2025-01-17 13:38:20 +01:00
Fixes #438
This commit is contained in:
parent
930d0d2fb9
commit
283685ca40
@ -5,6 +5,7 @@ namespace CachetHQ\Cachet\Segment;
|
||||
use CachetHQ\Cachet\Facades\Setting;
|
||||
use CachetHQ\Cachet\Models\Setting as SettingModel;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\QueryException;
|
||||
|
||||
class CacheRepository implements RepositoryInterface
|
||||
{
|
||||
@ -30,24 +31,32 @@ class CacheRepository implements RepositoryInterface
|
||||
*/
|
||||
public function fetch()
|
||||
{
|
||||
// Firstly, does the setting exist?
|
||||
if (false === ($writeKey = Setting::get('segment_write_key'))) {
|
||||
// No, let's go fetch it.
|
||||
$writeKey = $this->repository->fetch();
|
||||
Setting::set('segment_write_key', $writeKey);
|
||||
} else {
|
||||
// It does, but how old is it?
|
||||
$setting = SettingModel::where('name', 'segment_write_key')->first();
|
||||
$writeKey = null;
|
||||
|
||||
// It's older than an hour, let's refresh
|
||||
if ($setting->updated_at->lt(Carbon::now()->subHour())) {
|
||||
// We might not be setup yet.
|
||||
try {
|
||||
// Firstly, does the setting exist?
|
||||
if (false === ($writeKey = Setting::get('segment_write_key'))) {
|
||||
// No, let's go fetch it.
|
||||
$writeKey = $this->repository->fetch();
|
||||
Setting::set('segment_write_key', $writeKey);
|
||||
} else {
|
||||
// It does, but how old is it?
|
||||
$setting = SettingModel::where('name', 'segment_write_key')->first();
|
||||
|
||||
// Update the setting. This is done manual to make sure updated_at is overwritten.
|
||||
$setting->value = $writeKey;
|
||||
$setting->updated_at = Carbon::now();
|
||||
$setting->save();
|
||||
// It's older than an hour, let's refresh
|
||||
if ($setting->updated_at->lt(Carbon::now()->subHour())) {
|
||||
$writeKey = $this->repository->fetch();
|
||||
|
||||
// Update the setting. This is done manual to make sure updated_at is overwritten.
|
||||
$setting->value = $writeKey;
|
||||
$setting->updated_at = Carbon::now();
|
||||
$setting->save();
|
||||
}
|
||||
}
|
||||
} catch (QueryException $e) {
|
||||
// Just return it until we're setup.
|
||||
$writeKey = $this->repository->fetch();
|
||||
}
|
||||
|
||||
return $writeKey;
|
||||
|
Loading…
x
Reference in New Issue
Block a user