function submenutree_nodeapi in Submenu Tree 6
Same name and namespace in other branches
- 5 submenutree.module \submenutree_nodeapi()
Implementation of hook_nodeapi().
File
- ./
submenutree.module, line 171
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 (empty($node->submenutree_enable) && empty($node->siblingmenutree_enable)) {
db_query('DELETE FROM {node_submenutree} WHERE nid = %d', $node->nid);
}
// deliberate fallthrough
case 'insert':
if ($node->submenutree_enable || $node->siblingmenutree_enable) {
// SQL INSERT or UPDATE depending on whether a row already exists
$num_rows = db_result(db_query('SELECT COUNT(*) FROM {node_submenutree} WHERE nid = %d', $node->nid));
if ($num_rows > 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 'presave':
// 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']) && user_access('administer submenu trees')) {
foreach ($node->menu['submenutree'] as $k => $v) {
$node->{$k} = $v;
}
}
if (!empty($node->menu['siblingmenutree']) && user_access('administer siblingmenu trees')) {
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;
}
}