You are here

function google_analytics_reports_update_7302 in Google Analytics Reports 7.3

Replace deprecated datapoins with new ones.

File

./google_analytics_reports.install, line 237
Contains install and update functions for Google Analytics Reports module.

Code

function google_analytics_reports_update_7302() {

  // Find all Google Analytics views.
  $ga_views = db_select('views_view', 'v')
    ->fields('v', array(
    'vid',
  ))
    ->condition('base_table', 'google_analytics')
    ->execute()
    ->fetchAll();
  foreach ($ga_views as $ga_view) {

    // Find all displays settings.
    $ga_views_displays = db_select('views_display', 'v')
      ->fields('v', array(
      'id',
      'display_options',
    ))
      ->condition('vid', $ga_view->vid)
      ->execute()
      ->fetchAll();
    if ($ga_views_displays) {
      foreach ($ga_views_displays as $ga_views_display) {
        $old_datapoins = array(
          'visitorType',
          'visitCount',
          'daysSinceLastVisit',
          'visitors',
          'newVisits',
          'percentNewVisits',
          'visitLength',
          'visits',
          'timeOnSite',
          'entranceBounceRate',
          'visitBounceRate',
          'avgTimeOnSite',
          'goalValuePerVisit',
          'pageviewsPerVisit',
          'searchVisits',
          'percentVisitsWithSearch',
          'visitsWithEvent',
          'eventsPerVisitWithEvent',
          'visitsToTransaction',
          'transactionsPerVisit',
          'transactionRevenuePerVisit',
          'socialInteractionsPerVisit',
          'visitorAgeBracket',
          'visitorGender',
        );
        $new_datapoints = array(
          'userType',
          'sessionCount',
          'daysSinceLastSession',
          'users',
          'newUsers',
          'percentNewSessions',
          'sessionDurationBucket',
          'sessions',
          'sessionDuration',
          'bounceRate',
          'bounceRate',
          'avgSessionDuration',
          'goalValuePerSession',
          'pageviewsPerSession',
          'searchSessions',
          'percentSessionsWithSearch',
          'sessionsWithEvent',
          'eventsPerSessionWithEvent',
          'sessionsToTransaction',
          'transactionsPerSession',
          'transactionRevenuePerSession',
          'socialInteractionsPerSession',
          'userAgeBracket',
          'userGender',
        );

        // Replace deprecated datapoins with new ones.
        $replaced_data = str_replace($old_datapoins, $new_datapoints, $ga_views_display->display_options);

        // Fix serialize data.
        // See http://stackoverflow.com/a/21389439/3365600.
        $fixed_data = preg_replace_callback('!s:(\\d+):"(.*?)";!', function ($match) {
          return $match[1] == strlen($match[2]) ? $match[0] : 's:' . strlen($match[2]) . ':"' . $match[2] . '";';
        }, $replaced_data);
        db_update('views_display')
          ->fields(array(
          'display_options' => $fixed_data,
        ))
          ->condition('vid', $ga_view->vid)
          ->condition('id', $ga_views_display->id)
          ->execute();
      }
    }
  }
}