upgrade omega again
[indybay:drupal.git] / docs / sites / all / modules / contrib / context / context.api.php
1 <?php
2
3 /**
4  * @file
5  * Hooks provided by Context.
6  */
7
8 /**
9  * CTools plugin API hook for Context. Note that a proper entry in
10  * hook_ctools_plugin_api() must exist for this hook to be called.
11  */
12 function hook_context_plugins() {
13   $plugins = array();
14   $plugins['foo_context_condition_bar'] = array(
15     'handler' => array(
16       'path' => drupal_get_path('module', 'foo') .'/plugins',
17       'file' => 'foo_context_condition_bar.inc',
18       'class' => 'foo_context_condition_bar',
19       'parent' => 'context_condition',
20     ),
21   );
22   $plugins['foo_context_reaction_baz'] = array(
23     'handler' => array(
24       'path' => drupal_get_path('module', 'foo') .'/plugins',
25       'file' => 'foo_context_reaction_baz.inc',
26       'class' => 'foo_context_reaction_baz',
27       'parent' => 'context_reaction',
28     ),
29   );
30   return $plugins;
31 }
32
33 /**
34  * Registry hook for conditions & reactions.
35  *
36  * Each entry associates a condition or reaction with the CTools plugin to be
37  * used as its plugin class.
38  */
39 function hook_context_registry() {
40   return array(
41     'conditions' => array(
42       'bar' => array(
43         'title' => t('Name of condition "bar"'),
44         'plugin' => 'foo_context_condition_bar',
45       ),
46     ),
47     'reactions' => array(
48       'baz' => array(
49         'title' => t('Name of reaction "baz"'),
50         'plugin' => 'foo_context_reaction_baz',
51       ),
52     ),
53   );
54 }
55
56 /**
57  * Execute Context page conditions
58  *
59  * Allows modules to hook into Context's hook_page_build to execute their
60  * conditions at an appropriate time before the firing of reactions.
61  */
62 function hook_context_page_condition() {
63   if ($plugin = context_get_plugin('condition', 'bar')) {
64     $plugin->execute();
65   }
66 }
67
68 /**
69  * Execute Context page reactions
70  *
71  * Allows modules to hook into Context's hook_page_build to execute their
72  * reactions at an appropriate time after the firing of conditions.
73  */
74 function hook_context_page_reaction() {
75   if ($plugin = context_get_plugin('reaction', 'baz')) {
76     $plugin->execute();
77   }
78 }
79
80 /**
81  * Alter the registry.
82  *
83  * Allows modules to alter the registry. Default plugins can be replaced by
84  * custom ones declared in hook_context_plugins().
85  *
86  * @param $registry
87  *   The registry, passed by reference.
88  */
89 function hook_context_registry_alter(&$registry) {
90   if (isset($registry['reactions']['baz'])) {
91     $registry['reactions']['baz']['plugin'] = 'custom_context_reaction_baz';
92   }
93 }
94
95 /**
96  * Alter/add a condition to a node-related event.
97  *
98  * Allows modules to add one or more context condition plugin executions to a
99  * node view, form, etc.
100  *
101  * @param $node
102  *   The node object.
103  * @param $op
104  *   The node-related operation: 'node', 'form', 'comment'.
105  */
106 function hook_context_node_condition_alter(&$node, $op) {
107   if ($plugin = context_get_plugin('condition', 'bar')) {
108     $plugin->execute($node, $op);
109   }
110 }
111
112 /**
113  * Alter a context directly after it has been loaded. Allows modules to alter
114  * a context object's reactions. While you may alter conditions, this will
115  * generally have no effect as conditions are cached for performance and
116  * contexts are loaded after conditions are checked, not before.
117  *
118  * @param &$context
119  *   The context object by reference.
120  */
121 function hook_context_load_alter(&$context) {
122   if ($context->name === 'foo' && isset($context->reactions['block'])) {
123     $context->reactions['block']['blocks']['locale-0'] = array(
124       'module' => 'locale',
125       'delta' => '0',
126       'region' => 'header',
127       'weight' => '2',
128     );
129   }
130 }