You are here

node_registration.actions.inc in Node registration 7

Actions, triggers and rules -- callbacks, definitions and hooks.

File

includes/node_registration.actions.inc
View source
<?php

/**
 * @file
 * Actions, triggers and rules -- callbacks, definitions and hooks.
 */

/**
 * Implements hook_action_info().
 */
function node_registration_action_info() {
  return array(
    // Formless actions.
    'node_registration_verify_action' => array(
      'type' => 'node_registration',
      'label' => t('Verify node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(
        'node_registration_insert',
        'node_registration_update',
      ),
    ),
    'node_registration_unverify_action' => array(
      'type' => 'node_registration',
      'label' => t('Unverify node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(
        'node_registration_insert',
        'node_registration_update',
      ),
    ),
    'node_registration_attend_action' => array(
      'type' => 'node_registration',
      'label' => t('Attend node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(
        'node_registration_insert',
        'node_registration_update',
      ),
    ),
    'node_registration_unattend_action' => array(
      'type' => 'node_registration',
      'label' => t('Unattend node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(
        'node_registration_insert',
        'node_registration_update',
      ),
    ),
    'node_registration_cancel_action' => array(
      'type' => 'node_registration',
      'label' => t('Cancel node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(),
    ),
    'node_registration_uncancel_action' => array(
      'type' => 'node_registration',
      'label' => t('Uncancel node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(),
    ),
    'node_registration_wait_action' => array(
      'type' => 'node_registration',
      'label' => t('Waitinglist node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(),
    ),
    'node_registration_unwait_action' => array(
      'type' => 'node_registration',
      'label' => t('Unwaitinglist node registration'),
      'configurable' => FALSE,
      'behavior' => array(
        'changes_property',
      ),
      'triggers' => array(),
    ),
  );
}

/**
 * Implements hook_rules_condition_info().
 */
function node_registration_rules_condition_info() {
  $defaults = array(
    'parameter' => array(
      'node_registration' => array(
        'type' => 'node_registration',
        'label' => t('Node registration'),
      ),
    ),
    'group' => t('Node registration'),
    'access callback' => 'node_registration_rules_integration_access',
  );
  $items['node_registration_is_of_type'] = $defaults + array(
    'label' => t('Node registration is of type'),
    'help' => t('Evaluates to TRUE if the given registration is of one of the selected types.'),
    'base' => 'node_registration_rules_condition_is_of_type',
  );
  $items['node_registration_is_of_type']['parameter']['type'] = array(
    'type' => 'list<text>',
    'label' => t('Node registration types'),
    'options list' => 'node_type_get_names',
    'description' => t('The registration type(s) to check for.'),
    'restriction' => 'input',
  );
  $items['node_registration_is_verified'] = $defaults + array(
    'label' => t('Node registration is verified'),
    'base' => 'node_registration_rules_condition_is_verified',
  );
  $items['node_registration_has_attended'] = $defaults + array(
    'label' => t('Node registration has attended'),
    'base' => 'node_registration_rules_condition_has_attended',
  );
  $items['node_registration_is_cancelled'] = $defaults + array(
    'label' => t('Node registration is cancelled'),
    'base' => 'node_registration_rules_condition_is_cancelled',
  );
  return $items;
}

/**
 * Action handler: verified ON.
 */
function node_registration_verify_action($registration) {
  $registration->verified = 1;
}

/**
 * Action handler: verified OFF.
 */
function node_registration_unverify_action($registration) {
  $registration->verified = 0;
}

/**
 * Action handler: attended ON.
 */
function node_registration_attend_action($registration) {
  $registration->attended = 1;
}

/**
 * Action handler: attended OFF.
 */
function node_registration_unattend_action($registration) {
  $registration->attended = 0;
}

/**
 * Action handler: cancel registration.
 */
function node_registration_cancel_action($registration, $force = FALSE) {
  $node = node_load($registration->nid);
  $settings = $node->registration;

  // Cancel.
  $registration->cancelled = REQUEST_TIME;
  if (TRUE === $force) {
    $registration
      ->save();
  }
  $token_data = array(
    'node' => $node,
    'node-registration' => $registration,
  );

  // Send e-mail to registree.
  if ($settings->send_cancel_mail_to_registree) {
    $subject = $settings->cancel_mail_to_registree_subject;
    $message = $settings->cancel_mail_to_registree_body;
    $options = array(
      'bcc' => token_replace($settings->cancel_mail_to_registree_bcc, $token_data, array(
        'clear' => TRUE,
      )),
    );
    node_registration_send_broadcast($node, $subject, $message, array(
      $registration,
    ), $options);
  }

  // Send e-mail to admin.
  if ($settings->send_cancel_mail_to_admin) {
    $subject = token_replace($settings->cancel_mail_to_admin_subject, $token_data);
    $message = token_replace($settings->cancel_mail_to_admin_body, $token_data);
    $recipients = token_replace($settings->cancel_mail_to_admin_recipients, $token_data);
    _node_registration_send_email($recipients, $subject, $message, $token_data);
  }

  // Log cancellation.
  watchdog('node_registration', 'Registration %id cancelled.', array(
    '%id' => $registration->registration_id,
  ));
}

/**
 * Action handler: cancelled OFF.
 */
function node_registration_uncancel_action($registration) {
  $node = node_load($registration->nid);

  // Uncancel.
  $registration->cancelled = 0;
}

/**
 * Action handler: waitinglist ON.
 */
function node_registration_wait_action($registration) {
  $registration->waitinglist = 1;
}

/**
 * Action handler: waitinglist OFF.
 */
function node_registration_unwait_action($registration) {
  $registration->waitinglist = 0;
}

/**
 * Rules condition: registration node type.
 */
function node_registration_rules_condition_is_of_type($registration, $types) {
  return in_array($registration->node_type, $types);
}

/**
 * Rules condition: verified.
 */
function node_registration_rules_condition_is_verified($registration) {
  return (bool) $registration->verified;
}

/**
 * Rules condition: attended.
 */
function node_registration_rules_condition_has_attended($registration) {
  return (bool) $registration->attended;
}

/**
 * Rules condition: cancelled.
 */
function node_registration_rules_condition_is_cancelled($registration) {
  return (bool) $registration->cancelled;
}

/**
 * Node registration integration access callback.
 */
function node_registration_rules_integration_access($type, $name) {
  if ($type == 'event' || $type == 'condition') {
    return entity_access('view', 'node_registration');
  }
}

Functions

Namesort descending Description
node_registration_action_info Implements hook_action_info().
node_registration_attend_action Action handler: attended ON.
node_registration_cancel_action Action handler: cancel registration.
node_registration_rules_condition_has_attended Rules condition: attended.
node_registration_rules_condition_info Implements hook_rules_condition_info().
node_registration_rules_condition_is_cancelled Rules condition: cancelled.
node_registration_rules_condition_is_of_type Rules condition: registration node type.
node_registration_rules_condition_is_verified Rules condition: verified.
node_registration_rules_integration_access Node registration integration access callback.
node_registration_unattend_action Action handler: attended OFF.
node_registration_uncancel_action Action handler: cancelled OFF.
node_registration_unverify_action Action handler: verified OFF.
node_registration_unwait_action Action handler: waitinglist OFF.
node_registration_verify_action Action handler: verified ON.
node_registration_wait_action Action handler: waitinglist ON.