function 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

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);
        }
    }
}