You are here

function privatemsg_rules_rules_action_info in Privatemsg 7

Same name and namespace in other branches
  1. 6.2 privatemsg_rules/privatemsg_rules.rules.inc \privatemsg_rules_rules_action_info()
  2. 7.2 privatemsg_rules/privatemsg_rules.rules.inc \privatemsg_rules_rules_action_info()

Implements hook_rules_action_info().

File

privatemsg_rules/privatemsg_rules.rules.inc, line 13
Hooks and callback functions for rules.module integration.

Code

function privatemsg_rules_rules_action_info() {

  // Re-use existing information and also get information about fields added
  // to private messages.
  $fields = entity_get_all_property_info('privatemsg_message');

  // Remove properties that can't be used here.
  unset($fields['mid']);
  unset($fields['thread_id']);
  unset($fields['timestamp']);

  // Remove fields, they are not supported yet.
  foreach (array_keys($fields) as $key) {
    if (strpos($key, 'field_') === 0) {
      unset($fields[$key]);
    }
  }

  // Update some descriptions and other definitions.
  $fields['subject']['description'] = t('Subject of the message. To use the tokens provided by Privatemsg, use {token}, for example: {privatemsg_message:recipient:name}.');
  $fields['body']['description'] = t('Body of the message. To use the tokens provided by Privatemsg, use {token}, for example: {privatemsg_message:recipient:name}.');
  $fields['body']['long'] = TRUE;

  // Make subject and body translatable.
  $fields['subject']['translatable'] = TRUE;
  $fields['body']['translatable'] = TRUE;

  // Reply doesn't have subject either.
  $reply_fields = $fields;
  unset($reply_fields['subject']);
  $actions = array(
    'privatemsg_rules_new' => array(
      'label' => t('Send a message'),
      'named parameter' => TRUE,
      'parameter' => array(
        'recipient' => array(
          'type' => 'user',
          'label' => t('Recipient'),
          'description' => t('Recipient of the message.'),
        ),
      ) + $fields,
      'new variables' => array(
        'thread_id' => array(
          'type' => 'integer',
          'label' => t('ID of new thread'),
        ),
      ),
      'group' => t('Private messages'),
    ),
    'privatemsg_rules_reply' => array(
      'label' => t('Reply to a message'),
      'named parameter' => TRUE,
      'parameter' => array(
        'thread_id' => array(
          'type' => 'integer',
          'label' => t('Privatemsg thread id'),
          'description' => t('Thread ID of the thread that should be responded to.'),
        ),
      ) + $reply_fields,
      'group' => t('Private messages'),
    ),
    'privatemsg_rules_unread_count' => array(
      'label' => t('Load number of unread messages'),
      'parameter' => array(
        'account' => array(
          'type' => 'user',
          'label' => t('User account'),
          'description' => t('Specify the user for which the number of unread messages should be loaded.'),
        ),
      ),
      'new variables' => array(
        'unread_count' => array(
          'type' => 'integer',
          'label' => t('Number of unread messages'),
        ),
      ),
      'group' => t('Private messages'),
    ),
  );
  if (module_exists('privatemsg_filter')) {
    $actions['privatemsg_rules_tag_thread'] = array(
      'label' => t('Tag a privatemsg thread'),
      'parameter' => array(
        'thread_id' => array(
          'type' => 'integer',
          'label' => t('Specify the thread ID that should be tagged.'),
        ),
        'account' => array(
          'type' => 'user',
          'label' => t('Specify for which user the message should tagged.'),
        ),
        'privatemsg_tag' => array(
          'type' => 'text',
          'label' => t('Name of the tag that should be added.'),
          'description' => t('Multiple tags can be specified, separated by a comma.'),
        ),
      ),
      'group' => t('Private messages'),
    );
  }
  if (module_exists('privatemsg_roles')) {
    $actions['privatemsg_rules_new_role'] = array(
      'label' => t('Send a message to a role'),
      'named parameter' => TRUE,
      'parameter' => array(
        'roles' => array(
          'type' => 'list<integer>',
          'label' => t('Roles'),
          'options list' => 'entity_metadata_user_roles',
          'description' => t('Select the roles whose users should receive the message.'),
        ),
      ) + $fields,
      'new variables' => array(
        'thread_id' => array(
          'type' => 'integer',
          'label' => t('ID of new thread'),
        ),
      ),
      'group' => t('Private messages'),
    );
  }
  return $actions;
}