diff --git a/config/gamp.php b/config/gamp.php index c812666e..8dcfcd67 100644 --- a/config/gamp.php +++ b/config/gamp.php @@ -1,96 +1,10 @@ 'UA-100567975-1', - - /* - |-------------------------------------------------------------------------- - | Measurement Protocol Version [REQUIRED] - |-------------------------------------------------------------------------- - | - | The Protocol version. The current value is '1'. - | This will only change when there are changes made that are not backwards compatible. - | - | Refer: - | https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#v - | - | Default: 1 - | - */ 'protocol_version' => 1, - - /* - |-------------------------------------------------------------------------- - | URL Endpoint - SSL Support: Send Data over SSL [Optional] - |-------------------------------------------------------------------------- - | - | This option controls the URL endpoint of the Measurement Protocol. - | To send data over SSL, set true. - | - | Refer: - | https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#tid - | - | Default: false - | Valid Values: (Boolean) "true" OR "false" - | - */ 'is_ssl' => false, - - /* - |-------------------------------------------------------------------------- - | Disable Hits [Optional] - |-------------------------------------------------------------------------- - | - | This option controls enabling or disabling the library. - | Useful in Staging/Dev environments when you don't want to actually send hits to GA. - | When disabled, it returns a AnalyticsResponseInterface object that returns empty values. - | - | To disable library hits, set true. - | - | Default: false - | Valid Values: (Boolean) "true" OR "false" - | - */ - 'is_disabled' => false, - - /* - |-------------------------------------------------------------------------- - | Anonymize IP [Optional] - |-------------------------------------------------------------------------- - | - | When set to True, the IP address of the sender will be anonymized. - | - | Refer: - | https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#aip - | - | Default: false - | Valid Values: (Boolean) "true" OR "false" - | - */ + 'is_disabled' => env('APP_ANALYTICS_DISABLED', false), 'anonymize_ip' => false, - - /* - |-------------------------------------------------------------------------- - | Asynchronous Requests [Optional] - |-------------------------------------------------------------------------- - | - | When set to True, All the requests would be made non-blocking (Async). - | - | Default: false - | Valid Values: (Boolean) "true" OR "false" - | - */ 'async_requests' => false, ]; diff --git a/env.php.example b/env.php.example index 90dde3b1..781388bb 100644 --- a/env.php.example +++ b/env.php.example @@ -15,6 +15,7 @@ APP_SKIN=default APP_KEY=base64:zdgcDqu9PM8uGWCtMxd74ZqdGJIrnw812oRMmwDF6KY= APP_DEBUG=true APP_LOCALE=en +APP_ANALYTICS_DISABLED=false PHPVMS_INSTALLED=true VACENTRAL_API_KEY= @@ -23,8 +24,6 @@ APP_LOG=daily APP_LOG_LEVEL=debug APP_LOG_MAX_FILES=3 -APP_ENABLE_ANALYTICS=true - DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 diff --git a/modules/Installer/Http/Controllers/InstallerController.php b/modules/Installer/Http/Controllers/InstallerController.php index 0b18e7da..d400e577 100644 --- a/modules/Installer/Http/Controllers/InstallerController.php +++ b/modules/Installer/Http/Controllers/InstallerController.php @@ -2,15 +2,14 @@ namespace Modules\Installer\Http\Controllers; -use Irazasyed\LaravelGAMP\Facades\GAMP; use Log; +use Irazasyed\LaravelGAMP\Facades\GAMP; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Illuminate\Database\QueryException; use Illuminate\Support\Facades\Validator; use App\Models\User; -use App\Models\Setting; use App\Repositories\AirlineRepository; use App\Facades\Utils; use App\Services\UserService; @@ -53,11 +52,6 @@ class InstallerController extends Controller return view('installer::errors/already-installed'); } - /*$gamp = GAMP::setClientId(uniqid('', true)); - $gamp->setDocumentPath('/install'); - $gamp->setCustomDimension(PHP_VERSION, 1); - $gamp->sendPageview();*/ - return view('installer::index-start'); } @@ -127,7 +121,7 @@ class InstallerController extends Controller ]; # Make sure there are no false values - $passed = ! in_array(false, $statuses, true); + $passed = !\in_array(false, $statuses, true); return view('installer::steps/step1-requirements', [ 'php' => $php_version, @@ -150,6 +144,8 @@ class InstallerController extends Controller /** * Step 2a. Create the .env + * @param Request $request + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function envsetup(Request $request) { @@ -186,6 +182,8 @@ class InstallerController extends Controller /** * Step 2b. Setup the database + * @param Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View */ public function dbsetup(Request $request) { @@ -210,10 +208,6 @@ class InstallerController extends Controller */ public function step3(Request $request) { - /*$this->envService->updateKeyInFile([ - 'APP_ENABLE_ANALYTICS' => 'false' - ]);*/ - return view('installer::steps/step3-user', []); } @@ -221,6 +215,7 @@ class InstallerController extends Controller * Step 3 submit * @param Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * @throws \RuntimeException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function usersetup(Request $request) @@ -273,6 +268,18 @@ class InstallerController extends Controller # Set the intial admin e-mail address setting('general.admin_email', $user->email); + $gamp = GAMP::setClientId(uniqid('', true)); + $gamp->setDocumentPath('/install'); + $gamp->setCustomDimension(PHP_VERSION, 1); + $gamp->sendPageview(); + + # If analytics are disabled + if((int) $request->post('analytics') === 0) { + $this->envService->updateKeysInEnv([ + 'APP_ANALYTICS_DISABLED' => 'true', + ]); + } + return view('installer::steps/step3a-completed', []); } diff --git a/modules/Installer/Resources/views/steps/step3-user.blade.php b/modules/Installer/Resources/views/steps/step3-user.blade.php index 50cfed5f..0fa73cac 100644 --- a/modules/Installer/Resources/views/steps/step3-user.blade.php +++ b/modules/Installer/Resources/views/steps/step3-user.blade.php @@ -80,11 +80,11 @@

