protected function processDepsHash(&$depsHash, $sortReverse = true)
{
$nodes = array();
$graph = new Mage_Connect_Structures_Graph();
foreach ($depsHash as $key => $data) {
$packages = $data['packages'];
$node = new Mage_Connect_Structures_Node();
$nodes[$key] =& $node;
unset($data['packages']);
$node->setData($data);
$graph->addNode($node);
unset($node);
}
if (count($nodes) > 1) {
foreach ($depsHash as $key => $data) {
$packages = $data['packages'];
foreach ($packages as $pdata) {
$pName = $pdata['channel'] . "/" . $pdata['name'];
if (isset($nodes[$key], $nodes[$pName])) {
$nodes[$key]->connectTo($nodes[$pName]);
}
}
}
}
$result = $graph->topologicalSort();
$sortReverse ? krsort($result) : ksort($result);
$out = array();
$total = 0;
foreach ($result as $order => $nodes) {
foreach ($nodes as $n) {
$out[] = $n->getData();
}
}
unset($graph, $nodes);
return $out;
}