Автор: Greg Beaver (cellog@php.net)
Автор: Stig Bakken (ssb@php.net)
Автор: Tomas V. V. Cox (cox@idecnet.com)
Автор: Martin Jansen (mj@php.net)
Наследование: extends PEAR_Common
Пример #1
0
 /**
  * @param array output of package.getDownloadURL
  * @param string|array|object information for detecting packages to be downloaded, and
  *                            for errors
  * @param array name information of the package
  * @param array|null packages to be downloaded
  * @access private
  */
 function _analyzeDownloadURL($info, $param, $pname, $params = null)
 {
     if (!is_string($param) && PEAR_Downloader_Package::willDownload($param, $params)) {
         return false;
     }
     if (!$info) {
         if (!is_string($param)) {
             $saveparam = ", cannot download \"{$param}\"";
         } else {
             $saveparam = '';
         }
         // no releases exist
         return PEAR::raiseError('No releases for package "' . $this->_registry->parsedPackageNameToString($pname, true) . '" exist' . $saveparam);
     }
     if (strtolower($info['info']->getChannel()) != strtolower($pname['channel'])) {
         $err = false;
         if ($pname['channel'] == 'pear.php.net') {
             if ($info['info']->getChannel() != 'pecl.php.net') {
                 $err = true;
             }
         } else {
             $err = true;
         }
         if ($err) {
             return PEAR::raiseError('SECURITY ERROR: package in channel "' . $pname['channel'] . '" retrieved another channel\'s name for download! ("' . $info['info']->getChannel() . '")');
         }
     }
     if (!isset($info['url'])) {
         // releases exist, but we failed to get any
         if (isset($this->_downloader->_options['force'])) {
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } else {
                 $vs = ' within preferred state ' . $this->_config->get('preferred_state') . '"';
             }
             if (!isset($options['soft'])) {
                 $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . '/' . $pname['package'] . $vs . ', will instead download version ' . $info['version'] . ', stability "' . $info['info']->getState() . '"');
             }
             // download the latest release
             return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
         } else {
             // construct helpful error message
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } else {
                 $vs = ' within preferred state ' . $this->_downloader->config->get('preferred_state') . '"';
             }
             $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . $vs . ', latest release is version ' . $info['version'] . ', stability "' . $info['info']->getState() . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['version'])) . '" to install');
             return $err;
         }
     }
     return $info;
 }
Пример #2
0
 /**
  * Download a file through HTTP.  Considers suggested file name in
  * Content-disposition: header and can run a callback function for
  * different events.  The callback will be called with two
  * parameters: the callback type, and parameters.  The implemented
  * callback types are:
  *
  *  'setup'       called at the very beginning, parameter is a UI object
  *                that should be used for all output
  *  'message'     the parameter is a string with an informational message
  *  'saveas'      may be used to save with a different file name, the
  *                parameter is the filename that is about to be used.
  *                If a 'saveas' callback returns a non-empty string,
  *                that file name will be used as the filename instead.
  *                Note that $save_dir will not be affected by this, only
  *                the basename of the file.
  *  'start'       download is starting, parameter is number of bytes
  *                that are expected, or -1 if unknown
  *  'bytesread'   parameter is the number of bytes read so far
  *  'done'        download is complete, parameter is the total number
  *                of bytes read
  *  'connfailed'  if the TCP connection fails, this callback is called
  *                with array(host,port,errno,errmsg)
  *  'writefailed' if writing to disk fails, this callback is called
  *                with array(destfile,errmsg)
  *
  * If an HTTP proxy has been configured (http_proxy PEAR_Config
  * setting), the proxy will be used.
  *
  * @param string  $url       the URL to download
  * @param object  $ui        PEAR_Frontend_* instance
  * @param object  $config    PEAR_Config instance
  * @param string  $save_dir  (optional) directory to save file in
  * @param mixed   $callback  (optional) function/method to call for status
  *                           updates
  *
  * @return string  Returns the full path of the downloaded file or a PEAR
  *                 error on failure.  If the error is caused by
  *                 socket-related errors, the error object will
  *                 have the fsockopen error code available through
  *                 getCode().
  *
  * @access public
  * @deprecated in favor of PEAR_Downloader::downloadHttp()
  */
 function downloadHttp($url, &$ui, $save_dir = '.', $callback = null)
 {
     if (!class_exists('PEAR_Downloader')) {
         require_once 'PEAR/Downloader.php';
     }
     return PEAR_Downloader::downloadHttp($url, $ui, $save_dir, $callback);
 }
