function _crumbs_sort_plugins___DISABLED in Crumbs, the Breadcrumbs suite 6.2
Sort plugins by the order they need to be invoked, and remove those that don't need to be invoked at all.
File
- ./
crumbs.plugin_engine.inc, line 111
Code
function _crumbs_sort_plugins___DISABLED(array &$plugins, array $key_weights) {
$plugin_weights = array();
foreach ($plugins as $plugin_key => $plugin) {
$fragments = explode('.', $plugin_key);
$partial_key = array_shift($fragments);
$weight = 0;
if (isset($key_weights['*'])) {
$weight = $key_weights['*'];
}
while (TRUE) {
if (isset($key_weights[$partial_key . '.*'])) {
$weight = $key_weights[$partial_key . '.*'];
}
if (empty($fragments)) {
break;
}
$partial_key .= '.' . array_shift($fragments);
}
if (isset($key_weights[$plugin_key])) {
$weight = $key_weights[$plugin_key];
}
$plugin_weights[$plugin_key] = $weight;
}
foreach ($key_weights as $key => $weight) {
$fragments = explode('.', $key);
$partial_key = array_shift($fragments);
$plugin_key = NULL;
while (TRUE) {
if (isset($plugins[$partial_key])) {
$plugin_key = $partial_key;
}
if (empty($fragments)) {
break;
}
$partial_key .= '.' . array_shift($fragments);
}
if (isset($plugin_key)) {
if ($plugin_weights[$plugin_key] === FALSE || $plugin_weights[$plugin_key] > $weight) {
$plugin_weights[$plugin_key] = $weight;
}
}
}
// this works, because the keys are never numeric.
// (each key contains a module name)
array_multisort($plugin_weights, $plugins);
foreach ($plugins as $plugin_key => $plugin) {
if ($plugin_weights[$plugin_key] === FALSE) {
unset($plugins[$plugin_key]);
}
}
}