function RulesPlugin::applyDataSelector

Applies the given data selector.

Applies the given data selector by using the info about available variables. Thus it doesn't require an actual evaluation state.

Parameters

string $selector: The selector string, e.g. "node:author:mail".

Return value

EntityMetadataWrapper An empty wrapper for the given selector or FALSE if the selector couldn't be applied.

3 calls to RulesPlugin::applyDataSelector()
RulesPlugin::access in includes/rules.core.inc
Whether the currently logged in user has access to all configured elements.
RulesPlugin::checkParameterSettings in includes/rules.core.inc
Checks whether parameters are correctly configured.
RulesPlugin::getArgumentInfo in includes/rules.core.inc
Returns info about the configured argument.

File

includes/rules.core.inc, line 1058

Class

RulesPlugin
Base class for rules plugins.

Code

public function applyDataSelector($selector) {
    // Prevent PHP errors when $selector parameter is not a string.
    if (!is_string($selector)) {
        return FALSE;
    }
    $parts = explode(':', str_replace('-', '_', $selector), 2);
    if (($vars = $this->availableVariables()) && isset($vars[$parts[0]]['type'])) {
        $wrapper = rules_wrap_data(NULL, $vars[$parts[0]], TRUE);
        if (count($parts) > 1 && $wrapper instanceof EntityMetadataWrapper) {
            try {
                foreach (explode(':', $parts[1]) as $name) {
                    if ($wrapper instanceof EntityListWrapper || $wrapper instanceof EntityStructureWrapper) {
                        $wrapper = $wrapper->get($name);
                    }
                    else {
                        return FALSE;
                    }
                }
            } catch (EntityMetadataWrapperException $e) {
                return FALSE;
            }
        }
    }
    return isset($wrapper) ? $wrapper : FALSE;
}