From a35bccb94088f193633652bb22b677b1a6628b13 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 6 Jun 2020 12:14:55 +0200 Subject: [PATCH] Fix #3443 --- app/Support/FireflyConfig.php | 17 ++++++++++++++-- app/Support/Telemetry.php | 38 ++++++++++++++++++++++------------- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/app/Support/FireflyConfig.php b/app/Support/FireflyConfig.php index ecc7ae508e..d4e9619f2c 100644 --- a/app/Support/FireflyConfig.php +++ b/app/Support/FireflyConfig.php @@ -25,6 +25,7 @@ namespace FireflyIII\Support; use Cache; use Exception; use FireflyIII\Models\Configuration; +use Illuminate\Database\QueryException; use Log; /** @@ -80,7 +81,11 @@ class FireflyConfig return Cache::get($fullName); } - $config = Configuration::where('name', $name)->first(['id', 'name', 'data']); + try { + $config = Configuration::where('name', $name)->first(['id', 'name', 'data']); + } catch (QueryException|Exception $e) { + return null; + } if ($config) { Cache::forever($fullName, $config); @@ -148,7 +153,15 @@ class FireflyConfig } Log::debug('Set new value for ', ['name' => $name]); /** @var Configuration $config */ - $config = Configuration::whereName($name)->first(); + try { + $config = Configuration::whereName($name)->first(); + } catch (QueryException|Exception $e) { + $item = new Configuration; + $item->name = $name; + $item->data = $value; + + return $item; + } if (null === $config) { Log::debug('Does not exist yet ', ['name' => $name]); /** @var Configuration $item */ diff --git a/app/Support/Telemetry.php b/app/Support/Telemetry.php index 7b8a5cba76..14ef9cc927 100644 --- a/app/Support/Telemetry.php +++ b/app/Support/Telemetry.php @@ -23,8 +23,10 @@ declare(strict_types=1); namespace FireflyIII\Support; use Carbon\Carbon; +use Exception; use FireflyIII\Models\Telemetry as TelemetryModel; use FireflyIII\Support\System\GeneratesInstallationId; +use Illuminate\Database\QueryException; use JsonException; use Log; @@ -126,12 +128,17 @@ class Telemetry Log::error(sprintf('JSON Exception encoding the following value: %s: %s', $value, $e->getMessage())); $jsonEncoded = []; } + try { + $count = TelemetryModel + ::where('type', $type) + ->where('key', $key) + ->where('value', $jsonEncoded) + ->count(); + } catch (QueryException|Exception $e) { + $count = 0; + } - return TelemetryModel - ::where('type', $type) - ->where('key', $key) - ->where('value', $jsonEncoded) - ->count() > 0; + return $count > 0; } /** @@ -171,14 +178,17 @@ class Telemetry $this->generateInstallationId(); $config = app('fireflyconfig')->get('installation_id', null); $installationId = null !== $config ? $config->data : 'empty'; - TelemetryModel::create( - [ - 'installation_id' => $installationId, - 'key' => $name, - 'type' => $type, - 'value' => $value, - ] - ); + try { + TelemetryModel::create( + [ + 'installation_id' => $installationId, + 'key' => $name, + 'type' => $type, + 'value' => $value, + ] + ); + } catch (QueryException|Exception $e) { + // ignore. + } } - }