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

📄 registry.php

📁 FP2 CRM code+Mysql DB
💻 PHP
字号:
<?php// /* vim: set expandtab tabstop=4 shiftwidth=4: */// +----------------------------------------------------------------------+// | PHP Version 5                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2004 The PHP Group                                |// +----------------------------------------------------------------------+// | This source file is subject to version 3.0 of the PHP license,       |// | that is bundled with this package in the file LICENSE, and is        |// | available through the world-wide-web at the following url:           |// | http://www.php.net/license/3_0.txt.                                  |// | If you did not receive a copy of the PHP license and are unable to   |// | obtain it through the world-wide-web, please send a note to          |// | license@php.net so we can mail you a copy immediately.               |// +----------------------------------------------------------------------+// | Author: Stig Bakken <ssb@php.net>                                    |// |                                                                      |// +----------------------------------------------------------------------+//// $Id: Registry.php,v 1.36 2004/01/08 17:33:13 sniper Exp $require_once 'PEAR/Command/Common.php';require_once 'PEAR/Registry.php';require_once 'PEAR/Config.php';class PEAR_Command_Registry extends PEAR_Command_Common{    // {{{ properties    var $commands = array(        'list' => array(            'summary' => 'List Installed Packages',            'function' => 'doList',            'shortcut' => 'l',            'options' => array(),            'doc' => '[package]If invoked without parameters, this command lists the PEAR packagesinstalled in your php_dir ({config php_dir)).  With a parameter, itlists the files in that package.',            ),        'shell-test' => array(            'summary' => 'Shell Script Test',            'function' => 'doShellTest',            'shortcut' => 'st',            'options' => array(),            'doc' => '<package> [[relation] version]Tests if a package is installed in the system. Will exit(1) if it is not.   <relation>   The version comparison operator. One of:                <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne   <version>    The version to compare with'),        'info' => array(            'summary'  => 'Display information about a package',            'function' => 'doInfo',            'shortcut' => 'in',            'options'  => array(),            'doc'      => '<package>Displays information about a package. The package argument may be alocal package file, an URL to a package file, or the name of aninstalled package.'            )        );    // }}}    // {{{ constructor    /**     * PEAR_Command_Registry constructor.     *     * @access public     */    function PEAR_Command_Registry(&$ui, &$config)    {        parent::PEAR_Command_Common($ui, $config);    }    // }}}    // {{{ doList()    function _sortinfo($a, $b)    {        return strcmp($a['package'], $b['package']);    }    function doList($command, $options, $params)    {        $reg = new PEAR_Registry($this->config->get('php_dir'));        if (sizeof($params) == 0) {            $installed = $reg->packageInfo();            usort($installed, array(&$this, '_sortinfo'));            $i = $j = 0;            $data = array(                'caption' => 'Installed packages:',                'border' => true,                'headline' => array('Package', 'Version', 'State')                );            foreach ($installed as $package) {                $data['data'][] = array($package['package'],                                          $package['version'],                                          @$package['release_state']);            }            if (count($installed)==0) {                $data = '(no packages installed)';            }            $this->ui->outputData($data, $command);        } else {            if (file_exists($params[0]) && !is_dir($params[0])) {                include_once "PEAR/Common.php";                $obj = &new PEAR_Common;                $info = $obj->infoFromAny($params[0]);                $headings = array('Package File', 'Install Path');                $installed = false;            } else {                $info = $reg->packageInfo($params[0]);                $headings = array('Type', 'Install Path');                $installed = true;            }            if (PEAR::isError($info)) {                return $this->raiseError($info);            }            if ($info === null) {                return $this->raiseError("`$params[0]' not installed");            }            $list = $info['filelist'];            if ($installed) {                $caption = 'Installed Files For ' . $params[0];            } else {                $caption = 'Contents of ' . basename($params[0]);            }            $data = array(                'caption' => $caption,                'border' => true,                'headline' => $headings);            foreach ($list as $file => $att) {                if ($installed) {                    if (empty($att['installed_as'])) {                        continue;                    }                    $data['data'][] = array($att['role'], $att['installed_as']);                } else {                    if (isset($att['baseinstalldir'])) {                        $dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR .                            $file;                    } else {                        $dest = $file;                    }                    switch ($att['role']) {                        case 'test':                        case 'data':                            if ($installed) {                                break 2;                            }                            $dest = '-- will not be installed --';                            break;                        case 'doc':                            $dest = $this->config->get('doc_dir') . DIRECTORY_SEPARATOR .                                $dest;                            break;                        case 'php':                        default:                            $dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR .                                $dest;                    }                    $dest = preg_replace('!/+!', '/', $dest);                    $file = preg_replace('!/+!', '/', $file);                    $data['data'][] = array($file, $dest);                }            }            $this->ui->outputData($data, $command);        }        return true;    }    // }}}    // {{{ doShellTest()    function doShellTest($command, $options, $params)    {        $this->pushErrorHandling(PEAR_ERROR_RETURN);        $reg = &new PEAR_Registry($this->config->get('php_dir'));        // "pear shell-test Foo"        if (sizeof($params) == 1) {            if (!$reg->packageExists($params[0])) {                exit(1);            }            // "pear shell-test Foo 1.0"        } elseif (sizeof($params) == 2) {            $v = $reg->packageInfo($params[0], 'version');            if (!$v || !version_compare("$v", "{$params[1]}", "ge")) {                exit(1);            }            // "pear shell-test Foo ge 1.0"        } elseif (sizeof($params) == 3) {            $v = $reg->packageInfo($params[0], 'version');            if (!$v || !version_compare("$v", "{$params[2]}", $params[1])) {                exit(1);            }        } else {            $this->popErrorHandling();            $this->raiseError("$command: expects 1 to 3 parameters");            exit(1);        }    }    // }}}    // {{{ doInfo    function doInfo($command, $options, $params)    {        // $params[0] The package for showing info        if (sizeof($params) != 1) {            return $this->raiseError("This command only accepts one param: ".                                     "the package you want information");        }        if (@is_file($params[0])) {            $obj  = &new PEAR_Common();            $info = $obj->infoFromAny($params[0]);        } else {            $reg = &new PEAR_Registry($this->config->get('php_dir'));            $info = $reg->packageInfo($params[0]);        }        if (PEAR::isError($info)) {            return $info;        }        if (empty($info)) {            $this->raiseError("Nothing found for `$params[0]'");            return;        }        unset($info['filelist']);        unset($info['changelog']);        $keys = array_keys($info);        $longtext = array('description', 'summary');        foreach ($keys as $key) {            if (is_array($info[$key])) {                switch ($key) {                    case 'maintainers': {                        $i = 0;                        $mstr = '';                        foreach ($info[$key] as $m) {                            if ($i++ > 0) {                                $mstr .= "\n";                            }                            $mstr .= $m['name'] . " <";                            if (isset($m['email'])) {                                $mstr .= $m['email'];                            } else {                                $mstr .= $m['handle'] . '@php.net';                            }                            $mstr .= "> ($m[role])";                        }                        $info[$key] = $mstr;                        break;                    }                    case 'release_deps': {                        $i = 0;                        $dstr = '';                        foreach ($info[$key] as $d) {                            if (isset($this->_deps_rel_trans[$d['rel']])) {                                $rel = $this->_deps_rel_trans[$d['rel']];                            } else {                                $rel = $d['rel'];                            }                            if (isset($this->_deps_type_trans[$d['type']])) {                                $type = ucfirst($this->_deps_type_trans[$d['type']]);                            } else {                                $type = $d['type'];                            }                            if (isset($d['name'])) {                                $name = $d['name'] . ' ';                            } else {                                $name = '';                            }                            if (isset($d['version'])) {                                $version = $d['version'] . ' ';                            } else {                                $version = '';                            }                            $dstr .= "$type $name$rel $version\n";                        }                        $info[$key] = $dstr;                        break;                    }                    case 'provides' : {                        $debug = $this->config->get('verbose');                        if ($debug < 2) {                            $pstr = 'Classes: ';                        } else {                            $pstr = '';                        }                        $i = 0;                        foreach ($info[$key] as $p) {                            if ($debug < 2 && $p['type'] != "class") {                                continue;                            }                            // Only print classes when verbosity mode is < 2                            if ($debug < 2) {                                if ($i++ > 0) {                                    $pstr .= ", ";                                }                                $pstr .= $p['name'];                            } else {                                if ($i++ > 0) {                                    $pstr .= "\n";                                }                                $pstr .= ucfirst($p['type']) . " " . $p['name'];                                if (isset($p['explicit']) && $p['explicit'] == 1) {                                    $pstr .= " (explicit)";                                }                            }                        }                        $info[$key] = $pstr;                        break;                    }                    default: {                        $info[$key] = implode(", ", $info[$key]);                        break;                    }                }            }            if ($key == '_lastmodified') {                $hdate = date('Y-m-d', $info[$key]);                unset($info[$key]);                $info['Last Modified'] = $hdate;            } else {                $info[$key] = trim($info[$key]);                if (in_array($key, $longtext)) {                    $info[$key] = preg_replace('/  +/', ' ', $info[$key]);                }            }        }        $caption = 'About ' . $info['package'] . '-' . $info['version'];        $data = array(            'caption' => $caption,            'border' => true);        foreach ($info as $key => $value) {            $key = ucwords(trim(str_replace('_', ' ', $key)));            $data['data'][] = array($key, $value);        }        $data['raw'] = $info;        $this->ui->outputData($data, 'package-info');    }    // }}}}?>

⌨️ 快捷键说明

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