You are here

function rules_scheduler_action_schedule in Rules 7.2

Base action implementation for scheduling components.

Related topics

1 string reference to 'rules_scheduler_action_schedule'
rules_scheduler_rules_action_info in rules_scheduler/rules_scheduler.rules.inc
Implements hook_rules_action_info().

File

rules_scheduler/rules_scheduler.rules.inc, line 76
Rules integration for the rules scheduler module.

Code

function rules_scheduler_action_schedule($args, $element) {
  $state = $args['state'];
  if ($component = rules_get_cache('comp_' . $args['component'])) {

    // Manually create a new evaluation state for scheduling the evaluation.
    $new_state = new RulesState();

    // Register all parameters as variables.
    foreach ($element
      ->pluginParameterInfo() as $name => $info) {
      if (strpos($name, 'param_') === 0) {

        // Remove the parameter name prefix 'param_'.
        $var_name = substr($name, 6);
        $new_state
          ->addVariable($var_name, $state->currentArguments[$name], $info);
      }
    }
    rules_scheduler_schedule_task(array(
      'date' => $args['date'],
      'config' => $args['component'],
      'data' => $new_state,
      'identifier' => $args['identifier'],
    ));
  }
  else {
    throw new RulesEvaluationException('Unable to get the component %name', array(
      '%name' => $args['component'],
    ), $element, RulesLog::ERROR);
  }
}