⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 2 页
字号:
        $data = array(            'caption' => 'All packages:',            'border' => true,            'headline' => array('Package', 'Latest', 'Local'),            );        $local_pkgs = $reg->listPackages($channel);        foreach ($available as $name => $info) {            $installed = $reg->packageInfo($name, null, $channel);            if (is_array($installed['version'])) {                $installed['version'] = $installed['version']['release'];            }            $desc = $info['summary'];            if (isset($params[$name])) {                $desc .= "\n\n".$info['description'];            }            if (isset($options['mode']))            {                if ($options['mode'] == 'installed' && !isset($installed['version'])) {                    continue;                }                if ($options['mode'] == 'notinstalled' && isset($installed['version'])) {                    continue;                }                if ($options['mode'] == 'upgrades'                      && (!isset($installed['version']) || version_compare($installed['version'],                      $info['stable'], '>='))) {                    continue;                }            }            $pos = array_search(strtolower($name), $local_pkgs);            if ($pos !== false) {                unset($local_pkgs[$pos]);            }            if (isset($info['stable']) && !$info['stable']) {                $info['stable'] = null;            }            $data['data'][$info['category']][] = array(                $reg->channelAlias($channel) . '/' . $name,                @$info['stable'],                @$installed['version'],                @$desc,                @$info['deps'],                );        }        if (isset($options['mode']) && in_array($options['mode'], array('notinstalled', 'upgrades'))) {            $this->config->set('default_channel', $savechannel);            $this->ui->outputData($data, $command);            return true;        }        foreach ($local_pkgs as $name) {            $info = &$reg->getPackage($name, $channel);            $data['data']['Local'][] = array(                $reg->channelAlias($channel) . '/' . $info->getPackage(),                '',                $info->getVersion(),                $info->getSummary(),                $info->getDeps()                );        }        $this->config->set('default_channel', $savechannel);        $this->ui->outputData($data, $command);        return true;    }    // }}}    // {{{ doSearch()    function doSearch($command, $options, $params)    {        if ((!isset($params[0]) || empty($params[0]))            && (!isset($params[1]) || empty($params[1])))        {            return $this->raiseError('no valid search string supplied');        };        $savechannel = $channel = $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        $package = $params[0];        $summary = isset($params[1]) ? $params[1] : false;        if (isset($options['channel'])) {            $reg = &$this->config->getRegistry();            $channel = $options['channel'];            if ($reg->channelExists($channel)) {                $this->config->set('default_channel', $channel);            } else {                return $this->raiseError('Channel "' . $channel . '" does not exist');            }        }        $chan = $reg->getChannel($channel);        $this->_checkChannelForStatus($channel, $chan);        if ($chan->supportsREST($this->config->get('preferred_mirror')) &&              $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {            $rest = &$this->config->getREST('1.0', array());            $available = $rest->listAll($base, false, false, $package, $summary);        } else {            $r = &$this->config->getRemote();            $available = $r->call('package.search', $package, $summary, true,                 $this->config->get('preferred_state') == 'stable', true);        }        if (PEAR::isError($available)) {            $this->config->set('default_channel', $savechannel);            return $this->raiseError($available);        }        if (!$available) {            return $this->raiseError('no packages found that match pattern "' . $package . '"');        }        $data = array(            'caption' => 'Matched packages, channel ' . $channel . ':',            'border' => true,            'headline' => array('Package', 'Stable/(Latest)', 'Local'),            );        foreach ($available as $name => $info) {            $installed = $reg->packageInfo($name, null, $channel);            $desc = $info['summary'];            if (isset($params[$name]))                $desc .= "\n\n".$info['description'];            $unstable = '';            if ($info['unstable']) {                $unstable = '/(' . $info['unstable'] . ' ' . $info['state'] . ')';            }            if (!isset($info['stable']) || !$info['stable']) {                $info['stable'] = 'none';            }            $version = is_array($installed['version']) ? $installed['version']['release'] :                $installed['version'];            $data['data'][$info['category']][] = array(                $name,                $info['stable'] . $unstable,                $version,                $desc,                );        }        $this->ui->outputData($data, $command);        $this->config->set('default_channel', $channel);        return true;    }    // }}}    function &getDownloader($options)    {        if (!class_exists('PEAR_Downloader')) {            require_once 'PEAR/Downloader.php';        }        $a = &new PEAR_Downloader($this->ui, $options, $this->config);        return $a;    }    // {{{ doDownload()    function doDownload($command, $options, $params)    {        // make certain that dependencies are ignored        $options['downloadonly'] = 1;        $downloader = &$this->getDownloader($options);        $downloader->setDownloadDir(getcwd());        $errors = array();        $downloaded = array();        $err = $downloader->download($params);        if (PEAR::isError($err)) {            return $err;        }        $errors = $downloader->getErrorMsgs();        if (count($errors)) {            $errinfo = array();            $errinfo['data'] = array($errors);            $errinfo['headline'] = 'Download Errors';            $this->ui->outputData($errinfo);            return $this->raiseError("$command failed");        }        $downloaded = $downloader->getDownloadedPackages();        foreach ($downloaded as $pkg) {            $this->ui->outputData("File $pkg[file] downloaded", $command);        }        return true;    }    function downloadCallback($msg, $params = null)    {        if ($msg == 'done') {            $this->bytes_downloaded = $params;        }    }    // }}}    // {{{ doListUpgrades()    function doListUpgrades($command, $options, $params)    {        require_once 'PEAR/Common.php';        $savechannel = $channel = $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        foreach ($reg->listChannels() as $channel) {            $inst = array_flip($reg->listPackages($channel));            if (!count($inst)) {                continue;            }            if ($channel == '__uri') {                continue;            }            $this->config->set('default_channel', $channel);            if (empty($params[0])) {                $state = $this->config->get('preferred_state');            } else {                $state = $params[0];            }            $caption = $channel . ' Available Upgrades';            $chan = $reg->getChannel($channel);            $this->_checkChannelForStatus($channel, $chan);            if ($chan->supportsREST($this->config->get('preferred_mirror')) &&                  $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) {                $rest = &$this->config->getREST('1.0', array());                if (empty($state) || $state == 'any') {                    $state = false;                } else {                    $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')';                }                $latest = $rest->listLatestUpgrades($base, $state, $inst, $channel, $reg);            } else {                $remote = &$this->config->getRemote();                $remote->pushErrorHandling(PEAR_ERROR_RETURN);                if (empty($state) || $state == 'any') {                    $latest = $remote->call("package.listLatestReleases");                } else {                    $latest = $remote->call("package.listLatestReleases", $state);                    $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')';                }                $remote->popErrorHandling();            }            if (PEAR::isError($latest)) {                $this->ui->outputData($latest->getMessage());                continue;            }            $caption .= ':';            if (PEAR::isError($latest)) {                $this->config->set('default_channel', $savechannel);                return $latest;            }            $data = array(                'caption' => $caption,                'border' => 1,                'headline' => array('Channel', 'Package', 'Local', 'Remote', 'Size'),                );            foreach ((array)$latest as $pkg => $info) {                $package = strtolower($pkg);                if (!isset($inst[$package])) {                    // skip packages we don't have installed                    continue;                }                extract($info);                $inst_version = $reg->packageInfo($package, 'version', $channel);                $inst_state   = $reg->packageInfo($package, 'release_state', $channel);                if (version_compare("$version", "$inst_version", "le")) {                    // installed version is up-to-date                    continue;                }                if ($filesize >= 20480) {                    $filesize += 1024 - ($filesize % 1024);                    $fs = sprintf("%dkB", $filesize / 1024);                } elseif ($filesize > 0) {                    $filesize += 103 - ($filesize % 103);                    $fs = sprintf("%.1fkB", $filesize / 1024.0);                } else {                    $fs = "  -"; // XXX center instead                }                $data['data'][] = array($channel, $pkg, "$inst_version ($inst_state)", "$version ($state)", $fs);            }            if (empty($data['data'])) {                $this->ui->outputData('Channel ' . $channel . ': No upgrades available');            } else {                $this->ui->outputData($data, $command);            }        }        $this->config->set('default_channel', $savechannel);        return true;    }    // }}}    // {{{ doClearCache()    function doClearCache($command, $options, $params)    {        $cache_dir = $this->config->get('cache_dir');        $verbose = $this->config->get('verbose');        $output = '';        if (!($dp = @opendir($cache_dir))) {            return $this->raiseError("opendir($cache_dir) failed: $php_errormsg");        }        if ($verbose >= 1) {            $output .= "reading directory $cache_dir\n";        }        $num = 0;        while ($ent = readdir($dp)) {            if (preg_match('/^xmlrpc_cache_[a-z0-9]{32}$/', $ent) ||                  preg_match('/rest.cache(file|id)$/', $ent)) {                $path = $cache_dir . DIRECTORY_SEPARATOR . $ent;                $ok = @unlink($path);                if ($ok) {                    if ($verbose >= 2) {                        $output .= "deleted $path\n";                    }                    $num++;                } elseif ($verbose >= 1) {                    $output .= "failed to delete $path\n";                }            }        }        closedir($dp);        if ($verbose >= 1) {            $output .= "$num cache entries cleared\n";        }        $this->ui->outputData(rtrim($output), $command);        return $num;    }    // }}}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -