/**
* Options from command-line passed to Install.
- *
+ *
* Recognized options:<br />
* - onlyreqdeps : install all required dependencies as well
* - alldeps : install all dependencies, including optional
/**
* Downloaded Packages after a call to download().
- *
+ *
* Format of each entry:
*
* <code>
/**
* Packages slated for download.
- *
+ *
* This is used to prevent downloading a package more than once should it be a dependency
* for two packages to be installed.
* Format of each entry:
* @var array
*/
var $_toDownload = array();
-
+
/**
* Array of every package installed, with names lower-cased.
- *
+ *
* Format:
* <code>
* array('package1' => 0, 'package2' => 1, );
* @var array
*/
var $_installed = array();
-
+
/**
* @var array
* @access private
var $_errorStack = array();
// {{{ PEAR_Downloader()
-
+
function PEAR_Downloader(&$ui, $options, &$config)
{
$this->_options = $options;
}
parent::PEAR_Common();
}
-
+
// }}}
// {{{ configSet()
function configSet($key, $value, $layer = 'user')
$this->_preferredState = null;
}
}
-
+
// }}}
// {{{ setOptions()
function setOptions($options)
{
$this->_options = $options;
}
-
+
// }}}
// {{{ _downloadFile()
/**
/**
* Retrieve a list of downloaded packages after a call to {@link download()}.
- *
+ *
* Also resets the list of downloaded packages.
* @return array
*/
{
return $this->doDownload($packages);
}
-
+
// }}}
// {{{ doDownload()
// }}}
// {{{ _downloadNonFile($pkgfile)
-
+
/**
* @return false|PEAR_Error|string false if loop should be broken out of,
* string if the file was downloaded,
$states = $this->betterStates($this->_preferredState, true);
$possible = false;
$version = 0;
+ $higher_version = 0;
+ $prev_hi_ver = 0;
foreach ($releases as $ver => $inf) {
if (in_array($inf['state'], $states) && version_compare("$version", "$ver") < 0) {
$version = $ver;
break;
- }
+ } else {
+ $ver = (string)$ver;
+ if (version_compare($prev_hi_ver, $ver) < 0) {
+ $prev_hi_ver = $higher_version = $ver;
+ }
+ }
}
if ($version === 0 && !isset($this->_options['force'])) {
return $this->raiseError('No release with state equal to: \'' . implode(', ', $states) .
"' found for '$pkgfile'");
} elseif ($version === 0) {
- $this->log(0, "Warning: $pkgfile is state '$inf[state]' which is less stable " .
+ $this->log(0, "Warning: $pkgfile is state '" . $releases[$higher_version]['state'] . "' which is less stable " .
"than state '$this->_preferredState'");
}
}
$this->_toDownload[] = $pkgfile;
return $this->_downloadFile($pkgfile, $version, $origpkgfile, $state);
}
-
+
// }}}
// {{{ _processDependency($package, $info, $mywillinstall)
-
+
/**
* Process a dependency, download if necessary
* @param array dependency information from PEAR_Remote call
}
return $info['name'];
}
-
+
// }}}
// {{{ _downloadCallback()
}
// }}}
// {{{ pushError($errmsg, $code)
-
+
/**
* @param string
* @param integer
{
array_push($this->_errorStack, array($errmsg, $code));
}
-
+
// }}}
// {{{ getErrorMsgs()
-
+
function getErrorMsgs()
{
$msgs = array();
$this->_errorStack = array();
return $msgs;
}
-
+
// }}}
}
// }}}