book.action.inc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * @file
  4. * Implements actions for managing books (book.module).
  5. */
  6. function views_bulk_operations_book_action_info() {
  7. $actions = array();
  8. if (module_exists('book')) {
  9. $actions['views_bulk_operations_move_to_book_action'] = array(
  10. 'type' => 'node',
  11. 'label' => t('Move to book'),
  12. 'configurable' => TRUE,
  13. 'behavior' => array('changes_property'),
  14. );
  15. $actions['views_bulk_operations_remove_from_book_action'] = array(
  16. 'type' => 'node',
  17. 'label' => t('Remove from book'),
  18. 'configurable' => FALSE,
  19. );
  20. }
  21. return $actions;
  22. }
  23. function views_bulk_operations_move_to_book_action_form($context) {
  24. $form = array();
  25. if (!isset($context['book'])) {
  26. $context['book'] = '';
  27. }
  28. $options = array();
  29. $books = book_get_books();
  30. foreach ($books as $value) {
  31. $options[$value['nid']] = $value['title'];
  32. }
  33. if (empty($options)) {
  34. drupal_set_message(t('You have no books.'), 'error');
  35. return array();
  36. }
  37. $form['book'] = array(
  38. '#type' => 'select',
  39. '#title' => t('Choose a parent book'),
  40. '#options' => $options,
  41. '#description' => t('Select the parent book page you wish to move the book page into'),
  42. );
  43. return $form;
  44. }
  45. function views_bulk_operations_move_to_book_action_submit($form, $form_state) {
  46. return array('book' => $form_state['values']['book']);
  47. }
  48. function views_bulk_operations_move_to_book_action($node, $context = array()) {
  49. if (isset($context['book'])) {
  50. $book_node = node_load($context['book']);
  51. $mlid = db_select('menu_links' , 'ml')
  52. ->condition('ml.link_path' , 'node/' . $node->nid)
  53. ->fields('ml' , array('mlid'))
  54. ->execute()
  55. ->fetchField();
  56. $node->book['mlid'] = $mlid;
  57. $node->book['bid'] = $book_node->nid;
  58. $node->book['plid'] = $book_node->book['mlid'];
  59. $node->book['module'] = 'book';
  60. }
  61. }
  62. /**
  63. * Adds the action 'Remove node from a parent book'
  64. */
  65. function views_bulk_operations_remove_from_book_action($node, $context) {
  66. $book = $node->book['mlid'];
  67. book_node_delete($node);
  68. }