Mage_Connect_Packager::processDepsHash PHP Method

processDepsHash() protected method

Process dependencies hash Makes topological sorting and gives operation order list
protected processDepsHash ( array &$depsHash, boolean $sortReverse = true ) : array
$depsHash array
$sortReverse boolean
return array
    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;
    }