summaryrefslogtreecommitdiff
path: root/modules/book/book.module
diff options
context:
space:
mode:
Diffstat (limited to 'modules/book/book.module')
-rw-r--r--modules/book/book.module63
1 files changed, 41 insertions, 22 deletions
diff --git a/modules/book/book.module b/modules/book/book.module
index 8ed14872a..6612ea38b 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -187,15 +187,18 @@ function book_load($node) {
return db_fetch_object(db_query('SELECT * FROM {book} WHERE vid = %d', $node->vid));
}
-function book_form_alter($form_id, &$form) {
- if ($form_id == 'node_delete_confirm') {
- $form['#submit']['book_node_delete_confirm_submit'] = array();
- }
+/**
+ * Implementation of hook_insert().
+ */
+function book_insert($node) {
+ db_query("INSERT INTO {book} (nid, vid, parent, weight) VALUES (%d, %d, %d, %d)", $node->nid, $node->vid, $node->parent, $node->weight);
}
-function book_node_submit($form_id, $node) {
- $node = (object)$node;
- if ($node->is_new || $node->revision) {
+/**
+ * Implementation of hook_update().
+ */
+function book_update($node) {
+ if ($node->revision) {
db_query("INSERT INTO {book} (nid, vid, parent, weight) VALUES (%d, %d, %d, %d)", $node->nid, $node->vid, $node->parent, $node->weight);
}
else {
@@ -203,16 +206,30 @@ function book_node_submit($form_id, $node) {
}
}
-function book_node_delete_confirm_submit($form_id, $form_values) {
- db_query('DELETE FROM {book} WHERE nid = %d OR parent = %d', $form_values['node']->nid, $form_values['node']->nid);
+/**
+ * Implementation of hook_delete().
+ */
+function book_delete(&$node) {
+ db_query('DELETE FROM {book} WHERE nid = %d', $node->nid);
}
/**
- * Implementation of hook_form().
+ * Implementation of hook_submit().
*/
-function book_form(&$node) {
+function book_submit(&$node) {
global $user;
+ // Set default values for non-administrators.
+ if (!user_access('administer nodes')) {
+ $node->revision = 1;
+ $book->uid = $user->uid;
+ $book->name = $user->uid ? $user->name : '';
+ }
+}
+/**
+ * Implementation of hook_form().
+ */
+function book_form(&$node) {
$type = node_get_types('type', $node);
if ($node->nid && !$node->parent && !user_access('create new books')) {
$form['parent'] = array('#type' => 'value', '#value' => $node->parent);
@@ -248,23 +265,22 @@ function book_form(&$node) {
'#description' => t('An explanation of the additions or updates being made to help other authors understand your motivations.'),
);
- $form['weight'] = array('#type' => 'weight',
- '#title' => t('Weight'),
- '#access' => user_access('administer nodes'),
- '#default_value' => $node->weight,
- '#delta' => 15,
- '#weight' => 5,
- '#description' => t('Pages at a given level are ordered first by weight and then by title.'),
- );
-
- if (!user_access('administer nodes')) {
+ if (user_access('administer nodes')) {
+ $form['weight'] = array('#type' => 'weight',
+ '#title' => t('Weight'),
+ '#default_value' => $node->weight,
+ '#delta' => 15,
+ '#weight' => 5,
+ '#description' => t('Pages at a given level are ordered first by weight and then by title.'),
+ );
+ }
+ else {
// If a regular user updates a book page, we preserve the node weight; otherwise
// we use 0 as the default for new pages
$form['weight'] = array(
'#type' => 'value',
'#value' => isset($node->weight) ? $node->weight : 0,
);
- $form['name'] = array('#type' => 'value', '#value' => $user->uid ? $user->name : '');
}
return $form;
@@ -465,6 +481,9 @@ function book_nodeapi(&$node, $op, $teaser, $page) {
case 'delete revision':
db_query('DELETE FROM {book} WHERE vid = %d', $node->vid);
break;
+ case 'delete':
+ db_query('DELETE FROM {book} WHERE nid = %d', $node->nid);
+ break;
}
}