grantPermission('opt-in or out of google analytics tracking'); $success = $role->save(); if ($success) { $messenger = \Drupal::messenger(); $messenger->addMessage(t('Module %module granted %permission permission to authenticated users.', ['%module' => 'Google Analytics', '%permission' => t('Opt-in or out of tracking')]), 'status'); } } /** * Implements hook_uninstall(). * * Remove cache directory if module is uninstalled. */ function google_analytics_uninstall() { $javascript_service = \Drupal::service('google_analytics.javascript_cache'); $javascript_service->clearGoogleAnalyticsJsCache(); } /** * Implements hook_requirements(). */ function google_analytics_requirements($phase) { $requirements = []; if ($phase == 'runtime') { $config = \Drupal::config('google_analytics.settings'); $ga_accounts = \Drupal::service('google_analytics.accounts'); // Raise warning if Google user account has not been set yet. if (!$ga_accounts->getDefaultMeasurementId()) { $requirements['google_analytics_account'] = [ 'title' => t('Google Analytics module'), 'description' => t('Google Analytics module has not been configured yet. Please configure its settings from the Google Analytics settings page.', [':url' => Url::fromRoute('google_analytics.admin_settings_form')->toString()]), 'severity' => REQUIREMENT_WARNING, 'value' => t('Not configured'), ]; } // Raise warning if debugging is enabled. if ($config->get('debug')) { $requirements['google_analytics_debugging'] = [ 'title' => t('Google Analytics module'), 'description' => t('Google Analytics module has debugging enabled. Please disable debugging setting in production sites from the Google Analytics settings page.', [':url' => Url::fromRoute('google_analytics.admin_settings_form')->toString()]), 'severity' => REQUIREMENT_WARNING, 'value' => t('Debugging enabled'), ]; } // Raise warning if php code is being used. if ($config->get('visibility.request_path_mode') && $config->get('visibility.request_path_mode') === '2') { $requirements['google_analytics_php'] = [ 'title' => t('Google Analytics module'), 'description' => t('Using PHP code in Google Analytics is deprecated and not available in Drupal 9. You must move your logic into a custom module, and change the Page Visibility settings to suppress this message.', [':url' => Url::fromRoute('google_analytics.admin_settings_form')->toString()]), 'severity' => REQUIREMENT_ERROR, 'value' => t('PHP code exists'), ]; } } return $requirements; } /** * Migrate create only fields to gtag.js parameters. */ function google_analytics_update_8300() { $config = \Drupal::configFactory()->getEditable('google_analytics.settings'); $create_only_fields = $config->get('codesnippet.create'); $parameters = [ 'client_id' => $create_only_fields['clientId'], 'cookie_name' => $create_only_fields['cookieName'], 'cookie_domain' => $create_only_fields['cookieDomain'], 'cookie_expires' => $create_only_fields['cookieExpires'], 'sample_rate' => $create_only_fields['sampleRate'], 'site_speed_sample_rate' => $create_only_fields['siteSpeedSampleRate'], 'use_amp_client_id' => $create_only_fields['useAmpClientId'], 'user_id' => $create_only_fields['userId'], ]; $parameters = array_filter($parameters); $config ->set('codesnippet.create', $parameters) ->save(); return t('Migrated create only fields to gtag.js parameters.'); } /** * Set default config for tel: link tracking. */ function google_analytics_update_8301() { \Drupal::configFactory() ->getEditable('google_analytics.settings') ->set('track.tel', TRUE) ->save(); } /** * Update existing custom dimensions and metrics to user parameters. */ function google_analytics_update_8400() { $config = \Drupal::configFactory()->getEditable('google_analytics.settings'); $custom_parameters = []; $custom_dimensions = $config->getOriginal('custom.dimension'); $custom_metrics = $config->getOriginal('custom.metric'); // Merge Dimensions if (!empty($custom_dimensions)) { foreach ($custom_dimensions as $key => $dimension) { $custom_parameters['dimension' . $key]['type'] = 'dimension'; $custom_parameters['dimension' . $key]['name'] = $dimension['name']; $custom_parameters['dimension' . $key]['value'] = $dimension['value']; } } // Merge Metrics if (!empty($custom_metrics)) { foreach ($custom_metrics as $key => $metric) { $custom_parameters['metric' . $key]['type'] = 'metric'; $custom_parameters['metric' . $key]['name'] = $metric['name']; $custom_parameters['metric' . $key]['value'] = $metric['value']; } } if (!empty($custom_parameters)) { $config->set('custom.parameters', $custom_parameters); } // Remove the legacy settings. $config->clear('custom.metric'); $config->clear('custom.dimension'); // Save the settings $config->save(); } /** * Drop obsolete config items "ua_legacy" and "premium" from active config. */ function google_analytics_update_8401() { \Drupal::configFactory() ->getEditable('google_analytics.settings') ->clear('premium') ->clear('ua_legacy') ->save(); }