You are here

function google_analytics_reports_update_7301 in Google Analytics Reports 7.3

Convert datapoins with (n) in name into datapoints with XX.

File

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

Code

function google_analytics_reports_update_7301() {

  // 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) {

        // Convert (n) into XX.
        $replaced_data = str_replace('(n)', 'XX', $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();
      }
    }
  }
}