diff --git a/app/Database/seeds/settings.yml b/app/Database/seeds/settings.yml index 3b30cf8b4..f88b2f9ef 100644 --- a/app/Database/seeds/settings.yml +++ b/app/Database/seeds/settings.yml @@ -26,6 +26,13 @@ options: '' type: boolean description: 'Include beta and other pre-release versions when checking for a new version' +- key: general.telemetry + name: 'Send telemetry to phpVMS' + group: general + value: true + options: '' + type: boolean + description: 'Send some data (php version, mysql version) to phpVMS. See AnalyticsSvc code for details' - key: units.distance name: 'Distance Units' group: units diff --git a/app/Services/AnalyticsService.php b/app/Services/AnalyticsService.php index b25c61194..36a6ec1a2 100644 --- a/app/Services/AnalyticsService.php +++ b/app/Services/AnalyticsService.php @@ -4,6 +4,7 @@ use App\Contracts\Service; use App\Models\Enums\AnalyticsDimensions; +use Exception; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Irazasyed\LaravelGAMP\Facades\GAMP; @@ -12,30 +13,50 @@ class AnalyticsService extends Service { /** - * Send out some stats about the install + * Create a GAMP instance with a random ID + * + * @return mixed + */ + private function getGAMPInstance() + { + return GAMP::setClientId(uniqid('', true)); + } + + /** + * Send out some stats about the install, like the PHP and DB versions */ public function sendInstall() { - if (config('app.analytics') === false) { + if (setting('general.telemetry') === false) { return; } - // some analytics - $gamp = GAMP::setClientId(uniqid('', true)); + // Generate a random client ID + $gamp = $this->getGAMPInstance(); + $gamp->setDocumentPath('/install'); - $gamp->setCustomDimension(PHP_VERSION, AnalyticsDimensions::PHP_VERSION); + // Send the PHP version + $gamp->setCustomDimension(PHP_VERSION, AnalyticsDimensions::PHPVMS_VERSION); - // figure out database version + // Figure out the database version $pdo = DB::connection()->getPdo(); $gamp->setCustomDimension( strtolower($pdo->getAttribute(PDO::ATTR_SERVER_VERSION)), AnalyticsDimensions::DATABASE_VERSION ); + // Send the PHPVMS Version + $versionSvc = app(VersionService::class); + $gamp->setCustomDimension( + $versionSvc->getCurrentVersion(false), + AnalyticsDimensions::PHP_VERSION + ); + + // Send that an install was done try { $gamp->sendPageview(); - } catch (\Exception $e) { + } catch (Exception $e) { Log::error($e->getMessage()); } } diff --git a/app/helpers.php b/app/helpers.php index 4c5efdc74..51f7947f8 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -43,7 +43,7 @@ function get_truth_state($state) $state = strtolower($state); } - return \in_array($state, $enabledStates, false); + return in_array($state, $enabledStates, false); } } @@ -148,6 +148,18 @@ function setting($key, $default = null) } } +/* + * Shortcut for retrieving a setting value + */ +if (!function_exists('setting_save')) { + function setting_save($key, $value) + { + $settingRepo = app('setting'); + $settingRepo->save($key, $value); + return $value; + } +} + /* * Wrap the asset URL in the publicBaseUrl that's been * set diff --git a/config/app.php b/config/app.php index 4c388ee5e..69d570c8d 100755 --- a/config/app.php +++ b/config/app.php @@ -17,10 +17,6 @@ 'locale' => env('APP_LOCALE', 'en'), 'fallback_locale' => 'en', - // This sends install and vaCentral specific information to help with - // optimizations and figuring out where slowdowns might be happening - 'analytics' => true, - // // Anything below here won't need changing and could break things // diff --git a/config/gamp.php b/config/gamp.php index 4979b8f8d..25a02c6ce 100644 --- a/config/gamp.php +++ b/config/gamp.php @@ -1,10 +1,10 @@ 'UA-100567975-1', + 'tracking_id' => 'UA-100567975-4', 'protocol_version' => 1, - 'is_ssl' => false, + 'is_ssl' => true, 'is_disabled' => false, - 'anonymize_ip' => false, - 'async_requests' => false, + 'anonymize_ip' => true, + 'async_requests' => true, ]; diff --git a/modules/Installer/Http/Controllers/InstallerController.php b/modules/Installer/Http/Controllers/InstallerController.php index a3f4756e2..08f9ba398 100644 --- a/modules/Installer/Http/Controllers/InstallerController.php +++ b/modules/Installer/Http/Controllers/InstallerController.php @@ -330,9 +330,13 @@ public function usersetup(Request $request) $user = $this->userService->createUser($user, ['admin']); Log::info('User registered: ', $user->toArray()); - // Set the intial admin e-mail address - setting('general.admin_email', $user->email); + // Set the initial admin e-mail address + setting_save('general.admin_email', $user->email); + // Save telemetry setting + setting_save('general.telemetry', get_truth_state($request->get('telemetry'))); + + // Try sending telemetry info $this->analyticsSvc->sendInstall(); return view('installer::install/steps/step3a-completed', []); diff --git a/modules/Installer/Resources/views/install/steps/step3-user.blade.php b/modules/Installer/Resources/views/install/steps/step3-user.blade.php index 643c3189d..a81834d2f 100644 --- a/modules/Installer/Resources/views/install/steps/step3-user.blade.php +++ b/modules/Installer/Resources/views/install/steps/step3-user.blade.php @@ -81,27 +81,25 @@ - {{-- -
Analytics
- Allows collection of analytics. They won't identify you, and helps us to track - the PHP and database versions that are used, and help to figure out problems - and slowdowns when vaCentral integration is enabled. -
-Analytics
+ Allows collection of analytics. They won't identify you, and helps us to track + the PHP and database versions that are used, and help to figure out problems + and slowdowns when vaCentral integration is enabled. +
+