You are here

context_rules.rules.inc in Context Rules 6

Same filename and directory in other branches
  1. 7 context_rules.rules.inc

Provides rules integrations for the Context module

File

context_rules.rules.inc
View source
<?php

// $Id$

/**
 * @file
 * Provides rules integrations for the Context module
 */

/**
 * Implementation of hook_rules_condition_info().
 */
function context_rules_rules_condition_info() {
  return array(
    'rules_condition_context_rules_context_isset' => array(
      'label' => t('Is a context set'),
      'arguments' => array(),
      'help' => t('Evaluates to TRUE, if a given Context is set.'),
      'module' => 'Context Rules',
    ),
  );
}

/**
 * determines if a given Context is currently set
 */
function rules_condition_context_rules_context_isset($settings) {
  if (!empty($settings['context'])) {

    //all other hooks should get got but theme level ones will be missed otherwise
    module_invoke_all('context_page_condition');

    //module_invoke_all('context_page_reaction');
    return context_isset('context', $settings['context']);
  }
  return FALSE;
}

/**
 * Implementation of hook_rules_action_info().
 * @ingroup rules
 */
function context_rules_rules_action_info() {
  return array(
    'rules_action_context_rules_set_context' => array(
      'label' => t('Set a context module context'),
      'arguments' => array(),
      'module' => 'Context Rules',
    ),
    'rules_action_context_rules_unset_context' => array(
      'label' => t('Unset a context module context'),
      'arguments' => array(),
      'module' => 'Context Rules',
    ),
  );
}

/**
 * Set a context via rules action
 *
 * @param $context
 *   An object containing the context data
 * @param $value
 *   An object containing the context data
 * @return
 *   An array of the newly set context
 *
 * TODO: Offer option to force or respect context conditions
 */
function rules_action_context_rules_set_context($settings) {
  if ($context = context_load($settings['context'])) {
    if (context_set('context', $context->name, $context)) {
      return TRUE;
    }
  }
}

/**
 * Unset a context via rules action
 *
 * @param $context
 *   An object containing the context data
 * @param $value
 *   An object containing the context data
 * @return boolean
 *  TRUE if the context was successfully unset or FALSE otherwise.
 */
function rules_action_context_rules_unset_context($settings) {
  if ($context = context_load($settings['context'])) {
    if (context_set('context', $context->name, FALSE)) {
      return TRUE;
    }
  }
}

/**
 * Implementation of hook_rules_event_info().
 */
function context_rules_rules_event_info() {
  $items = array();
  $contexts = context_enabled_contexts();
  foreach ($contexts as $name => $context) {
    $items['context_active_' . $name] = array(
      'module' => 'Context',
      'label' => t('Context "@context-name" is active', array(
        '@context-name' => $context->name,
      )),
      'arguments' => rules_events_global_user_argument(),
    );
  }
  return $items;
}

Functions

Namesort descending Description
context_rules_rules_action_info Implementation of hook_rules_action_info().
context_rules_rules_condition_info Implementation of hook_rules_condition_info().
context_rules_rules_event_info Implementation of hook_rules_event_info().
rules_action_context_rules_set_context Set a context via rules action
rules_action_context_rules_unset_context Unset a context via rules action
rules_condition_context_rules_context_isset determines if a given Context is currently set