From ae68550448f2232aff17f70c3a7a680ee4692585 Mon Sep 17 00:00:00 2001 From: Nabeel S Date: Tue, 29 Oct 2019 13:07:53 -0400 Subject: [PATCH] Move telemetry option into settings; checkbox in install refs #415 (#416) --- app/Database/seeds/settings.yml | 7 ++++ app/Services/AnalyticsService.php | 35 +++++++++++++---- app/helpers.php | 14 ++++++- config/app.php | 4 -- config/gamp.php | 8 ++-- .../Http/Controllers/InstallerController.php | 8 +++- .../views/install/steps/step3-user.blade.php | 38 +++++++++---------- 7 files changed, 76 insertions(+), 38 deletions(-) diff --git a/app/Database/seeds/settings.yml b/app/Database/seeds/settings.yml index 3b30cf8b..f88b2f9e 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 b25c6119..36a6ec1a 100644 --- a/app/Services/AnalyticsService.php +++ b/app/Services/AnalyticsService.php @@ -4,6 +4,7 @@ namespace App\Services; 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 @@ use PDO; 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 4c5efdc7..51f7947f 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -43,7 +43,7 @@ if (!function_exists('get_truth_state')) { $state = strtolower($state); } - return \in_array($state, $enabledStates, false); + return in_array($state, $enabledStates, false); } } @@ -148,6 +148,18 @@ if (!function_exists('setting')) { } } +/* + * 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 4c388ee5..69d570c8 100755 --- a/config/app.php +++ b/config/app.php @@ -17,10 +17,6 @@ return [ '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 4979b8f8..25a02c6c 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 a3f4756e..08f9ba39 100644 --- a/modules/Installer/Http/Controllers/InstallerController.php +++ b/modules/Installer/Http/Controllers/InstallerController.php @@ -330,9 +330,13 @@ class InstallerController extends Controller $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 643c3189..a81834d2 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 @@ - {{-- - -

Options

- + +

Options

+ - -

Analytics

- -
- {{ Form::hidden('analytics', 0) }} - {{ Form::checkbox('analytics', 1, true, ['class' => 'form-control']) }} -
-

- 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

+ +
+ {{ Form::hidden('telemetry', 0) }} + {{ Form::checkbox('telemetry', 1, true, ['class' => 'form-control']) }} +
+

+ 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. +

+
+ +