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

📄 v1.php

📁 php-4.4.7学习linux时下载的源代码
💻 PHP
📖 第 1 页 / 共 4 页
字号:
        $this->_convertRelease2_0($arr[$release], $temp);        if ($release == 'extsrcrelease' && count($arr[$release]) > 1) {            // multiple extsrcrelease tags added in PEAR 1.4.1            $arr['dependencies']['required']['pearinstaller']['min'] = '1.4.1';        }        if ($cl = $this->_packagefile->getChangelog()) {            foreach ($cl as $release) {                $rel = array();                $rel['version'] =                    array(                        'release' => $release['version'],                        'api' => $release['version'],                    );                if (!isset($release['release_state'])) {                    $release['release_state'] = 'stable';                }                $rel['stability'] =                    array(                        'release' => $release['release_state'],                        'api' => $release['release_state'],                    );                if (isset($release['release_date'])) {                    $rel['date'] = $release['release_date'];                } else {                    $rel['date'] = date('Y-m-d');                }                if (isset($release['release_license'])) {                    if (isset($licensemap[strtolower($release['release_license'])])) {                        $uri = $licensemap[strtolower($release['release_license'])];                    } else {                        $uri = 'http://www.example.com';                    }                    $rel['license'] = array(                            'attribs' => array('uri' => $uri),                            '_content' => $release['release_license']                        );                } else {                    $rel['license'] = $arr['license'];                }                if (!isset($release['release_notes'])) {                    $release['release_notes'] = 'no release notes';                }                $rel['notes'] = $release['release_notes'];                $arr['changelog']['release'][] = $rel;            }        }        $ret = new $class;        $ret->setConfig($this->_packagefile->_config);        $ret->setLogger($this->_packagefile->_logger);        $ret->fromArray($arr);        return $ret;    }    /**     * @param array     * @param bool     * @access private     */    function _convertDependencies2_0(&$release, $internal = false)    {        $peardep = array('pearinstaller' =>            array('min' => '1.4.0b1')); // this is a lot safer        $required = $optional = array();        $release['dependencies'] = array();        if ($this->_packagefile->hasDeps()) {            foreach ($this->_packagefile->getDeps() as $dep) {                if (!isset($dep['optional']) || $dep['optional'] == 'no') {                    $required[] = $dep;                } else {                    $optional[] = $dep;                }            }            foreach (array('required', 'optional') as $arr) {                $deps = array();                foreach ($$arr as $dep) {                    // organize deps by dependency type and name                    if (!isset($deps[$dep['type']])) {                        $deps[$dep['type']] = array();                    }                    if (isset($dep['name'])) {                        $deps[$dep['type']][$dep['name']][] = $dep;                    } else {                        $deps[$dep['type']][] = $dep;                    }                }                do {                    if (isset($deps['php'])) {                        $php = array();                        if (count($deps['php']) > 1) {                            $php = $this->_processPhpDeps($deps['php']);                        } else {                            if (!isset($deps['php'][0])) {                                list($key, $blah) = each ($deps['php']); // stupid buggy versions                                $deps['php'] = array($blah[0]);                            }                            $php = $this->_processDep($deps['php'][0]);                            if (!$php) {                                break; // poor mans throw                            }                        }                        $release['dependencies'][$arr]['php'] = $php;                    }                } while (false);                do {                    if (isset($deps['pkg'])) {                        $pkg = array();                        $pkg = $this->_processMultipleDepsName($deps['pkg']);                        if (!$pkg) {                            break; // poor mans throw                        }                        $release['dependencies'][$arr]['package'] = $pkg;                    }                } while (false);                do {                    if (isset($deps['ext'])) {                        $pkg = array();                        $pkg = $this->_processMultipleDepsName($deps['ext']);                        $release['dependencies'][$arr]['extension'] = $pkg;                    }                } while (false);                // skip sapi - it's not supported so nobody will have used it                // skip os - it's not supported in 1.0            }        }        if (isset($release['dependencies']['required'])) {            $release['dependencies']['required'] =                array_merge($peardep, $release['dependencies']['required']);        } else {            $release['dependencies']['required'] = $peardep;        }        if (!isset($release['dependencies']['required']['php'])) {            $release['dependencies']['required']['php'] =                array('min' => '4.0.0');        }        $order = array();        $bewm = $release['dependencies']['required'];        $order['php'] = $bewm['php'];        $order['pearinstaller'] = $bewm['pearinstaller'];        isset($bewm['package']) ? $order['package'] = $bewm['package'] :0;        isset($bewm['extension']) ? $order['extension'] = $bewm['extension'] :0;        $release['dependencies']['required'] = $order;    }    /**     * @param array     * @access private     */    function _convertFilelist2_0(&$package)    {        $ret = array('dir' =>                    array(                        'attribs' => array('name' => '/'),                        'file' => array()                        )                    );        $package['platform'] =        $package['install-as'] = array();        $this->_isExtension = false;        foreach ($this->_packagefile->getFilelist() as $name => $file) {            $file['name'] = $name;            if (isset($file['role']) && $file['role'] == 'src') {                $this->_isExtension = true;            }            if (isset($file['replacements'])) {                $repl = $file['replacements'];                unset($file['replacements']);            } else {                unset($repl);            }            if (isset($file['install-as'])) {                $package['install-as'][$name] = $file['install-as'];                unset($file['install-as']);            }            if (isset($file['platform'])) {                $package['platform'][$name] = $file['platform'];                unset($file['platform']);            }            $file = array('attribs' => $file);            if (isset($repl)) {                foreach ($repl as $replace ) {                    $file['tasks:replace'][] = array('attribs' => $replace);                }                if (count($repl) == 1) {                    $file['tasks:replace'] = $file['tasks:replace'][0];                }            }            $ret['dir']['file'][] = $file;        }        return $ret;    }    /**     * Post-process special files with install-as/platform attributes and     * make the release tag.     *      * This complex method follows this work-flow to create the release tags:     *      * <pre>     * - if any install-as/platform exist, create a generic release and fill it with     *   o <install as=..> tags for <file name=... install-as=...>     *   o <install as=..> tags for <file name=... platform=!... install-as=..>     *   o <ignore> tags for <file name=... platform=...>     *   o <ignore> tags for <file name=... platform=... install-as=..>     * - create a release for each platform encountered and fill with     *   o <install as..> tags for <file name=... install-as=...>     *   o <install as..> tags for <file name=... platform=this platform install-as=..>     *   o <install as..> tags for <file name=... platform=!other platform install-as=..>     *   o <ignore> tags for <file name=... platform=!this platform>     *   o <ignore> tags for <file name=... platform=other platform>     *   o <ignore> tags for <file name=... platform=other platform install-as=..>     *   o <ignore> tags for <file name=... platform=!this platform install-as=..>     * </pre>     *      * It does this by accessing the $package parameter, which contains an array with     * indices:     *      *  - platform: mapping of file => OS the file should be installed on     *  - install-as: mapping of file => installed name     *  - osmap: mapping of OS => list of files that should be installed     *    on that OS     *  - notosmap: mapping of OS => list of files that should not be     *    installed on that OS     *     * @param array     * @param array     * @access private     */    function _convertRelease2_0(&$release, $package)    {        //- if any install-as/platform exist, create a generic release and fill it with         if (count($package['platform']) || count($package['install-as'])) {            $generic = array();            $genericIgnore = array();            foreach ($package['install-as'] as $file => $as) {                //o <install as=..> tags for <file name=... install-as=...>                if (!isset($package['platform'][$file])) {                    $generic[] = $file;                    continue;                }                //o <install as=..> tags for <file name=... platform=!... install-as=..>                if (isset($package['platform'][$file]) &&                      $package['platform'][$file]{0} == '!') {                    $generic[] = $file;                    continue;                }                //o <ignore> tags for <file name=... platform=... install-as=..>                if (isset($package['platform'][$file]) &&                      $package['platform'][$file]{0} != '!') {                    $genericIgnore[] = $file;                    continue;                }            }            foreach ($package['platform'] as $file => $platform) {                if (isset($package['install-as'][$file])) {                    continue;                }                if ($platform{0} != '!') {                    //o <ignore> tags for <file name=... platform=...>                    $genericIgnore[] = $file;                }            }            if (count($package['platform'])) {                $oses = $notplatform = $platform = array();                foreach ($package['platform'] as $file => $os) {                    // get a list of oses                    if ($os{0} == '!') {                        if (isset($oses[substr($os, 1)])) {                            continue;                        }                        $oses[substr($os, 1)] = count($oses);                    } else {                        if (isset($oses[$os])) {                            continue;                        }                        $oses[$os] = count($oses);                    }                }                //- create a release for each platform encountered and fill with                foreach ($oses as $os => $releaseNum) {                    $release[$releaseNum]['installconditions']['os']['name'] = $os;                    $release[$releaseNum]['filelist'] = array('install' => array(),                        'ignore' => array());                    foreach ($package['install-as'] as $file => $as) {                        //o <install as=..> tags for <file name=... install-as=...>                        if (!isset($package['platform'][$file])) {                            $release[$releaseNum]['filelist']['install'][] =                                array(                                    'attribs' => array(                                        'name' => $file,                                        'as' => $as,                                    ),                                );                            continue;                        }                        //o <install as..> tags for                        //  <file name=... platform=this platform install-as=..>                        if (isset($package['platform'][$file]) &&                              $package['platform'][$file] == $os) {                            $release[$releaseNum]['filelist']['install'][] =                                array(                                    'attribs' => array(                                        'name' => $file,                                        'as' => $as,                                    ),                                );                            continue;                        }                        //o <install as..> tags for                        //  <file name=... platform=!other platform install-as=..>                        if (isset($package['platform'][$file]) &&                              $package['platform'][$file] != "!$os" &&                              $package['platform'][$file]{0} == '!') {                            $release[$releaseNum]['filelist']['install'][] =                                array(                                    'attribs' => array(                                        'name' => $file,                                        'as' => $as,

⌨️ 快捷键说明

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