|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <?php if(!defined('DEDEINC')) exit("Request Error!");
- /**
- * 联动菜单类
- *
- * @version $Id: enums.func.php 2 13:19 2011-3-24 tianya $
- * @package DedeCMS.Libraries
- * @copyright Copyright (c) 2020, DedeBIZ.COM
- * @license https://www.dedebiz.com/license
- * @link https://www.dedebiz.com
- */
-
- // 弱不存在缓存文件则写入缓存
- if(!file_exists(DEDEDATA.'/enums/system.php')) WriteEnumsCache();
-
- /**
- * 更新枚举缓存
- *
- * @access public
- * @param string $egroup 联动组
- * @return string
- */
- function WriteEnumsCache($egroup='')
- {
- global $dsql;
- $egroups = array();
- if($egroup=='') {
- $dsql->SetQuery("SELECT egroup FROM `#@__sys_enum` GROUP BY egroup ");
- }
- else {
- $dsql->SetQuery("SELECT egroup FROM `#@__sys_enum` WHERE egroup='$egroup' GROUP BY egroup ");
- }
- $dsql->Execute('enum');
- while($nrow = $dsql->GetArray('enum')) {
- $egroups[] = $nrow['egroup'];
- }
- foreach($egroups as $egroup)
- {
- $cachefile = DEDEDATA.'/enums/'.$egroup.'.php';
- $fp = fopen($cachefile,'w');
- fwrite($fp,'<'."?php\r\nglobal \$em_{$egroup}s;\r\n\$em_{$egroup}s = array();\r\n");
- $dsql->SetQuery("SELECT ename,evalue,issign FROM `#@__sys_enum` WHERE egroup='$egroup' ORDER BY disorder ASC, evalue ASC ");
- $dsql->Execute('enum');
- $issign = -1;
- $tenum = false; //三级联动标识
- while($nrow = $dsql->GetArray('enum'))
- {
- fwrite($fp,"\$em_{$egroup}s['{$nrow['evalue']}'] = '{$nrow['ename']}';\r\n");
- if($issign==-1) $issign = $nrow['issign'];
- if($nrow['issign']==2) $tenum = true;
- }
- if ($tenum) $dsql->ExecuteNoneQuery("UPDATE `#@__stepselect` SET `issign`=2 WHERE egroup='$egroup'; ");
- fwrite($fp,'?'.'>');
- fclose($fp);
- if(empty($issign)) WriteEnumsJs($egroup);
- }
- return '成功更新所有枚举缓存!';
- }
-
- /**
- * 获取联动表单两级数据的父类与子类
- *
- * @access public
- * @param string $v
- * @return array
- */
- function GetEnumsTypes($v)
- {
- $rearr['top'] = $rearr['son'] = 0;
- if($v==0) return $rearr;
- if($v%500==0) {
- $rearr['top'] = $v;
- }
- else {
- $rearr['son'] = $v;
- $rearr['top'] = $v - ($v%500);
- }
- return $rearr;
- }
-
- /**
- * 获取枚举的select表单
- *
- * @access public
- * @param string $egroup 联动组
- * @param string $evalue 联动值
- * @param string $formid 表单ID
- * @param string $seltitle 选择标题
- * @return string 成功后返回一个枚举表单
- */
- function GetEnumsForm($egroup, $evalue=0, $formid='', $seltitle='')
- {
- $cachefile = DEDEDATA.'/enums/'.$egroup.'.php';
- include($cachefile);
- if($formid=='')
- {
- $formid = $egroup;
- }
- $forms = "<select name='$formid' id='$formid' class='enumselect form-control'>\r\n";
- $forms .= "\t<option value='0' selected='selected'>--请选择--{$seltitle}</option>\r\n";
- foreach(${'em_'.$egroup.'s'} as $v=>$n)
- {
- $prefix = ($v > 500 && $v%500 != 0) ? '└─ ' : '';
- if (preg_match("#\.#", $v)) $prefix = ' └── ';
-
- if($v==$evalue)
- {
- $forms .= "\t<option value='$v' selected='selected'>$prefix$n</option>\r\n";
- }
- else
- {
- $forms .= "\t<option value='$v'>$prefix$n</option>\r\n";
- }
- }
- $forms .= "</select>";
- return $forms;
- }
-
- /**
- * 获取一级数据
- *
- * @access public
- * @param string $egroup 联动组
- * @return array
- */
- function getTopData($egroup)
- {
- $data = array();
- $cachefile = DEDEDATA.'/enums/'.$egroup.'.php';
- include($cachefile);
- foreach(${'em_'.$egroup.'s'} as $k=>$v)
- {
- if($k >= 500 && $k%500 == 0) {
- $data[$k] = $v;
- }
- }
- return $data;
- }
-
-
- /**
- * 获取数据的JS代码(二级联动)
- *
- * @access public
- * @param string $egroup 联动组
- * @return string
- */
- function GetEnumsJs($egroup)
- {
- global ${'em_'.$egroup.'s'};
- include_once(DEDEDATA.'/enums/'.$egroup.'.php');
- $jsCode = "<!--\r\n";
- $jsCode .= "em_{$egroup}s=new Array();\r\n";
- foreach(${'em_'.$egroup.'s'} as $k => $v)
- {
- // JS中将3级类目存放到第二个key中去
- if (preg_match("#([0-9]{1,})\.([0-9]{1,})#", $k, $matchs))
- {
- $valKey = $matchs[1] + $matchs[2] / 1000;
- $jsCode .= "em_{$egroup}s[{$valKey}]='$v';\r\n";
- } else {
- $jsCode .= "em_{$egroup}s[$k]='$v';\r\n";
- }
- }
- $jsCode .= "-->";
- return $jsCode;
- }
-
- /**
- * 写入联动JS代码
- *
- * @access public
- * @param string $egroup 联动组
- * @return string
- */
- function WriteEnumsJs($egroup)
- {
- $jsfile = DEDEDATA.'/enums/'.$egroup.'.js';
- $fp = fopen($jsfile, 'w');
- fwrite($fp, GetEnumsJs($egroup));
- fclose($fp);
- }
-
-
- /**
- * 获取枚举的值
- *
- * @access public
- * @param string $egroup 联动组
- * @param string $evalue 联动值
- * @return string
- */
- function GetEnumsValue($egroup, $evalue=0)
- {
- include_once(DEDEDATA.'/enums/'.$egroup.'.php');
- if(isset(${'em_'.$egroup.'s'}[$evalue])) {
- return ${'em_'.$egroup.'s'}[$evalue];
- }
- else {
- return "保密";
- }
- }
|