function context_condition_node_taxonomy::execute in Context 7.3
Same name and namespace in other branches
- 6.3 plugins/context_condition_node_taxonomy.inc \context_condition_node_taxonomy::execute()
- 6 plugins/context_condition_node_taxonomy.inc \context_condition_node_taxonomy::execute()
Overrides context_condition_node::execute
File
- plugins/
context_condition_node_taxonomy.inc, line 41
Class
- context_condition_node_taxonomy
- Expose node taxonomy terms as a context condition.
Code
function execute($node, $op) {
// build a list of each taxonomy reference field belonging to the bundle for the current node
$fields = field_info_fields();
$instance_fields = field_info_instances('node', $node->type);
$check_fields = array();
foreach ($instance_fields as $key => $field_info) {
if ($fields[$key]['type'] == 'taxonomy_term_reference') {
$check_fields[$key] = 'tid';
}
else {
if ($fields[$key]['type'] == 'entityreference' && $fields[$key]['settings']['target_type'] == 'taxonomy_term') {
$check_fields[$key] = 'target_id';
}
}
}
if ($this
->condition_used() && !empty($check_fields)) {
foreach ($check_fields as $field => $term_id_key) {
if ($terms = field_get_items('node', $node, $field)) {
foreach ($terms as $term) {
foreach ($this
->get_contexts($term[$term_id_key]) as $context) {
// Check the node form option.
if ($op === 'form') {
$options = $this
->fetch_from_context($context, 'options');
if (!empty($options['node_form'])) {
$this
->condition_met($context, $term[$term_id_key]);
}
}
else {
$this
->condition_met($context, $term[$term_id_key]);
}
}
}
}
}
}
}