config.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 421 行 · 第 1/2 页

PHP
421
字号
                $layer = NULL;                break;            case 2:                $config_key = $params[0];                $layer = $params[1];                if ($error = $this->_checkLayer($layer)) {                    return $this->raiseError("config-get:$error");                }                break;            case 0:            default:                return $this->raiseError("config-get expects 1 or 2 parameters");        }        $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        if (!$reg->channelExists($channel)) {            return $this->raiseError('Channel "' . $channel . '" does not exist');        }        $this->ui->outputData($this->config->get($config_key, $layer, $channel), $command);        return true;    }    // }}}    // {{{ doConfigSet()    function doConfigSet($command, $options, $params)    {        // $param[0] -> a parameter to set        // $param[1] -> the value for the parameter        // $param[2] -> the layer        $failmsg = '';        if (sizeof($params) < 2 || sizeof($params) > 3) {            $failmsg .= "config-set expects 2 or 3 parameters";            return PEAR::raiseError($failmsg);        }        if (isset($params[2]) && ($error = $this->_checkLayer($params[2]))) {            $failmsg .= $error;            return PEAR::raiseError("config-set:$failmsg");        }        $channel = isset($options['channel']) ? $options['channel'] :            $this->config->get('default_channel');        $reg = &$this->config->getRegistry();        if (!$reg->channelExists($channel)) {            return $this->raiseError('Channel "' . $channel . '" does not exist');        }        if ($params[0] == 'default_channel') {            if (!$reg->channelExists($params[1])) {                return $this->raiseError('Channel "' . $params[1] . '" does not exist');            }        }        if (count($params) == 2) {            array_push($params, 'user');            $layer = 'user';        } else {            $layer = $params[2];        }        array_push($params, $channel);        if (!call_user_func_array(array(&$this->config, 'set'), $params))        {            array_pop($params);            $failmsg = "config-set (" . implode(", ", $params) . ") failed, channel $channel";        } else {            $this->config->store($layer);        }        if ($failmsg) {            return $this->raiseError($failmsg);        }        $this->ui->outputData('config-set succeeded', $command);        return true;    }    // }}}    // {{{ doConfigHelp()    function doConfigHelp($command, $options, $params)    {        if (empty($params)) {            $params = $this->config->getKeys();        }        $data['caption']  = "Config help" . ((count($params) == 1) ? " for $params[0]" : '');        $data['headline'] = array('Name', 'Type', 'Description');        $data['border']   = true;        foreach ($params as $name) {            $type = $this->config->getType($name);            $docs = $this->config->getDocs($name);            if ($type == 'set') {                $docs = rtrim($docs) . "\nValid set: " .                    implode(' ', $this->config->getSetValues($name));            }            $data['data'][] = array($name, $type, $docs);        }        $this->ui->outputData($data, $command);    }    // }}}    // {{{ doConfigCreate()    function doConfigCreate($command, $options, $params)    {        if (count($params) != 2) {            return PEAR::raiseError('config-create: must have 2 parameters, root path and ' .                'filename to save as');        }        $root = $params[0];        // Clean up the DIRECTORY_SEPARATOR mess        $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR;        $root = preg_replace(array('!\\\\+!', '!/+!', "!$ds2+!"),                             array('/', '/', '/'),                            $root);        if ($root{0} != '/') {            if (isset($options['windows'])) {                if (!preg_match('/^[A-Za-z]:/', $root)) {                    return PEAR::raiseError('Root directory must be an absolute path beginning ' .                        'with "\\" or "C:\\", was: "' . $root . '"');                }            } else {                return PEAR::raiseError('Root directory must be an absolute path beginning ' .                    'with "/", was: "' . $root . '"');            }        }        $windows = isset($options['windows']);        if ($windows) {            $root = str_replace('/', '\\', $root);        }        if (!file_exists($params[1])) {            if (!@touch($params[1])) {                return PEAR::raiseError('Could not create "' . $params[1] . '"');            }        }        $params[1] = realpath($params[1]);        $config = &new PEAR_Config($params[1], '#no#system#config#', false, false);        if ($root{strlen($root) - 1} == '/') {            $root = substr($root, 0, strlen($root) - 1);        }        $config->noRegistry();        $config->set('php_dir', $windows ? "$root\\pear\\php" : "$root/pear/php", 'user');        $config->set('data_dir', $windows ? "$root\\pear\\data" : "$root/pear/data");        $config->set('ext_dir', $windows ? "$root\\pear\\ext" : "$root/pear/ext");        $config->set('doc_dir', $windows ? "$root\\pear\\docs" : "$root/pear/docs");        $config->set('test_dir', $windows ? "$root\\pear\\tests" : "$root/pear/tests");        $config->set('cache_dir', $windows ? "$root\\pear\\cache" : "$root/pear/cache");        $config->set('download_dir', $windows ? "$root\\pear\\download" : "$root/pear/download");        $config->set('temp_dir', $windows ? "$root\\pear\\temp" : "$root/pear/temp");        $config->set('bin_dir', $windows ? "$root\\pear" : "$root/pear");        $config->writeConfigFile();        $this->_showConfig($config);        $this->ui->outputData('Successfully created default configuration file "' . $params[1] . '"',            $command);    }    // }}}    function _showConfig(&$config)    {        $params = array('user');        $keys = $config->getKeys();        sort($keys);        $channel = 'pear.php.net';        $data = array('caption' => 'Configuration (channel ' . $channel . '):');        foreach ($keys as $key) {            $type = $config->getType($key);            $value = $config->get($key, 'user', $channel);            if ($type == 'password' && $value) {                $value = '********';            }            if ($value === false) {                $value = 'false';            } elseif ($value === true) {                $value = 'true';            }            $data['data'][$config->getGroup($key)][] =                array($config->getPrompt($key) , $key, $value);        }        foreach ($config->getLayers() as $layer) {            $data['data']['Config Files'][] =                array(ucfirst($layer) . ' Configuration File', 'Filename' ,                    $config->getConfFile($layer));        }        $this->ui->outputData($data, 'config-show');        return true;    }    // {{{ _checkLayer()    /**     * Checks if a layer is defined or not     *     * @param string $layer The layer to search for     * @return mixed False on no error or the error message     */    function _checkLayer($layer = null)    {        if (!empty($layer) && $layer != 'default') {            $layers = $this->config->getLayers();            if (!in_array($layer, $layers)) {                return " only the layers: \"" . implode('" or "', $layers) . "\" are supported";            }        }        return false;    }    // }}}}?>

⌨️ 快捷键说明

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