public function getUpgradesList($channels, $cacheObject, $configObj, $restObj = null, $checkConflicts = false)
{
if (is_scalar($channels)) {
$channels = array($channels);
}
if (!$restObj) {
$restObj = new Mage_Connect_Rest();
}
$updates = array();
foreach ($channels as $chan) {
if (!$cacheObject->isChannel($chan)) {
continue;
}
$chanName = $cacheObject->chanName($chan);
$localPackages = $cacheObject->getInstalledPackages($chanName);
$localPackages = $localPackages[$chanName];
if (!count($localPackages)) {
continue;
}
$channel = $cacheObject->getChannel($chan);
$uri = $channel[Mage_Connect_Singleconfig::K_URI];
$restObj->setChannel($uri);
$remotePackages = $restObj->getPackagesHashed();
/**
* Iterate packages of channel $chan
*/
$state = $configObj->preferred_state ? $configObj->preferred_state : "devel";
foreach ($localPackages as $localName => $localData) {
if (!isset($remotePackages[$localName])) {
continue;
}
$package = $remotePackages[$localName];
$neededToUpgrade = false;
$remoteVersion = $localVersion = trim($localData[Mage_Connect_Singleconfig::K_VER]);
foreach ($package as $version => $s) {
if ($cacheObject->compareStabilities($s, $state) < 0) {
continue;
}
if (version_compare($version, $localVersion, ">")) {
$neededToUpgrade = true;
$remoteVersion = $version;
}
if ($checkConflicts) {
$conflicts = $cacheObject->hasConflicts($chanName, $localName, $remoteVersion);
if (false !== $conflicts) {
$neededToUpgrade = false;
}
}
}
if (!$neededToUpgrade) {
continue;
}
if (!isset($updates[$chanName])) {
$updates[$chanName] = array();
}
$updates[$chanName][$localName] = array("from" => $localVersion, "to" => $remoteVersion);
}
}
return $updates;
}