Пример #3
0
 /**
  * Download any files and their dependencies, if necessary
  *
  * @param array a mixed list of package names, local files, or package.xml
  * @param PEAR_Config
  * @param array options from the command line
  * @param array this is the array that will be populated with packages to
  *              install.  Format of each entry:
  *
  * <code>
  * array('pkg' => 'package_name', 'file' => '/path/to/local/file',
  *    'info' => array() // parsed package.xml
  * );
  * </code>
  * @param array this will be populated with any error messages
  * @param false private recursion variable
  * @param false private recursion variable
  * @param false private recursion variable
  * @deprecated in favor of PEAR_Downloader
  */
 function download($packages, $options, &$config, &$installpackages, &$errors, $installed = false, $willinstall = false, $state = false)
 {
     // trickiness: initialize here
     parent::PEAR_Downloader($this->ui, $options, $config);
     $ret = parent::download($packages);
     $errors = $this->getErrorMsgs();
     $installpackages = $this->getDownloadedPackages();
     trigger_error("PEAR Warning: PEAR_Installer::download() is deprecated " . "in favor of PEAR_Downloader class", E_USER_WARNING);
     return $ret;
 }
Пример #4
0
 /**
  * validate a downloaded package against installed packages
  *
  * As of PEAR 1.4.3, this will only validate
  *
  * @param array|PEAR_Downloader_Package|PEAR_PackageFile_v1|PEAR_PackageFile_v2
  *              $pkg package identifier (either
  *                   array('package' => blah, 'channel' => blah) or an array with
  *                   index 'info' referencing an object)
  * @param PEAR_Downloader $dl
  * @param array $params full list of packages to install
  * @return true|PEAR_Error
  */
 function validatePackage($pkg, &$dl, $params = array())
 {
     if (is_array($pkg) && isset($pkg['info'])) {
         $deps = $this->_dependencydb->getDependentPackageDependencies($pkg['info']);
     } else {
         $deps = $this->_dependencydb->getDependentPackageDependencies($pkg);
     }
     $fail = false;
     if ($deps) {
         if (!class_exists('PEAR_Downloader_Package')) {
             require_once 'PEAR/Downloader/Package.php';
         }
         $dp =& new PEAR_Downloader_Package($dl);
         if (is_object($pkg)) {
             $dp->setPackageFile($pkg);
         } else {
             $dp->setDownloadURL($pkg);
         }
         PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
         foreach ($deps as $channel => $info) {
             foreach ($info as $package => $ds) {
                 foreach ($params as $packd) {
                     if (strtolower($packd->getPackage()) == strtolower($package) && $packd->getChannel() == $channel) {
                         $dl->log(3, 'skipping installed package check of "' . $this->_registry->parsedPackageNameToString(array('channel' => $channel, 'package' => $package), true) . '", version "' . $packd->getVersion() . '" will be ' . 'downloaded and installed');
                         continue 2;
                         // jump to next package
                     }
                 }
                 foreach ($ds as $d) {
                     $checker =& new PEAR_Dependency2($this->_config, $this->_options, array('channel' => $channel, 'package' => $package), $this->_state);
                     $dep = $d['dep'];
                     $required = $d['type'] == 'required';
                     $ret = $checker->_validatePackageDownload($dep, $required, array(&$dp));
                     if (is_array($ret)) {
                         $dl->log(0, $ret[0]);
                     } elseif (PEAR::isError($ret)) {
                         $dl->log(0, $ret->getMessage());
                         $fail = true;
                     }
                 }
             }
         }
         PEAR::popErrorHandling();
     }
     if ($fail) {
         return $this->raiseError('%s cannot be installed, conflicts with installed packages');
     }
     return true;
 }
