function submenutree_nodeapi in Submenu Tree 5
Same name and namespace in other branches
- 6 submenutree.module \submenutree_nodeapi()
Implementation of hook_nodeapi().
File
- ./
submenutree.module, line 163
Code
function submenutree_nodeapi(&$node, $op, $teaser, $page) {
switch ($op) {
case 'delete':
db_query('DELETE FROM {node_submenutree} WHERE nid = %d', $node->nid);
break;
case 'load':
$additions = db_fetch_array(db_query('SELECT submenutree_enable, submenutree_title, submenutree_display, submenutree_weight, siblingmenutree_enable, siblingmenutree_title, siblingmenutree_display, siblingmenutree_weight FROM {node_submenutree} WHERE nid = %d', $node->nid));
if ($additions) {
return $additions;
}
break;
case 'update':
if (!$node->submenutree_enable && !$node->siblingmenutree_enable) {
db_query('DELETE FROM {node_submenutree} WHERE nid = %d', $node->nid);
}
// deliberate fullthrough
case 'insert':
if ($node->submenutree_enable || $node->siblingmenutree_enable) {
// SQL INSERT or UPDATE depending on whether a row already exists
$result = db_num_rows(db_query('SELECT * FROM {node_submenutree} WHERE nid = %d', $node->nid));
if ($result > 0) {
db_query("UPDATE {node_submenutree} SET submenutree_enable = %d, submenutree_title = '%s', submenutree_display = %d, submenutree_weight = %d, siblingmenutree_enable = %d, siblingmenutree_title = '%s', siblingmenutree_display = %d, siblingmenutree_weight = %d WHERE nid = %d", $node->submenutree_enable, $node->submenutree_title, $node->submenutree_display, $node->submenutree_weight, $node->siblingmenutree_enable, $node->siblingmenutree_title, $node->siblingmenutree_display, $node->siblingmenutree_weight, $node->nid);
}
else {
db_query("INSERT INTO {node_submenutree} (nid, submenutree_enable, submenutree_title, submenutree_display, submenutree_weight, siblingmenutree_enable, siblingmenutree_title, siblingmenutree_display, siblingmenutree_weight) VALUES (%d, %d, '%s', %d, %d, %d, '%s', %d, %d)", $node->nid, $node->submenutree_enable, $node->submenutree_title, $node->submenutree_display, $node->submenutree_weight, $node->siblingmenutree_enable, $node->siblingmenutree_title, $node->siblingmenutree_display, $node->siblingmenutree_weight);
}
}
break;
case 'submit':
// copy fields from $node->menu['submenutree']['submenutree_*'] to ['submenutree_*'] if necessary
// Shouldn't drupal flatten these form fields already? Apparently not
if (!empty($node->menu['submenutree'])) {
foreach ($node->menu['submenutree'] as $k => $v) {
$node->{$k} = $v;
}
}
if (!empty($node->menu['siblingmenutree'])) {
foreach ($node->menu['siblingmenutree'] as $k => $v) {
$node->{$k} = $v;
}
}
break;
case 'view':
// Calling a helper function because it's too big to live in the switch
submenutree_nodeapi_view($node, $op, $teaser, $page);
break;
}
}