function RulesReactionRule::availableVariables

1 call to RulesReactionRule::availableVariables()
RulesReactionRule::parameterInfo in includes/rules.plugins.inc

File

includes/rules.plugins.inc, line 500

Class

RulesReactionRule
Represents rules getting triggered by events.

Code

public function availableVariables() {
    if (!isset($this->availableVariables)) {
        if (isset($this->parent)) {
            // Return the event variables provided by the event set, once cached.
            $this->availableVariables = $this->parent
                ->stateVariables();
        }
        else {
            // The intersection of the variables provided by the events are
            // available.
            foreach ($this->events as $event_name) {
                $handler = rules_get_event_handler($event_name, $this->getEventSettings($event_name));
                if (isset($this->availableVariables)) {
                    $event_vars = $handler->availableVariables();
                    // Merge variable info by intersecting the variable-info keys also,
                    // so we have only metadata available that is valid for all of the
                    // provided variables.
                    foreach (array_intersect_key($this->availableVariables, $event_vars) as $name => $variable_info) {
                        $this->availableVariables[$name] = array_intersect_key($variable_info, $event_vars[$name]);
                    }
                }
                else {
                    $this->availableVariables = $handler->availableVariables();
                }
            }
            $this->availableVariables = isset($this->availableVariables) ? RulesState::defaultVariables() + $this->availableVariables : RulesState::defaultVariables();
        }
    }
    return $this->availableVariables;
}