142 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * @file
 | 
						|
 * Hooks provided by Context.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * CTools plugin API hook for Context. Note that a proper entry in
 | 
						|
 * hook_ctools_plugin_api() must exist for this hook to be called.
 | 
						|
 */
 | 
						|
function hook_context_plugins() {
 | 
						|
  $plugins = array();
 | 
						|
  $plugins['foo_context_condition_bar'] = array(
 | 
						|
    'handler' => array(
 | 
						|
      'path' => drupal_get_path('module', 'foo') .'/plugins',
 | 
						|
      'file' => 'foo_context_condition_bar.inc',
 | 
						|
      'class' => 'foo_context_condition_bar',
 | 
						|
      'parent' => 'context_condition',
 | 
						|
    ),
 | 
						|
  );
 | 
						|
  $plugins['foo_context_reaction_baz'] = array(
 | 
						|
    'handler' => array(
 | 
						|
      'path' => drupal_get_path('module', 'foo') .'/plugins',
 | 
						|
      'file' => 'foo_context_reaction_baz.inc',
 | 
						|
      'class' => 'foo_context_reaction_baz',
 | 
						|
      'parent' => 'context_reaction',
 | 
						|
    ),
 | 
						|
  );
 | 
						|
  return $plugins;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Registry hook for conditions & reactions.
 | 
						|
 *
 | 
						|
 * Each entry associates a condition or reaction with the CTools plugin to be
 | 
						|
 * used as its plugin class.
 | 
						|
 */
 | 
						|
function hook_context_registry() {
 | 
						|
  return array(
 | 
						|
    'conditions' => array(
 | 
						|
      'bar' => array(
 | 
						|
        'title' => t('Name of condition "bar"'),
 | 
						|
        'plugin' => 'foo_context_condition_bar',
 | 
						|
      ),
 | 
						|
    ),
 | 
						|
    'reactions' => array(
 | 
						|
      'baz' => array(
 | 
						|
        'title' => t('Name of reaction "baz"'),
 | 
						|
        'plugin' => 'foo_context_reaction_baz',
 | 
						|
      ),
 | 
						|
    ),
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Execute Context page conditions
 | 
						|
 *
 | 
						|
 * Allows modules to hook into Context's hook_page_build to execute their
 | 
						|
 * conditions at an appropriate time before the firing of reactions.
 | 
						|
 */
 | 
						|
function hook_context_page_condition() {
 | 
						|
  if ($plugin = context_get_plugin('condition', 'bar')) {
 | 
						|
    $plugin->execute();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Execute Context page reactions
 | 
						|
 *
 | 
						|
 * Allows modules to hook into Context's hook_page_build to execute their
 | 
						|
 * reactions at an appropriate time after the firing of conditions.
 | 
						|
 */
 | 
						|
function hook_context_page_reaction() {
 | 
						|
  if ($plugin = context_get_plugin('reaction', 'baz')) {
 | 
						|
    $plugin->execute();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Alter the registry.
 | 
						|
 *
 | 
						|
 * Allows modules to alter the registry. Default plugins can be replaced by
 | 
						|
 * custom ones declared in hook_context_plugins().
 | 
						|
 *
 | 
						|
 * @param $registry
 | 
						|
 *   The registry, passed by reference.
 | 
						|
 */
 | 
						|
function hook_context_registry_alter(&$registry) {
 | 
						|
  if (isset($registry['reactions']['baz'])) {
 | 
						|
    $registry['reactions']['baz']['plugin'] = 'custom_context_reaction_baz';
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Alter/add a condition to a node-related event.
 | 
						|
 *
 | 
						|
 * Allows modules to add one or more context condition plugin executions to a
 | 
						|
 * node view, form, etc.
 | 
						|
 *
 | 
						|
 * @param $node
 | 
						|
 *   The node object.
 | 
						|
 * @param $op
 | 
						|
 *   The node-related operation: 'node', 'form', 'comment'.
 | 
						|
 */
 | 
						|
function hook_context_node_condition_alter(&$node, $op) {
 | 
						|
  if ($plugin = context_get_plugin('condition', 'bar')) {
 | 
						|
    $plugin->execute($node, $op);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Alter a context directly after it has been loaded. Allows modules to alter
 | 
						|
 * a context object's reactions. While you may alter conditions, this will
 | 
						|
 * generally have no effect as conditions are cached for performance and
 | 
						|
 * contexts are loaded after conditions are checked, not before.
 | 
						|
 *
 | 
						|
 * @param &$context
 | 
						|
 *   The context object by reference.
 | 
						|
 */
 | 
						|
function hook_context_load_alter(&$context) {
 | 
						|
  if ($context->name === 'foo' && isset($context->reactions['block'])) {
 | 
						|
    $context->reactions['block']['blocks']['locale-0'] = array(
 | 
						|
      'module' => 'locale',
 | 
						|
      'delta' => '0',
 | 
						|
      'region' => 'header',
 | 
						|
      'weight' => '2',
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Allows for finer grained access mechanisms to using the json
 | 
						|
 * rendering capabilities of the block reaction when a user isn't
 | 
						|
 * granted the administer contexts or context ajax block access
 | 
						|
 * permission
 | 
						|
 * @param $block_id
 | 
						|
 *   ID of block in module-delta format
 | 
						|
 */
 | 
						|
function hook_context_allow_ajax_block_access($block_id) {
 | 
						|
}
 |