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

📄 config.php

📁 FP2 CRM code+Mysql DB
💻 PHP
📖 第 1 页 / 共 3 页
字号:
    // }}}    // {{{ PEAR_Config([file], [defaults_file])    /**     * Constructor.     *     * @param string (optional) file to read user-defined options from     * @param string (optional) file to read system-wide defaults from     *     * @access public     *     * @see PEAR_Config::singleton     */    function PEAR_Config($user_file = '', $system_file = '')    {        $this->PEAR();        $sl = DIRECTORY_SEPARATOR;        if (empty($user_file)) {            if (OS_WINDOWS) {                $user_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini';            } else {                $user_file = getenv('HOME') . $sl . '.pearrc';            }        }        if (empty($system_file)) {            if (OS_WINDOWS) {                $system_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pearsys.ini';            } else {                $system_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.conf';            }        }        $this->layers = array_keys($this->configuration);        $this->files['user'] = $user_file;        $this->files['system'] = $system_file;        if ($user_file && file_exists($user_file)) {            $this->readConfigFile($user_file);        }        if ($system_file && file_exists($system_file)) {            $this->mergeConfigFile($system_file, false, 'system');        }        foreach ($this->configuration_info as $key => $info) {            $this->configuration['default'][$key] = $info['default'];        }        //$GLOBALS['_PEAR_Config_instance'] = &$this;    }    // }}}    // {{{ singleton([file], [defaults_file])    /**     * Static singleton method.  If you want to keep only one instance     * of this class in use, this method will give you a reference to     * the last created PEAR_Config object if one exists, or create a     * new object.     *     * @param string (optional) file to read user-defined options from     * @param string (optional) file to read system-wide defaults from     *     * @return object an existing or new PEAR_Config instance     *     * @access public     *     * @see PEAR_Config::PEAR_Config     */    function &singleton($user_file = '', $system_file = '')    {        if (is_object($GLOBALS['_PEAR_Config_instance'])) {            return $GLOBALS['_PEAR_Config_instance'];        }        $GLOBALS['_PEAR_Config_instance'] =             &new PEAR_Config($user_file, $system_file);        return $GLOBALS['_PEAR_Config_instance'];    }    // }}}    // {{{ readConfigFile([file], [layer])    /**     * Reads configuration data from a file.  All existing values in     * the config layer are discarded and replaced with data from the     * file.     *     * @param string (optional) file to read from, if NULL or not     * specified, the last-used file for the same layer (second param)     * is used     *     * @param string (optional) config layer to insert data into     * ('user' or 'system')     *     * @return bool TRUE on success or a PEAR error on failure     *     * @access public     */    function readConfigFile($file = null, $layer = 'user')    {        if (empty($this->files[$layer])) {            return $this->raiseError("unknown config file type `$layer'");        }        if ($file === null) {            $file = $this->files[$layer];        }        $data = $this->_readConfigDataFrom($file);        if (PEAR::isError($data)) {            return $data;        }        $this->_decodeInput($data);        $this->configuration[$layer] = $data;        return true;    }    // }}}    // {{{ mergeConfigFile(file, [override], [layer])    /**     * Merges data into a config layer from a file.  Does the same     * thing as readConfigFile, except it does not replace all     * existing values in the config layer.     *     * @param string file to read from     *     * @param bool (optional) whether to overwrite existing data     * (default TRUE)     *     * @param string config layer to insert data into ('user' or     * 'system')     *     * @return bool TRUE on success or a PEAR error on failure     *     * @access public.     */    function mergeConfigFile($file, $override = true, $layer = 'user')    {        if (empty($this->files[$layer])) {            return $this->raiseError("unknown config file type `$layer'");        }        if ($file === null) {            $file = $this->files[$layer];        }        $data = $this->_readConfigDataFrom($file);        if (PEAR::isError($data)) {            return $data;        }        $this->_decodeInput($data);        if ($override) {            $this->configuration[$layer] = array_merge($this->configuration[$layer], $data);        } else {            $this->configuration[$layer] = array_merge($data, $this->configuration[$layer]);        }        return true;    }    // }}}    // {{{ writeConfigFile([file], [layer])    /**     * Writes data into a config layer from a file.     *     * @param string file to read from     *     * @param bool (optional) whether to overwrite existing data     * (default TRUE)     *     * @param string config layer to insert data into ('user' or     * 'system')     *     * @return bool TRUE on success or a PEAR error on failure     *     * @access public.     */    function writeConfigFile($file = null, $layer = 'user', $data = null)    {        if ($layer == 'both' || $layer == 'all') {            foreach ($this->files as $type => $file) {                $err = $this->writeConfigFile($file, $type, $data);                if (PEAR::isError($err)) {                    return $err;                }            }            return true;        }        if (empty($this->files[$layer])) {            return $this->raiseError("unknown config file type `$layer'");        }        if ($file === null) {            $file = $this->files[$layer];        }        $data = ($data === null) ? $this->configuration[$layer] : $data;        $this->_encodeOutput($data);        $opt = array('-p', dirname($file));        if (!@System::mkDir($opt)) {            return $this->raiseError("could not create directory: " . dirname($file));        }        if (@is_file($file) && !@is_writeable($file)) {            return $this->raiseError("no write access to $file!");        }        $fp = @fopen($file, "w");        if (!$fp) {            return $this->raiseError("PEAR_Config::writeConfigFile fopen('$file','w') failed");        }        $contents = "#PEAR_Config 0.9\n" . serialize($data);        if (!@fwrite($fp, $contents)) {            return $this->raiseError("PEAR_Config::writeConfigFile: fwrite failed");        }        return true;    }    // }}}    // {{{ _readConfigDataFrom(file)    /**     * Reads configuration data from a file and returns the parsed data     * in an array.     *     * @param string file to read from     *     * @return array configuration data or a PEAR error on failure     *     * @access private     */    function _readConfigDataFrom($file)    {        $fp = @fopen($file, "r");        if (!$fp) {            return $this->raiseError("PEAR_Config::readConfigFile fopen('$file','r') failed");        }        $size = filesize($file);        $rt = get_magic_quotes_runtime();        set_magic_quotes_runtime(0);        $contents = fread($fp, $size);        set_magic_quotes_runtime($rt);        fclose($fp);        $version = '0.1';        if (preg_match('/^#PEAR_Config\s+(\S+)\s+/si', $contents, $matches)) {            $version = $matches[1];            $contents = substr($contents, strlen($matches[0]));        }        if (version_compare("$version", '1', '<')) {            $data = unserialize($contents);            if (!is_array($data)) {                if (strlen(trim($contents)) > 0) {                    $error = "PEAR_Config: bad data in $file";//                if (isset($this)) {                    return $this->raiseError($error);//                } else {//                    return PEAR::raiseError($error);                } else {                    $data = array();                }            }        // add parsing of newer formats here...        } else {            return $this->raiseError("$file: unknown version `$version'");        }        return $data;    }    // }}}    // {{{ getConfFile(layer)    /**    * Gets the file used for storing the config for a layer    *    * @param string $layer 'user' or 'system'    */    function getConfFile($layer)    {        return $this->files[$layer];    }    // }}}    // {{{ _encodeOutput(&data)    /**     * Encodes/scrambles configuration data before writing to files.     * Currently, 'password' values will be base64-encoded as to avoid     * that people spot cleartext passwords by accident.     *     * @param array (reference) array to encode values in     *     * @return bool TRUE on success     *     * @access private     */    function _encodeOutput(&$data)    {        foreach ($data as $key => $value) {            if (!isset($this->configuration_info[$key])) {                continue;            }            $type = $this->configuration_info[$key]['type'];            switch ($type) {                // we base64-encode passwords so they are at least                // not shown in plain by accident                case 'password': {                    $data[$key] = base64_encode($data[$key]);                    break;                }                case 'mask': {                    $data[$key] = octdec($data[$key]);                    break;                }            }        }        return true;    }    // }}}    // {{{ _decodeInput(&data)    /**     * Decodes/unscrambles configuration data after reading from files.     *     * @param array (reference) array to encode values in     *     * @return bool TRUE on success     *     * @access private     *     * @see PEAR_Config::_encodeOutput     */    function _decodeInput(&$data)    {        if (!is_array($data)) {            return true;        }        foreach ($data as $key => $value) {            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;    }    // }}}    // {{{ 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)    {        if ($layer === null) {            foreach ($this->layers as $layer) {                if (isset($this->configuration[$layer][$key])) {                    return $this->configuration[$layer][$key];                }            }        } elseif (isset($this->configuration[$layer][$key])) {            return $this->configuration[$layer][$key];        }        return null;    }    // }}}    // {{{ 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     *     * @return bool TRUE on success, FALSE on failure     *     * @access public

⌨️ 快捷键说明

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