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

📄 package.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 5 页
字号:
        }    }    /**     * @param array Parsed array from {@link PEAR_Registry::parsePackageName()} or a dependency     *                     returned from getDepDownloadURL()     */    function isEqual($param)    {        if (is_object($param)) {            $channel = $param->getChannel();            $package = $param->getPackage();            if ($param->getURI()) {                $param = array(                    'channel' => $param->getChannel(),                    'package' => $param->getPackage(),                    'version' => $param->getVersion(),                    'uri' => $param->getURI(),                );            } else {                $param = array(                    'channel' => $param->getChannel(),                    'package' => $param->getPackage(),                    'version' => $param->getVersion(),                );            }        } else {            if (isset($param['uri'])) {                $param['channel'] = '__uri';                $param['package'] = $param['dep']['name'];            }            $package = isset($param['package']) ? $param['package'] :                $param['info']->getPackage();            $channel = isset($param['channel']) ? $param['channel'] :                $param['info']->getChannel();            if (isset($param['rel'])) {                if (!class_exists('PEAR_Dependency2')) {                    require_once 'PEAR/Dependency2.php';                }                $newdep = PEAR_Dependency2::normalizeDep($param);                $newdep = $newdep[0];            } elseif (isset($param['min'])) {                $newdep = $param;            }        }        if (isset($newdep)) {            if (!isset($newdep['min'])) {                $newdep['min'] = '0';            }            if (!isset($newdep['max'])) {                $newdep['max'] = '100000000000000000000';            }            // use magic to support pecl packages suddenly jumping to the pecl channel            // we need to support both dependency possibilities            if ($channel == 'pear.php.net' && $this->getChannel() == 'pecl.php.net') {                if ($package == $this->getPackage()) {                    $channel = 'pecl.php.net';                }            }            if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') {                if ($package == $this->getPackage()) {                    $channel = 'pear.php.net';                }            }            return (strtolower($package) == strtolower($this->getPackage()) &&                $channel == $this->getChannel() &&                version_compare($newdep['min'], $this->getVersion(), '<=') &&                version_compare($newdep['max'], $this->getVersion(), '>='));        }        // use magic to support pecl packages suddenly jumping to the pecl channel        if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') {            if (strtolower($package) == strtolower($this->getPackage())) {                $channel = 'pear.php.net';            }        }        if (isset($param['version'])) {            return (strtolower($package) == strtolower($this->getPackage()) &&                $channel == $this->getChannel() &&                $param['version'] == $this->getVersion());        } else {            return strtolower($package) == strtolower($this->getPackage()) &&                $channel == $this->getChannel();        }    }    function isInstalled($dep, $oper = '==')    {        if (!$dep) {            return false;        }        if ($oper != 'ge' && $oper != 'gt' && $oper != 'has' && $oper != '==') {            return false;        }        if (is_object($dep)) {            $package = $dep->getPackage();            $channel = $dep->getChannel();            if ($dep->getURI()) {                $dep = array(                    'uri' => $dep->getURI(),                    'version' => $dep->getVersion(),                );            } else {                $dep = array(                    'version' => $dep->getVersion(),                );            }        } else {            if (isset($dep['uri'])) {                $channel = '__uri';                $package = $dep['dep']['name'];            } else {                $channel = $dep['info']->getChannel();                $package = $dep['info']->getPackage();            }        }        $options = $this->_downloader->getOptions();        $test = $this->_installRegistry->packageExists($package, $channel);        if (!$test && $channel == 'pecl.php.net') {            // do magic to allow upgrading from old pecl packages to new ones            $test = $this->_installRegistry->packageExists($package, 'pear.php.net');            $channel = 'pear.php.net';        }        if ($test) {            if (isset($dep['uri'])) {                if ($this->_installRegistry->packageInfo($package, 'uri', '__uri') == $dep['uri']) {                    return true;                }            }            if (isset($options['upgrade'])) {                if ($oper == 'has') {                    if (version_compare($this->_installRegistry->packageInfo(                          $package, 'version', $channel),                          $dep['version'], '>=')) {                        return true;                    } else {                        return false;                    }                } else {                    if (version_compare($this->_installRegistry->packageInfo(                          $package, 'version', $channel),                          $dep['version'], '>=')) {                        return true;                    }                    return false;                }            }            return true;        }        return false;    }    /**     * @param array     * @static     */    function removeDuplicates(&$params)    {        $pnames = array();        foreach ($params as $i => $param) {            if (!$param) {                continue;            }            if ($param->getPackage()) {                $pnames[$i] = $param->getChannel() . '/' .                    $param->getPackage() . '-' . $param->getVersion() . '#' . $param->getGroup();            }        }        $pnames = array_unique($pnames);        $unset = array_diff(array_keys($params), array_keys($pnames));        $testp = array_flip($pnames);        foreach ($params as $i => $param) {            if (!$param) {                $unset[] = $i;                continue;            }            if (!is_a($param, 'PEAR_Downloader_Package')) {                $unset[] = $i;                continue;            }            if (!isset($testp[$param->getChannel() . '/' . $param->getPackage() . '-' .                  $param->getVersion() . '#' . $param->getGroup()])) {                $unset[] = $i;            }        }        foreach ($unset as $i) {            unset($params[$i]);        }        $ret = array();        foreach ($params as $i => $param) {            $ret[] = &$params[$i];        }        $params = array();        foreach ($ret as $i => $param) {            $params[] = &$ret[$i];        }    }    function explicitState()    {        return $this->_explicitState;    }    function setExplicitState($s)    {        $this->_explicitState = $s;    }    /**     * @static     */    function mergeDependencies(&$params)    {        $newparams = array();        $bundles = array();        foreach ($params as $i => $param) {            if (!$param->isBundle()) {                continue;            }            $bundles[] = $i;            $pf = &$param->getPackageFile();            $newdeps = array();            $contents = $pf->getBundledPackages();            if (!is_array($contents)) {                $contents = array($contents);            }            foreach ($contents as $file) {                $filecontents = $pf->getFileContents($file);                $dl = &$param->getDownloader();                $options = $dl->getOptions();                $fp = @fopen($dl->getDownloadDir() . DIRECTORY_SEPARATOR . $file, 'wb');                if (!$fp) {                    continue;                }                fwrite($fp, $filecontents, strlen($filecontents));                fclose($fp);                if ($s = $params[$i]->explicitState()) {                    $obj->setExplicitState($s);                }                $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader());                PEAR::pushErrorHandling(PEAR_ERROR_RETURN);                $e = $obj->_fromFile($a = $dl->getDownloadDir() . DIRECTORY_SEPARATOR . $file);                PEAR::popErrorHandling();                if (PEAR::isError($e)) {                    if (!isset($options['soft'])) {                        $dl->log(0, $e->getMessage());                    }                    continue;                }                $j = &$obj;                if (!PEAR_Downloader_Package::willDownload($j,                      array_merge($params, $newparams)) && !$param->isInstalled($j)) {                    $newparams[] = &$j;                }            }        }        foreach ($bundles as $i) {            unset($params[$i]); // remove bundles - only their contents matter for installation        }        PEAR_Downloader_Package::removeDuplicates($params); // strip any unset indices        if (count($newparams)) { // add in bundled packages for install            foreach ($newparams as $i => $unused) {                $params[] = &$newparams[$i];            }            $newparams = array();        }        foreach ($params as $i => $param) {            $newdeps = array();            foreach ($param->_downloadDeps as $dep) {                if (!PEAR_Downloader_Package::willDownload($dep,                      array_merge($params, $newparams)) && !$param->isInstalled($dep)) {                    $newdeps[] = $dep;                } else {                    // detect versioning conflicts here                }            }            // convert the dependencies into PEAR_Downloader_Package objects for the next time            // around            $params[$i]->_downloadDeps = array();            foreach ($newdeps as $dep) {                $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader());                if ($s = $params[$i]->explicitState()) {                    $obj->setExplicitState($s);                }                PEAR::pushErrorHandling(PEAR_ERROR_RETURN);                $e = $obj->fromDepURL($dep);                PEAR::popErrorHandling();                if (PEAR::isError($e)) {                    if (!isset($options['soft'])) {                        $obj->_downloader->log(0, $e->getMessage());                    }                    continue;                }                $e = $obj->detectDependencies($params);                if (PEAR::isError($e)) {                    if (!isset($options['soft'])) {                        $obj->_downloader->log(0, $e->getMessage());                    }                }                $j = &$obj;                $newparams[] = &$j;            }        }        if (count($newparams)) {            foreach ($newparams as $i => $unused) {                $params[] = &$newparams[$i];            }            return true;        } else {            return false;        }    }    /**     * @static     */    function willDownload($param, $params)    {        if (!is_array($params)) {            return false;        }        foreach ($params as $obj) {            if ($obj->isEqual($param)) {                return true;            }        }        return false;    }

⌨️ 快捷键说明

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