diff --git a/mollom.module b/mollom.module index 6beb8f1..a6a8239 100644 --- a/mollom.module +++ b/mollom.module @@ -917,6 +917,35 @@ function mollom_form_alter(&$form, &$form_state, $form_id) { array_unshift($form['#submit'], 'mollom_data_delete_form_submit'); } } + + // Integrate with Views Bulk Operations. + if (isset($form_state['operation']) && $form_state['operation'] instanceof ViewsBulkOperationsAction && $form_state['operation']->id() === 'action::views_bulk_operations_delete_item') { + foreach ($form_state['build_info']['args'][0]->field as $field) { + if ($field instanceof views_bulk_operations_handler_field_operations && in_array($field->get_entity_type(), array('node', 'comment'))) { + mollom_data_delete_form_alter($form, $form_state); + array_unshift($form['actions']['submit']['#submit'], 'mollom_form_vbo_delete_confirm_submit'); + break; + } + } + } +} + +/** + * Form submit handler for mollom_form_alter(), for Views bulk Operations + * deletes. + */ +function mollom_form_vbo_delete_confirm_submit($form, &$form_state) { + if (!empty($form_state['values']['mollom']['feedback'])) { + foreach ($form_state['build_info']['args'][0]->field as $field) { + if ($field instanceof views_bulk_operations_handler_field_operations) { + list($allowed) = _mollom_actions_access_callbacks($field->get_entity_type(), entity_load($field->get_entity_type(), $form_state['selection'])); + if (mollom_data_report_multiple($field->get_entity_type(), array_keys($allowed), $form_state['values']['mollom']['feedback'])) { + drupal_set_message(t('The items were successfully reported as inappropriate.')); + } + break; + } + } + } } /** @@ -3816,8 +3845,8 @@ function _mollom_actions_access_callbacks($entity_type, $entities) { $report_access_callbacks[] = $info['report access callback']; } // Otherwise add any access permissions. - else if (isset($info['report access']) && !in_array($info['report access'], $access_permissions)) { - $access_permissions[] = $info['report access']; + elseif (isset($info['report access'])) { + $access_permissions += $info['report access']; } // Check for entity report access callbacks. if (isset($info['entity report access callback']) @@ -3826,6 +3855,7 @@ function _mollom_actions_access_callbacks($entity_type, $entities) { $entity_access_callbacks[] = $info['entity report access callback']; } } + $access_permissions = array_unique($access_permissions); // Check access for this comment. foreach ($entities as $entity) { @@ -3860,7 +3890,7 @@ function _mollom_actions_access_callbacks($entity_type, $entities) { } // If still here, then user has access to report this entity. - $allowed[] = $entity; + $allowed[$entity_id] = $entity; } return array($allowed, $nids, $cids); }