config.php

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

PHP
1,984
字号
                foreach ($data['__channels'] as $channel => $blah) {                    $this->_decodeInput($data['__channels'][$channel]);                }            }            if (!isset($this->configuration_info[$key])) {                continue;            }            $type = $this->configuration_info[$key]['type'];            switch ($type) {                case 'password': {                    $data[$key] = base64_decode($data[$key]);                    break;                }                case 'mask': {                    $data[$key] = decoct($data[$key]);                    break;                }            }        }        return true;    }    // }}}    // {{{ getDefaultChannel([layer])    /**     * Retrieve the default channel.     *     * On startup, channels are not initialized, so if the default channel is not     * pear.php.net, then initialize the config.     * @param string registry layer     * @return string|false     */    function getDefaultChannel($layer = null)    {        $ret = false;        if ($layer === null) {            foreach ($this->layers as $layer) {                if (isset($this->configuration[$layer]['default_channel'])) {                    $ret = $this->configuration[$layer]['default_channel'];                    break;                }            }        } elseif (isset($this->configuration[$layer]['default_channel'])) {            $ret = $this->configuration[$layer]['default_channel'];        }        if ($ret == 'pear.php.net' && defined('PEAR_RUNTYPE') && PEAR_RUNTYPE == 'pecl') {            $ret = 'pecl.php.net';        }        if ($ret) {            if ($ret != 'pear.php.net') {                $this->_lazyChannelSetup();            }            return $ret;        }        return PEAR_CONFIG_DEFAULT_CHANNEL;    }    // {{{ get(key, [layer])    /**     * Returns a configuration value, prioritizing layers as per the     * layers property.     *     * @param string config key     *     * @return mixed the config value, or NULL if not found     *     * @access public     */    function get($key, $layer = null, $channel = false)    {        if (!isset($this->configuration_info[$key])) {            return null;        }        if ($key == '__channels') {            return null;        }        if ($key == 'default_channel') {            return $this->getDefaultChannel($layer);        }        if (!$channel) {            $channel = $this->getDefaultChannel();        } elseif ($channel != 'pear.php.net') {            $this->_lazyChannelSetup();        }        $channel = strtolower($channel);                $test = (in_array($key, $this->_channelConfigInfo)) ?            $this->_getChannelValue($key, $layer, $channel) :            null;        if ($test !== null) {            if ($this->_installRoot) {                if (in_array($this->getGroup($key),                      array('File Locations', 'File Locations (Advanced)')) &&                      $this->getType($key) == 'directory') {                    return $this->_prependPath($test, $this->_installRoot);                }            }            return $test;        }        if ($layer === null) {            foreach ($this->layers as $layer) {                if (isset($this->configuration[$layer][$key])) {                    $test = $this->configuration[$layer][$key];                    if ($this->_installRoot) {                        if (in_array($this->getGroup($key),                              array('File Locations', 'File Locations (Advanced)')) &&                              $this->getType($key) == 'directory') {                            return $this->_prependPath($test, $this->_installRoot);                        }                    }                    if ($key == 'preferred_mirror') {                        $reg = &$this->getRegistry();                        if (is_object($reg)) {                            $chan = &$reg->getChannel($channel);                            if (PEAR::isError($chan)) {                                return $channel;                            }                            if (!$chan->getMirror($test) && $chan->getName() != $test) {                                return $channel; // mirror does not exist                            }                        }                    }                    return $test;                }            }        } elseif (isset($this->configuration[$layer][$key])) {            $test = $this->configuration[$layer][$key];            if ($this->_installRoot) {                if (in_array($this->getGroup($key),                      array('File Locations', 'File Locations (Advanced)')) &&                      $this->getType($key) == 'directory') {                    return $this->_prependPath($test, $this->_installRoot);                }            }            if ($key == 'preferred_mirror') {                $reg = &$this->getRegistry();                if (is_object($reg)) {                    $chan = &$reg->getChannel($channel);                    if (PEAR::isError($chan)) {                        return $channel;                    }                    if (!$chan->getMirror($test) && $chan->getName() != $test) {                        return $channel; // mirror does not exist                    }                }            }            return $test;        }        return null;    }    // }}}    // {{{ _getChannelValue(key, value, [layer])    /**     * Returns a channel-specific configuration value, prioritizing layers as per the     * layers property.     *     * @param string config key     *     * @return mixed the config value, or NULL if not found     *     * @access private     */    function _getChannelValue($key, $layer, $channel)    {        if ($key == '__channels' || $channel == 'pear.php.net') {            return null;        }        $ret = null;        if ($layer === null) {            foreach ($this->layers as $ilayer) {                if (isset($this->configuration[$ilayer]['__channels'][$channel][$key])) {                    $ret = $this->configuration[$ilayer]['__channels'][$channel][$key];                    break;                }            }        } elseif (isset($this->configuration[$layer]['__channels'][$channel][$key])) {            $ret = $this->configuration[$layer]['__channels'][$channel][$key];        }        if ($key == 'preferred_mirror') {            if ($ret !== null) {                $reg = &$this->getRegistry($layer);                if (is_object($reg)) {                    $chan = &$reg->getChannel($channel);                    if (PEAR::isError($chan)) {                        return $channel;                    }                    if (!$chan->getMirror($ret) && $chan->getName() != $ret) {                        return $channel; // mirror does not exist                    }                }                return $ret;            }            if ($channel != $this->getDefaultChannel($layer)) {                return $channel; // we must use the channel name as the preferred mirror                                 // if the user has not chosen an alternate            } else {                return $this->getDefaultChannel($layer);            }        }        return $ret;    }    // }}}    // {{{ set(key, value, [layer])    /**     * Set a config value in a specific layer (defaults to 'user').     * Enforces the types defined in the configuration_info array.  An     * integer config variable will be cast to int, and a set config     * variable will be validated against its legal values.     *     * @param string config key     * @param string config value     * @param string (optional) config layer     * @param string channel to set this value for, or null for global value     * @return bool TRUE on success, FALSE on failure     */    function set($key, $value, $layer = 'user', $channel = false)    {        if ($key == '__channels') {            return false;        }        if (!isset($this->configuration[$layer])) {            return false;        }        if ($key == 'default_channel') {            // can only set this value globally            $channel = 'pear.php.net';            if ($value != 'pear.php.net') {                $this->_lazyChannelSetup($layer);            }        }        if ($key == 'preferred_mirror') {            if ($channel == '__uri') {                return false; // can't set the __uri pseudo-channel's mirror            }            $reg = &$this->getRegistry($layer);            if (is_object($reg)) {                $chan = &$reg->getChannel($channel ? $channel : 'pear.php.net');                if (PEAR::isError($chan)) {                    return false;                }                if (!$chan->getMirror($value) && $chan->getName() != $value) {                    return false; // mirror does not exist                }            }        }        if (empty($this->configuration_info[$key])) {            return false;        }        extract($this->configuration_info[$key]);        switch ($type) {            case 'integer':                $value = (int)$value;                break;            case 'set': {                // If a valid_set is specified, require the value to                // be in the set.  If there is no valid_set, accept                // any value.                if ($valid_set) {                    reset($valid_set);                    if ((key($valid_set) === 0 && !in_array($value, $valid_set)) ||                        (key($valid_set) !== 0 && empty($valid_set[$value])))                    {                        return false;                    }                }                break;            }        }        if (!$channel) {            $channel = $this->get('default_channel', null, 'pear.php.net');        }        if (!in_array($channel, $this->_channels)) {            $this->_lazyChannelSetup($layer);            $reg = &$this->getRegistry($layer);            if ($reg) {                $channel = $reg->channelName($channel);            }            if (!in_array($channel, $this->_channels)) {                return false;            }        }        if ($channel != 'pear.php.net') {            if (in_array($key, $this->_channelConfigInfo)) {                $this->configuration[$layer]['__channels'][$channel][$key] = $value;                return true;            } else {                return false;            }        } else {            if ($key == 'default_channel') {                if (!isset($reg)) {                    $reg = &$this->getRegistry($layer);                    if (!$reg) {                        $reg = &$this->getRegistry();                    }                }                if ($reg) {                    $value = $reg->channelName($value);                }                if (!$value) {                    return false;                }            }        }        $this->configuration[$layer][$key] = $value;        if ($key == 'php_dir' && !$this->_noRegistry) {            if (!isset($this->_registry[$layer]) ||                  $value != $this->_registry[$layer]->install_dir) {                $this->_registry[$layer] = &new PEAR_Registry($value);                $this->_regInitialized[$layer] = false;                $this->_registry[$layer]->setConfig($this);            }        }        return true;    }    // }}}    function _lazyChannelSetup($uselayer = false)    {        if ($this->_noRegistry) {            return;        }        $merge = false;        foreach ($this->_registry as $layer => $p) {            if ($uselayer && $uselayer != $layer) {                continue;            }            if (!$this->_regInitialized[$layer]) {                if ($layer == 'default' && isset($this->_registry['user']) ||                      isset($this->_registry['system'])) {                    // only use the default registry if there are no alternatives                    continue;                }                if (!is_object($this->_registry[$layer])) {                    if ($phpdir = $this->get('php_dir', $layer, 'pear.php.net')) {                        $this->_registry[$layer] = &new PEAR_Registry($phpdir);                        $this->_registry[$layer]->setConfig($this);                        $this->_regInitialized[$layer] = false;                    } else {                        unset($this->_registry[$layer]);                        return;                    }                }                $this->setChannels($this->_registry[$layer]->listChannels(), $merge);                $this->_regInitialized[$layer] = true;                $merge = true;            }        }    }    // {{{ setChannels()        /**     * Set the list of channels.     *     * This should be set via a call to {@link PEAR_Registry::listChannels()}     * @param array     * @param bool     * @return bool success of operation     */    function setChannels($channels, $merge = false)    {        if (!is_array($channels)) {            return false;        }        if ($merge) {            $this->_channels = array_merge($this->_channels, $channels);        } else {            $this->_channels = $channels;        }        foreach ($channels as $channel) {            $channel = strtolower($channel);            if ($channel == 'pear.php.net') {                continue;            }            foreach ($this->layers as $layer) {                if (!isset($this->configuration[$layer]['__channels'])) {                    $this->configuration[$layer]['__channels'] = array();                }                if (!isset($this->configuration[$layer]['__channels'][$channel])                      || !is_array($this->configuration[$layer]['__channels'][$channel])) {                    $this->configuration[$layer]['__channels'][$channel] = array();                }            }        }        return true;    }    // }}}    // {{{ getType(key)    /**     * Get the type of a config value.     *

⌨️ 快捷键说明

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