You are here

function ctools_term_parent_context in Chaos Tool Suite (ctools) 6

Same name and namespace in other branches
  1. 7 plugins/relationships/term_parent.inc \ctools_term_parent_context()

Return a new context based on an existing context.

1 string reference to 'ctools_term_parent_context'
term_parent.inc in plugins/relationships/term_parent.inc
relationships/term_parent.inc Plugin to provide an relationship handler for term parent.

File

plugins/relationships/term_parent.inc, line 25
relationships/term_parent.inc Plugin to provide an relationship handler for term parent.

Code

function ctools_term_parent_context($context, $conf) {

  // If unset it wants a generic, unfilled context, which is just NULL.
  if (empty($context->data)) {
    return ctools_context_create_empty('term');
  }
  if (isset($context->data)) {
    $result = db_fetch_array(db_query("SELECT t1.* FROM {term_hierarchy} t1 INNER JOIN {term_hierarchy} t2 ON t1.tid = t2.parent WHERE t2.tid = %d", $context->data->tid));

    // If top level term, keep looking up until we see a top level.
    if ($conf['type'] == 'top') {

      // If looking for top level, and there are no parents at all, make sure
      // the current term is the 'top level'.
      if (empty($result)) {
        $result['tid'] = $context->data->tid;
      }
      while (!empty($result['parent'])) {
        $result = db_fetch_array(db_query("SELECT * FROM {term_hierarchy} WHERE tid = %d", $result['parent']));
      }
    }

    // Load the term.
    if ($result) {
      $term = taxonomy_get_term($result['tid']);
      return ctools_context_create('term', $term);
    }
  }
}