function ctools_term_parent_context in Chaos Tool Suite (ctools) 7
Same name and namespace in other branches
- 6 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 - Plugin to provide an relationship handler for term parent.
File
- plugins/
relationships/ term_parent.inc, line 25 - 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('entity:taxonomy_term');
}
if (isset($context->data)) {
$result = db_query('SELECT t1.* FROM {taxonomy_term_hierarchy} t1 INNER JOIN {taxonomy_term_hierarchy} t2 ON t1.tid = t2.parent WHERE t2.tid = :tid', array(
':tid' => $context->data->tid,
))
->fetchAssoc();
// 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_query('SELECT * FROM {taxonomy_term_hierarchy} WHERE tid = :tid', array(
':tid' => $result['parent'],
))
->fetchAssoc();
}
}
// Load the term.
if ($result) {
$term = taxonomy_term_load($result['tid']);
return ctools_context_create('entity:taxonomy_term', $term);
}
}
}