<?php
namespace imcat;
// admPFunc
class admPFunc{
static function umodKid($tabid, $def='5120'){
$dbr = db()->table($tabid)->order('kid DESC')->find();
if(empty($dbr)){
$kid = $def;
}else{
$kid = is_numeric($dbr['kid']) ? intval($dbr['kid'])+1 : substr(basKeyid::kidAuto(12),2,10);
}
return $kid;
}
static function safeFils($vars, $ucfg, $type='exts'){
if($type=='dops'){ return $vars; } // exts,dops
$fields = ['cfgs','note','gtab'];
$deelA = ['admin-catalog-cfgs','admin-menus-cfgs'];
foreach($vars as $key => $val) {
if($key!='fm' || !is_array($val)){ continue; }
foreach ($vars[$key] as $fk => $fv) {
if(!in_array($fk,$fields)){ continue; }
if(in_array("$ucfg[mkv]-$fk",$deelA)){
$fv = str_replace(['<'], ['<'], $fv);
$fv = str_replace(['<a','</a'], ['<a','</a'], $fv);
}else{
$fv = str_replace(["'",'"','<'], ['','','<'], $fv);
}
$vars[$key][$fk] = $fv; //echo "($fv)";
}
} #dump($vars['fm']);
return $vars;
}
// fileNav
static function modList($pmods,$type='relmod'){
$_groups = glbConfig::read('groups');
$a = array(); $pid = '';
foreach($pmods as $pmod){
foreach($_groups as $k=>$v){
if($v['pid']==$pmod){
if($pid!=$v['pid'] && count($pmods)>1){
$a["^group^$v[pid]"] = "$v[pid]-{$_groups[$v['pid']]['title']}";
}
$a[$k] = "[$k]$v[title]";
$pid = $v['pid'];
}
} }
return $a;
}
// fileNav
static function fileNav($now,$cfg=array()){
$gap = "<span class='span ph5'>|</span>";
$_cfg = basLang::ucfg('nava');
if(is_string($cfg) && isset($_cfg[$cfg])) $cfg = $_cfg[$cfg];
$str = '';
foreach($cfg as $file=>$title){
$file = str_replace('/','-',$file);
$cur = strstr($file,$now) ? "class='cur'" : '';
if(strpos($file,'root}')){
$file = str_replace(array('{root}','{$root}',),array(PATH_PROJ,PATH_PROJ,),$file);
}else{
$file = "?$file";
}
$str .= ($str ? $gap : '')."<a href='$file' $cur>$title</a>";
}
return $str;
}
// fileNav
static function fileNavTitle($now,$cfg=array()){
$_cfg = basLang::ucfg('nava');
if(is_string($cfg) && isset($_cfg[$cfg])) $cfg = $_cfg[$cfg];
foreach($cfg as $file=>$title){
if(strstr($file,$now)){
return $title;
}
}
return '';
}
// ------------------- used in cajax.php
// fieldExists
static function fieldExists($kid,$mod,$_groups){
$db = db();
$sy_kids = read('keepid','sy');
if($re=basKeyid::keepCheck($kid,1,1,0)){ //$key,$chk,$fix,$grp
die($re);
}elseif($cmod = $db->table('base_fields')->where("model='$mod' AND kid='$kid'")->find()){
die(lang('plus.cajax_field')."[$kid]".lang('plus.cajax_exsists'));
}elseif(isset($_groups[$kid]) && $_groups[$kid]['pid']=='types'){ //系统模型
die("success");
}elseif(isset($_groups[$kid]) || strstr($sy_kids,",$kid,")){ //系统模型
die("[$kid]".lang('plus.cajax_sysuesed')."[mod]");
}elseif(isset($_groups[$kid]) && $_groups[$kid]['pid']!='types'){ //系统模型
die(lang('plus.cajax_field')."[$kid]".lang('plus.cajax_syskeep')."[k1])");
}elseif(in_array($kid,fldCfgs::setKeeps())){
die("[$kid]".lang('plus.cajax_mykeys'));
}else{
die("success");
}
}
static function fieldCatid($kid,$mod){
$catid = req('catid','');
$ccfg = read($mod,'_c');
$mfields = @$ccfg[$catid];
if($re=basKeyid::keepCheck($kid,1,0,1)){ //$key,$chk,$fix,$grp
die($re);
}elseif(!empty($mfields) && isset($mfields[$kid])){
die(lang('plus.cajax_field')."[$kid]".lang('plus.cajax_exsists'));
}else{
die("success");
}
}
static function keyExists($kid,$mod,$_groups){
$db = db();
$tab = req('tab');
$_f1 = in_array($tab,array('base_catalog','base_fields','base_grade','base_menu','base_model','base_paras','types_common'));
$_k2 = str_replace('types_','',$tab);
$_f2 = isset($_groups[$_k2]);
if(!$_f1 && !$_f2) die(lang('plus.cajax_erparam'));
$kre = strtolower(basReq::ark('fm','kre','Key')); //@$fm['kre']
if(!$kid && $kre) $kid=$kre;
$old = req('old_val');
if($re=basKeyid::keepCheck($kid,1,0,1,($_k2?2:3))){ //$key,$chk,$fix,$grp
die($re);
}elseif($kid===$old){
die("success");
}elseif(in_array($kid, fldCfgs::setKeeps())){
echo "[$kid]".lang('plus.cajax_mykeys')."[mysql]";
}elseif($flag=$db->table($tab)->where((empty($mod) ? '' : "model='$mod' AND ")."kid='$kid'")->find()){
echo "[$kid]".lang('plus.cajax_beuesed');
}else{
die("success");
}
}
static function infoRepeat($mod,$_groups){
$db = db();
$fid = req('fid');
$kwd = req('kwd'); // mod,kid(docs,user,coms,advs)
$msg = lang('plus.cajax_erparam');
if(!isset($_groups[$mod])) die("var _repeat_res = '$msg';");
$mcfg = read($mod);
$para = "[$mod:$fid=$kwd]";
if(empty($mcfg['f'][$fid])){
$re = "$para $msg!";
}elseif($kwd && $tab=glbDBExt::getTable($mod)){
$whr = "$fid='$kwd'";
$vk = glbDBExt::getTable($mod,'kid');
$vv = req('vv');
if($vv){ $whr .= " AND $vk!='$vv'"; }
$flag = $db->table($tab)->where($whr)->find(); //dump($whr);
$re = empty($flag) ? "success" : lang('plus.cajax_repeat');
}else{
$re = "$para $msg!";
}
echo "var _repeat_res = '$re';";
}
static function cfield($kid,$mod){
$db = db();
$_cfg = read($mod);
$_pid = $_cfg['pid'];
$_tmp = array(
'docs' =>'did',
'users'=>'uid',
); //'coms' =>'cid',
if(!isset($_tmp[$_pid])) glbHtml::end(lang('plus.cajax_erparam').':mod@dop.php');
$data = $db->table("{$_pid}_$mod")->where("$_tmp[$_pid]='$kid'")->find();
fldView::lists($mod,$data,req('catid'));
}
}