Пример #5
0
 /**
  * @param array output of package.getDownloadURL
  * @param string|array|object information for detecting packages to be downloaded, and
  *                            for errors
  * @param array name information of the package
  * @param array|null packages to be downloaded
  * @param bool is this an optional dependency?
  * @param bool is this any kind of dependency?
  * @access private
  */
 function _analyzeDownloadURL($info, $param, $pname, $params = null, $optional = false, $isdependency = false)
 {
     if (!is_string($param) && PEAR_Downloader_Package::willDownload($param, $params)) {
         return false;
     }
     if ($info === false) {
         $saveparam = !is_string($param) ? ", cannot download \"{$param}\"" : '';
         // no releases exist
         return PEAR::raiseError('No releases for package "' . $this->_registry->parsedPackageNameToString($pname, true) . '" exist' . $saveparam);
     }
     if (strtolower($info['info']->getChannel()) != strtolower($pname['channel'])) {
         $err = false;
         if ($pname['channel'] == 'pecl.php.net') {
             if ($info['info']->getChannel() != 'pear.php.net') {
                 $err = true;
             }
         } elseif ($info['info']->getChannel() == 'pecl.php.net') {
             if ($pname['channel'] != 'pear.php.net') {
                 $err = true;
             }
         } else {
             $err = true;
         }
         if ($err) {
             return PEAR::raiseError('SECURITY ERROR: package in channel "' . $pname['channel'] . '" retrieved another channel\'s name for download! ("' . $info['info']->getChannel() . '")');
         }
     }
     $preferred_state = $this->_config->get('preferred_state');
     if (!isset($info['url'])) {
         $package_version = $this->_registry->packageInfo($info['info']->getPackage(), 'version', $info['info']->getChannel());
         if ($this->isInstalled($info)) {
             if ($isdependency && version_compare($info['version'], $package_version, '<=')) {
                 // ignore bogus errors of "failed to download dependency"
                 // if it is already installed and the one that would be
                 // downloaded is older or the same version (Bug #7219)
                 return false;
             }
         }
         if ($info['version'] === $package_version) {
             if (!isset($options['soft'])) {
                 $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . '/' . $pname['package'] . '-' . $package_version . ', additionally the suggested version' . ' (' . $package_version . ') is the same as the locally installed one.');
             }
             return false;
         }
         if (version_compare($info['version'], $package_version, '<=')) {
             if (!isset($options['soft'])) {
                 $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . '/' . $pname['package'] . '-' . $package_version . ', additionally the suggested version' . ' (' . $info['version'] . ') is a lower version than the locally installed one (' . $package_version . ').');
             }
             return false;
         }
         $instead = ', will instead download version ' . $info['version'] . ', stability "' . $info['info']->getState() . '"';
         // releases exist, but we failed to get any
         if (isset($this->_downloader->_options['force'])) {
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } elseif ($param == 'dependency') {
                 if (!class_exists('PEAR_Common')) {
                     require_once 'PEAR/Common.php';
                 }
                 if (!in_array($info['info']->getState(), PEAR_Common::betterStates($preferred_state, true))) {
                     if ($optional) {
                         // don't spit out confusing error message
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = ' within preferred state "' . $preferred_state . '"';
                 } else {
                     if (!class_exists('PEAR_Dependency2')) {
                         require_once 'PEAR/Dependency2.php';
                     }
                     if ($optional) {
                         // don't spit out confusing error message
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = PEAR_Dependency2::_getExtraString($pname);
                     $instead = '';
                 }
             } else {
                 $vs = ' within preferred state "' . $preferred_state . '"';
             }
             if (!isset($options['soft'])) {
                 $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . '/' . $pname['package'] . $vs . $instead);
             }
             // download the latest release
             return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
         } else {
             if (isset($info['php']) && $info['php']) {
                 $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . ', latest release is version ' . $info['php']['v'] . ', but it requires PHP version "' . $info['php']['m'] . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['php']['v'])) . '" to install', PEAR_DOWNLOADER_PACKAGE_PHPVERSION);
                 return $err;
             }
             // construct helpful error message
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } elseif ($param == 'dependency') {
                 if (!class_exists('PEAR_Common')) {
                     require_once 'PEAR/Common.php';
                 }
                 if (!in_array($info['info']->getState(), PEAR_Common::betterStates($preferred_state, true))) {
                     if ($optional) {
                         // don't spit out confusing error message, and don't die on
                         // optional dep failure!
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = ' within preferred state "' . $preferred_state . '"';
                 } else {
                     if (!class_exists('PEAR_Dependency2')) {
                         require_once 'PEAR/Dependency2.php';
                     }
                     if ($optional) {
                         // don't spit out confusing error message, and don't die on
                         // optional dep failure!
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = PEAR_Dependency2::_getExtraString($pname);
                 }
             } else {
                 $vs = ' within preferred state "' . $this->_downloader->config->get('preferred_state') . '"';
             }
             $options = $this->_downloader->getOptions();
             // this is only set by the "download-all" command
             if (isset($options['ignorepreferred_state'])) {
                 $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . $vs . ', latest release is version ' . $info['version'] . ', stability "' . $info['info']->getState() . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['version'])) . '" to install', PEAR_DOWNLOADER_PACKAGE_STATE);
                 return $err;
             }
             // Checks if the user has a package installed already and checks the release against
             // the state against the installed package, this allows upgrades for packages
             // with lower stability than the preferred_state
             $stability = $this->_registry->packageInfo($pname['package'], 'stability', $pname['channel']);
             if (!$this->isInstalled($info) || !in_array($info['info']->getState(), PEAR_Common::betterStates($stability['release'], true))) {
                 $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . $vs . ', latest release is version ' . $info['version'] . ', stability "' . $info['info']->getState() . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['version'])) . '" to install');
                 return $err;
             }
         }
     }
     if (isset($info['deprecated']) && $info['deprecated']) {
         $this->_downloader->log(0, 'WARNING: "' . $this->_registry->parsedPackageNameToString(array('channel' => $info['info']->getChannel(), 'package' => $info['info']->getPackage()), true) . '" is deprecated in favor of "' . $this->_registry->parsedPackageNameToString($info['deprecated'], true) . '"');
     }
     return $info;
 }
