This happens when submitting the form of a configurable action, e.g. "Modify user roles" on a "User" view.

Unfortunately, I'm unable to remember what changes could have caused this error... Anyone else having this ?
Interestingly, #5 in #1446734: Ability to Unblock accounts as well as block has the same issue.

Drupal 7.18 and VBO 7.x-3.1.

A dpm(func_get_args()); in views_bulk_operations_get_operation() gives :

... (Array, 3 elements)
0 (String, 0 characters )
1 (String, 4 characters ) user
2 (Array, 0 elements)

Comments

jide’s picture

After upgrading to Drupal 7.19, it still happens.

jide’s picture

After digging, here is what I found :

- It happens on all configurable actions.
- No error is thrown if "skip confirmation step" is checked.

My guess is that passing "operation" through $form_state via the confirmation step breaks things.

bojanz’s picture

Issue summary: View changes
Status: Active » Postponed (maintainer needs more info)

Dump the $plugin in views_bulk_operations_get_operation(), see why it's not loaded properly.

I can't reproduce the issue which means you'll need to debug it and provide a patch.

bojanz’s picture

Status: Postponed (maintainer needs more info) » Closed (cannot reproduce)

No further information provided.

chacea’s picture

I'm having what appears to be same problem with 7.x-3.2. Checking the "Skip Confirmation Step" box prevents the problem from happening for me as well.

I added a call to print_r() in "views_bulk_operations.module" like this:

--- views_bulk_operations.module.orig   2014-08-12 10:08:45.994878298 -0500
+++ views_bulk_operations.module        2014-08-12 12:36:34.091152609 -0500
@@ -221,6 +221,14 @@
     // system, despite the fact that we might only need a few.
     $id_fragments = explode('::', $operation_id);
     $plugin = views_bulk_operations_get_operation_type($id_fragments[0]);
+
+
+    // Tue Aug 12 11:51:58 CDT 2014 AJC
+    print("<pre>");
+    print_r($plugin);
+    print("</pre>");
+
+
     $operation_info = $plugin['list callback']($operation_id);

     if ($operation_info) {

With "Skip Confirmation Step" unchecked (i.e. the problem is occurring), output looks like this:

Array
(
    [title] => Action
    [list callback] => views_bulk_operations_operation_action_list
    [handler] => Array
        (
            [file] => action.class.php
            [class] => ViewsBulkOperationsAction
        )

    [module] => views_bulk_operations
    [name] => action
    [path] => sites/all/modules/views_bulk_operations/plugins/operation_types
    [file] => action.inc
    [plugin module] => views_bulk_operations
    [plugin type] => operation_types
)

Array
(
    [action] => Array
        (
            [title] => Action
            [list callback] => views_bulk_operations_operation_action_list
            [handler] => Array
                (
                    [file] => action.class.php
                    [class] => ViewsBulkOperationsAction
                )

            [module] => views_bulk_operations
            [name] => action
            [path] => sites/all/modules/views_bulk_operations/plugins/operation_types
            [file] => action.inc
            [plugin module] => views_bulk_operations
            [plugin type] => operation_types
        )

    [rules_component] => Array
        (
            [title] => Rules component
            [list callback] => views_bulk_operations_operation_rules_component_list
            [handler] => Array
                (
                    [file] => rules_component.class.php
                    [class] => ViewsBulkOperationsRulesComponent
                )

            [module] => views_bulk_operations
            [name] => rules_component
            [path] => sites/all/modules/views_bulk_operations/plugins/operation_types
            [file] => rules_component.inc
            [plugin module] => views_bulk_operations
            [plugin type] => operation_types
        )

)

Let me know if there is any other information I can provide that would be helpful.

robertgarrigos’s picture

I can confirm that this is still happening with VBO 7.x-3.4. Cannot change user role unless "skip confirmation step" is checked.

robertgarrigos’s picture

Status: Closed (cannot reproduce) » Active
joelpittet’s picture

Version: 7.x-3.1 » 7.x-3.4
Status: Active » Postponed (maintainer needs more info)
Issue tags: +Needs steps to reproduce

Could you export a view and posted it in a txt file(hopefully a simple one with minimum bits necessary for reproducing the bug)

robertgarrigos’s picture

I'm just using the users admin view which commes with VBO. I had to change the skip confirmation for the role change to avoid the problem. This is the exported view:

$view = new view();
$view->name = 'admin_views_user';
$view->description = 'List, add, and edit users.';
$view->tag = 'admin';
$view->base_table = 'users';
$view->human_name = 'Administration: Users';
$view->core = 0;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Defaults */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->display->display_options['title'] = 'Users';
$handler->display->display_options['css_class'] = 'admin-views-view';
$handler->display->display_options['use_ajax'] = TRUE;
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'més';
$handler->display->display_options['access']['type'] = 'menu';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Aplica';
$handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE;
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Reinicialitza';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Ordena per';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = 50;
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Elements per pàgina';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Tot -';
$handler->display->display_options['pager']['options']['expose']['offset_label'] = 'Desplaçament';
$handler->display->display_options['pager']['options']['tags']['first'] = '« primer';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ anterior';
$handler->display->display_options['pager']['options']['tags']['next'] = 'següent ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'últim »';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'views_bulk_operations' => 'views_bulk_operations',
  'name' => 'name',
  'mail' => 'name',
  'status' => 'status',
  'rid' => 'rid',
  'created' => 'created',
  'access' => 'access',
  'edit_node' => 'edit_node',
  'cancel_node' => 'edit_node',
);
$handler->display->display_options['style_options']['default'] = 'access';
$handler->display->display_options['style_options']['info'] = array(
  'views_bulk_operations' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'name' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '<br />',
    'empty_column' => 0,
  ),
  'mail' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'status' => array(
    'sortable' => 1,
    'default_sort_order' => 'desc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'rid' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'created' => array(
    'sortable' => 1,
    'default_sort_order' => 'desc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'access' => array(
    'sortable' => 1,
    'default_sort_order' => 'desc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'edit_node' => array(
    'align' => '',
    'separator' => '&emsp;',
    'empty_column' => 0,
  ),
  'cancel_node' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
