You are here

function views_rss_core_update_6200 in Views RSS 6.2

Migrate feed core elements settings from Views RSS 6.x-1.0-beta5 format.

1 call to views_rss_core_update_6200()
views_rss_core_install in modules/views_rss_core/views_rss_core.install
Implementation of hook_install().

File

modules/views_rss_core/views_rss_core.install, line 29
(Un)installation functions for Views RSS: Core Elements module.

Code

function views_rss_core_update_6200() {
  $sql = "SELECT vd.*, vv.name FROM {views_display} vd JOIN {views_view} vv USING(vid) WHERE vd.display_plugin = 'feed'";
  $result = db_query($sql);
  while ($row = db_fetch_array($result)) {
    $updated = FALSE;
    $display_options = unserialize($row['display_options']);
    if ($display_options['style_plugin'] == 'rss_fields') {

      // Get list of feed item elements defined by this module.
      $defined_elements = views_rss_core_views_rss_item_elements();

      // Channel description.
      if (isset($display_options['style_options']['description']['feed_description'])) {
        $display_options['style_options']['channel']['core']['views_rss_core']['description'] = $display_options['style_options']['description']['feed_description'];
        unset($display_options['style_options']['description']);
        $updated = TRUE;
      }

      // Process old elements.
      if (!empty($display_options['style_options']['fields'])) {
        foreach ($display_options['style_options']['fields'] as $full_name => $value) {
          $field_elements = explode(':', $full_name);
          $field_name = array_pop($field_elements);
          if (in_array($full_name, array_keys($defined_elements))) {
            $display_options['style_options']['item']['core']['views_rss_core'][$field_name] = $value;
            unset($display_options['style_options']['fields'][$field_name]);
            $updated = TRUE;

            // Check if old "fields" array is empty and unset it if so.
            if (empty($display_options['style_options']['fields'])) {
              unset($display_options['style_options']['fields']);
            }
          }
        }
      }
    }
    if ($updated) {
      $sql = "UPDATE {views_display} SET display_options = '%s' WHERE vid = %d AND id = '%s'";
      db_query($sql, serialize($display_options), $row['vid'], $row['id']);
      drupal_set_message(t('%type feed elements have been updated in %view_name.', array(
        '%type' => 'Core',
        '%view_name' => $row['name'],
      )));
    }
  }
  cache_clear_all('*', 'cache_views');
  return array();
}