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