function RulesContainerPlugin::executeByArgs

Executes container with the given arguments.

Condition containers just return a boolean while action containers return the configured provided variables as an array of variables.

Overrides RulesPlugin::executeByArgs

1 method overrides RulesContainerPlugin::executeByArgs()
RulesEventSet::executeByArgs in includes/rules.plugins.inc
Executes container with the given arguments.

File

includes/rules.core.inc, line 2346

Class

RulesContainerPlugin
Base class for ContainerPlugins like Rules, Logical Operations or Loops.

Code

public function executeByArgs($args = array()) {
  $replacements = array(
    '%label' => $this->label(),
    '@plugin' => $this->itemName,
  );
  rules_log('Executing @plugin %label.', $replacements, RulesLog::INFO, $this, TRUE);
  $this->processSettings();
  $state = $this->setUpState($args);
  // Handle recursion prevention.
  if ($state->isBlocked($this)) {
    return rules_log('Not evaluating @plugin %label to prevent recursion.', array(
      '%label' => $this->label(),
      '@plugin' => $this->plugin(),
    ), RulesLog::INFO);
  }
  // Block the config to prevent any future recursion.
  $state->block($this);
  module_invoke_all('rules_config_execute', $this);
  $result = $this->evaluate($state);
  $return = $this->returnVariables($state, $result);
  $state->unblock($this);
  $state->cleanUp();
  rules_log('Finished executing of @plugin %label.', $replacements, RulesLog::INFO, $this, FALSE);
  return $return;
}