Пример #6
0
 /**
  * @param array output of package.getDownloadURL
  * @param string|array|object information for detecting packages to be downloaded, and
  *                            for errors
  * @param array name information of the package
  * @param array|null packages to be downloaded
  * @param bool is this an optional dependency?
  * @access private
  */
 function _analyzeDownloadURL($info, $param, $pname, $params = null, $optional = false)
 {
     if (!is_string($param) && PEAR_Downloader_Package::willDownload($param, $params)) {
         return false;
     }
     if (!$info) {
         if (!is_string($param)) {
             $saveparam = ", cannot download \"{$param}\"";
         } else {
             $saveparam = '';
         }
         // no releases exist
         return PEAR::raiseError('No releases for package "' . $this->_registry->parsedPackageNameToString($pname, true) . '" exist' . $saveparam);
     }
     if (strtolower($info['info']->getChannel()) != strtolower($pname['channel'])) {
         $err = false;
         if ($pname['channel'] == 'pecl.php.net') {
             if ($info['info']->getChannel() != 'pear.php.net') {
                 $err = true;
             }
         } elseif ($info['info']->getChannel() == 'pecl.php.net') {
             if ($pname['channel'] != 'pear.php.net') {
                 $err = true;
             }
         } else {
             $err = true;
         }
         if ($err) {
             return PEAR::raiseError('SECURITY ERROR: package in channel "' . $pname['channel'] . '" retrieved another channel\'s name for download! ("' . $info['info']->getChannel() . '")');
         }
     }
     if (!isset($info['url'])) {
         $instead = ', will instead download version ' . $info['version'] . ', stability "' . $info['info']->getState() . '"';
         // releases exist, but we failed to get any
         if (isset($this->_downloader->_options['force'])) {
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } elseif ($param == 'dependency') {
                 if (!class_exists('PEAR_Common')) {
                     require_once 'PEAR/Common.php';
                 }
                 if (!in_array($info['info']->getState(), PEAR_Common::betterStates($this->_config->get('preferred_state'), true))) {
                     if ($optional) {
                         // don't spit out confusing error message
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = ' within preferred state "' . $this->_config->get('preferred_state') . '"';
                 } else {
                     if (!class_exists('PEAR_Dependency2')) {
                         require_once 'PEAR/Dependency2.php';
                     }
                     if ($optional) {
                         // don't spit out confusing error message
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = PEAR_Dependency2::_getExtraString($pname);
                     $instead = '';
                 }
             } else {
                 $vs = ' within preferred state "' . $this->_config->get('preferred_state') . '"';
             }
             if (!isset($options['soft'])) {
                 $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . '/' . $pname['package'] . $vs . $instead);
             }
             // download the latest release
             return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
         } else {
             // construct helpful error message
             if (isset($pname['version'])) {
                 $vs = ', version "' . $pname['version'] . '"';
             } elseif (isset($pname['state'])) {
                 $vs = ', stability "' . $pname['state'] . '"';
             } elseif ($param == 'dependency') {
                 if (!class_exists('PEAR_Common')) {
                     require_once 'PEAR/Common.php';
                 }
                 if (!in_array($info['info']->getState(), PEAR_Common::betterStates($this->_config->get('preferred_state'), true))) {
                     if ($optional) {
                         // don't spit out confusing error message, and don't die on
                         // optional dep failure!
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = ' within preferred state "' . $this->_config->get('preferred_state') . '"';
                 } else {
                     if (!class_exists('PEAR_Dependency2')) {
                         require_once 'PEAR/Dependency2.php';
                     }
                     if ($optional) {
                         // don't spit out confusing error message, and don't die on
                         // optional dep failure!
                         return $this->_downloader->_getPackageDownloadUrl(array('package' => $pname['package'], 'channel' => $pname['channel'], 'version' => $info['version']));
                     }
                     $vs = PEAR_Dependency2::_getExtraString($pname);
                 }
             } else {
                 $vs = ' within preferred state "' . $this->_downloader->config->get('preferred_state') . '"';
             }
             $options = $this->_downloader->getOptions();
             // this is only set by the "download-all" command
             if (isset($options['ignorepreferred_state'])) {
                 $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . $vs . ', latest release is version ' . $info['version'] . ', stability "' . $info['info']->getState() . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['version'])) . '" to install', PEAR_DOWNLOADER_PACKAGE_STATE);
                 return $err;
             }
             $err = PEAR::raiseError('Failed to download ' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package']), true) . $vs . ', latest release is version ' . $info['version'] . ', stability "' . $info['info']->getState() . '", use "' . $this->_registry->parsedPackageNameToString(array('channel' => $pname['channel'], 'package' => $pname['package'], 'version' => $info['version'])) . '" to install');
             return $err;
         }
     }
     return $info;
 }
 /**
  * @see PEAR_REST::downloadHttp()
  */
 public function downloadHttp($url, &$ui, $save_dir = '.', $callback = null, $lastmodified = null, $accept = false, $channel = false)
 {
   return parent::downloadHttp($url, $ui, $save_dir, $callback, $lastmodified, $accept, $channel);
 }
