Install, update and uninstall functions for the book module.
<?php
/**
* @file
* Install, update and uninstall functions for the book module.
*/
/**
* Implements hook_install().
*/
function book_install() {
// Add the node type.
_book_install_type_create();
}
/**
* Implements hook_uninstall().
*/
function book_uninstall() {
// Delete menu links.
db_delete('menu_links')
->condition('module', 'book')
->execute();
menu_cache_clear_all();
}
/**
* Creates the book content type.
*/
function _book_install_type_create() {
// Create an additional node type.
$book_node_type = array(
'type' => 'book',
'name' => t('Book page'),
'base' => 'node_content',
'description' => t('<em>Books</em> have a built-in hierarchical navigation. Use for handbooks or tutorials.'),
'custom' => 1,
'modified' => 1,
'locked' => 0,
);
$book_node_type = node_type_set_defaults($book_node_type);
node_type_save($book_node_type);
node_add_body_field($book_node_type);
// Default to not promoted.
variable_set('node_options_book', array(
'status',
));
}
/**
* Implements hook_schema().
*/
function book_schema() {
$schema['book'] = array(
'description' => 'Stores book outline information. Uniquely connects each node in the outline to a link in {menu_links}',
'fields' => array(
'mlid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => "The book page's {menu_links}.mlid.",
),
'nid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => "The book page's {node}.nid.",
),
'bid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
'description' => "The book ID is the {book}.nid of the top-level page.",
),
),
'primary key' => array(
'mlid',
),
'unique keys' => array(
'nid' => array(
'nid',
),
),
'indexes' => array(
'bid' => array(
'bid',
),
),
);
return $schema;
}
/**
* Move the Book module settings from variables to config.
*
* @ingroup config_upgrade
*/
function book_update_8000() {
update_variables_to_config('book.settings', array(
'book_child_type' => 'child_type',
'book_block_mode' => 'block.navigation.mode',
));
$allowed_types = update_variable_get('book_allowed_types', FALSE);
if ($allowed_types) {
// Ensure consistent ordering of allowed_types.
// @see book_admin_settings_submit()
sort($allowed_types);
config('book.settings')
->set('allowed_types', $allowed_types)
->save();
}
}
Name | Description |
---|---|
book_install | Implements hook_install(). |
book_schema | Implements hook_schema(). |
book_uninstall | Implements hook_uninstall(). |
book_update_8000 | Move the Book module settings from variables to config. |
_book_install_type_create | Creates the book content type. |