* @version 1.0
*
*/
class Dictionary {
public $cacheType;
private $ckey_length = 4;
private $mmCache = 'table_dictionary_option_all';
private $dict;
public function __construct() {
}
/**
* 取得数据字典对应数据
*
* @author wangzhoudong
* @param string $table_code 数据字典的类型
* @param string $code 数据字典代码
* @param string $val 数据字典数据对应下标
* @return array 返回数据字典数组
* @throws CException $table_code,$code 不能为空
*
*/
public function get($table_code,$code,$val=null) {
$mKey = Cache::get($this->mmCache);
if(isset($mKey[$table_code][$code])) {
$arr = $mKey[$table_code][$code];
}else{
$this->update($table_code,$code);
if(isset($this->dict[$table_code][$code])) {
$arr = $this->dict[$table_code][$code];
}else{
$arr = [];
}
}
if(!$arr) {
return null;
}
if($val !== null) {
if(array_key_exists($val, $arr)) {
return $arr[$val];
}else{
return '';
}
}else{
return $arr;
}
}
/**
* 获取地区数据名称
* @param int $areaId
* $start 排除前面的层级
*/
public function areaName($areaId,$spec=" ",$start=1) {
if(!$areaId) {
return '';
}
$objArea = new BaseAreaModel();
$sMerger = "";
$arr = $objArea->select("merger_name")->find($areaId);
if(isset($arr->merger_name)) {
$aMerger = explode(',',$arr->merger_name);
for($i=1,$j=count($aMerger);$i<$j;$i++) {
$sMerger .= $spec . $aMerger[$i];
}
if($sMerger) {
$sMerger = substr($sMerger,strlen($spec));
}
}
return $sMerger;
}
public function area($areaId) {
if(!$areaId) {
return '';
}
$objArea = new BaseAreaModel();
$arr = $objArea->find($areaId);
if($arr) {
$arr = $arr->toArray();
}
return $arr;
}
/**
*
* @param string $table_code 数据字典的类型
* @param string $code 数据字典代码
* @param string $selection 被选中的值。
* @param array $htmlOptions 额外的HTML属性。如name='cate' ,id='cate'下面两个特定的属性是被认可:
* empty: 字符串,指定空选项的文本,它的值为空。
* 'empty'选项也可以是一个值-标签对形式的数组。
* 在一开始每个对都会用于渲染一个列表的选项。注意,
* 文本标签不会被HTML编码。
*
*
*/
public function select($table_code, $code, $selection=null, $htmlOptions=array()) {
$selectOption = $htmlOptions;
unset($selectOption['empty']);
$html = "";
return $html;
}
public function option($table_code,$code,$selection=null) {
$data = $this->get($table_code,$code);
$html = "";
foreach ($data as $k=>$v) {
$html .= "