You are here

function submenutree_nodeapi in Submenu Tree 5

Same name and namespace in other branches
  1. 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;
  }
}