From 2ca7eb7152f4a90d89e2f17ffd2b0ccf2369a844 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 28 Apr 2004 20:23:30 +0000 Subject: - Patch #6612 by JonBob: extended the node API with new hooks. --- modules/node.module | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) (limited to 'modules/node.module') diff --git a/modules/node.module b/modules/node.module index ab03f2b10..6b827f269 100644 --- a/modules/node.module +++ b/modules/node.module @@ -312,12 +312,12 @@ function node_invoke(&$node, $hook, $a2 = NULL, $a3 = NULL, $a4 = NULL) { } } -function node_invoke_nodeapi(&$node, $op, $arg = 0) { +function node_invoke_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { $return = array(); foreach (module_list() as $name) { $function = $name .'_nodeapi'; if (function_exists($function)) { - $result = $function($node, $op, $arg); + $result = $function($node, $op, $a3, $a4); if (isset($result)) { $return = array_merge($return, $result); } @@ -362,6 +362,12 @@ function node_load($conditions, $revision = -1) { } } + if ($extra = node_invoke_nodeapi($node, 'load')) { + foreach ($extra as $key => $value) { + $node->$key = $value; + } + } + /* ** Return the desired revision */ @@ -477,6 +483,9 @@ function node_view($node, $main = 0, $page = 0) { $node->body = str_replace('', '', $node->body); + // Allow modules to change $node->body before viewing. + node_invoke_nodeapi($node, 'view', $main, $page); + /* ** The 'view' hook can be implemented to overwrite the default function ** to display nodes. @@ -780,24 +789,6 @@ function node_admin_settings($edit) { $output .= theme('table', $header, $rows); - /* This is an idea for the future. - foreach (node_list() as $type) { - $node->type = $type; - - // Create theme('table', ) data: - $header = array_keys(node_invoke_nodeapi($node, 'settings')); - $cols = array(); - foreach (node_invoke_nodeapi($node, 'settings') as $setting) { - $cols[] = array('data' => $setting, 'align' => 'center', 'width' => 75); - } - - $output .= '

'. node_invoke($node, 'node_name') .'

'; - $output .= theme('table', $header, array($cols)); - $output .= '

'; - } - } - */ - $output .= form_submit(t('Save configuration')); $output .= form_submit(t('Reset to defaults')); @@ -1188,7 +1179,7 @@ function node_form($edit, $error = NULL) { $output .= form_group(t('Options'), $options); $output .= "\n"; - $extras .= implode("
", node_invoke_nodeapi($edit, 'form admin')); + $extras .= implode("
", node_invoke_nodeapi($edit, 'form admin', $error)); $output .= $extras ? "
$extras
" : ""; } @@ -1247,6 +1238,16 @@ function node_form($edit, $error = NULL) { $output .= ""; + $extra = node_invoke_nodeapi($edit, "form param"); + foreach ($extra as $key => $value) { + if (is_array($value)) { + $param[$key] = array_merge($param[$key], $value); + } + else { + $param[$key] = $value; + } + } + return form($output, ($param['method'] ? $param['method'] : 'post'), $param['action'], array_merge($param['options'], array('id' => 'node-form'))); } -- cgit v1.2.3