You are here

function _taxonomy_menu_nodeapi_helper in Taxonomy menu 7

Same name and namespace in other branches
  1. 8 taxonomy_menu.module \_taxonomy_menu_nodeapi_helper()
  2. 6.2 taxonomy_menu.module \_taxonomy_menu_nodeapi_helper()
  3. 7.2 taxonomy_menu.module \_taxonomy_menu_nodeapi_helper()

Builds argument arrays calls taxonomy_menu_handler.

Parameters

string $op: The operation to be performed [update|insert|delete]

array $terms: The taxonomy terms.

$node: The node object.

3 calls to _taxonomy_menu_nodeapi_helper()
taxonomy_menu_node_delete in ./taxonomy_menu.module
Implements hook_node_delete().
taxonomy_menu_node_insert in ./taxonomy_menu.module
Implements hook_node_insert().
taxonomy_menu_node_update in ./taxonomy_menu.module
Implements hook_node_update().

File

./taxonomy_menu.module, line 521
Adds links to taxonomy terms into a menu.

Code

function _taxonomy_menu_nodeapi_helper($op, $terms = array(), $node) {
  foreach ($terms as $key => $tid) {

    // If taxonomy $term is false, then go to the next $term.
    // taxonomy_term_load($tid) returns FALSE if the term was not found.
    if (!($term = taxonomy_term_load($tid))) {
      continue;
    }

    // Update the menu for each term if necessary.
    $menu_name = variable_get(_taxonomy_menu_build_variable('vocab_menu', $term->vid), FALSE);
    $vocb_sync = variable_get(_taxonomy_menu_build_variable('sync', $term->vid), TRUE);
    $menu_num = variable_get(_taxonomy_menu_build_variable('display_num', $term->vid), TRUE);
    $menu_num_inc_children = variable_get(_taxonomy_menu_build_variable('display_num_incl_children', $term->vid), TRUE);
    $hide_empty = variable_get(_taxonomy_menu_build_variable('hide_empty_terms', $term->vid), FALSE);
    if ($menu_name && $vocb_sync && ($menu_num || $hide_empty)) {

      // Build argument array to save menu_item.
      $args = array(
        'tid' => $term->tid,
        'vid' => $term->vid,
        'term' => $term,
        'menu_name' => $menu_name,
        'mlid' => _taxonomy_menu_get_mlid($term->tid, $term->vid),
      );
      if ($op == 'delete') {

        /* Turn the op to 'update' here since we really do want to update the item
         * and not delete/recreate it, since the latter will break hierarchy and
         * customizations.
         */
        $op = 'update';
      }
      taxonomy_menu_handler($op, $args, $node);
      if ($hide_empty || $menu_num && $menu_num_inc_children) {
        _taxonomy_menu_update_all_parents($term, $menu_name);
      }
    }
  }
}