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

📄 10.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 2 页
字号:
        }        return $packagelist['p'];    }    function listAll($base, $dostable, $basic = true, $searchpackage = false, $searchsummary = false)    {        $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml');        if (PEAR::isError($packagelist)) {            return $packagelist;        }        if ($this->_rest->config->get('verbose') > 0) {            $ui = &PEAR_Frontend::singleton();            $ui->log('Retrieving data...0%', false);        }        $ret = array();        if (!is_array($packagelist) || !isset($packagelist['p'])) {            return $ret;        }        if (!is_array($packagelist['p'])) {            $packagelist['p'] = array($packagelist['p']);        }        PEAR::pushErrorHandling(PEAR_ERROR_RETURN);        $next = .1;        foreach ($packagelist['p'] as $progress => $package) {            if ($this->_rest->config->get('verbose') > 0) {                if ($progress / count($packagelist['p']) >= $next) {                    if ($next == .5) {                        $ui->log('50%', false);                    } else {                        $ui->log('.', false);                    }                    $next += .1;                }            }            if ($basic) { // remote-list command                if ($dostable) {                    $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) .                        '/stable.txt');                } else {                    $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) .                        '/latest.txt');                }                if (PEAR::isError($latest)) {                    $latest = false;                }                $info = array('stable' => $latest);            } else { // list-all command                $inf = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml');                if (PEAR::isError($inf)) {                    PEAR::popErrorHandling();                    return $inf;                }                if ($searchpackage) {                    $found = (!empty($searchpackage) && stristr($package, $searchpackage) !== false);                    if (!$found && !(isset($searchsummary) && !empty($searchsummary)                        && (stristr($inf['s'], $searchsummary) !== false                            || stristr($inf['d'], $searchsummary) !== false)))                    {                        continue;                    };                }                $releases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) .                    '/allreleases.xml');                if (PEAR::isError($releases)) {                    continue;                }                if (!isset($releases['r'][0])) {                    $releases['r'] = array($releases['r']);                }                unset($latest);                unset($unstable);                unset($stable);                unset($state);                foreach ($releases['r'] as $release) {                    if (!isset($latest)) {                        if ($dostable && $release['s'] == 'stable') {                            $latest = $release['v'];                            $state = 'stable';                        }                        if (!$dostable) {                            $latest = $release['v'];                            $state = $release['s'];                        }                    }                    if (!isset($stable) && $release['s'] == 'stable') {                        $stable = $release['v'];                        if (!isset($unstable)) {                            $unstable = $stable;                        }                    }                    if (!isset($unstable) && $release['s'] != 'stable') {                        $latest = $unstable = $release['v'];                        $state = $release['s'];                    }                    if (isset($latest) && !isset($state)) {                        $state = $release['s'];                    }                    if (isset($latest) && isset($stable) && isset($unstable)) {                        break;                    }                }                $deps = array();                if (!isset($unstable)) {                    $unstable = false;                    $state = 'stable';                    if (isset($stable)) {                        $latest = $unstable = $stable;                    }                } else {                    $latest = $unstable;                }                if (!isset($latest)) {                    $latest = false;                }                if ($latest) {                    $d = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' .                        $latest . '.txt');                    if (!PEAR::isError($d)) {                        $d = unserialize($d);                        if ($d) {                            if (isset($d['required'])) {                                if (!class_exists('PEAR_PackageFile_v2')) {                                    require_once 'PEAR/PackageFile/v2.php';                                }                                if (!isset($pf)) {                                    $pf = new PEAR_PackageFile_v2;                                }                                $pf->setDeps($d);                                $tdeps = $pf->getDeps();                            } else {                                $tdeps = $d;                            }                            foreach ($tdeps as $dep) {                                if ($dep['type'] !== 'pkg') {                                    continue;                                }                                $deps[] = $dep;                            }                        }                    }                }                if (!isset($stable)) {                    $stable = '-n/a-';                }                if (!$searchpackage) {                    $info = array('stable' => $latest, 'summary' => $inf['s'], 'description' =>                        $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'],                        'unstable' => $unstable, 'state' => $state);                } else {                    $info = array('stable' => $stable, 'summary' => $inf['s'], 'description' =>                        $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'],                        'unstable' => $unstable, 'state' => $state);                }            }            $ret[$package] = $info;        }        PEAR::popErrorHandling();        return $ret;    }    function listLatestUpgrades($base, $state, $installed, $channel, &$reg)    {        $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml');        if (PEAR::isError($packagelist)) {            return $packagelist;        }        $ret = array();        if (!is_array($packagelist) || !isset($packagelist['p'])) {            return $ret;        }        if (!is_array($packagelist['p'])) {            $packagelist['p'] = array($packagelist['p']);        }        if ($state) {            $states = $this->betterStates($state, true);        }        foreach ($packagelist['p'] as $package) {            if (!isset($installed[strtolower($package)])) {                continue;            }            $inst_version = $reg->packageInfo($package, 'version', $channel);            PEAR::pushErrorHandling(PEAR_ERROR_RETURN);            $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) .                '/allreleases.xml');            PEAR::popErrorHandling();            if (PEAR::isError($info)) {                continue; // no remote releases            }            if (!isset($info['r'])) {                continue;            }            $found = false;            $release = false;            if (!is_array($info['r']) || !isset($info['r'][0])) {                $info['r'] = array($info['r']);            }            foreach ($info['r'] as $release) {                if ($inst_version && version_compare($release['v'], $inst_version, '<=')) {                    continue;                }                if ($state) {                    if (in_array($release['s'], $states)) {                        $found = true;                        break;                    }                } else {                    $found = true;                    break;                }            }            if (!$found) {                continue;            }            $relinfo = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/' .                 $release['v'] . '.xml');            if (PEAR::isError($relinfo)) {                return $relinfo;            }            $ret[$package] = array(                    'version' => $release['v'],                    'state' => $release['s'],                    'filesize' => $relinfo['f'],                );        }        return $ret;    }    function packageInfo($base, $package)    {        PEAR::pushErrorHandling(PEAR_ERROR_RETURN);        $pinfo = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml');        if (PEAR::isError($pinfo)) {            PEAR::popErrorHandling();            return PEAR::raiseError('Unknown package: "' . $package . '" (Debug: ' .                $pinfo->getMessage() . ')');        }        $releases = array();        $allreleases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) .            '/allreleases.xml');        if (!PEAR::isError($allreleases)) {            if (!class_exists('PEAR_PackageFile_v2')) {                require_once 'PEAR/PackageFile/v2.php';            }            if (!is_array($allreleases['r'])) {                $allreleases['r'] = array($allreleases['r']);            }            $pf = new PEAR_PackageFile_v2;            foreach ($allreleases['r'] as $release) {                $ds = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' .                    $release['v'] . '.txt');                if (PEAR::isError($ds)) {                    continue;                }                if (!isset($latest)) {                    $latest = $release['v'];                }                $pf->setDeps(unserialize($ds));                $ds = $pf->getDeps();                $info = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package)                    . '/' . $release['v'] . '.xml');                if (PEAR::isError($info)) {                    continue;                }                $releases[$release['v']] = array(                    'doneby' => $info['m'],                    'license' => $info['l'],                    'summary' => $info['s'],                    'description' => $info['d'],                    'releasedate' => $info['da'],                    'releasenotes' => $info['n'],                    'state' => $release['s'],                    'deps' => $ds ? $ds : array(),                );            }        } else {            $latest = '';        }        PEAR::popErrorHandling();        return array(            'name' => $pinfo['n'],            'channel' => $pinfo['c'],            'category' => $pinfo['ca']['_content'],            'stable' => $latest,            'license' => $pinfo['l'],            'summary' => $pinfo['s'],            'description' => $pinfo['d'],            'releases' => $releases,            );    }    /**     * Return an array containing all of the states that are more stable than     * or equal to the passed in state     *     * @param string Release state     * @param boolean Determines whether to include $state in the list     * @return false|array False if $state is not a valid release state     */    function betterStates($state, $include = false)    {        static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable');        $i = array_search($state, $states);        if ($i === false) {            return false;        }        if ($include) {            $i--;        }        return array_slice($states, $i + 1);    }}?>

⌨️ 快捷键说明

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