Как программно создать компонент для Rules

Rules позволяет создавать правила, которые будут срабатывать после выполнения конкретных условий, которые заданы в адмике. Компоненты очень важная часть Rules. Они позволяют группировать большое количество правил, условий или действий в один компонент. Для создания своего компонента, нам потребуется сам Rules, который предоставит API.

Создание компонента начинаем с того, что создаем файл с названием example.rules_defaults.inc. В этом файле имплеменируем хук hook_default_rules_configuration():

<?php

/**
 * @file
 * Default rule configurations.
 */

/**
 * Implements hook_default_rules_configuration().
 */
function example_default_rules_configuration() {
  $rules = array();
  
  // Создаем компонент "Набор действий", в функцию rules_action_set() мы передаем первым параметором массив
  // доступных переменных этому компоненту.
  $rule = rules_action_set(array('commerce_order' => array(
    'type' => 'commerce_order', // Тип переменной, в данном случае это сущность commerce_order.
    'label' => t('Commerce order'), // Название переменной.
  )));

  $rule->label = t('Example title'); // Название компонента.
  $rule->tags = array('Commerce Checkout');  // Категория, в которой будет находится компонент.
  $rule->active = TRUE;
  
  // Устанавливаем действие, в данном примере "Отправить email".
  $rule->action('mail', array(
    'to:select' => 'site:mail', // Email получателя.
    'subject' => t('Example subject on site [site:name]'), // Тема.
    'message' => t('Example message.'), // Сообщение.
    'from' => '', // Email отправителя, если пустое, будет использован email сайта по умолчанию.
  ));

  // Добавляем компонент в массив, в котором ключ - это машинное имя компонента, которое будет использована при его сохранении.
  $rules['example_send_message_to_admin'] = $rule;

  return $rules;
}

Если необходимо внутри своего модуля программно запустить компонент, используем функцию rules_invoke_component():

// Первым параметром передаем машинное имя компонента, все последующие параметры - это переменные, которые принимает компонент.
rules_invoke_component('example_send_message_to_admin', $order);

Комментарии (0)