Skip to content

Commit

Permalink
Move telemetry option into settings; checkbox in install refs #415
Browse files Browse the repository at this point in the history
  • Loading branch information
nabeelio committed Oct 24, 2019
1 parent 12679e8 commit f332e29
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 38 deletions.
7 changes: 7 additions & 0 deletions app/Database/seeds/settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
35 changes: 28 additions & 7 deletions app/Services/AnalyticsService.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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());
}
}
Expand Down
14 changes: 13 additions & 1 deletion app/helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function get_truth_state($state)
$state = strtolower($state);
}

return \in_array($state, $enabledStates, false);
return in_array($state, $enabledStates, false);
}
}

Expand Down Expand Up @@ -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
Expand Down
4 changes: 0 additions & 4 deletions config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
//
Expand Down
8 changes: 4 additions & 4 deletions config/gamp.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?php

return [
'tracking_id' => '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,
];
8 changes: 6 additions & 2 deletions modules/Installer/Http/Controllers/InstallerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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', []);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,27 +81,25 @@
</td>
</tr>

{{--
<tr>
<td colspan="2"><h4>Options</h4></td>
</tr>
<tr>
<td colspan="2"><h4>Options</h4></td>
</tr>

<tr>
<td><p>Analytics</p></td>
<td>
<div class="form-group">
{{ Form::hidden('analytics', 0) }}
{{ Form::checkbox('analytics', 1, true, ['class' => 'form-control']) }}
<br />
<p>
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.
</p>
</div>
</td>
</tr>
--}}
<tr>
<td><p>Analytics</p></td>
<td>
<div class="form-group">
{{ Form::hidden('telemetry', 0) }}
{{ Form::checkbox('telemetry', 1, true, ['class' => 'form-control']) }}
<br />
<p>
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.
</p>
</div>
</td>
</tr>
</table>
<div id="dbtest"></div>
<p style="text-align: right">
Expand Down

0 comments on commit f332e29

Please sign in to comment.