You are here

public static function GoogleAnalyticsReports::checkUpdates in Google Analytics Reports 8.3

Check updates for new Google Analytics fields.

See also

https://developers.google.com/analytics/devguides/reporting/metadata/v3/...

File

src/GoogleAnalyticsReports.php, line 26

Class

GoogleAnalyticsReports
GoogleAnalyticsReports service class.

Namespace

Drupal\google_analytics_reports

Code

public static function checkUpdates() {
  if (!defined('MAINTENANCE_MODE')) {
    $etag_old = \Drupal::config('google_analytics_reports.settings')
      ->get('metadata_etag');
    try {
      $response = \Drupal::httpClient()
        ->request('GET', self::$googleAnalyticsColumnsDefinitionUrl . '?fields=etag', [
        'timeout' => 2.0,
      ]);
    } catch (RequestException $e) {
      \Drupal::logger('google_analytics_reports')
        ->error('Failed to Google Analytics metadata definitions due to "%error".', [
        '%error' => $e
          ->getMessage(),
      ]);
      return;
    }
    if ($response
      ->getStatusCode() == 200) {
      $data = $response
        ->getBody()
        ->getContents();
      if (empty($data)) {
        \Drupal::logger('google_analytics_reports')
          ->error('Failed to Google Analytics Column metadata definitions. Received empty content.');
        return;
      }
      $data = json_decode($data, TRUE);
      if ($etag_old == $data['etag']) {
        \Drupal::messenger()
          ->addMessage(t('All Google Analytics fields is up to date.'));
      }
      else {
        \Drupal::messenger()
          ->addMessage(t('New Google Analytics fields has been found. Press "Import fields" button to update Google Analytics fields.'));
      }
    }
    else {
      \Drupal::messenger()
        ->addMessage(t('An error has occurred: @error.', [
        '@error' => $response
          ->getStatusCode(),
      ]), 'error');
    }
  }
}