function RulesAbstractPlugin::setUp

Overrides RulesExtendable::setUp

4 calls to RulesAbstractPlugin::setUp()
RulesAbstractPlugin::forceSetUp in includes/rules.core.inc
Forces the object to be setUp, this executes setUp() if not done yet.
RulesAbstractPlugin::import in includes/rules.core.inc
Applies the given export.
RulesAbstractPlugin::__construct in includes/rules.core.inc
RulesCondition::import in includes/rules.plugins.inc
Applies the given export.

File

includes/rules.core.inc, line 1531

Class

RulesAbstractPlugin
Defines a common base class for so-called "Abstract Plugins" like actions.

Code

protected function setUp() {
    parent::setUp();
    if (isset($this->cache[$this->itemName . '_info'][$this->elementName])) {
        $this->info = $this->cache[$this->itemName . '_info'][$this->elementName];
        // Remember that the info has been correctly setup.
        // @see self::forceSetup()
        $this->infoLoaded = TRUE;
        // Register the defined class, if any.
        if (isset($this->info['class'])) {
            $this->faces['RulesPluginImplInterface'] = 'RulesPluginImplInterface';
            $face_methods = get_class_methods('RulesPluginImplInterface');
            $class_info = array(
                1 => $this->info['class'],
            );
            foreach ($face_methods as $method) {
                $this->facesMethods[$method] = $class_info;
            }
        }
        // Add in per-plugin implementation callbacks if any.
        if (!empty($this->info['faces_cache'])) {
            foreach ($this->info['faces_cache'] as $face => $data) {
                list($methods, $file_names) = $data;
                foreach ($methods as $method => $callback) {
                    $this->facesMethods[$method] = $callback;
                }
                foreach ((array) $file_names as $method => $name) {
                    $this->facesIncludes[$method] = array(
                        'module' => $this->info['module'],
                        'name' => $name,
                    );
                }
            }
            // Invoke the info_alter callback, but only if it has been implemented.
            if ($this->facesMethods['info_alter'] != $this->itemInfo['faces_cache'][0]['info_alter']) {
                $this->__call('info_alter', array(
                    &$this->info,
                ));
            }
        }
    }
    elseif (!empty($this->itemInfo['faces_cache']) && isset($this->elementName) && function_exists($this->elementName)) {
        // We don't have any info, so just add the name as execution callback.
        $this->override(array(
            'execute' => $this->elementName,
        ));
    }
}