Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move telemetry option into settings; checkbox in install refs #415 #416

Merged
merged 1 commit into from
Oct 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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