You are here

regcode.rules.inc in Registration codes 6.2

Same filename and directory in other branches
  1. 6 regcode.rules.inc
  2. 7.2 regcode.rules.inc
  3. 7 regcode.rules.inc

Rules integration for the regcode module.

File

regcode.rules.inc
View source
<?php

/**
 * @file
 * Rules integration for the regcode module.
 */

/**
 * Implementation of module_rules_event_info()
 *
 * @ingroup rules
 */
function regcode_rules_event_info() {
  return array(
    'regcode_used' => array(
      'label' => t('User has used a registration code'),
      'module' => 'Regcode',
      'arguments' => array(
        'user' => array(
          'type' => 'user',
          'label' => t('The user using the code'),
        ),
        'regcode' => array(
          'type' => 'regcode',
          'label' => t('The regcode which was used'),
        ),
      ),
    ),
  );
}

/**
 * Implement module_rules_condition_info()
 *
 * @ingroup rules
 */
function regcode_rules_condition_info() {
  return array(
    'rules_condition_regcode_term_compare' => array(
      'label' => t('Tagged with'),
      'arguments' => array(
        'regcode' => array(
          'type' => 'regcode',
          'label' => t('Tag'),
        ),
      ),
      'module' => 'Regcode',
    ),
    'rules_condition_regcode_code_compare' => array(
      'label' => t('Code comparison'),
      'arguments' => array(
        'regcode' => array(
          'type' => 'regcode',
          'label' => t('Code'),
        ),
      ),
      'module' => 'Regcode',
    ),
  );
}

/**
 * Comparison function
 *
 * @ingroup rules
 */
function rules_condition_regcode_term_compare($regcode, $settings) {
  $present = array_keys($regcode->tags);
  $expected = array_keys($settings['regcode_terms']);
  $match = (bool) count(array_intersect($present, $expected));
  return $match;
}

/**
 * Form to select terms to match against
 *
 * @param array $settings
 * @param array $form
 * @ingroup rules
 */
function rules_condition_regcode_term_compare_form($settings, &$form) {
  $form['settings']['regcode_terms'] = array(
    '#type' => 'checkboxes',
    '#options' => regcode_get_vocab_terms(),
    '#title' => t('Tags'),
    '#required' => TRUE,
    '#description' => t('Condition evaluates to TRUE if registration code used was tagged with any of the selected terms.'),
    '#default_value' => (array) $settings['regcode_terms'],
  );
}

/**
 * Compare a submitted form
 *
 * @ingroup rules
 */
function rules_condition_regcode_term_compare_submit(&$settings, $form, $form_state) {
  $settings['regcode_terms'] = array_filter($settings['regcode_terms']);
}

/**
 * Comparison function
 *
 * @ingroup rules
 */
function rules_condition_regcode_code_compare($regcode, $settings) {
  return $regcode->code === $settings['regcode_code'];
}

/**
 * Form to select terms to match against
 *
 * @param array $settings
 * @param array $form
 * @ingroup rules
 */
function rules_condition_regcode_code_compare_form($settings, &$form) {
  $form['settings']['regcode_code'] = array(
    '#type' => 'textfield',
    '#title' => t('Registration code'),
    '#required' => TRUE,
    '#description' => t('Condition evaluates to TRUE if registration code used matches this string exactly.'),
    '#default_value' => $settings['regcode_code'],
  );
}

Functions

Namesort descending Description
regcode_rules_condition_info Implement module_rules_condition_info()
regcode_rules_event_info Implementation of module_rules_event_info()
rules_condition_regcode_code_compare Comparison function
rules_condition_regcode_code_compare_form Form to select terms to match against
rules_condition_regcode_term_compare Comparison function
rules_condition_regcode_term_compare_form Form to select terms to match against
rules_condition_regcode_term_compare_submit Compare a submitted form