$handler->display->display_options['style_options']['sticky'] = TRUE;
$handler->display->display_options['style_options']['empty_table'] = TRUE;
/* Comportament al no haver-hi resultats: Global: Text sense filtrar */
$handler->display->display_options['empty']['area_text_custom']['id'] = 'area_text_custom';
$handler->display->display_options['empty']['area_text_custom']['table'] = 'views';
$handler->display->display_options['empty']['area_text_custom']['field'] = 'area_text_custom';
$handler->display->display_options['empty']['area_text_custom']['empty'] = TRUE;
$handler->display->display_options['empty']['area_text_custom']['content'] = 'No users available.';
/* Camp: Bulk operations: Usuari */
$handler->display->display_options['fields']['views_bulk_operations']['id'] = 'views_bulk_operations';
$handler->display->display_options['fields']['views_bulk_operations']['table'] = 'views_entity_user';
$handler->display->display_options['fields']['views_bulk_operations']['field'] = 'views_bulk_operations';
$handler->display->display_options['fields']['views_bulk_operations']['label'] = '';
$handler->display->display_options['fields']['views_bulk_operations']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['views_bulk_operations']['hide_alter_empty'] = FALSE;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['display_type'] = '0';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['enable_select_all_pages'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['row_clickable'] = 1;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['force_single'] = 0;
$handler->display->display_options['fields']['views_bulk_operations']['vbo_settings']['entity_load_capacity'] = '10';
$handler->display->display_options['fields']['views_bulk_operations']['vbo_operations'] = array(
  'action::views_bulk_operations_user_cancel_action' => array(
    'selected' => 1,
    'postpone_processing' => 0,
    'skip_confirmation' => 0,
    'skip_permission_check' => 0,
    'override_label' => 0,
    'label' => '',
  ),
  'action::system_send_email_action' => array(
    'selected' => 1,
    'postpone_processing' => 0,
    'skip_confirmation' => 0,
    'skip_permission_check' => 0,
    'override_label' => 1,
    'label' => 'Send e-mail',
  ),
  'action::views_bulk_operations_modify_action' => array(
    'selected' => 1,
    'postpone_processing' => 0,
    'skip_confirmation' => 1,
    'skip_permission_check' => 0,
    'override_label' => 1,
    'label' => 'Change value',
    'settings' => array(
      'show_all_tokens' => 1,
      'display_values' => array(
        '_all_' => '_all_',
      ),
    ),
  ),
  'action::views_bulk_operations_user_roles_action' => array(
    'selected' => 1,
    'postpone_processing' => 0,
    'skip_confirmation' => 1,
    'skip_permission_check' => 0,
    'override_label' => 1,
    'label' => 'Change user roles',
  ),
);
/* Camp: Usuari: Nom */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
/* Camp: Usuari: Correu electrònic */
$handler->display->display_options['fields']['mail']['id'] = 'mail';
$handler->display->display_options['fields']['mail']['table'] = 'users';
$handler->display->display_options['fields']['mail']['field'] = 'mail';
$handler->display->display_options['fields']['mail']['label'] = '';
$handler->display->display_options['fields']['mail']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['mail']['link_to_user'] = '0';
/* Camp: Usuari: Actiu */
$handler->display->display_options['fields']['status']['id'] = 'status';
$handler->display->display_options['fields']['status']['table'] = 'users';
$handler->display->display_options['fields']['status']['field'] = 'status';
$handler->display->display_options['fields']['status']['not'] = 0;
/* Camp: Usuari: Rols */
$handler->display->display_options['fields']['rid']['id'] = 'rid';
$handler->display->display_options['fields']['rid']['table'] = 'users_roles';
$handler->display->display_options['fields']['rid']['field'] = 'rid';
$handler->display->display_options['fields']['rid']['type'] = 'ul';
/* Camp: Usuari: Data de creació */
$handler->display->display_options['fields']['created']['id'] = 'created';
$handler->display->display_options['fields']['created']['table'] = 'users';
$handler->display->display_options['fields']['created']['field'] = 'created';
$handler->display->display_options['fields']['created']['label'] = 'Member for';
$handler->display->display_options['fields']['created']['date_format'] = 'raw time ago';
/* Camp: Usuari: Darrer accés */
$handler->display->display_options['fields']['access']['id'] = 'access';
$handler->display->display_options['fields']['access']['table'] = 'users';
$handler->display->display_options['fields']['access']['field'] = 'access';
$handler->display->display_options['fields']['access']['date_format'] = 'time ago';
/* Camp: Usuari: Enllaç d'edició */
$handler->display->display_options['fields']['edit_node']['id'] = 'edit_node';
$handler->display->display_options['fields']['edit_node']['table'] = 'users';
$handler->display->display_options['fields']['edit_node']['field'] = 'edit_node';
$handler->display->display_options['fields']['edit_node']['label'] = 'Operations';
/* Camp: Usuari: Enllaç de cancel·lació */
$handler->display->display_options['fields']['cancel_node']['id'] = 'cancel_node';
$handler->display->display_options['fields']['cancel_node']['table'] = 'users';
$handler->display->display_options['fields']['cancel_node']['field'] = 'cancel_node';
$handler->display->display_options['fields']['cancel_node']['label'] = '';
$handler->display->display_options['fields']['cancel_node']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['cancel_node']['hide_alter_empty'] = FALSE;
/* Criteri d'ordenació: Usuari: Data de creació */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'users';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/* Criteri de filtratge: Usuari: Nom */
$handler->display->display_options['filters']['uid']['id'] = 'uid';
$handler->display->display_options['filters']['uid']['table'] = 'users';
$handler->display->display_options['filters']['uid']['field'] = 'uid';
$handler->display->display_options['filters']['uid']['operator'] = 'not in';
$handler->display->display_options['filters']['uid']['value'] = array(
  0 => 0,
);
$handler->display->display_options['filters']['uid']['group'] = 1;
/* Criteri de filtratge: Usuari: Nom (sense filtrar) */
$handler->display->display_options['filters']['name']['id'] = 'name';
$handler->display->display_options['filters']['name']['table'] = 'users';
$handler->display->display_options['filters']['name']['field'] = 'name';
$handler->display->display_options['filters']['name']['operator'] = 'contains';
$handler->display->display_options['filters']['name']['group'] = 1;
$handler->display->display_options['filters']['name']['exposed'] = TRUE;
$handler->display->display_options['filters']['name']['expose']['operator_id'] = 'name_op';
$handler->display->display_options['filters']['name']['expose']['label'] = 'Username';
$handler->display->display_options['filters']['name']['expose']['operator'] = 'name_op';
$handler->display->display_options['filters']['name']['expose']['identifier'] = 'name';
$handler->display->display_options['filters']['name']['expose']['remember'] = TRUE;
/* Criteri de filtratge: Usuari: Correu electrònic */
$handler->display->display_options['filters']['mail']['id'] = 'mail';
$handler->display->display_options['filters']['mail']['table'] = 'users';
$handler->display->display_options['filters']['mail']['field'] = 'mail';
$handler->display->display_options['filters']['mail']['operator'] = 'contains';
$handler->display->display_options['filters']['mail']['group'] = 1;
$handler->display->display_options['filters']['mail']['exposed'] = TRUE;
$handler->display->display_options['filters']['mail']['expose']['operator_id'] = 'mail_op';
$handler->display->display_options['filters']['mail']['expose']['label'] = 'E-mail';
$handler->display->display_options['filters']['mail']['expose']['operator'] = 'mail_op';
$handler->display->display_options['filters']['mail']['expose']['identifier'] = 'mail';
$handler->display->display_options['filters']['mail']['expose']['remember'] = TRUE;
/* Criteri de filtratge: Usuari: Actiu */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'users';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 'All';
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['exposed'] = TRUE;
$handler->display->display_options['filters']['status']['expose']['operator_id'] = '';
$handler->display->display_options['filters']['status']['expose']['label'] = 'Active';
$handler->display->display_options['filters']['status']['expose']['operator'] = 'status_op';
$handler->display->display_options['filters']['status']['expose']['identifier'] = 'status';
$handler->display->display_options['filters']['status']['expose']['remember'] = TRUE;
/* Criteri de filtratge: Usuari: Rols */
$handler->display->display_options['filters']['rid']['id'] = 'rid';
$handler->display->display_options['filters']['rid']['table'] = 'users_roles';
$handler->display->display_options['filters']['rid']['field'] = 'rid';
$handler->display->display_options['filters']['rid']['group'] = 1;
$handler->display->display_options['filters']['rid']['exposed'] = TRUE;
$handler->display->display_options['filters']['rid']['expose']['operator_id'] = 'rid_op';
$handler->display->display_options['filters']['rid']['expose']['label'] = 'Role';
$handler->display->display_options['filters']['rid']['expose']['operator'] = 'rid_op';
$handler->display->display_options['filters']['rid']['expose']['identifier'] = 'rid';
$handler->display->display_options['filters']['rid']['expose']['remember'] = TRUE;

/* Display: System */
$handler = $view->new_display('system', 'System', 'system_1');
$handler->display->display_options['defaults']['hide_admin_links'] = FALSE;
$handler->display->display_options['hide_admin_links'] = TRUE;
$handler->display->display_options['defaults']['access'] = FALSE;
$handler->display->display_options['path'] = 'admin/people';
$translatables['admin_views_user'] = array(
  t('Defaults'),
  t('Users'),
  t('més'),
  t('Aplica'),
  t('Reinicialitza'),
  t('Ordena per'),
  t('Asc'),
  t('Desc'),
  t('Elements per pàgina'),
  t('- Tot -'),
  t('Desplaçament'),
  t('« primer'),
  t('‹ anterior'),
  t('següent ›'),
  t('últim »'),
  t('No users available.'),
  t('- Selecciona una operació -'),
  t('Send e-mail'),
  t('Change value'),
  t('Change user roles'),
  t('Delete'),
  t('Nom'),
  t('Actiu'),
  t('Rols'),
  t('Member for'),
  t('Darrer accés'),
  t('Operations'),
  t('Username'),
  t('E-mail'),
  t('Active'),
  t('Role'),
  t('System'),
);