=== modified file 'includes/common.inc'
--- includes/common.inc
+++ includes/common.inc
@@ -1108,6 +1108,19 @@ function drupal_page_footer() {
}
/**
+ * Insert an element into the specified position of the input array
+ * See http://www.php.net/manual/en/function.array-splice.php#56794
+ *
+ * @param array $array
+ * @param integer $position
+ * @param mixed $insert_array
+ */
+function drupal_array_insert (&$array, $position, $insert_array) {
+ $first_array = array_splice ($array, 0, $position);
+ $array = array_merge ($first_array, $insert_array, $array);
+}
+
+/**
* Form an associative array from a linear array.
*
* This function walks through the provided array and constructs an associative
=== modified file 'modules/book/book.module'
--- modules/book/book.module
+++ modules/book/book.module
@@ -186,18 +186,18 @@ function book_load($node) {
return db_fetch_object(db_query('SELECT * FROM {book} WHERE vid = %d', $node->vid));
}
-/**
- * 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_form_alter($form_id, &$form) {
+ if ($form_id == 'book_node_form') {
+ drupal_array_insert($form['#submit'], 1, array('book_node_submit' => array()));
+ }
+ elseif ($form_id == 'node_delete_confirm') {
+ $form['#submit']['book_node_delete_confirm_submit'] = array();
+ }
}
-/**
- * Implementation of hook_update().
- */
-function book_update($node) {
- if ($node->revision) {
+function book_node_submit($form_id, $node) {
+ $node = (object)$node;
+ if ($node->is_new || $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 {
@@ -205,11 +205,8 @@ function book_update($node) {
}
}
-/**
- * Implementation of hook_delete().
- */
-function book_delete(&$node) {
- db_query('DELETE FROM {book} WHERE nid = %d', $node->nid);
+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);
}
/**
@@ -480,9 +477,6 @@ function book_nodeapi(&$node, $op, $teas
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;
}
}
=== modified file 'modules/comment/comment.module'
--- modules/comment/comment.module
+++ modules/comment/comment.module
@@ -276,6 +276,7 @@ function comment_form_alter($form_id, &$
}
elseif (isset($form['type'])) {
if ($form['type']['#value'] .'_node_form' == $form_id) {
+ $form['#submit']['comment_node_submit'] = array();
$node = $form['#node'];
if (user_access('administer comments')) {
$form['comment_settings'] = array(
@@ -300,6 +301,10 @@ function comment_form_alter($form_id, &$
}
}
}
+
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['comment_node_delete_confirm_submit'] = array();
+ }
}
/**
@@ -318,15 +323,6 @@ function comment_nodeapi(&$node, $op, $a
}
break;
- case 'insert':
- db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->created, $node->uid);
- break;
-
- case 'delete':
- db_query('DELETE FROM {comments} WHERE nid = %d', $node->nid);
- db_query('DELETE FROM {node_comment_statistics} WHERE nid = %d', $node->nid);
- break;
-
case 'update index':
$text = '';
$comments = db_query('SELECT subject, comment, format FROM {comments} WHERE nid = %d AND status = %d', $node->nid, COMMENT_PUBLISHED);
@@ -349,6 +345,17 @@ function comment_nodeapi(&$node, $op, $a
}
}
+function comment_node_delete_confirm_submit($form_id, $form_values) {
+ db_query('DELETE FROM {comments} WHERE nid = %d', $form_values['node']->nid);
+ db_query('DELETE FROM {node_comment_statistics} WHERE nid = %d', $form_values['node']->nid);
+}
+
+function comment_node_submit($form_id, $node) {
+ if ($node->is_new) {
+ db_query('INSERT INTO {node_comment_statistics} (nid, last_comment_timestamp, last_comment_name, last_comment_uid, comment_count) VALUES (%d, %d, NULL, %d, 0)', $node->nid, $node->created, $node->uid);
+ }
+}
+
/**
* Implementation of hook_user().
*
=== modified file 'modules/forum/forum.module'
--- modules/forum/forum.module
+++ modules/forum/forum.module
@@ -232,6 +232,37 @@ function forum_form_alter($form_id, &$fo
unset($form['nodes']['forum']);
}
}
+
+ if ($form_id == 'forum_node_form') {
+ // add custom callbacks to beginning of validate and submit stacks
+ drupal_array_insert($form['#validate'], 1, array('forum_node_validate' => array()));
+ drupal_array_insert($form['#submit'], 1, array('forum_node_submit' => array()));
+ }
+
+ if ($form_id == 'node_delete_confirm' && $form['node']['#value']->type == 'forum') {
+ $form['#submit']['forum_node_delete_confirm_submit'] = array();
+ }
+}
+
+/**
+ * Check in particular that only a "leaf" term in the associated taxonomy
+ * vocabulary is selected, not a "container" term.
+ */
+function forum_node_validate($form_id, $node) {
+ $node = (object)$node;
+ if ($node->taxonomy) {
+ // Extract the node's proper topic ID.
+ $vocabulary = variable_get('forum_nav_vocabulary', '');
+ $containers = variable_get('forum_containers', array());
+ foreach ($node->taxonomy as $term) {
+ if (db_result(db_query('SELECT COUNT(*) FROM {term_data} WHERE tid = %d AND vid = %d', $term, $vocabulary))) {
+ if (in_array($term, $containers)) {
+ $term = taxonomy_get_term($term);
+ form_set_error('taxonomy', t('The item %forum is only a container for forums. Please select one of the forums below it.', array('%forum' => theme('placeholder', $term->name))));
+ }
+ }
+ }
+ }
}
/**
@@ -358,32 +389,8 @@ function forum_submit(&$node) {
}
}
-/**
- * Implementation of hook_validate().
- *
- * Check in particular that only a "leaf" term in the associated taxonomy
- * vocabulary is selected, not a "container" term.
- */
-function forum_validate($node) {
- if ($node->taxonomy) {
- // Extract the node's proper topic ID.
- $vocabulary = variable_get('forum_nav_vocabulary', '');
- $containers = variable_get('forum_containers', array());
- foreach ($node->taxonomy as $term) {
- if (db_result(db_query('SELECT COUNT(*) FROM {term_data} WHERE tid = %d AND vid = %d', $term, $vocabulary))) {
- if (in_array($term, $containers)) {
- $term = taxonomy_get_term($term);
- form_set_error('taxonomy', t('The item %forum is only a container for forums. Please select one of the forums below it.', array('%forum' => theme('placeholder', $term->name))));
- }
- }
- }
- }
-}
-
-/**
- * Implementation of hook_update().
- */
-function forum_update($node) {
+function forum_node_submit($form_id, $node) {
+ $node = (object)$node;
if ($node->revision) {
db_query("INSERT INTO {forum} (nid, vid, tid) VALUES (%d, %d, %d)", $node->nid, $node->vid, $node->tid);
}
@@ -423,18 +430,8 @@ function forum_prepare(&$node) {
}
}
-/**
- * Implementation of hook_insert().
- */
-function forum_insert($node) {
- db_query('INSERT INTO {forum} (nid, vid, tid) VALUES (%d, %d, %d)', $node->nid, $node->vid, $node->tid);
-}
-
-/**
- * Implementation of hook_delete().
- */
-function forum_delete(&$node) {
- db_query('DELETE FROM {forum} WHERE nid = %d', $node->nid);
+function forum_node_delete_confirm_submit($form_id, $form_values) {
+ db_query('DELETE FROM {forum} WHERE nid = %d', $form_values['node']->nid);
}
/**
=== modified file 'modules/menu/menu.module'
--- modules/menu/menu.module
+++ modules/menu/menu.module
@@ -144,31 +144,20 @@ function menu_block($op = 'list', $delta
}
}
-/**
- * Implementation of hook_nodeapi().
- */
-function menu_nodeapi(&$node, $op) {
-
- if (user_access('administer menu')) {
- switch ($op) {
- case 'insert':
- case 'update':
- if ($node->menu['delete']) {
- menu_node_form_delete($node);
- menu_rebuild();
- }
- elseif ($node->menu['title']) {
- $node->menu['path'] = ($node->menu['path']) ? $node->menu['path'] : "node/$node->nid";
- menu_edit_item_save($node->menu);
- menu_rebuild();
- }
- break;
+function menu_node_delete_confirm_submit($form_id, $form_values) {
+ menu_node_form_delete($form_values['node']);
+ menu_rebuild();
+}
- case 'delete':
- menu_node_form_delete($node);
- menu_rebuild();
- break;
- }
+function menu_node_submit($form_id, $node) {
+ if ($node->menu['delete']) {
+ menu_node_form_delete($node);
+ menu_rebuild();
+ }
+ elseif ($node->menu['title']) {
+ $node->menu['path'] = ($node->menu['path']) ? $node->menu['path'] : "node/$node->nid";
+ menu_edit_item_save($node->menu);
+ menu_rebuild();
}
}
@@ -195,6 +184,8 @@ function menu_form_alter($form_id, &$for
$item = !is_array($item) ? $edit['menu'] : (($_POST['op'] == t('Preview')) ? array_merge($item, $edit['menu']) : array_merge($edit['menu'], $item));
}
}
+
+ $form['#submit']['menu_node_submit'] = array();
$form['menu'] = array('#type' => 'fieldset',
'#title' => t('Menu settings'),
@@ -255,6 +246,10 @@ function menu_form_alter($form_id, &$for
);
}
}
+
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['menu_node_delete_confirm_submit'] = array();
+ }
}
/**
=== modified file 'modules/node/node.module'
--- modules/node/node.module
+++ modules/node/node.module
@@ -601,16 +601,6 @@ function node_save(&$node) {
db_query($node_query, $node_table_values);
db_query($revisions_query, $revisions_table_values);
- // Call the node specific callback (if any):
- if ($node->is_new) {
- node_invoke($node, 'insert');
- node_invoke_nodeapi($node, 'insert');
- }
- else {
- node_invoke($node, 'update');
- node_invoke_nodeapi($node, 'update');
- }
-
// Update the node access table for this node.
node_access_acquire_grants($node);
@@ -1781,7 +1771,7 @@ function node_submit($node) {
}
}
- // Do node-type-specific validation checks.
+ // Let modules make changes before saving. Node has been validated and is guaranteed to be saved momentarily.
node_invoke($node, 'submit');
node_invoke_nodeapi($node, 'submit');
@@ -1822,10 +1812,6 @@ function node_validate($node, $form = ar
form_set_error('date', t('You have to specify a valid date.'));
}
}
-
- // Do node-type-specific validation checks.
- node_invoke($node, 'validate', $form);
- node_invoke_nodeapi($node, 'validate', $form);
}
function node_form_validate($form_id, $form_values, $form) {
@@ -2105,11 +2091,10 @@ function theme_node_log_message($log) {
return '
'. t('Log') .':
'. $log .'
';
}
-function node_form_submit($form_id, $edit) {
+function node_form_submit($form_id, &$node) {
global $user;
-
// Fix up the node when required:
- $node = node_submit($edit);
+ $node = node_submit($node);
// Prepare the node's body:
if ($node->nid) {
@@ -2150,14 +2135,11 @@ function node_delete_confirm() {
$edit['nid'] = $edit['nid'] ? $edit['nid'] : arg(1);
$node = node_load($edit['nid']);
- if (node_access('delete', $node)) {
- $form['nid'] = array('#type' => 'value', '#value' => $node->nid);
- $output = confirm_form('node_delete_confirm', $form,
- t('Are you sure you want to delete %title?', array('%title' => theme('placeholder', $node->title))),
- $_GET['destination'] ? $_GET['destination'] : 'node/'. $node->nid, t('This action cannot be undone.'),
- t('Delete'), t('Cancel') );
- }
-
+ $form['node'] = array('#type' => 'value', '#value' => $node);
+ $output = confirm_form('node_delete_confirm', $form,
+ t('Are you sure you want to delete %title?', array('%title' => theme('placeholder', $node->title))),
+ $_GET['destination'] ? $_GET['destination'] : 'node/'. $node->nid, t('This action cannot be undone.'),
+ t('Delete'), t('Cancel') );
return $output;
}
@@ -2165,10 +2147,7 @@ function node_delete_confirm() {
* Execute node deletion
*/
function node_delete_confirm_submit($form_id, $form_values) {
- if ($form_values['confirm']) {
- node_delete($form_values['nid']);
- }
-
+ node_delete($form_values['node']->nid);
return '';
}
@@ -2183,10 +2162,6 @@ function node_delete($nid) {
db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);
- // Call the node-specific callback (if any):
- node_invoke($node, 'delete');
- node_invoke_nodeapi($node, 'delete');
-
// Clear the cache so an anonymous poster can see the node being deleted.
cache_clear_all();
=== modified file 'modules/path/path.module'
--- modules/path/path.module
+++ modules/path/path.module
@@ -205,16 +205,6 @@ function path_form($edit = '') {
function path_nodeapi(&$node, $op, $arg) {
if (user_access('create url aliases') || user_access('administer url aliases')) {
switch ($op) {
- case 'validate':
- $node->path = trim($node->path);
- if ($node->path && !valid_url($node->path)) {
- form_set_error('path', t('The path is invalid.'));
- }
- else if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s'", $node->path, "node/$node->nid"))) {
- form_set_error('path', t('The path is already in use.'));
- }
- break;
-
case 'load':
$path = "node/$node->nid";
// We don't use drupal_get_path_alias() to avoid custom rewrite functions.
@@ -224,27 +214,37 @@ function path_nodeapi(&$node, $op, $arg)
$node->path = db_result($result);
}
break;
+ }
+ }
+}
- case 'insert':
- // Don't try to insert if path is NULL. We may have already set
- // the alias ahead of time.
- if ($node->path) {
- path_set_alias("node/$node->nid", $node->path);
- }
- break;
-
- case 'update':
- path_set_alias("node/$node->nid", $node->path, $node->pid);
- break;
+function path_node_delete_confirm_submit($form_id, $form_values) {
+ $path = 'node/'. $form_values['node']->nid;
+ if (drupal_get_path_alias($path) != $path) {
+ path_set_alias($path);
+ }
+}
- case 'delete':
- $path = "node/$node->nid";
- if (drupal_get_path_alias($path) != $path) {
- path_set_alias($path);
- }
- break;
+function path_node_submit($form_id, $node) {
+ if ($node->is_new) {
+ // Don't try to insert if path is NULL. We may have already set the alias ahead of time.
+ if ($node->path) {
+ path_set_alias("node/$node->nid", $node->path);
}
}
+ else {
+ path_set_alias("node/$node->nid", $node->path, $node->pid);
+ }
+}
+
+function path_node_validate($form_id, $node) {
+ $node['path'] = trim($node['path']);
+ if ($node['path'] && !valid_url($node['path'])) {
+ form_set_error('path', t('The path is invalid.'));
+ }
+ else if (db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s' AND src != '%s'", $node['path'], 'node/'. $node['nid']))) {
+ form_set_error('path', t('The path is already in use.'));
+ }
}
/**
@@ -252,6 +252,9 @@ function path_nodeapi(&$node, $op, $arg)
*/
function path_form_alter($form_id, &$form) {
if (user_access('create url aliases') && isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
+ $form['#validate']['path_node_validate'] = array();
+ $form['#submit']['path_node_submit'] = array();
+
$path = $form['#node']->path;
$form['path'] = array(
'#type' => 'fieldset',
@@ -275,6 +278,10 @@ function path_form_alter($form_id, &$for
);
}
}
+
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['path_node_delete_confirm_submit'] = array();
+ }
}
=== modified file 'modules/poll/poll.module'
--- modules/poll/poll.module
+++ modules/poll/poll.module
@@ -78,13 +78,10 @@ function poll_cron() {
}
}
-/**
- * Implementation of hook_delete().
- */
-function poll_delete($node) {
- db_query("DELETE FROM {poll} WHERE nid = %d", $node->nid);
- db_query("DELETE FROM {poll_choices} WHERE nid = %d", $node->nid);
- db_query("DELETE FROM {poll_votes} WHERE nid = %d", $node->nid);
+function poll_node_delete_confirm_submit($form_id, $form_values) {
+ db_query("DELETE FROM {poll} WHERE nid = %d", $form_values['node']->nid);
+ db_query("DELETE FROM {poll_choices} WHERE nid = %d", $form_values['node']->nid);
+ db_query("DELETE FROM {poll_votes} WHERE nid = %d", $form_values['node']->nid);
}
/**
@@ -96,28 +93,35 @@ function poll_submit(&$node) {
$node->teaser = poll_teaser($node);
}
-/**
- * Implementation of hook_validate().
- */
-function poll_validate($node) {
- if (isset($node->title)) {
- // Check for at least two options and validate amount of votes:
- $realchoices = 0;
- // Renumber fields
- $node->choice = array_values($node->choice);
- foreach ($node->choice as $i => $choice) {
- if ($choice['chtext'] != '') {
- $realchoices++;
- }
- if ($choice['chvotes'] < 0) {
- form_set_error("choice][$i][chvotes", t('Negative values are not allowed.'));
- }
+function poll_node_validate($form_id, $node) {
+ $node = (object)$node;
+ // Check for at least two options and validate amount of votes:
+ $realchoices = 0;
+ // Renumber fields
+ $node->choice = array_values($node->choice);
+ foreach ($node->choice as $i => $choice) {
+ if ($choice['chtext'] != '') {
+ $realchoices++;
}
-
- if ($realchoices < 2) {
- form_set_error("choice][$realchoices][chtext", t('You must fill in at least two choices.'));
+ if ($choice['chvotes'] < 0) {
+ form_set_error("choice][$i][chvotes", t('Negative values are not allowed.'));
}
}
+
+ if ($realchoices < 2) {
+ form_set_error("choice][$realchoices][chtext", t('You must fill in at least two choices.'));
+ }
+}
+
+function poll_form_alter($form_id, &$form) {
+ if ($form_id == 'poll_node_form') {
+ // add custom callbacks to beginning of validate and submit stacks
+ drupal_array_insert($form['#validate'], 1, array('poll_node_validate' => array()));
+ drupal_array_insert($form['#submit'], 1, array('poll_node_submit' => array()));
+ }
+ elseif ($form_id == 'node_delete_confirm' && $form['node']['#value']->type == 'poll') {
+ $form['#submit']['poll_node_delete_confirm_submit'] = array();
+ }
}
/**
@@ -575,12 +579,18 @@ function poll_view($node, $teaser = FALS
return $node;
}
-/**
- * Implementation of hook_update().
- */
+function poll_node_submit($form_id, $node) {
+ $node = (object)$node;
+ if ($node->is_new) {
+ poll_insert($node);
+ }
+ else {
+ poll_update($node);
+ }
+}
+
function poll_update($node) {
db_query('UPDATE {poll} SET runtime = %d, active = %d WHERE nid = %d', $node->runtime, $node->active, $node->nid);
-
db_query('DELETE FROM {poll_choices} WHERE nid = %d', $node->nid);
db_query('DELETE FROM {poll_votes} WHERE nid = %d', $node->nid);
=== modified file 'modules/statistics/statistics.module'
--- modules/statistics/statistics.module
+++ modules/statistics/statistics.module
@@ -533,14 +533,13 @@ function _statistics_format_item($title,
return $output;
}
-/**
- * Implementation of hook_nodeapi().
- */
-function statistics_nodeapi(&$node, $op, $arg = 0) {
- switch ($op) {
- case 'delete':
- // clean up statistics table when node is deleted
- db_query('DELETE FROM {node_counter} WHERE nid = %d', $node->nid);
+function statistics_node_delete_confirm_submit($form_id, $form_values) {
+ db_query('DELETE FROM {node_counter} WHERE nid = %d', $form_values['node']->nid);
+}
+
+function statistics_form_alter($form_id, &$form) {
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['statistics_node_delete_confirm_submit'] = array();
}
}
=== modified file 'modules/taxonomy/taxonomy.module'
--- modules/taxonomy/taxonomy.module
+++ modules/taxonomy/taxonomy.module
@@ -601,8 +601,11 @@ function taxonomy_get_vocabularies($type
*/
function taxonomy_form_alter($form_id, &$form) {
if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id) {
+ // inject custom validate and submit handlers
+ $form['#validate']['taxonomy_node_validate'] = array();
+ $form['#submit']['taxonomy_node_submit'] = array();
+
$node = $form['#node'];
-
if (!isset($node->taxonomy)) {
if ($node->nid) {
$terms = taxonomy_node_get_terms($node->nid);
@@ -667,6 +670,10 @@ function taxonomy_form_alter($form_id, &
$form['taxonomy'] += array('#type' => 'fieldset', '#title' => t('Categories'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#tree' => TRUE, '#weight' => -3);
}
}
+
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['taxonomy_node_delete_confirm_submit'] = array();
+ }
}
/**
@@ -700,9 +707,9 @@ function taxonomy_node_get_terms($nid, $
/**
* Make sure incoming vids are free tagging enabled.
*/
-function taxonomy_node_validate(&$node) {
- if ($node->taxonomy) {
- $terms = $node->taxonomy;
+function taxonomy_node_validate($form_id, $node) {
+ if ($node['taxonomy']) {
+ $terms = $node['taxonomy'];
if ($terms['tags']) {
foreach ($terms['tags'] as $vid => $vid_value) {
$vocabulary = taxonomy_get_vocabulary($vid);
@@ -719,14 +726,14 @@ function taxonomy_node_validate(&$node)
/**
* Save term associations for a given node.
*/
-function taxonomy_node_save($nid, $terms) {
- taxonomy_node_delete($nid);
+function taxonomy_node_submit($form_id, $node) {
+ taxonomy_node_delete($node->nid);
// Free tagging vocabularies do not send their tids in the form,
// so we'll detect them here and process them independently.
- if (isset($terms['tags'])) {
- $typed_input = $terms['tags'];
- unset($terms['tags']);
+ if (isset($node->taxonomy['tags'])) {
+ $typed_input = $node->taxonomy['tags'];
+ unset($node->taxonomy['tags']);
foreach ($typed_input as $vid => $vid_value) {
// This regexp allows the following types of user input:
@@ -762,27 +769,27 @@ function taxonomy_node_save($nid, $terms
// Defend against duplicate, different cased tags
if (!isset($inserted[$typed_term_tid])) {
- db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $typed_term_tid);
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $node->nid, $typed_term_tid);
$inserted[$typed_term_tid] = TRUE;
}
}
}
}
- if (is_array($terms)) {
- foreach ($terms as $term) {
+ if (is_array($node->taxonomy)) {
+ foreach ($node->taxonomy as $term) {
if (is_array($term)) {
foreach ($term as $tid) {
if ($tid) {
- db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $tid);
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $node->nid, $tid);
}
}
}
else if (is_object($term)) {
- db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $term->tid);
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $node->nid, $term->tid);
}
else if ($term) {
- db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $nid, $term);
+ db_query('INSERT INTO {term_node} (nid, tid) VALUES (%d, %d)', $node->nid, $term);
}
}
}
@@ -1159,18 +1166,6 @@ function taxonomy_nodeapi($node, $op, $a
case 'load':
$output['taxonomy'] = taxonomy_node_get_terms($node->nid);
return $output;
- case 'insert':
- taxonomy_node_save($node->nid, $node->taxonomy);
- break;
- case 'update':
- taxonomy_node_save($node->nid, $node->taxonomy);
- break;
- case 'delete':
- taxonomy_node_delete($node->nid);
- break;
- case 'validate':
- taxonomy_node_validate($node);
- break;
case 'rss item':
return taxonomy_rss_item($node);
case 'update index':
@@ -1178,6 +1173,10 @@ function taxonomy_nodeapi($node, $op, $a
}
}
+function taxonomy_node_confirm_delete_submit($form_id, $form_values) {
+ taxonomy_node_delete($form_values['node']->nid);
+}
+
/**
* Implementation of hook_nodeapi('update_index').
*/
=== modified file 'modules/upload/upload.module'
--- modules/upload/upload.module
+++ modules/upload/upload.module
@@ -360,6 +360,8 @@ function upload_form_alter($form_id, &$f
if (isset($form['type'])) {
$node = $form['#node'];
if ($form['type']['#value'] .'_node_form' == $form_id && variable_get("upload_$node->type", TRUE) && user_access('upload files')) {
+ $form['#validate']['upload_node_validate'] = array();
+ $form['#submit']['upload_node_submit'] = array();
drupal_add_js('misc/progress.js');
drupal_add_js('misc/upload.js');
@@ -384,9 +386,14 @@ function upload_form_alter($form_id, &$f
$form['#attributes']['enctype'] = 'multipart/form-data';
}
}
+
+ if ($form_id == 'node_delete_confirm') {
+ $form['#submit']['upload_node_delete_confirm_submit'] = array();
+ }
}
-function _upload_validate(&$node) {
+function upload_node_validate($form_id, $node) {
+ $node = (object)$node;
// Accumulator for disk space quotas.
$filesize = 0;
@@ -478,10 +485,6 @@ function upload_nodeapi(&$node, $op, $te
_upload_prepare($node);
break;
- case 'validate':
- _upload_validate($node);
- break;
-
case 'view':
if (isset($node->files) && user_access('view uploaded files')) {
// Add the attachments list to node body with a heavy
@@ -516,18 +519,6 @@ function upload_nodeapi(&$node, $op, $te
}
}
break;
-
- case 'insert':
- case 'update':
- if (user_access('upload files')) {
- upload_save($node);
- }
- break;
-
- case 'delete':
- upload_delete($node);
- break;
-
case 'delete revision':
upload_delete_revision($node);
break;
@@ -574,6 +565,12 @@ function upload_fix_preview_urls($elemen
}
}
+function upload_node_submit($form_id, $node) {
+ if (user_access('upload files')) {
+ upload_save($node);
+ }
+}
+
/**
* Displays file attachments in table
*/
@@ -725,9 +722,9 @@ function upload_save($node) {
}
}
-function upload_delete($node) {
+function upload_node_delete_confirm_submit($form_id, $form_values) {
$files = array();
- $result = db_query('SELECT * FROM {files} WHERE nid = %d', $node->nid);
+ $result = db_query('SELECT * FROM {files} WHERE nid = %d', $form_values['node']->nid);
while ($file = db_fetch_object($result)) {
$files[$file->fid] = $file;
}
@@ -739,7 +736,7 @@ function upload_delete($node) {
}
// Delete all files associated with the node
- db_query('DELETE FROM {files} WHERE nid = %d', $node->nid);
+ db_query('DELETE FROM {files} WHERE nid = %d', $form_values['node']->nid);
}
function upload_delete_revision($node) {
@@ -879,7 +876,7 @@ function upload_js() {
// Handle new uploads, and merge tmp files into node-files.
_upload_prepare($node);
- _upload_validate($node);
+ upload_node_validate(NULL, $node);
$form = _upload_form($node);
foreach (module_implements('form_alter') as $module) {
=== modified file 'sites/default/settings.php'
--- sites/default/settings.php
+++ sites/default/settings.php
@@ -84,7 +84,7 @@
* $db_url = 'mysqli://username:password@localhost/databasename';
* $db_url = 'pgsql://username:password@localhost/databasename';
*/
-$db_url = 'mysql://username:password@localhost/databasename';
+$db_url = 'mysql://root:root@localhost%3A8889/bzrnodeapi';
$db_prefix = '';
/**