You are here

function smartqueue_taxonomy_get_parents in Nodequeue 6.2

Same name and namespace in other branches
  1. 7.3 smartqueue.module \smartqueue_taxonomy_get_parents()
  2. 7.2 modules/smartqueue/smartqueue.module \smartqueue_taxonomy_get_parents()

Get the top-level parents of the given taxonomy terms.

Parameters

$tids, an array of taxonomy IDs:

Return value

an array of taxonomy IDs

1 call to smartqueue_taxonomy_get_parents()
smartqueue_taxonomy_nodequeue_subqueues in ./smartqueue.module
Implementation of hook_nodequeue_subqueues()

File

./smartqueue.module, line 338

Code

function smartqueue_taxonomy_get_parents($tids) {
  if ($tids) {
    $top_level_tids = array();
    foreach ($tids as $tid) {
      $result = db_query(db_rewrite_sql("SELECT t.tid, t.* FROM {term_data} t INNER JOIN {term_hierarchy} h ON h.parent = t.tid WHERE h.tid = %d ORDER BY weight, name", 't', 'tid'), $tid);
      $parents = array();

      // This will filter out some duplicates.
      while ($parent = db_fetch_object($result)) {
        $parents[$parent->tid] = $parent->tid;
      }
      if (count($parents)) {
        $parent_tid = smartqueue_taxonomy_get_parents($parents);
        $top_level_tids = array_merge($parent_tid, $top_level_tids);
      }
      else {
        $top_level_tids[] = $tid;
      }
    }
    return array_unique($top_level_tids);
  }
  else {
    return array();
  }
}