📄 babelkit.php
字号:
} 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 + -