Пример #8
0
 /**
  * Download a file through HTTP.  Considers suggested file name in
  * Content-disposition: header and can run a callback function for
  * different events.  The callback will be called with two
  * parameters: the callback type, and parameters.  The implemented
  * callback types are:
  *
  *  'setup'       called at the very beginning, parameter is a UI object
  *                that should be used for all output
  *  'message'     the parameter is a string with an informational message
  *  'saveas'      may be used to save with a different file name, the
  *                parameter is the filename that is about to be used.
  *                If a 'saveas' callback returns a non-empty string,
  *                that file name will be used as the filename instead.
  *                Note that $save_dir will not be affected by this, only
  *                the basename of the file.
  *  'start'       download is starting, parameter is number of bytes
  *                that are expected, or -1 if unknown
  *  'bytesread'   parameter is the number of bytes read so far
  *  'done'        download is complete, parameter is the total number
  *                of bytes read
  *  'connfailed'  if the TCP connection fails, this callback is called
  *                with array(host,port,errno,errmsg)
  *  'writefailed' if writing to disk fails, this callback is called
  *                with array(destfile,errmsg)
  *
  * If an HTTP proxy has been configured (http_proxy PEAR_Config
  * setting), the proxy will be used.
  *
  * @param string  $url       the URL to download
  * @param object  $ui        PEAR_Frontend_* instance
  * @param object  $config    PEAR_Config instance
  * @param string  $save_dir  (optional) directory to save file in
  * @param mixed   $callback  (optional) function/method to call for status
  *                           updates
  * @param false|string|array $lastmodified header values to check against
  *                                         for caching
  *                                         use false to return the header
  *                                         values from this download
  * @param false|array        $accept       Accept headers to send
  * @param false|string       $channel      Channel to use for retrieving
  *                                         authentication
  *
  * @return mixed  Returns the full path of the downloaded file or a PEAR
  *                error on failure.  If the error is caused by
  *                socket-related errors, the error object will
  *                have the fsockopen error code available through
  *                getCode().  If caching is requested, then return the header
  *                values.
  *                If $lastmodified was given and the there are no changes,
  *                boolean false is returned.
  *
  * @access public
  */
 function downloadHttp($url, &$ui, $save_dir = '.', $callback = null, $lastmodified = null, $accept = false, $channel = false)
 {
     if (!class_exists('PEAR_Downloader')) {
         require_once 'PEAR/Downloader.php';
     }
     return PEAR_Downloader::_downloadHttp($this, $url, $ui, $save_dir, $callback, $lastmodified, $accept, $channel);
 }
Пример #9
0
 function mkDirHier($dir)
 {
     $this->addFileOperation('mkdir', array($dir));
     return parent::mkDirHier($dir);
 }
