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();
}
}
}
}