function _forum_parent_select

7.x forum.admin.inc _forum_parent_select($tid, $title, $child_type)
6.x forum.admin.inc _forum_parent_select($tid, $title, $child_type)

Returns a select box for available parent terms

Parameters

$tid ID of the term which is being added or edited:

$title Title to display the select box with:

$child_type Whether the child is forum or container:

2 calls to _forum_parent_select()
forum_form_container in drupal-6.x/modules/forum/forum.admin.inc
Returns a form for adding a container to the forum vocabulary
forum_form_forum in drupal-6.x/modules/forum/forum.admin.inc
Returns a form for adding a forum to the forum vocabulary

File

drupal-6.x/modules/forum/forum.admin.inc, line 254
Administrative page callbacks for the forum module.

Code

function _forum_parent_select($tid, $title, $child_type) {

  $parents = taxonomy_get_parents($tid);
  if ($parents) {
    $parent = array_shift($parents);
    $parent = $parent->tid;
  }
  else {
    $parent = 0;
  }

  $vid = variable_get('forum_nav_vocabulary', '');
  $children = taxonomy_get_tree($vid, $tid);

  // A term can't be the child of itself, nor of its children.
  foreach ($children as $child) {
    $exclude[] = $child->tid;
  }
  $exclude[] = $tid;

  $tree = taxonomy_get_tree($vid);
  $options[0] = '<' . t('root') . '>';
  if ($tree) {
    foreach ($tree as $term) {
      if (!in_array($term->tid, $exclude)) {
        $options[$term->tid] = str_repeat(' -- ', $term->depth) . $term->name;
      }
    }
  }
  if ($child_type == 'container') {
    $description = t('Containers are usually placed at the top (root) level, but may also be placed inside another container or forum.');
  }
  else if ($child_type == 'forum') {
    $description = t('Forums may be placed at the top (root) level, or inside another container or forum.');
  }

  return array('#type' => 'select', '#title' => $title, '#default_value' => $parent, '#options' => $options, '#description' => $description, '#required' => TRUE);
}