You are here

function views_bulk_operations_update_6000 in Views Bulk Operations (VBO) 6

Same name and namespace in other branches
  1. 6.3 views_bulk_operations.install \views_bulk_operations_update_6000()

Implementation of hook_update_N().

Replace MD5 hashes with meaningful strings in selected operations arrays.

File

./views_bulk_operations.install, line 21
Installation and update functions.

Code

function views_bulk_operations_update_6000() {
  drupal_load('module', 'views');
  drupal_load('module', 'views_bulk_operations');
  views_include('cache');
  $operations = array();
  foreach (array_keys(_views_bulk_operations_get_object_info()) as $object_type) {
    $hook_name = $object_type . '_operations';
    foreach (module_invoke_all($hook_name) as $operation) {
      if (!empty($operation['callback'])) {
        $key = md5($operation['callback'] . (isset($operation['callback arguments']) ? serialize($operation['callback arguments']) : ''));
        $operations[$key] = $operation['callback'] . (empty($operation['callback arguments']) ? '' : ':' . md5(serialize($operation['callback arguments'])));
      }
    }
  }
  $result = db_query("SELECT * FROM {actions} WHERE parameters > ''");
  while ($action = db_fetch_object($result)) {
    $key = md5($action->aid);
    $parameters = unserialize($action->parameters);
    $operations[$key] = $action->callback . (empty($parameters) ? '' : ':' . md5($action->parameters));
  }
  foreach (array_keys(actions_list()) as $callback) {
    $key = md5($callback);
    $operations[$key] = $callback;
  }
  foreach (views_get_all_views() as $name => $view) {
    $changed = FALSE;
    foreach (array_keys($view->display) as $display) {
      $display_options =& $view->display[$display]->display_options;
      if (isset($display_options['style_plugin']) && $display_options['style_plugin'] == 'bulk') {
        $changed = TRUE;
        $selected_operations = isset($display_options['style_options']['selected_operations']) && is_array($display_options['style_options']['selected_operations']) ? array_filter($display_options['style_options']['selected_operations']) : array();
        $display_options['style_options']['selected_operations'] = array();
        if (!empty($selected_operations)) {
          foreach ($selected_operations as $operation) {

            // If an old operation is identified, replace it.
            $display_options['style_options']['selected_operations'][] = isset($operations[$operation]) ? $operations[$operation] : $operation;
          }
        }
      }
    }
    if ($changed) {
      $view
        ->save();
      views_object_cache_clear('view', $name);
    }
  }
  cache_clear_all('*', 'cache_views');
  return array();
}