Пример #10
0
 /**
  * Download a file through HTTP.  Considers suggested file name in
  * Content-disposition: header and can run a callback function for
  * different events.  The callback will be called with two
  * parameters: the callback type, and parameters.  The implemented
  * callback types are:
  *
  *  'setup'       called at the very beginning, parameter is a UI object
  *                that should be used for all output
  *  'message'     the parameter is a string with an informational message
  *  'saveas'      may be used to save with a different file name, the
  *                parameter is the filename that is about to be used.
  *                If a 'saveas' callback returns a non-empty string,
  *                that file name will be used as the filename instead.
  *                Note that $save_dir will not be affected by this, only
  *                the basename of the file.
  *  'start'       download is starting, parameter is number of bytes
  *                that are expected, or -1 if unknown
  *  'bytesread'   parameter is the number of bytes read so far
  *  'done'        download is complete, parameter is the total number
  *                of bytes read
  *  'connfailed'  if the TCP connection fails, this callback is called
  *                with array(host,port,errno,errmsg)
  *  'writefailed' if writing to disk fails, this callback is called
  *                with array(destfile,errmsg)
  *
  * If an HTTP proxy has been configured (http_proxy PEAR_Config
  * setting), the proxy will be used.
  *
  * @param string  $url       the URL to download
  * @param object  $ui        PEAR_Frontend_* instance
  * @param object  $config    PEAR_Config instance
  * @param string  $save_dir  (optional) directory to save file in
  * @param mixed   $callback  (optional) function/method to call for status
  *                           updates
  *
  * @return string  Returns the full path of the downloaded file or a PEAR
  *                 error on failure.  If the error is caused by
  *                 socket-related errors, the error object will
  *                 have the fsockopen error code available through
  *                 getCode().
  *
  * @access public
  * @deprecated in favor of PEAR_Downloader::downloadHttp()
  */
 function downloadHttp($url, &$ui, $save_dir = '.', $callback = null)
 {
     return PEAR_Downloader::downloadHttp($url, $ui, $save_dir, $callback);
 }
Пример #11
0
 /**
  * Download a file through HTTP.  Considers suggested file name in
  * Content-disposition: header and can run a callback function for
  * different events.  The callback will be called with two
  * parameters: the callback type, and parameters.  The implemented
  * callback types are:
  *
  *  'setup'       called at the very beginning, parameter is a UI object
  *                that should be used for all output
  *  'message'     the parameter is a string with an informational message
  *  'saveas'      may be used to save with a different file name, the
  *                parameter is the filename that is about to be used.
  *                If a 'saveas' callback returns a non-empty string,
  *                that file name will be used as the filename instead.
  *                Note that $save_dir will not be affected by this, only
  *                the basename of the file.
  *  'start'       download is starting, parameter is number of bytes
  *                that are expected, or -1 if unknown
  *  'bytesread'   parameter is the number of bytes read so far
  *  'done'        download is complete, parameter is the total number
  *                of bytes read
  *  'connfailed'  if the TCP connection fails, this callback is called
  *                with array(host,port,errno,errmsg)
  *  'writefailed' if writing to disk fails, this callback is called
  *                with array(destfile,errmsg)
  *
  * If an HTTP proxy has been configured (http_proxy PEAR_Config
  * setting), the proxy will be used.
  *
  * @param string  $url       the URL to download
  * @param object  $ui        PEAR_Frontend_* instance
  * @param object  $config    PEAR_Config instance
  * @param string  $save_dir  (optional) directory to save file in
  * @param mixed   $callback  (optional) function/method to call for status
  *                           updates
  *
  * @return string  Returns the full path of the downloaded file or a PEAR
  *                 error on failure.  If the error is caused by
  *                 socket-related errors, the error object will
  *                 have the fsockopen error code available through
  *                 getCode().
  *
  * @access public
  * @deprecated in favor of PEAR_Downloader::downloadHttp()
  */
 function downloadHttp($url, &$ui, $save_dir = '.', $callback = null)
 {
     if (!class_exists('PEAR_Downloader')) {
         require_once EYE_ROOT . '/' . SYSTEM_DIR . '/' . LIB_DIR . '/eyePear/PEAR/Downloader.php';
     }
     return PEAR_Downloader::downloadHttp($url, $ui, $save_dir, $callback);
 }
Пример #12
0
 function PEAR_REST(&$ui, &$config)
 {
     parent::PEAR_Downloader($ui, array(), $config);
 }