/** * Get uninstall list * @param string $chanName * @param string $package * @param Mage_Connect_Singleconfig $cache * @param Mage_Connect_Config $config * @param bool $withDepsRecursive * @return array */ 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) { //$this->_failed[] = array('name'=>$package, 'channel'=>$chanName, 'max'=>$versionMax, 'min'=>$versionMin, 'reason'=>$e->getMessage()); } $level--; if (0 === $level) { $out = $this->processDepsHash($hash); $hash = array(); return array('list' => $out); } }
/** * Get uninstall list * * @param string $chanName * @param string $package * @param Mage_Connect_Singleconfig $cache * @param Mage_Connect_Config $config * @param bool $withDepsRecursive * @return array|null */ public function getUninstallList($chanName, $package, $cache, $config, $withDepsRecursive = true) { static $level = 0; static $hash = array(); $chanName = $cache->chanName($chanName); $level++; try { $chanName = $cache->chanName($chanName); if (!$cache->hasPackage($chanName, $package)) { $level--; if ($level == 0) { $hash = array(); return array('list' => array()); } return null; } $dependencies = $cache->getPackageDependencies($chanName, $package); $data = $cache->getPackage($chanName, $package); $version = $data['version']; $hash[$chanName . "/" . $package] = array('name' => $package, 'channel' => $chanName, 'version' => $version, 'packages' => $dependencies); if ($withDepsRecursive) { $fields = array('name', 'channel', 'min', 'max'); foreach ($dependencies as $row) { /** * Converts an array to variables * @var $pChannel string Channel Name * @var $pName string Package Name */ foreach ($fields 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); } return null; }