function RulesPlugin::setParent
Sets a new parent element.
File
-
includes/
rules.core.inc, line 489
Class
- RulesPlugin
- Base class for rules plugins.
Code
public function setParent(RulesContainerPlugin $parent) {
if ($this->parent == $parent) {
return;
}
if (isset($this->parent) && ($key = array_search($this, $this->parent->children)) !== FALSE) {
// Remove element from any previous parent.
unset($this->parent->children[$key]);
$this->parent
->resetInternalCache();
}
// Make sure the interface matches the type of the container.
if ($parent instanceof RulesActionContainer && $this instanceof RulesActionInterface || $parent instanceof RulesConditionContainer && $this instanceof RulesConditionInterface) {
$this->parent = $parent;
$parent->children[] = $this;
$this->parent
->resetInternalCache();
}
else {
throw new RulesEvaluationException('The given container is incompatible with this element.', array(), $this, RulesLog::ERROR);
}
}