1<?php
2
3/**
4 * @file
5 * Install, update and uninstall functions for the book module.
6 */
7
8/**
9 * Implements hook_install().
10 */
11function book_install() {
12  // Add the node type.
13  _book_install_type_create();
14}
15
16/**
17 * Implements hook_uninstall().
18 */
19function book_uninstall() {
20  variable_del('book_allowed_types');
21  variable_del('book_child_type');
22  variable_del('book_block_mode');
23
24  // Delete menu links.
25  db_delete('menu_links')
26    ->condition('module', 'book')
27    ->execute();
28  menu_cache_clear_all();
29}
30
31/**
32 * Creates the book content type.
33 */
34function _book_install_type_create() {
35  // Create an additional node type.
36  $book_node_type = array(
37    'type' => 'book',
38    'name' => t('Book page'),
39    'base' => 'node_content',
40    'description' => t('<em>Books</em> have a built-in hierarchical navigation. Use for handbooks or tutorials.'),
41    'custom' => 1,
42    'modified' => 1,
43    'locked' => 0,
44  );
45
46  $book_node_type = node_type_set_defaults($book_node_type);
47  node_type_save($book_node_type);
48  node_add_body_field($book_node_type);
49  // Default to not promoted.
50  variable_set('node_options_book', array('status'));
51  // Use this default type for adding content to books.
52  variable_set('book_allowed_types', array('book'));
53  variable_set('book_child_type', 'book');
54}
55
56/**
57 * Implements hook_schema().
58 */
59function book_schema() {
60  $schema['book'] = array(
61  'description' => 'Stores book outline information. Uniquely connects each node in the outline to a link in {menu_links}',
62    'fields' => array(
63      'mlid' => array(
64        'type' => 'int',
65        'unsigned' => TRUE,
66        'not null' => TRUE,
67        'default' => 0,
68        'description' => "The book page's {menu_links}.mlid.",
69      ),
70      'nid' => array(
71        'type' => 'int',
72        'unsigned' => TRUE,
73        'not null' => TRUE,
74        'default' => 0,
75        'description' => "The book page's {node}.nid.",
76      ),
77      'bid' => array(
78        'type' => 'int',
79        'unsigned' => TRUE,
80        'not null' => TRUE,
81        'default' => 0,
82        'description' => "The book ID is the {book}.nid of the top-level page.",
83      ),
84    ),
85    'primary key' => array('mlid'),
86    'unique keys' => array(
87      'nid' => array('nid'),
88    ),
89    'indexes' => array(
90      'bid' => array('bid'),
91    ),
92  );
93
94  return $schema;
95}
96