public function getUninstallList($chanName, $package, $cache, $config, $withDepsRecursive = true)
{
static $level = 0;
static $hash = array();
$chanName = $cache->chanName($chanName);
$keyOuter = $chanName . "/" . $package;
$level++;
try {
$chanName = $cache->chanName($chanName);
if (!$cache->hasPackage($chanName, $package)) {
$level--;
if ($level == 0) {
$hash = array();
return array('list' => array());
}
return;
}
$dependencies = $cache->getPackageDependencies($chanName, $package);
$data = $cache->getPackage($chanName, $package);
$version = $data['version'];
$keyOuter = $chanName . "/" . $package;
//print "Processing outer: {$keyOuter} \n";
$hash[$keyOuter] = array('name' => $package, 'channel' => $chanName, 'version' => $version, 'packages' => $dependencies);
if ($withDepsRecursive) {
$flds = array('name', 'channel', 'min', 'max');
$fldsCount = count($flds);
foreach ($dependencies as $row) {
foreach ($flds as $key) {
$varName = "p" . ucfirst($key);
${$varName} = $row[$key];
}
$method = __FUNCTION__;
$keyInner = $pChannel . "/" . $pName;
if (!isset($hash[$keyInner])) {
$this->{$method}($pChannel, $pName, $cache, $config, $withDepsRecursive, false);
}
}
}
} catch (Exception $e) {
}
$level--;
if (0 === $level) {
$out = $this->processDepsHash($hash);
$hash = array();
return array('list' => $out);
}
}