delete.action.inc 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * @file
  4. * Implements a generic entity delete action. Uses Entity API if available.
  5. */
  6. function views_bulk_operations_delete_action_info() {
  7. return array(
  8. 'views_bulk_operations_delete_item' => array(
  9. 'type' => 'entity',
  10. 'label' => t('Delete item'),
  11. 'configurable' => FALSE,
  12. 'behavior' => array('deletes_property'),
  13. 'triggers' => array('any'),
  14. ),
  15. 'views_bulk_operations_delete_revision' => array(
  16. 'type' => 'entity',
  17. 'label' => t('Delete revision'),
  18. 'configurable' => FALSE,
  19. 'behavior' => array('deletes_property'),
  20. 'triggers' => array('any'),
  21. ),
  22. );
  23. }
  24. function views_bulk_operations_delete_item_views_bulk_operations_form($settings) {
  25. $form = array();
  26. $form['log'] = array(
  27. '#type' => 'checkbox',
  28. '#title' => t('Log individual deletions'),
  29. '#description' => t('Note: Deleting large amounts of entities will generate large amounts of log messages.'),
  30. '#default_value' => !empty($settings['log']),
  31. );
  32. return $form;
  33. }
  34. function views_bulk_operations_delete_item($entity, $context) {
  35. $info = entity_get_info($context['entity_type']);
  36. $entity_id = $entity->{$info['entity keys']['id']};
  37. entity_delete($context['entity_type'], $entity_id);
  38. // Add a message to the watchdog if we've been configured to do so.
  39. if (!empty($context['settings']['log'])) {
  40. // Log an appropriate message for this entity type, using the format from
  41. // the node, taxonomy and user module for their entity types.
  42. switch ($context['entity_type']) {
  43. case 'node':
  44. watchdog('content', '@type: deleted %title.', array('@type' => $entity->type, '%title' => $entity->title));
  45. break;
  46. case 'taxonomy_term':
  47. watchdog('taxonomy', 'Deleted term %name.', array('%name' => $entity->name), WATCHDOG_NOTICE);
  48. break;
  49. case 'user':
  50. watchdog('user', 'Deleted user: %name %email.', array('%name' => $entity->name, '%email' => '<' . $entity->mail . '>'), WATCHDOG_NOTICE);
  51. break;
  52. default:
  53. watchdog('entity', 'Deleted @type %label.', array('@type' => $context['entity_type'], '%label' => entity_label($context['entity_type'], $entity)));
  54. break;
  55. }
  56. }
  57. }
  58. function views_bulk_operations_delete_revision($entity, $context) {
  59. $info = entity_get_info($context['entity_type']);
  60. $revision_id = $entity->{$info['entity keys']['revision']};
  61. entity_revision_delete($context['entity_type'], $revision_id);
  62. }