upgrade omega again
[indybay:drupal.git] / docs / sites / all / modules / contrib / context / plugins / context_condition_node.inc
1 <?php
2
3 /**
4  * Trigger context on node view only.
5  */
6 define('CONTEXT_NODE_VIEW', 0);
7
8 /**
9  * Trigger context on node view and node form.
10  */
11 define('CONTEXT_NODE_FORM', 1);
12
13 /**
14  * Trigger context on node form only.
15  */
16 define('CONTEXT_NODE_FORM_ONLY', 2);
17
18 /**
19  * Expose node views/node forms of specific node types as a context condition.
20  */
21 class context_condition_node extends context_condition {
22   function condition_values() {
23     $values = array();
24     foreach (node_type_get_types() as $type) {
25       $values[$type->type] = check_plain($type->name);
26     }
27     return $values;
28   }
29
30   function options_form($context) {
31     $defaults = $this->fetch_from_context($context, 'options');
32     return array(
33       'node_form' => array(
34         '#title' => t('Set on node form'),
35         '#type' => 'select',
36         '#options' => array(
37            CONTEXT_NODE_VIEW => t('No'),
38            CONTEXT_NODE_FORM => t('Yes'),
39            CONTEXT_NODE_FORM_ONLY => t('Only on node form')
40         ),
41         '#description' => t('Set this context on node forms'),
42         '#default_value' => isset($defaults['node_form']) ? $defaults['node_form'] : TRUE,
43       ),
44     );
45   }
46
47   function execute($node, $op) {
48     foreach ($this->get_contexts($node->type) as $context) {
49       // Check the node form option.
50       $options = $this->fetch_from_context($context, 'options');
51       if ($op === 'form') {
52         $options = $this->fetch_from_context($context, 'options');
53         if (!empty($options['node_form']) && in_array($options['node_form'], array(CONTEXT_NODE_FORM, CONTEXT_NODE_FORM_ONLY))) {
54           $this->condition_met($context, $node->type);
55         }
56       }
57       elseif (empty($options['node_form']) || $options['node_form'] != CONTEXT_NODE_FORM_ONLY) {
58         $this->condition_met($context, $node->type);
59       }
60     }
61   }
62 }