function RulesContainerPlugin::sortChildren
Sorts all child elements by their weight.
Parameters
bool $deep: If enabled a deep sort is performed, thus the whole element tree below this element is sorted.
1 call to RulesContainerPlugin::sortChildren()
- Rule::sortChildren in includes/
rules.plugins.inc - Sorts all child elements by their weight.
1 method overrides RulesContainerPlugin::sortChildren()
- Rule::sortChildren in includes/
rules.plugins.inc - Sorts all child elements by their weight.
File
-
includes/
rules.core.inc, line 2419
Class
- RulesContainerPlugin
- Base class for ContainerPlugins like Rules, Logical Operations or Loops.
Code
public function sortChildren($deep = FALSE) {
// Make sure the array order is kept in case two children have the same
// weight by ensuring later children would have higher weights.
foreach (array_values($this->children) as $i => $child) {
$child->weight += $i / 1000;
}
usort($this->children, array(
'RulesPlugin',
'compare',
));
// Fix up the weights afterwards to be unique integers.
foreach (array_values($this->children) as $i => $child) {
$child->weight = $i;
}
if ($deep) {
foreach (new ParentIterator($this->getIterator()) as $child) {
$child->sortChildren(TRUE);
}
}
$this->resetInternalCache();
}