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

📄 babelkit.php

📁 BabelKit是一个通用多语言数据库代码表的接口。它接收维护使用多语言的多个数据库代码定义集中的所有编程工作。代码管理和翻译页可以让开发人员定义新的虚拟代码表
💻 PHP
📖 第 1 页 / 共 2 页
字号:
        }        if (is_array($subset)) {            $Subset = array();            foreach ( $subset as $val ) $Subset[$val] = 1;        }        if ($options) $options = " $options";        # Select multiple box.        $select = "<select multiple name=\"$var_name"."[]\"$options";        if ($size) $select .= " size=\"$size\"";        $select .= ">\n";        # Show code set options.        $set_list = $this->full_set($code_set, $code_lang);        foreach ( $set_list as $row ) {            list($code_code, $code_desc) = $row;            if ($Subset && !$Subset[$code_code] && !$Value[$code_code])                continue;            $code_desc = htmlspecialchars(ucfirst($code_desc));            if ( $Value[$code_code] ) {                $select .= "<option value=\"$code_code\" selected>$code_desc\n";                unset($Value[$code_code]);            } elseif ($row[3] <> 'd') {                $select .= "<option value=\"$code_code\">$code_desc\n";            }        }        # Show missing values.        foreach ( $Value as $code_code => $true ) {            $select .= "<option value=\"$code_code\" selected>$code_code\n";        }        $select .= "</select>\n";        return $select;    }    #       #       #       #    # Create an html form checkbox from a code set.    #    function checkbox($code_set, $code_lang, $param=array()) {        $var_name = $param['var_name'];        $value    = $param['value'];        $default  = $param['default'];        $subset   = $param['subset'];        $options  = $param['options'];        $sep      = $param['sep'];        # Variable name.        if (!$var_name) $var_name = $code_set;        if (!isset($value)) {            $value = $_POST ? $_POST[$var_name] : $_GET[$var_name];        }        if (!isset($value)) $value = $default;        $Value = array();        if (is_array($value)) {            foreach ( $value as $val ) $Value[$val] = 1;        } elseif ($value <> '') {            $Value[$value] = 1;        }        if (is_array($subset)) {            $Subset = array();            foreach ( $subset as $val ) $Subset[$val] = 1;        }        if ($options) $options = " $options";        if (!isset($sep)) $sep = "<br>\n";        # Show code set options.        $set_list = $this->full_set($code_set, $code_lang);        foreach ( $set_list as $row ) {            list($code_code, $code_desc) = $row;            if ($Subset && !$Subset[$code_code] && !$Value[$code_code])                continue;            $code_desc = htmlspecialchars(ucfirst($code_desc));            if ( $Value[$code_code] ) {                if ($select) $select .= $sep;                $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";                $select .= "$options value=\"$code_code\" checked>$code_desc";                unset($Value[$code_code]);            } elseif ($row[3] <> 'd') {                if ($select) $select .= $sep;                $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";                $select .= "$options value=\"$code_code\">$code_desc";            }        }        # Show missing values.        foreach ( $Value as $code_code => $true ) {            if ($select) $select .= $sep;            $select .= "<input type=\"checkbox\" name=\"$var_name"."[]\"";            $select .= "$options value=\"$code_code\" checked>$code_code";        }        return $select;    }### Code sets and queries:    #       #       #       #    # Get a language set array.    #    function lang_set($code_set, $code_lang) {        return $this->_query("            select  code_code,                    code_desc,                    code_order,                    code_flag            from    $this->table            where   code_set = '$code_set'            and     code_lang = '$code_lang'            order by code_order, code_code        ");    }    #       #       #       #    # Get a full language set with missing translations in native.    #    function full_set($code_set, $code_lang) {        $native = $this->lang_set($code_set, $this->native);        if ($code_lang == $this->native) return $native;        $other = $this->lang_set($code_set, $code_lang);        $lookup = array();        foreach ( $other as $row ) $lookup[$row[0]] = $row[1];        foreach ( $native as $ord => $row ) {            $code_desc = $lookup[$row[0]];            if (isset($code_desc)) $native[$ord][1] = $code_desc;        }        return $native;    }### Code table updates:    #       #       #       #    # Add or update a slave code native description.    #    function slave($code_set, $code_code, $code_desc) {        $old = $this->get($code_set, $this->native, $code_code);        if ($old) {            list($old_desc, $old_order, $old_flag ) = $old;            if ($code_desc <> $old_desc) {                $this->put($code_set, $this->native,  $code_code, $code_desc,                        $old_order, $old_flag);            }        } else {            $this->put($code_set, $this->native,  $code_code, $code_desc);        }    }    #       #       #       #    # Remove a code completely.    #    function remove($code_set, $code_code) {        $this->_query("            delete from $this->table            where   code_set  = '$code_set'            and     code_code = '$code_code'        ");    }    #       #       #       #    # Get code desc, order, and flag.    #    function get($code_set, $code_lang, $code_code) {        $result = $this->_query("            select  code_desc,                    code_order,                    code_flag            from    $this->table            where   code_set  = '$code_set'            and     code_lang = '$code_lang'            and     code_code = '$code_code'        ");        return $result[0];    }    #       #       #       #    # Put a code.  Insert, update or delete as appropriate.    #    function put($code_set, $code_lang, $code_code, $code_desc,                 $code_order = '', $code_flag = '') {        # Get the existing code info, if any.        $old = $this->get($code_set, $code_lang, $code_code);        # Field work.        if ($code_lang == $this->native) {            if (  !$old and is_numeric($code_code) and                ( is_null($code_order) or $code_order === '' ) ) {                $code_order = $code_code;            }            $code_order = (int)$code_order;        } else {            $code_order = 0;            $code_flag = '';        }        # Make it so: add, update, or delete.        if ($old) {            list( $old_desc, $old_order, $old_flag ) = $old;            if ($code_desc <> '') {                if ($code_desc  <> $old_desc ||                    $code_order <> $old_order ||                    $code_flag  <> $old_flag) {                    $this->_update($code_set, $code_lang, $code_code,                                $code_desc, $code_order, $code_flag);                }            }            else {                if ($code_lang == $this->native) {                    $this->remove($code_set, $code_code);                } else {                    $this->_delete($code_set, $code_lang, $code_code);                }            }        }        elseif ($code_desc <> '') {            $this->_insert($code_set, $code_lang, $code_code,                        $code_desc, $code_order, $code_flag);        }    }### Private methods:    #       #       #       #    # Find the native language.    #    function _find_native() {        $result = $this->_query("            select  code_lang            from    $this->table            where   code_set  = 'code_admin'            and     code_code = 'code_admin'        ");        return $result[0][0];    }    #       #       #       #    # Insert a code.    #    function _insert($code_set, $code_lang, $code_code,                        $code_desc, $code_order, $code_flag) {        $this->_query("            insert into $this->table set                code_set   = '$code_set',                code_lang  = '$code_lang',                code_code  = '$code_code',                code_desc  = '$code_desc',                code_order = '$code_order',                code_flag  = '$code_flag'        ");    }    #       #       #       #    # Update a code.    #    function _update($code_set, $code_lang, $code_code,                        $code_desc, $code_order, $code_flag) {        $this->_query("            update $this->table set                    code_desc  = '$code_desc',                    code_order = '$code_order',                    code_flag  = '$code_flag'            where   code_set   = '$code_set'            and     code_lang  = '$code_lang'            and     code_code  = '$code_code'        ");    }    #       #       #       #    # Delete a code.    #    function _delete($code_set, $code_lang, $code_code) {        $this->_query("            delete from $this->table            where   code_set  = '$code_set'            and     code_lang = '$code_lang'            and     code_code = '$code_code'        ");    }    #       #       #       #    # Run a library independent query and return the result set.    #    function _query($query) {        $result = array();        if ($this->lib_type == 'pear') {            $dbq = $this->dbh->query($query);            if (DB::isError($dbq))                die("BabelKit: " . $dbq->getMessage() . ". query($query)");            if (is_object($dbq)) {                while ($row = $dbq->fetchRow()) {                    if (!is_array($row)) break;                    $result[] = $row;                }                $dbq->free();            }        } elseif ($this->lib_type == 'adodb') {            $rs = $this->dbh->Execute($query);            if ($rs) {                if ($rs->connection) {                    $result = $rs->GetRows();                    $rs->Close();                }            } else {                die("BabelKit: " . $this->dbh->ErrorMsg() . ". query($query)");            }        } elseif ($this->lib_type == 'phplib') {            $dbh = $this->dbh;            $dbh->query($query);            while ($dbh->next_record()) {                $result[] = $dbh->Record;            }            $dbh->free();        }        return $result;    }}?>

⌨️ 快捷键说明

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