Analytics

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

- Allow collection of analytics. They're anonymized, and helps us track + 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.

diff --git a/modules/Installer/Resources/views/stubs/env.blade.php b/modules/Installer/Resources/views/stubs/env.blade.php index 981ced84..f1687e5d 100644 --- a/modules/Installer/Resources/views/stubs/env.blade.php +++ b/modules/Installer/Resources/views/stubs/env.blade.php @@ -9,6 +9,7 @@ APP_SKIN=default APP_KEY=base64:{!! $APP_KEY !!} APP_DEBUG=true APP_LOCALE=en +APP_ANALYTICS_DISABLED=false PHPVMS_INSTALLED=true PHPVMS_VA_NAME="phpvms" @@ -19,8 +20,6 @@ APP_LOG=daily APP_LOG_LEVEL=debug APP_LOG_MAX_FILES=3 -APP_ENABLE_ANALYTICS=true - DB_CONNECTION={!! $DB_CONN !!} DB_HOST={!! $DB_HOST !!} DB_PORT={!! $DB_PORT !!} diff --git a/modules/Installer/Services/EnvironmentService.php b/modules/Installer/Services/EnvironmentService.php index 877de2cb..0f459c66 100644 --- a/modules/Installer/Services/EnvironmentService.php +++ b/modules/Installer/Services/EnvironmentService.php @@ -15,10 +15,16 @@ class EnvironmentService { /** * Create the .env file + * @param $driver + * @param $host + * @param $port + * @param $name + * @param $user + * @param $pass * @return boolean * @throws \Symfony\Component\HttpFoundation\File\Exception\FileException */ - public function createEnvFile($driver, $host, $port, $name, $user, $pass) + public function createEnvFile($driver, $host, $port, $name, $user, $pass): bool { $opts = [ 'APP_ENV' => 'dev', @@ -53,11 +59,20 @@ class EnvironmentService $env_file = file_get_contents($app->environmentFilePath()); foreach($kvp as $key => $value) { - # cast + $key = strtoupper($key); + + # cast for any boolean values if(\is_bool($value)) { $value = $value === true ? 'true' : 'false'; } + # surround by quotes if there are any spaces in the value + if(strpos($value, ' ') !== false) { + $value = '"'.$value.'"'; + } + + Log::info('Replacing "' . $key . '" with ' . $value); + $env_file = preg_replace( '/^' . $key . '(.*)?/m', $key . '=' . $value, @@ -72,7 +87,7 @@ class EnvironmentService * Generate a fresh new APP_KEY * @return string */ - protected function createAppKey() + protected function createAppKey(): string { return base64_encode(Encrypter::generateKey(config('app.cipher'))); } @@ -142,30 +157,6 @@ class EnvironmentService return $opts; } - /** - * Update a key/value pair in the env file - * @param $key - * @param $value - */ - public static function changeEnvironmentVariable($key, $value, $quoted=false) - { - $env_file = \App::environmentFilePath(); - - if (\is_bool(env($key))) { - $old = env($key) ? 'true' : 'false'; - } - - if($quoted) { - $value = '"'.$value.'"'; - } - - if (file_exists($env_file)) { - file_put_contents($env_file, str_replace( - "$key=" . $old, "$key=" . $value, file_get_contents($env_file) - )); - } - } - /** * Get the template file name and write it out * @param $opts